#define TE_GUNSHOT 2 // Particle effect plus ricochet sound
// write_byte(TE_GUNSHOT)
// write_coord(position.x)
// write_coord(position.y)
// write_coord(position.z)
Синтаксис:
Для того что бы создать сообщения нужно объявить по началу message_begin, а по окончанию message_end.
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#define PLUGIN "Messages[TE_GUNSHOT]"
#define VERSION "0.1"
#define AUTHOR "Mon[str]"
#define bit_add_alive(%0) g_bitAlive |= 1 << (%0 - 1)
#define bit_sub_alive(%1) g_bitAlive &= ~(1 << (%1 - 1))
#define bit_is_alive(%2) g_bitAlive & 1 << (%2 - 1)
new g_bitAlive;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
/* Зарегистрируем Ham_* евенты */
RegisterHam(Ham_Spawn, "player", "Ham_Spawn_Player_Post", 1);
RegisterHam(Ham_Killed, "player", "Ham_Killed_Player_Post", 1);
/* Зарегистрируем консольную команду для создания сообщения */
register_concmd("<TE_GUNSHOT>", "Create_GunShot_Msg");
}
public Ham_Spawn_Player_Post(id)
{
/* При спавне ставим бит-сумму на true(Альтернатива is_user_alive()) */
bit_add_alive(id);
}
public Ham_Killed_Player_Post(iVictim)
{
/* При смерти савим бит-сумму на false(Альтернатива is_user_alive()) */
bit_sub_alive(iVictim);
}
public Create_GunShot_Msg(id)
{
/* Если игрок жив */
if(bit_is_alive(id))
{
new iOrigin[3];
/* Берем аим координаты */
get_user_origin(id, iOrigin, 3);
/* Создаем сообщение */
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_GUNSHOT);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
message_end();
}
return 1;
}
PS
В коде используются действия с битами, Урок 9. Биты, битовые поля, операции