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

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

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

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

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

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

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

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

Сообщение OtherWorld » 08 дек 2017, 09:02

артист666 писал(а):В стоке устанавливать.
Перед
Код: Выделить всё
dllfunc(DLLFunc_Touch, ent, id)


Код: Выделить всё
stock my_give_item(index, const item[], const iuser1 0) {
    if (!
equal(item"weapon_"7) && !equal(item"ammo_"5) && !equal(item"item_"5) && !equal(item"tf_weapon_"10))
        return 
0;

    new 
ent fm_create_entity(item);
    if (!
pev_valid(ent))
        return 
0;

    new 
Float:origin[3];
    
pev(indexpev_originorigin);
    
set_pev(entpev_originorigin);
    
set_pev(entpev_spawnflagspev(entpev_spawnflags) | SF_NORESPAWN);
    
dllfunc(DLLFunc_Spawnent);

    new 
save pev(entpev_solid);
    
    
set_pev(entpev_iuser1iuser1);
    
    
dllfunc(DLLFunc_Touchentindex);
    if (
pev(entpev_solid) != save)
        return 
ent;
    
    
engfunc(EngFunc_RemoveEntityent);

    return -
1;


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

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

Сообщение KOTOKU » 08 дек 2017, 11:38

Сделай тоже самое логирование и посмотри, какое entity index получается при создании объекта в
Код: Выделить всё
new give_awp_id = fm_give_item(id,"weapon_awp");

и какой entity index получается при attach в ham.
Последний раз редактировалось KOTOKU 08 дек 2017, 12:29, всего редактировалось 1 раз.
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

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

Сообщение OtherWorld » 08 дек 2017, 11:45

KOTOKU писал(а):Нет смысла выполнять dllfunc, ентити и так спавнится в игроке и он его подбирает.
Сделай тоже самое логирование и посмотри, какое entity index получается при создании объекта в
Код: Выделить всё
new give_awp_id = fm_give_item(id,"weapon_awp");

и какой entity index получается при attach в ham.


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

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

Сообщение KOTOKU » 08 дек 2017, 11:46

Всмысле 129 и так далее?
Ты Entity создаешь и у нее один индекс, а в ham какой? дай скрины лучше.
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

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

Сообщение OtherWorld » 08 дек 2017, 11:47

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

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

Сообщение KOTOKU » 08 дек 2017, 11:48

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

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

Сообщение OtherWorld » 08 дек 2017, 11:50

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

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

Сообщение KOTOKU » 08 дек 2017, 11:54

Скинь-ка мне свой сток fm_give_item сюда.
Зомби мод не при делах
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

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

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

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

Добавлено спустя 38 секунд:
не в fm_give_item дело

Добавлено спустя 2 минуты 17 секунд:
в HAM pev_iuser1 = 0 а сразу после изменения 7

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

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

Сообщение KOTOKU » 08 дек 2017, 12:34

Попробуй так, посмотри что в чат выводит
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <zombieplague>
#include <fun>
#include <xs>
#include <colorchat>


#define PLUGIN    "AWP"
#define VERSION    "0.1"
#define AUTHOR    "@"

#define WEAPONKEY    7

#define V_MODEL                 "models/v_awp.mdl"     //путь к модели v_
#define P_MODEL                 "models/p_awp.mdl"     //путь к модели p_
#define AMMO                     10                             //количество патронов в обойме
#define BPAMMO                     100                         //количество патронов в запасе

const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_AK47)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_FAMAS)|(1<<CSW_P90);



new
    
bool:take_awp[33];

new 
MAXPLAYERS;
    
public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
    
register_concmd("awp","give_awp");
    
    
RegisterHam(Ham_Item_Deploy"weapon_awp""ham_item_deploy"1);

    
RegisterHam (Ham_Item_AttachToPlayer"weapon_awp""ham_item_add",1);
    
    
MAXPLAYERS get_maxplayers();
}

public 
plugin_precache()
{
    
precache_model(V_MODEL);
    
precache_model(P_MODEL);
}

public 
give_awp(id)
{
    
take_awp[id] = true;
    
    
drop_weapons(id,1);

    new 
give_awp_id cs_give_item(id,"weapon_awp");
    if(
give_awp_id)
    {
        
cs_set_weapon_ammo(give_awp_idAMMO);
        
cs_set_user_bpammo(idCSW_AWPBPAMMO);
    }
}

public 
ham_item_add(item_id,player_id)
{    
    if(
take_awp[player_id])
    {
        
client_print(0print_chat"ENT ID: %d | ENT_IUSER: %d"item_idpev(item_idpev_iuser1));
        if(
pev(item_idpev_iuser1) != WEAPONKEY)
            
take_awp[player_id] = false;
    }
}

public 
ham_item_deploy(weapon_id)
{
    new 
        
player_id get_pdata_cbase(weapon_id414);
    
    if(
take_awp[player_id])
    {
        
set_pev(player_idpev_viewmodel2V_MODEL);
        
set_pev(player_idpev_weaponmodel2P_MODEL);
    }
}

stock drop_weapons(iddropwhat)
{
    static 
weapons[32], numiweaponid
    num 
0
    get_user_weapons
(idweaponsnum)
        
    for (
0numi++)
    {
        
weaponid weapons[i]
        if ((
dropwhat == && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)))
        {
            static 
wname[32]
            
get_weaponname(weaponidwnamesizeof wname 1)
            
engclient_cmd(id"drop"wname)
        }
    }
}

stock cs_give_item(id, const szItem[])
{        
    new 
iEntity create_entity(szItem);
    if(!
pev_valid(iEntity)) return 0;
    new 
Float:vecOrigin[3];
    
pev(idpev_originvecOrigin);
    
set_pev(iEntitypev_originvecOrigin);
    
set_pev(iEntitypev_spawnflagspev(iEntitypev_spawnflags) | SF_NORESPAWN);
    
set_pev(iEntitypev_iuser1WEAPONKEY);
    
client_print(0print_chat"ENT ID: %d | ENT_IUSER: %d"iEntitypev(iEntitypev_iuser1));

    
dllfunc(DLLFunc_SpawniEntity);
    
dllfunc(DLLFunc_TouchiEntityid);
    
    if(
pev(iEntitypev_solid) != SOLID_NOT)
    {
        
engfunc(EngFunc_RemoveEntityiEntity);
        return -
1;
    }

    return 
iEntity;
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

Пред.След.

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

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

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