Русское сообщество по скриптингу

Как отловить событие удаления оружия с карты?  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Как отловить событие удаления оружия с карты?

Сообщение provaider » 07 фев 2018, 07:48

Когда игрок выбрасывает оружие оно лежит на карте потом пропадает так вот как отловить это событие? Спасибо!
Аватара пользователя
provaider
 
Сообщения: 86
Зарегистрирован: 21 дек 2017, 20:17
Забанен
Благодарил (а): 38 раз.
Поблагодарили: 4 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Как отловить событие удаления оружия с карты?  [Решено]

Сообщение Subb98 » 07 фев 2018, 11:34

Код: Выделить всё
RegisterHam(Ham_Spawn"weaponbox""HamSpawnWeaponboxPost"1); 

Код: Выделить всё
public FwdSpawnWeaponboxPost(const ent)
{
    
set_task(pev(entpev_nextthink), "TaskWeaponboxDeleted"ent);
}

public 
TaskWeaponboxDeleted(const ent)
{
    if (!
pev_valid(ent)) {
        return;
    }
    
    
// your code here
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Как отловить событие удаления оружия с карты?

Сообщение KOTOKU » 08 фев 2018, 14:58

Subb98 писал(а):
Код: Выделить всё
RegisterHam(Ham_Spawn, "weaponbox", "HamSpawnWeaponboxPost", 1);

Код: Выделить всё
public FwdSpawnWeaponboxPost(const ent)
{
    set_task(pev(ent, pev_nextthink), "TaskWeaponboxDeleted", ent);
}

public TaskWeaponboxDeleted(const ent)
{
    if (!pev_valid(ent)) {
        return;
    }
    
    
// your code here
}


Кстати, впервые слышу о таком решении...
Каким образом срабатывает set_task в данном случае? Разве think на объекте не вызывается в зависимости от события, а не через тайминг? Я знаю, что через pev_nexthink можно удалять объекты, но каким образом тут таск сработает? WeaponBox выполняется когда мы дропаем, срабатывает таск, но как этот таск получает из nextthink время, если nextthink изначально не хранит в себе время (или я ошибаюсь?). Буду благодарен за инфу.
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

Re: Как отловить событие удаления оружия с карты?

Сообщение Subb98 » 10 фев 2018, 10:44

«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Как отловить событие удаления оружия с карты?

Сообщение KOTOKU » 10 фев 2018, 11:39

Всё равно не могу понять, это RegameDLL, а вот в дефолтной у Delay time значение - константа 300
При создании weaponbox'а ей задаются свойства и nextthink текущее игровое время + 300.
Это что получается, системой заложено, что объект независимо от конца раунда уничтожается через 300 секунд после создания weaponbox'а? А как же конец раунда и удаление entity?

P.S. в RE это тоже 300, но перенесено в квар.
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

Re: Как отловить событие удаления оружия с карты?

Сообщение Subb98 » 10 фев 2018, 13:41

KOTOKU, будь добр, начни раскапывать исходники самостоятельно. :-) Вы должны зарегистрироваться, чтобы видеть ссылки.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Как отловить событие удаления оружия с карты?

Сообщение KOTOKU » 10 фев 2018, 14:05

Ну с удалением ентити с карты понятно, а что значит таймер + 300 при срабатывании weaponbox'а?
Разве объект, который ты выкидываешь исчезает с карты через 5 минут?
Пардон за тупость, с сорцами не так хорошо дружу, иногда поглядываю только.
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

Re: Как отловить событие удаления оружия с карты?

Сообщение Subb98 » 10 фев 2018, 15:25

KOTOKU писал(а):Разве объект, который ты выкидываешь исчезает с карты через 5 минут?

Очевидно, да, если значение += 300.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 24