Поиск по сайту:



Скриптинг с C4 бомбой

Скриптинг с C4 бомбой

Автор: VEN

Перед тем, как начать, вы должны быть знакомы с основами AMXX скриптинга.
Чтобы получить индекс игрока (только внутри ""logevent_function_p"), необходимо использовать:

stock get_loguser_index()
{
new loguser[80], name[32]
read_logargv(0, loguser, 79)
parse_loguser(loguser, name, 31)

return get_user_index(name)
}

К примеру:
public logevent_function_p()
{
new id = get_loguser_index()
// Код
}

1. Игрок/бомба
Бомба выкинута/у игрока:

if (fm_find_ent_by_class(-1, "weapon_c4"))

Бомба выкинута:
new bomb = fm_find_ent_by_class(-1, "weapon_c4")
if (bomb && pev(bomb, pev_owner) > get_maxplayers())

Бомба у игрока/кто несет:
new carrier = 0, ownerent, bomb = fm_find_ent_by_class(-1, "weapon_c4")
if (bomb && (ownerent = pev(bomb, pev_owner)) get_maxplayers())
{
dllfunc(DLLFunc_Think, weapbox) // удаляет объекты weaponbox + weapon_c4
// удаляет красную точку на радаре
message_begin(MSG_ALL, get_user_msgid("BombPickup"))
message_end()
}

Как дать бомбу игроку:

fm_give_item(id, "weapon_c4")
// используйте cs_set_user_plant(id), чтобы разрешить игроку минировать бомбу

Как удалить бомбу у игрока:
engclient_cmd(id, "weapon_c4")
cs_set_user_bpammo(id, CSW_C4, 0)
engclient_cmd(id, "lastinv")
// удаляем HUD иконку бомбы
message_begin(MSG_ONE, get_user_msgid("StatusIcon"), _, id)
write_byte(0)
write_string("c4")
message_end()

Бомба установлена/как удалить установленную бомбу:

new bomb
if ((bomb = fm_find_ent_by_model(-1, "grenade", "models/w_c4.mdl")))
{
// бомбу установлена
fm_remove_entity(bomb) // удалить установленную бомбу
}

2. Выкинуть/взять
Событие, когда игрок появился с бомбой:

register_logevent("logevent_function_p", 3, "2=Spawned_With_The_Bomb")

Бомба выкинута (включает событие, когда игрок вышел с сервера или умер):

register_logevent("logevent_function_p", 3, "2=Dropped_The_Bomb")
// используйте is_user_alive/is_user_connected для проверки подключен/живой ли игрок

Бомба поднята (кроме события появления игрока):

register_logevent("logevent_function_p", 3, "2=Got_The_Bomb")

Бомба получена (включает события появления игрока и give_item):

register_event("WeapPickup", "event_function", "be", "1=6")

3. Минирование/разминирование
Событие начала минирования бомбы:

register_event("BarTime", "event_function", "be", "1=3")

Бомба установлена:

register_logevent("logevent_function_p", 3, "2=Planted_The_Bomb")

Событие начала разминирования бомбы:

register_event("BarTime", "event_function", "be", "1=5", "1=10")

Событие начала разминирования бомбы (без щипцов):

register_logevent("logevent_function_p", 3, "2=Begin_Bomb_Defuse_Without_Kit")

Событие начала разминирования бомбы (с щипцами):

register_logevent("logevent_function_p", 3, "2=Begin_Bomb_Defuse_With_Kit")

Бомба разминирована:

register_logevent("logevent_function_p", 3, "2=Defused_The_Bomb")

Событие отмены минирования/разминирования бомбы (вы должны быть уверены, что минирование/разминирование бомбы в процессе) :

register_event("BarTime", "event_function", "b", "1=0")

Событие спасения цели:

register_logevent("logevent_function", 6, "3=Target_Saved")

4. Взрыв
Цель взорвана раньше окончания раунда:

register_logevent("logevent_function", 6, "3=Target_Bombed")

Событие взрыва бомбы (раньше/позже окончания раунда):

register_event("23", "event_function", "a", "1=17", "6=-105", "7=17")

5. Цель (место закладки бомбы)
Игрок находится на месте установки бомбы (func_bomb_target):

// Примечание: нет хорошего способа определения находится ли игрок в info_bomb_target
new target = -1, class[] = "func_bomb_target", bool:is_inside = false
while ((target = fm_find_ent_by_class(target, class)))
{
if (!fm_boxents_distance(index, target))
{
is_inside = true
break
}
}
if (is_inside)

Карта содержит места закладки бомбы:

if (fm_find_ent_by_class(-1, "func_bomb_target") || fm_find_ent_by_class(-1, "info_bomb_target"))

Как удалить место закладки бомбы:

new target = -1, classname[] = "func_bomb_target"
while ((target = fm_find_ent_by_class(target, classname)))
fm_remove_entity(target)
classname = "info_bomb_target"
while ((target = fm_find_ent_by_class(target, classname)))
fm_remove_entity(target)

Игрок убит от взрыва бомбы (не сработает, если игрок был убил от объекта env_explosion):

public client_death(killer, victim, wpnindex, hitplace, TK)
{
if (wpnindex == CSW_C4)
}
Статьи для CS 1.6 | Просмотров: 7 918 | Добавлено: | Комментарии (1)


Не зарегистрирован
Публикаций: 0
Комментарии: 0

Кудрявый,
Ну захотел ты плагин написать который что нибдуь с бомбой мутит и не знаешь скрипт,а тут все написано. laughing


     

Посетители, находящиеся в группе Не зарегистрирован , не могут оставлять комментарии к данной публикации.

 Опрос сайта:

Есть свой сайт?


 Календарь:

«    Октябрь 2020    »
ПнВтСрЧтПтСбВс
 1234
567891011
12131415161718
19202122232425
262728293031