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

Отлов поднятия оружия  [Решено]

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

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

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

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

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

Отлов поднятия оружия

Сообщение OtherWorld » 07 дек 2017, 00:20

Код: Выделить всё
new
    const
        WEAPON_LIST
[][] =
        {
            "weapon_scout",
            "weapon_xm1014",
            "weapon_mac10",
            "weapon_aug",
            "weapon_ump45",
            "weapon_sg550",
            "weapon_galil",
            "weapon_ak47",
            "weapon_awp",
            "weapon_mp5navy",
            "weapon_m249",
            "weapon_m3",
            "weapon_m4a1",
            "weapon_tmp",
            "weapon_g35g1",
            "weapon_sg552",
            "weapon_p90",
            "weapon_famas"
        }

public plugin_init()
{
    for(new i = 0;i<=sizeof(WEAPON_LIST);i++)
    {
        RegisterHam (Ham_Item_AddToPlayer, WEAPON_LIST[i], "ham_item_add");
    }

Или же есть параметры который отлавливает поднятие только основного оружия??

Название темы скорректировано (устное замечание) // Subb98
Аватара пользователя
OtherWorld
 
Сообщения: 78
Зарегистрирован: 01 сен 2017, 08:41
Благодарил (а): 39 раз.
Поблагодарили: 1 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Применимо ли такое?

Сообщение артист666 » 07 дек 2017, 01:53

Это не поднятие, а получение.
Будет вызываться при покупке, при выдаче через плагин или при поднятии.

Нет. Разбей на 2 массива, 1 с примари, 2й с секонд(если нужно), и делай разные функции.
Или можно просто в битсумму вбить в принципе и проверять.
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn

Re: Применимо ли такое?

Сообщение OtherWorld » 07 дек 2017, 02:19

Спасибо, уже решил. Нужно было удалять определённое оружие из инвентаря при получении любого основного.

Что для этих целей лучше
Код: Выделить всё

RegisterHam 
(Ham_AddPlayerItem"player""ham_item_add");
 

или же
Код: Выделить всё

RegisterHam 
(Ham_Item_AddToPlayerWEAPON_LIST[i], "ham_item_add");
 
Аватара пользователя
OtherWorld
 
Сообщения: 78
Зарегистрирован: 01 сен 2017, 08:41
Благодарил (а): 39 раз.
Поблагодарили: 1 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Применимо ли такое?

Сообщение артист666 » 07 дек 2017, 08:38

Да так-то без разницы, смотря под какие нужды.
Если нужно отловить 1 оружие, то Ham_Item_AddToPlayer больше подходит(проверки не нужно будет ставить, да и вызовов поменьше).
А если все, можно и Ham_AddPlayerItem и Ham_Item_AddToPlayer с циклом.
Если вы хотите чему-то научиться, пробуйте, задавайте вопросы.
Иначе компенсируйте потраченное время на ваши "проблемы".
Аватара пользователя
артист666
 
Сообщения: 2706
Зарегистрирован: 09 апр 2013, 17:46
Благодарил (а): 284 раз.
Поблагодарили: 639 раз.
Опыт программирования: Больше трех лет
Языки программирования: С, C++
Delphi
HTML, CSS, Java Script
Pawn

Re: Применимо ли такое?

Сообщение OtherWorld » 07 дек 2017, 08:52

Где я ошибся?

Код: Выделить всё
public ham_item_add(item_id,player_id)
{    
    new 
        
weapons[32],
        
id 0;
        
    
get_user_weapons(player_idweaponsid);
    
    
client_print(0,print_chat,"%d подобрал оружие",player_id);
    
    for(new 
i;id;i++)
    {
        if(
weapons[i] == CSW_AWP)
        {
            
take_awp[player_id] = false;
            
            
fm_strip_user_gun(player_id,weapons[i]);
            
            
client_print(0,print_chat,"AWP у %d удалено",player_id);
        }
    }
}
 


Не проходит проверку
Код: Выделить всё
if(weapons[i] == CSW_AWP
хотя AWP есть у игрока :dntknw:
Аватара пользователя
OtherWorld
 
Сообщения: 78
Зарегистрирован: 01 сен 2017, 08:41
Благодарил (а): 39 раз.
Поблагодарили: 1 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Применимо ли такое?

Сообщение KOTOKU » 07 дек 2017, 10:36

В твоем случае лучше использовать Ham_Item_AttachToPlayer.
Хотя я могу ошибаться, так и не понял чего ты добиться хочешь.

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

Re: Применимо ли такое?

Сообщение OtherWorld » 07 дек 2017, 10:48

KOTOKU писал(а):В твоем случае лучше использовать Ham_Item_AttachToPlayer.
Хотя я могу ошибаться, так и не понял чего ты добиться хочешь.

Может тебе вообще weaponbox'ы ловить нужно, если хочешь отлавливать подбор оружий.
Ham_AddPlayerItem насколько помню, срабатывает дважды (при поднятии и дропе, поэтому, не совсем годится).


В общем есть 2 AWP на сервере, практически одинаковые плагины но способности разные нужно чтобы при подборе одной AWP способности второй отключались и она просто удалялась из инвентаря игрока а не выбрасывалась на землю.

Вот я и хочу узнать как правильно, а то наверное не туда я "копаю" :dntknw:
Аватара пользователя
OtherWorld
 
Сообщения: 78
Зарегистрирован: 01 сен 2017, 08:41
Благодарил (а): 39 раз.
Поблагодарили: 1 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Отлов поднятия оружия

Сообщение KOTOKU » 07 дек 2017, 11:03

Стоп, а зачем тебе удаление AWP? Ну представим что в игре 2 авп, одно на земле, а другое в руке у игрока. В таком случае, он же выбрасывает свое АВП чтобы взять другое, так? Смысл тогда удалять?
А проверку на тип AWP можно через fiuser сделать для Entity чтоб потом отключать и включать плюхи авп
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

Re: Отлов поднятия оружия

Сообщение OtherWorld » 07 дек 2017, 11:16

Нужно именно удалять, а и доступ есть только к одному плагину awp. Как мне маркировать чтоли awp чтобы я знал что это именно моя awp а не с другого плагина?
Аватара пользователя
OtherWorld
 
Сообщения: 78
Зарегистрирован: 01 сен 2017, 08:41
Благодарил (а): 39 раз.
Поблагодарили: 1 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Отлов поднятия оружия

Сообщение KOTOKU » 07 дек 2017, 11:33

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

След.

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

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

Сейчас этот форум просматривают: Bing [Bot], Yandex [Bot] и гости: 8