ネットワークメッセージ送信

 これから使用例を挙げるネットワークメッセージ送信は発砲時の銃声やフラッシュの処理要求、または画面のレイアウト指定等を決まったフォーマットでバッファへ書き込み、サーバーへ送信(cast)して実現するという物です。
 当然、でたらめなフォーマットで送信を行うとエラーが発生してゲームが停止します。
 以下に調査結果の一部を発表しますが、今後も調査を続けていきます。

void	multicast (vec3_t origin, multicast_t to)
void	unicast (edict_t *ent, qboolean reliable)
void	WriteChar (int c)
void	WriteByte (int c)
void	WriteShort (int c)
void	WriteLong (int c)
void	WriteFloat (float f)
void	WriteString (char *s)
void	WritePosition (vec3_t pos)
void	WriteDir (vec3_t pos)
void	WriteAngle (float f)

●プレイヤーの発砲音、並びに銃口のフラッシュ(muzzle flash)

	gi.WriteByte (svc_muzzleflash);	//プレイヤー用のmuzzle flashであることを指定
	gi.WriteShort (ent-g_edicts);	//プレイヤーentityとグローバルentityとの差
	gi.WriteByte (MZ_SHOTGUN);	//muzzle flashの種類
	gi.multicast (ent->s.origin, MULTICAST_PVS);	//送信

発砲音、並びにmuzzle flashの種類は以下から選択する
	MZ_BLASTER		ブラスター(0)
	MZ_MACHINEGUN		マシンガン(1)
	MZ_SHOTGUN		ショットガン(2)
	MZ_CHAINGUN1		チェインガン1(3)
	MZ_CHAINGUN2		チェインガン2(4)
	MZ_CHAINGUN3		チェインガン3(5)
	MZ_RAILGUN		レイルガン(6)
	MZ_ROCKET		ロケット(7)
	MZ_GRENADE		グレネード(8)
	MZ_LOGIN		ログイン(9)
	MZ_LOGOUT		ログアウト(10)
	MZ_RESPAWN		プレイヤー復活(11)
	MZ_BFG			BFG(12)
	MZ_SSHOTGUN		スーパーショットガン(13)
	MZ_HYPERBLASTER		ハイパーブラスター(14)
	MZ_ITEMRESPAWN		アイテム復活(15)

上記の値へ以下の値をorで足すとサイレンサーの役目を果たす
	MZ_SILENCED		サイレンサー(128)

●モンスターの発砲音、並びに銃口のフラッシュ(muzzle flash2)

	gi.WriteByte (svc_muzzleflash2);	//モンスター用のmuzzle flashであることを指定
	gi.WriteShort (self - g_edicts);	//モンスターentityとグローバルentityとの差
	gi.WriteByte (MZ2_TANK_BLASTER_1);	//muzzle flashの種類
	gi.multicast (start, MULTICAST_PVS);	//送信

発砲音、並びにmuzzle flashの種類は以下から選択する(詳細は各自で調べてください)
	MZ2_TANK_BLASTER_1			1
	MZ2_TANK_BLASTER_2			2
	MZ2_TANK_BLASTER_3			3
	MZ2_TANK_MACHINEGUN_1			4
	MZ2_TANK_MACHINEGUN_2			5
	MZ2_TANK_MACHINEGUN_3			6
	MZ2_TANK_MACHINEGUN_4			7
	MZ2_TANK_MACHINEGUN_5			8
	MZ2_TANK_MACHINEGUN_6			9
	MZ2_TANK_MACHINEGUN_7			10
	MZ2_TANK_MACHINEGUN_8			11
	MZ2_TANK_MACHINEGUN_9			12
	MZ2_TANK_MACHINEGUN_10			13
	MZ2_TANK_MACHINEGUN_11			14
	MZ2_TANK_MACHINEGUN_12			15
	MZ2_TANK_MACHINEGUN_13			16
	MZ2_TANK_MACHINEGUN_14			17
	MZ2_TANK_MACHINEGUN_15			18
	MZ2_TANK_MACHINEGUN_16			19
	MZ2_TANK_MACHINEGUN_17			20
	MZ2_TANK_MACHINEGUN_18			21
	MZ2_TANK_MACHINEGUN_19			22
	MZ2_TANK_ROCKET_1			23
	MZ2_TANK_ROCKET_2			24
	MZ2_TANK_ROCKET_3			25

	MZ2_INFANTRY_MACHINEGUN_1		26
	MZ2_INFANTRY_MACHINEGUN_2		27
	MZ2_INFANTRY_MACHINEGUN_3		28
	MZ2_INFANTRY_MACHINEGUN_4		29
	MZ2_INFANTRY_MACHINEGUN_5		30
	MZ2_INFANTRY_MACHINEGUN_6		31
	MZ2_INFANTRY_MACHINEGUN_7		32
	MZ2_INFANTRY_MACHINEGUN_8		33
	MZ2_INFANTRY_MACHINEGUN_9		34
	MZ2_INFANTRY_MACHINEGUN_10		35
	MZ2_INFANTRY_MACHINEGUN_11		36
	MZ2_INFANTRY_MACHINEGUN_12		37
	MZ2_INFANTRY_MACHINEGUN_13		38

	MZ2_SOLDIER_BLASTER_1			39
	MZ2_SOLDIER_BLASTER_2			40
	MZ2_SOLDIER_SHOTGUN_1			41
	MZ2_SOLDIER_SHOTGUN_2			42
	MZ2_SOLDIER_MACHINEGUN_1		43
	MZ2_SOLDIER_MACHINEGUN_2		44

	MZ2_GUNNER_MACHINEGUN_1			45
	MZ2_GUNNER_MACHINEGUN_2			46
	MZ2_GUNNER_MACHINEGUN_3			47
	MZ2_GUNNER_MACHINEGUN_4			48
	MZ2_GUNNER_MACHINEGUN_5			49
	MZ2_GUNNER_MACHINEGUN_6			50
	MZ2_GUNNER_MACHINEGUN_7			51
	MZ2_GUNNER_MACHINEGUN_8			52
	MZ2_GUNNER_GRENADE_1			53
	MZ2_GUNNER_GRENADE_2			54
	MZ2_GUNNER_GRENADE_3			55
	MZ2_GUNNER_GRENADE_4			56

	MZ2_CHICK_ROCKET_1			57

	MZ2_FLYER_BLASTER_1			58
	MZ2_FLYER_BLASTER_2			59

	MZ2_MEDIC_BLASTER_1			60

	MZ2_GLADIATOR_RAILGUN_1			61

	MZ2_HOVER_BLASTER_1			62

	MZ2_ACTOR_MACHINEGUN_1			63

	MZ2_SUPERTANK_MACHINEGUN_1		64
	MZ2_SUPERTANK_MACHINEGUN_2		65
	MZ2_SUPERTANK_MACHINEGUN_3		66
	MZ2_SUPERTANK_MACHINEGUN_4		67
	MZ2_SUPERTANK_MACHINEGUN_5		68
	MZ2_SUPERTANK_MACHINEGUN_6		69
	MZ2_SUPERTANK_ROCKET_1			70
	MZ2_SUPERTANK_ROCKET_2			71
	MZ2_SUPERTANK_ROCKET_3			72

	MZ2_BOSS2_MACHINEGUN_L1			73
	MZ2_BOSS2_MACHINEGUN_L2			74
	MZ2_BOSS2_MACHINEGUN_L3			75
	MZ2_BOSS2_MACHINEGUN_L4			76
	MZ2_BOSS2_MACHINEGUN_L5			77
	MZ2_BOSS2_ROCKET_1			78
	MZ2_BOSS2_ROCKET_2			79
	MZ2_BOSS2_ROCKET_3			80
	MZ2_BOSS2_ROCKET_4			81

	MZ2_FLOAT_BLASTER_1			82

	MZ2_SOLDIER_BLASTER_3			83
	MZ2_SOLDIER_SHOTGUN_3			84
	MZ2_SOLDIER_MACHINEGUN_3		85
	MZ2_SOLDIER_BLASTER_4			86
	MZ2_SOLDIER_SHOTGUN_4			87
	MZ2_SOLDIER_MACHINEGUN_4		88
	MZ2_SOLDIER_BLASTER_5			89
	MZ2_SOLDIER_SHOTGUN_5			90
	MZ2_SOLDIER_MACHINEGUN_5		91
	MZ2_SOLDIER_BLASTER_6			92
	MZ2_SOLDIER_SHOTGUN_6			93
	MZ2_SOLDIER_MACHINEGUN_6		94
	MZ2_SOLDIER_BLASTER_7			95
	MZ2_SOLDIER_SHOTGUN_7			96
	MZ2_SOLDIER_MACHINEGUN_7		97
	MZ2_SOLDIER_BLASTER_8			98
	MZ2_SOLDIER_SHOTGUN_8			99
	MZ2_SOLDIER_MACHINEGUN_8		100

	MZ2_MAKRON_BFG				101
	MZ2_MAKRON_BLASTER_1			102
	MZ2_MAKRON_BLASTER_2			103
	MZ2_MAKRON_BLASTER_3			104
	MZ2_MAKRON_BLASTER_4			105
	MZ2_MAKRON_BLASTER_5			106
	MZ2_MAKRON_BLASTER_6			107
	MZ2_MAKRON_BLASTER_7			108
	MZ2_MAKRON_BLASTER_8			109
	MZ2_MAKRON_BLASTER_9			110
	MZ2_MAKRON_BLASTER_10			111
	MZ2_MAKRON_BLASTER_11			112
	MZ2_MAKRON_BLASTER_12			113
	MZ2_MAKRON_BLASTER_13			114
	MZ2_MAKRON_BLASTER_14			115
	MZ2_MAKRON_BLASTER_15			116
	MZ2_MAKRON_BLASTER_16			117
	MZ2_MAKRON_BLASTER_17			118
	MZ2_MAKRON_RAILGUN_1			119
	MZ2_JORG_MACHINEGUN_L1			120
	MZ2_JORG_MACHINEGUN_L2			121
	MZ2_JORG_MACHINEGUN_L3			122
	MZ2_JORG_MACHINEGUN_L4			123
	MZ2_JORG_MACHINEGUN_L5			124
	MZ2_JORG_MACHINEGUN_L6			125
	MZ2_JORG_MACHINEGUN_R1			126
	MZ2_JORG_MACHINEGUN_R2			127
	MZ2_JORG_MACHINEGUN_R3			128
	MZ2_JORG_MACHINEGUN_R4			129
	MZ2_JORG_MACHINEGUN_R5			130
	MZ2_JORG_MACHINEGUN_R6			131
	MZ2_JORG_BFG_1				132
	MZ2_BOSS2_MACHINEGUN_R1			133
	MZ2_BOSS2_MACHINEGUN_R2			134
	MZ2_BOSS2_MACHINEGUN_R3			135
	MZ2_BOSS2_MACHINEGUN_R4			136
	MZ2_BOSS2_MACHINEGUN_R5			137


e-mail:ponpoko@axcx.com