Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.
Модераторы: Subb98, liFe iS GoOD
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.
В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.
Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.
jban1990 » 02 июн 2020, 00:00
Парни как сделать что бы шлейф убийства был только когда умирает последний игрок в раунде, а не во всех убийствах
- Код: Выделить всё
new m_spriteTexture
public death(){
new player_num = 0 new maxpl = get_maxplayers()+1 new killer_id = read_data(1) new victim_id = read_data(2) new killer_team = get_user_team(killer_id) if (get_cvar_num("amx_deathbeams_enabled") == 1)
{
if (killer_id!=victim_id && killer_id)
{
new k_origin[3]
new v_origin[3]
get_user_origin(killer_id,k_origin)
get_user_origin(victim_id,v_origin)
for(player_num = 1;player_num < maxpl; player_num++)
{
if(is_user_alive(player_num)==0 && get_user_time(player_num)!= 0)
{
message_begin(MSG_ONE, SVC_TEMPENTITY,{0,0,0},player_num)
write_byte( TE_BEAMPOINTS )
write_coord(k_origin[0])
write_coord(k_origin[1])
write_coord(k_origin[2])
write_coord(v_origin[0])
write_coord(v_origin[1])
write_coord(v_origin[2])
write_short( m_spriteTexture )
write_byte( 1 ) write_byte( 1 ) write_byte( 100 ) write_byte( 25 ) write_byte( 0 ) if (get_cvar_num("amx_deathbeams_randcolor") == 1)
{
write_byte( random_num(50,255) ) write_byte( random_num(50,255) ) write_byte( random_num(50,255) ) }
else
{
if (killer_team == 1)
{ write_byte( 255 ) write_byte( 0 ) write_byte( 0 ) }
else
{ write_byte( 0 ) write_byte( 255 ) write_byte( 0 ) }
}
write_byte( 255 ) write_byte( 40 ) message_end()
}
}
}
}
}
public plugin_precache()
m_spriteTexture = precache_model("sprites/animglow01.spr")
public plugin_init()
{
register_plugin("All Death Beams","0.9","SpaceDude")
register_event("DeathMsg","death","a")
register_cvar("amx_deathbeams_enabled","1")
register_cvar("amx_deathbeams_randcolor","0")
}
-
jban1990
-
- Сообщения: 46
- Зарегистрирован: 30 мар 2020, 17:06
- Забанен
- Благодарил (а): 3 раз.
- Поблагодарили: 0 раз.
- Языки программирования: Я ничего не знаю
Leo_[BH] » 02 июн 2020, 07:17
- Код: Выделить всё
new m_spriteTexture
new g_maxplayers
public plugin_precache()
m_spriteTexture = precache_model("sprites/animglow01.spr")
public plugin_init()
{
register_plugin("Last Death Beam","0.9a","SpaceDude / Leo_[BH]")
register_event("DeathMsg","death","a")
register_cvar("amx_deathbeams_enabled","1")
register_cvar("amx_deathbeams_randcolor","0")
g_maxplayers = get_maxplayers()
}
public death(){
new player_num = 0 new killer_id = read_data(1) new victim_id = read_data(2) new killer_team = get_user_team(killer_id) if (get_cvar_num("amx_deathbeams_enabled") == 1)
{
if (killer_id!=victim_id && killer_id)
{
new k_origin[3]
new v_origin[3]
get_user_origin(killer_id,k_origin)
get_user_origin(victim_id,v_origin)
if(get_my_alive_teammates(victim_id)) {
return; }
for(player_num = 1;player_num <= g_maxplayers; player_num++)
{
if(is_user_alive(player_num)==0 && get_user_time(player_num)!= 0)
{
message_begin(MSG_ONE, SVC_TEMPENTITY,{0,0,0},player_num)
write_byte( TE_BEAMPOINTS )
write_coord(k_origin[0])
write_coord(k_origin[1])
write_coord(k_origin[2])
write_coord(v_origin[0])
write_coord(v_origin[1])
write_coord(v_origin[2])
write_short( m_spriteTexture )
write_byte( 1 ) write_byte( 1 ) write_byte( 100 ) write_byte( 25 ) write_byte( 0 ) if (get_cvar_num("amx_deathbeams_randcolor") == 1)
{
write_byte( random_num(50,255) ) write_byte( random_num(50,255) ) write_byte( random_num(50,255) ) }
else
{
if (killer_team == 1)
{ write_byte( 255 ) write_byte( 0 ) write_byte( 0 ) }
else
{ write_byte( 0 ) write_byte( 255 ) write_byte( 0 ) }
}
write_byte( 255 ) write_byte( 40 ) message_end()
}
}
}
}
}
get_my_alive_teammates(player) {
new iTeamAlive, id
for (id = 1; id <= g_maxplayers; id++)
{
if (id != player && is_user_alive(id) && get_user_team(id) == get_user_team(player))
iTeamAlive++
}
return iTeamAlive;
}
Добавил функцию get_my_alive_teammates(player), которая возвращает количество живых товарищей по команде.
Сделал проверку - если у жертвы есть товарищи по команде живые, то прекратить выполнение функции, чтобы не отображать луч.
Переставил пару блоков кода местами для удобства (субъективного)
SMA приложил для удобства.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Сохраняйте историю
-
Leo_[BH]
-
- Сообщения: 98
- Зарегистрирован: 06 апр 2014, 17:51
- Откуда: UA
- Благодарил (а): 9 раз.
- Поблагодарили: 30 раз.
- Опыт программирования: Больше трех лет
-
jban1990 » 02 июн 2020, 19:45
спасибо Вам)
-
jban1990
-
- Сообщения: 46
- Зарегистрирован: 30 мар 2020, 17:06
- Забанен
- Благодарил (а): 3 раз.
- Поблагодарили: 0 раз.
- Языки программирования: Я ничего не знаю
Вернуться в Скриптинг
Кто сейчас на конференции
Сейчас этот форум просматривают: Yandex [Bot] и гости: 21