ネットワークメッセージ送信
これから使用例を挙げるネットワークメッセージ送信は発砲時の銃声やフラッシュの処理要求、または画面のレイアウト指定等を決まったフォーマットでバッファへ書き込み、サーバーへ送信(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