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

Steam Bonus: Добавление эксклюзивных моделей

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

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

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

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

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

Steam Bonus: Добавление эксклюзивных моделей

Сообщение Mr.PolaZ » 21 апр 2018, 23:45

Дорогие участники сообщества, я нашёл данный код на просторах "amx-x.ru" :thumbs_up
Как я понял данный код выдаёт игрокам Steam некоторые виды оружия.
Код: Выделить всё
#include < amxmodx >

#include < amxmisc >

#include < cstrike >

#include < fakemeta_util >

#include < hamsandwich >

 

#define PLUGIN  "steam_menu"

#define VERSION "2.0"

#define AUTHOR  "CaNiBaL"

 

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_FAMAS)|(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_AK47)|(1<<CSW_P90)

const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)

 

new keys 
= MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0

 

new g_round
, szMapName[32]

 

public plugin_init
()

{

        register_plugin(PLUGIN, VERSION, AUTHOR)

       

        register_menu
("Menu 1", keys, "func_menu")

        RegisterHam( Ham_Spawn , "player" , "HamSpawnPlayer" , 1 )

        register_event("HLTV", "round_start", "a", "1=0", "2=0")

        register_event("TextMsg", "round_restart", "a", "2=#Game_will_restart_in","2=#Game_Commencing");

 

}

public plugin_cfg()

{
      

        get_mapname
(szMapName, sizeof(szMapName)-1);

}

 

public round_start
()   

        g_round
++      

 

public round_restart
()

        g_round = 0

       

public HamSpawnPlayer
(id)

        if(is_user_alive(id))

        {

                server_menu(id)

                STEAM(id)

        }

 

stock bool
:is_user_steam(id)

{

        static dp_pointer;

     

        if 
(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))

        {

                server_cmd("dp_clientinfo %d", id);

                server_exec();

                return (get_pcvar_num(dp_pointer) == 2) ? true : false;

        }

           

        return false
;

}

public server_menu(id)

{

        new name[32]

        get_user_name(id, name, 31)

       

        static menu
[650], iLen

        iLen 
= 0

       

        if
(!equali(szMapName, "35_hp") && is_user_steam(id) && g_round >=3)

        {

                iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\wПривет: \y%s^n\wБонус для \rSteam \wигроков^n^n", name)

             

                iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \wАК-47^n")

                keys |= MENU_KEY_1

       

                iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \wМ4А1^n")

                keys |= MENU_KEY_2

       

                iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \wАВП^n")

                keys |= MENU_KEY_3

       

                iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \wФАМАС^n^n")

                keys |= MENU_KEY_4

       

                iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r0. \wВыход^n")

                keys |= MENU_KEY_0

       

                show_menu
(id, keys, menu, -1, "Menu 1")

        }

        else

        
{

                return

        
}

        return

}

 

public func_menu
(id, key)

{

        switch(key)

        {

                case 0:

                {

                        drop_weapons(id, 1)

                        drop_weapons(id, 2)

                        fm_give_item( id, "weapon_ak47" )

                        cs_set_user_bpammo( id , CSW_AK47, 90 )

                        fm_give_item( id, "weapon_deagle" )

                        cs_set_user_bpammo( id , CSW_DEAGLE, 90 )

                }

                case 1:

                {

                        drop_weapons(id, 1)

                        drop_weapons(id, 2)

                        fm_give_item( id, "weapon_m4a1" )

                        cs_set_user_bpammo( id , CSW_M4A1, 90 )

                        fm_give_item( id, "weapon_deagle" )

                        cs_set_user_bpammo( id , CSW_DEAGLE, 90 )

                }

                case 2:

                {

                        drop_weapons(id, 1)

                        drop_weapons(id, 2)

                        fm_give_item( id, "weapon_awp" )

                        cs_set_user_bpammo( id , CSW_AWP, 30 )

                        fm_give_item( id, "weapon_deagle" )

                        cs_set_user_bpammo( id , CSW_DEAGLE, 90 )

                }

                case 3:

                {

                        drop_weapons(id, 1)

                        drop_weapons(id, 2)

                        fm_give_item( id, "weapon_famas" )

                        cs_set_user_bpammo( id , CSW_FAMAS, 90 )

                        fm_give_item( id, "weapon_deagle" )

                        cs_set_user_bpammo( id , CSW_DEAGLE, 90 )

                }

        }

        return PLUGIN_HANDLED

}

public STEAM(id)

{

        if ( !equali(szMapName, "35_hp") && is_user_steam(id) )

        {

                drop_weapons(id, 2)

                fm_give_item( id, "weapon_hegrenade" )

                fm_give_item( id, "weapon_flashbang" )

                fm_give_item( id, "weapon_flashbang" )

                fm_give_item( id, "item_assaultsuit" )

                fm_give_item( id, "item_thighpack" )

                fm_give_item( id, "weapon_deagle")

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

        }

        return

}

stock drop_weapons(id, dropwhat)

{

        static weapons[32], num, i, weaponid

        num 
= 0

        get_user_weapons
(id, weapons, num)

 

        for 
(= 0; i < num; i++)

        {

                weaponid = weapons[i]

         

                if 
((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))

                {

                        static wname[32]

                        get_weaponname(weaponid, wname, charsmax(wname))

                        engclient_cmd(id, "drop", wname)

                }

        }



Суть вопроса такова :-) подскажите пожалуйста, как сделать в данном меню выдачу индивидуальных моделей оружия по принципу плагина: Gold_Weapon_Menu
То есть игрокам Steam будет присваиваться сторонняя модель оружия.
И добавить открытие этого меню с 3-го раунда. :-)
Аватара пользователя
Mr.PolaZ
 
Сообщения: 67
Зарегистрирован: 13 мар 2018, 14:36
Благодарил (а): 37 раз.
Поблагодарили: 2 раз.

Re: Steam Bonus: Добавление эксклюзивных моделей

Сообщение 00x1 » 22 апр 2018, 11:19

Код: Выделить всё
stock bool:is_user_steam(id)
{
        static dp_pointer;
        if (dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
        {
                server_cmd("dp_clientinfo %d", id);
                server_exec();
                return (get_pcvar_num(dp_pointer) == 2) ? true : false;
        }
        return false;
}


Проверка на steam игрока

Код: Выделить всё
if(is_user_steam(id)) { 
//
}


Чтобы сделать с третьего раунда, объяви глобальную переменную. В событии нового раунда, добавляй значение к переменной. В функции открытия меню с оружием, делай проверку: если переменная больше или равна трем, то вызывай меню, нет - игнорируй.
Аватара пользователя
00x1
 
Сообщения: 32
Зарегистрирован: 16 апр 2018, 03:17
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Steam Bonus: Добавление эксклюзивных моделей

Сообщение Mr.PolaZ » 22 апр 2018, 13:46

Попытка №1 :-)

Компиляция прошла успешно
Проверьте пожалуйста код (я только учусь)

Код: Выделить всё
#include < amxmodx >

#include < amxmisc >

#include < cstrike >

#include < fakemeta_util >

#include < hamsandwich >

 

#define PLUGIN  "steam_menu"

#define VERSION "2.0"

#define AUTHOR  "CaNiBaL"
#define DROP_TYPE    1

enum _:eGoldList{    Knife = 0,    Deagle,    Awp,    Ak47,    M4A1    };    

new szGoldV
[eGoldList][32] = {
    "models/gold/v_knife.mdl",
    "models/gold/v_deagle.mdl",
    "models/gold/v_awp.mdl",
    "models/gold/v_ak47.mdl",
    "models/gold/v_m4a1.mdl"
};

new szGoldP[eGoldList][32] = {
    "models/gold/p_knife.mdl",
    "models/gold/p_deagle.mdl",
    "models/gold/p_awp.mdl",
    "models/gold/p_ak47.mdl",
    "models/gold/p_m4a1.mdl"
};

new szGoldW[eGoldList][32] = {
    "",
    "models/gold/w_deagle.mdl",
    "models/gold/w_awp.mdl",
    "models/gold/w_ak47.mdl",
    "models/gold/w_m4a1.mdl"
};

public plugin_precache()
{
    for(new i = 0; i < sizeof(szGoldV); i++)    if (szGoldV[i][0])    precache_model(szGoldV[i]);
    for(new i = 0; i < sizeof(szGoldP); i++)    if (szGoldP[i][0])    precache_model(szGoldP[i]);
    for(new i = 0; i < sizeof(szGoldW); i++)    if (szGoldW[i][0])    precache_model(szGoldW[i]);
}
stock give_item_ex2(iPlayer, const szWeaponName[], iAmmo = 0, bool:bDrop = false, iKey = 0)
{
    if (!equal(szWeaponName, "weapon_", 7))
        return false;
    
    new iWeapon 
= engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, szWeaponName));
    
    if 
(!pev_valid(iWeapon))
        return false;
    
    if 
(bDrop)
    {
        new szWeapon[ 32 ],
            iSlot = ExecuteHamB(Ham_Item_ItemSlot, iWeapon),
            iItem = get_pdata_cbase(iPlayer, 367 + iSlot, 5);
        
        while 
((pev_valid(iItem) == 2))
        {
            pev(iItem, pev_classname, szWeapon, charsmax(szWeapon));
            
            switch
(DROP_TYPE)
            {
                case 1:    engclient_cmd(iPlayer, "drop", szWeapon);
                case 2: ham_strip_weapon(iPlayer, szWeapon);
            }
            
            iItem 
= get_pdata_cbase(iItem, 42, 4);
        }
    }
    
    set_pev
(iWeapon, pev_spawnflags, pev(iWeapon, pev_spawnflags) | SF_NORESPAWN);
    
    if 
(iKey > 0)    set_pev(iWeapon, pev_impulse, iKey);
    if (iAmmo > 0)    cs_set_user_bpammo(iPlayer, get_weaponid(szWeaponName), iAmmo);
    
    dllfunc
(DLLFunc_Spawn, iWeapon);
    dllfunc(DLLFunc_Touch, iWeapon, iPlayer);
    
    return true
;
}

stock ham_strip_weapon(id, weapon[])
{
    if(!equal(weapon,"weapon_",7)) return 0
    
    new wId 
= get_weaponid(weapon)
    if(!wId) return 0
    
    new wEnt
    while
((wEnt = engfunc(EngFunc_FindEntityByString, wEnt, "classname", weapon)) && pev(wEnt, pev_owner) != id) {}
    if(!wEnt) return 0
    
    new iTmp
    if
(get_user_weapon(id, iTmp, iTmp) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon, wEnt)
    
    if
(!ExecuteHamB(Ham_RemovePlayerItem, id, any:wEnt)) return 0
    
    ExecuteHamB
(Ham_Item_Kill, wEnt)
    set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wId))
    
    return 1
}

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_FAMAS)|(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_AK47)|(1<<CSW_P90)

const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)

 

new keys 
= MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0

 

new g_round
, szMapName[32]

 

public plugin_init
()

{

        register_plugin(PLUGIN, VERSION, AUTHOR)

       

        register_menu
("Menu 1", keys, "func_menu")

        RegisterHam( Ham_Spawn , "player" , "HamSpawnPlayer" , 1 )

        register_event("HLTV", "round_start", "a", "1=0", "2=0")

        register_event("TextMsg", "round_restart", "a", "2=#Game_will_restart_in","2=#Game_Commencing");

 

}

public plugin_cfg()

{
      

        get_mapname
(szMapName, sizeof(szMapName)-1);

}

 

public round_start
()   

        g_round
++      

 

public round_restart
()

        g_round = 0

       

public HamSpawnPlayer
(id)

        if(is_user_alive(id))

        {

                server_menu(id)

                STEAM(id)

        }

 

stock bool
:is_user_steam(id)

{

        static dp_pointer;

     

        if 
(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))

        {

                server_cmd("dp_clientinfo %d", id);

                server_exec();

                return (get_pcvar_num(dp_pointer) == 2) ? true : false;

        }

           

        return false
;

}

public server_menu(id)

{

        new name[32]

        get_user_name(id, name, 31)

       

        static menu
[650], iLen

        iLen 
= 0

       

        if
(!equali(szMapName, "35_hp") && is_user_steam(id) && g_round >=3)

        {

                iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\wПривет: \y%s^n\wБонус для \rSteam \wигроков^n^n", name)

             

                iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \wАК-47^n")

                keys |= MENU_KEY_1

       

                iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \wМ4А1^n")

                keys |= MENU_KEY_2

       

                iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \wАВП^n")

                keys |= MENU_KEY_3

       

                iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \wФАМАС^n^n")

                keys |= MENU_KEY_4

       

                iLen 
+= formatex(menu[iLen], charsmax(menu) - iLen, "\r0. \wВыход^n")

                keys |= MENU_KEY_0

       

                show_menu
(id, keys, menu, -1, "Menu 1")

        }

        else

        
{

                return

        
}

        return

}

 

public func_menu
(id, key)

{

        switch(key)

        {

                case 0:

                {

                        drop_weapons(id, 1)

                        drop_weapons(id, 2)

                        fm_give_item( id, "weapon_ak47" )

                        cs_set_user_bpammo( id , CSW_AK47, 90 )

                        fm_give_item( id, "weapon_deagle" )

                        cs_set_user_bpammo( id , CSW_DEAGLE, 90 )

                }

                case 1:

                {

                        drop_weapons(id, 1)

                        drop_weapons(id, 2)

                        fm_give_item( id, "weapon_m4a1" )

                        cs_set_user_bpammo( id , CSW_M4A1, 90 )

                        fm_give_item( id, "weapon_deagle" )

                        cs_set_user_bpammo( id , CSW_DEAGLE, 90 )

                }

                case 2:

                {

                        drop_weapons(id, 1)

                        drop_weapons(id, 2)

                        fm_give_item( id, "weapon_awp" )

                        cs_set_user_bpammo( id , CSW_AWP, 30 )

                        fm_give_item( id, "weapon_deagle" )

                        cs_set_user_bpammo( id , CSW_DEAGLE, 90 )

                }

                case 3:

                {

                        drop_weapons(id, 1)

                        drop_weapons(id, 2)

                        fm_give_item( id, "weapon_famas" )

                        cs_set_user_bpammo( id , CSW_FAMAS, 90 )

                        fm_give_item( id, "weapon_deagle" )

                        cs_set_user_bpammo( id , CSW_DEAGLE, 90 )

                }

        }

        return PLUGIN_HANDLED

}

public STEAM(id)

{

        if ( !equali(szMapName, "35_hp") && is_user_steam(id) )

        {

                drop_weapons(id, 2)

                fm_give_item( id, "weapon_hegrenade" )

                fm_give_item( id, "weapon_flashbang" )

                fm_give_item( id, "weapon_flashbang" )

                fm_give_item( id, "item_assaultsuit" )

                fm_give_item( id, "item_thighpack" )

                fm_give_item( id, "weapon_deagle")

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

        }

        return

}

stock drop_weapons(id, dropwhat)

{

        static weapons[32], num, i, weaponid

        num 
= 0

        get_user_weapons
(id, weapons, num)

 

        for 
(= 0; i < num; i++)

        {

                weaponid = weapons[i]

         

                if 
((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))

                {

                        static wname[32]

                        get_weaponname(weaponid, wname, charsmax(wname))

                        engclient_cmd(id, "drop", wname)

                }

        }

}



Протестировал, всё работает но модели оружия стиму выдаёт стандартные а не индивидуальные.
Подскажите что не так, пожему модели не заменяет? (на мои)

P.S. Модели скачивает, но не заменяет
Аватара пользователя
Mr.PolaZ
 
Сообщения: 67
Зарегистрирован: 13 мар 2018, 14:36
Благодарил (а): 37 раз.
Поблагодарили: 2 раз.

Re: Steam Bonus: Добавление эксклюзивных моделей

Сообщение 00x1 » 22 апр 2018, 20:28

Mr.PolaZ, так оно и не будет заменять их. Одного кэширования файлов недостаточно.
Аватара пользователя
00x1
 
Сообщения: 32
Зарегистрирован: 16 апр 2018, 03:17
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Steam Bonus: Добавление эксклюзивных моделей

Сообщение Mr.PolaZ » 22 апр 2018, 22:33

Хорошо, так как мне поправить ситуацию?
Аватара пользователя
Mr.PolaZ
 
Сообщения: 67
Зарегистрирован: 13 мар 2018, 14:36
Благодарил (а): 37 раз.
Поблагодарили: 2 раз.

Re: Steam Bonus: Добавление эксклюзивных моделей

Сообщение 00x1 » 22 апр 2018, 23:02

Mr.PolaZ, Вы должны зарегистрироваться, чтобы видеть ссылки., какую функцию использовать по замене моделей оружия. Единственное, тебе нужно использовать переменные для каждого типа оружия. В самом меню выставляешь значение переменным, в Ham_Item_Deploy проверяешь значение нужной переменной и устанавливаешь нужную модель.
Аватара пользователя
00x1
 
Сообщения: 32
Зарегистрирован: 16 апр 2018, 03:17
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Steam Bonus: Добавление эксклюзивных моделей

Сообщение Mr.PolaZ » 23 апр 2018, 11:05

Проверьте пожалуйста на ошибки. :-)
Функции кода: Выдача игрокам Steam гранат, брони и Deagle + замена моделей ножа, авп, м4а1, ак47 и Deagle (не выдача а именно замена, купленных стандартным способом)

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>

#define PLUGIN "Custom Weapons Model"
#define VERSION "0.2"
#define AUTHOR "Safety1st Remake PolaZ"

/*---------------EDIT ME------------------*/
new const gszKnifeModelV[] = "models/v_knife.mdl"    // 1st person view model
new const gszKnifeModelP[] = "models/p_knife.mdl"    // 3rd person view model
new const gszak47ModelV[] = "models/v_ak47.mdl"            // 1st person view model
new const gszak47ModelP[] = "models/p_ak47.mdl"            // 3rd person view model
new const gszawpModelV[] = "models/v_awp.mdl"            // 1st person view model
new const gszawpModelP[] = "models/p_awp.mdl"            // 3rd person view model
new const gszm4a1ModelV[] = "models/v_m4a1.mdl"            // 1st person view model
new const gszm4a1ModelP[] = "models/p_m4a1.mdl"            // 3rd person view model
new const gszdeagleModelV[] = "models/v_deagle.mdl"    // 1st person view model
new const gszdeagleModelP[] = "models/p_deagle.mdl"    // 3rd person view model
/*----------------------------------------*/

new giszKnifeModelV, giszKnifeModelP
new giszak47ModelV
, giszak47ModelP
new giszawpModelV
, giszawpModelP
new giszm4a1ModelV
, giszm4a1ModelP
new giszdeagleModelV
, giszdeagleModelP

public plugin_init
() {
    register_plugin( PLUGIN, VERSION, AUTHOR )

    RegisterHam( Ham_Item_Deploy, "weapon_knife" , "Fwd_ItemDeploy_Knife_Post", .Post = 1 )
    RegisterHam( Ham_Item_Deploy, "weapon_ak47",   "Fwd_ItemDeploy_ak47_Post",  .Post = 1 )
    RegisterHam( Ham_Item_Deploy, "weapon_awp",    "Fwd_ItemDeploy_awp_Post",   .Post = 1 )
    RegisterHam( Ham_Item_Deploy, "weapon_m4a1",   "Fwd_ItemDeploy_m4a1_Post",  .Post = 1 )
    RegisterHam( Ham_Item_Deploy, "weapon_deagle", "Fwd_ItemDeploy_deagle_Post",.Post = 1 )

    giszKnifeModelV = engfunc( EngFunc_AllocString, gszKnifeModelV )
    giszKnifeModelP = engfunc( EngFunc_AllocString, gszKnifeModelP )
        giszak47ModelV = engfunc( EngFunc_AllocString, gszak47ModelV )
        giszak47ModelP = engfunc( EngFunc_AllocString, gszak47ModelP )
        giszawpModelV = engfunc( EngFunc_AllocString, gszawpModelV )
        giszawpModelP = engfunc( EngFunc_AllocString, gszawpModelP )
        giszm4a1ModelV = engfunc( EngFunc_AllocString, gszm4a1ModelV )
        giszm4a1ModelP = engfunc( EngFunc_AllocString, gszm4a1ModelP )
        giszdeagleModelV = engfunc( EngFunc_AllocString, gszdeagleModelV )
        giszdeagleModelP = engfunc( EngFunc_AllocString, gszdeagleModelP )
}

public plugin_precache() {
    precache_model( gszKnifeModelV )
    precache_model( gszKnifeModelP )
    precache_model( gszak47ModelV )
    precache_model( gszak47ModelP )
    precache_model( gszawpModelV )
    precache_model( gszawpModelP )
    precache_model( gszm4a1ModelV )
    precache_model( gszm4a1ModelP )
    precache_model( gszdeagleModelV )
    precache_model( gszdeagleModelP )
}

public Fwd_ItemDeploy_Knife_Post( ent ) {
    const XO_WEAPON  = 4    // 'XO' means extraoffset
    const m_pPlayer  = 41

    new iPlayer 
= get_pdata_cbase( ent, m_pPlayer, XO_WEAPON )

    set_pev_string( iPlayer, pev_viewmodel2, giszKnifeModelV )
    set_pev_string( iPlayer, pev_weaponmodel2, giszKnifeModelP )

}

public Fwd_ItemDeploy_ak47_Post( ent ) {
    const XO_WEAPON  = 4    // 'XO' means extraoffset
    const m_pPlayer  = 41

    new iPlayer 
= get_pdata_cbase( ent, m_pPlayer, XO_WEAPON )

    set_pev_string( iPlayer, pev_viewmodel2, giszak47ModelV )
    set_pev_string( iPlayer, pev_weaponmodel2, giszak47ModelP )

}

public Fwd_ItemDeploy_awp_Post( ent ) {
    const XO_WEAPON  = 4    // 'XO' means extraoffset
    const m_pPlayer  = 41

    new iPlayer 
= get_pdata_cbase( ent, m_pPlayer, XO_WEAPON )

    set_pev_string( iPlayer, pev_viewmodel2, giszawpModelV )
    set_pev_string( iPlayer, pev_weaponmodel2, giszawpModelP )

}

public Fwd_ItemDeploy_m4a1_Post( ent ) {
    const XO_WEAPON  = 4    // 'XO' means extraoffset
    const m_pPlayer  = 41

    new iPlayer 
= get_pdata_cbase( ent, m_pPlayer, XO_WEAPON )

    set_pev_string( iPlayer, pev_viewmodel2, giszm4a1ModelV )
    set_pev_string( iPlayer, pev_weaponmodel2, giszm4a1ModelP )

}

public Fwd_ItemDeploy_deagle_Post( ent ) {
    const XO_WEAPON  = 4    // 'XO' means extraoffset
    const m_pPlayer  = 41

    new iPlayer 
= get_pdata_cbase( ent, m_pPlayer, XO_WEAPON )

    set_pev_string( iPlayer, pev_viewmodel2, giszdeagleModelV )
    set_pev_string( iPlayer, pev_weaponmodel2, giszdeagleModelP )

}

stock bool:is_user_steam(id)
{
        static dp_pointer;
        if (dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
        {
                server_cmd("dp_clientinfo %d", id);
                server_exec();
                return (get_pcvar_num(dp_pointer) == 2) ? true : false;
        }
        return false;
}

public STEAM(id)

{

        if (is_user_steam(id) )

        {


                fm_give_item( id, "weapon_hegrenade" )

                fm_give_item( id, "weapon_flashbang" )

                fm_give_item( id, "weapon_flashbang" )

                fm_give_item( id, "item_assaultsuit" )

                fm_give_item( id, "item_thighpack" )

                fm_give_item( id, "weapon_deagle")

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

        }

        return

Аватара пользователя
Mr.PolaZ
 
Сообщения: 67
Зарегистрирован: 13 мар 2018, 14:36
Благодарил (а): 37 раз.
Поблагодарили: 2 раз.

Re: Steam Bonus: Добавление эксклюзивных моделей

Сообщение 00x1 » 23 апр 2018, 11:39

Mr.PolaZ, ну так еще проверку на стим игрока добавьте, в функциях, где оружие меняете)
Аватара пользователя
00x1
 
Сообщения: 32
Зарегистрирован: 16 апр 2018, 03:17
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Steam Bonus: Добавление эксклюзивных моделей

Сообщение Mr.PolaZ » 23 апр 2018, 11:55

так? :-)

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>

#define PLUGIN "Custom Knife Model"
#define VERSION "0.2"
#define AUTHOR "Safety1st Remake PolaZ"

/*---------------EDIT ME------------------*/
new const gszKnifeModelV[] = "models/v_knife.mdl"    // 1st person view model
new const gszKnifeModelP[] = "models/p_knife.mdl"    // 3rd person view model
new const gszak47ModelV[] = "models/v_ak47.mdl"            // 1st person view model
new const gszak47ModelP[] = "models/p_ak47.mdl"            // 3rd person view model
new const gszawpModelV[] = "models/v_awp.mdl"            // 1st person view model
new const gszawpModelP[] = "models/p_awp.mdl"            // 3rd person view model
new const gszm4a1ModelV[] = "models/v_m4a1.mdl"            // 1st person view model
new const gszm4a1ModelP[] = "models/p_m4a1.mdl"            // 3rd person view model
new const gszdeagleModelV[] = "models/v_deagle.mdl"    // 1st person view model
new const gszdeagleModelP[] = "models/p_deagle.mdl"    // 3rd person view model
/*----------------------------------------*/

new giszKnifeModelV, giszKnifeModelP
new giszak47ModelV
, giszak47ModelP
new giszawpModelV
, giszawpModelP
new giszm4a1ModelV
, giszm4a1ModelP
new giszdeagleModelV
, giszdeagleModelP

public plugin_init
() {
    register_plugin( PLUGIN, VERSION, AUTHOR )

    RegisterHam( Ham_Item_Deploy, "weapon_knife" , "Fwd_ItemDeploy_Knife_Post", .Post = 1 )
    RegisterHam( Ham_Item_Deploy, "weapon_ak47",   "Fwd_ItemDeploy_ak47_Post",  .Post = 1 )
    RegisterHam( Ham_Item_Deploy, "weapon_awp",    "Fwd_ItemDeploy_awp_Post",   .Post = 1 )
    RegisterHam( Ham_Item_Deploy, "weapon_m4a1",   "Fwd_ItemDeploy_m4a1_Post",  .Post = 1 )
    RegisterHam( Ham_Item_Deploy, "weapon_deagle", "Fwd_ItemDeploy_deagle_Post",.Post = 1 )

    giszKnifeModelV = engfunc( EngFunc_AllocString, gszKnifeModelV )
    giszKnifeModelP = engfunc( EngFunc_AllocString, gszKnifeModelP )
        giszak47ModelV = engfunc( EngFunc_AllocString, gszak47ModelV )
        giszak47ModelP = engfunc( EngFunc_AllocString, gszak47ModelP )
        giszawpModelV = engfunc( EngFunc_AllocString, gszawpModelV )
        giszawpModelP = engfunc( EngFunc_AllocString, gszawpModelP )
        giszm4a1ModelV = engfunc( EngFunc_AllocString, gszm4a1ModelV )
        giszm4a1ModelP = engfunc( EngFunc_AllocString, gszm4a1ModelP )
        giszdeagleModelV = engfunc( EngFunc_AllocString, gszdeagleModelV )
        giszdeagleModelP = engfunc( EngFunc_AllocString, gszdeagleModelP )
}

public plugin_precache() {
    precache_model( gszKnifeModelV )
    precache_model( gszKnifeModelP )
    precache_model( gszak47ModelV )
    precache_model( gszak47ModelP )
    precache_model( gszawpModelV )
    precache_model( gszawpModelP )
    precache_model( gszm4a1ModelV )
    precache_model( gszm4a1ModelP )
    precache_model( gszdeagleModelV )
    precache_model( gszdeagleModelP )
}

public Fwd_ItemDeploy_Knife_Post(id) {
        
        if
(!is_user_alive(id) || !is_user_steam(id)) 
        
{

                const XO_WEAPON  = 4    // 'XO' means extraoffset
                const m_pPlayer  = 41

                new iPlayer 
= get_pdata_cbase( id, m_pPlayer, XO_WEAPON )

                set_pev_string( iPlayer, pev_viewmodel2, giszKnifeModelV )
                set_pev_string( iPlayer, pev_weaponmodel2, giszKnifeModelP )
        }

}

public Fwd_ItemDeploy_ak47_Post(id) {

        if(!is_user_alive(id) || !is_user_steam(id))
          {

                const XO_WEAPON  = 4    // 'XO' means extraoffset
                const m_pPlayer  = 41

                new iPlayer 
= get_pdata_cbase( id, m_pPlayer, XO_WEAPON )

                set_pev_string( iPlayer, pev_viewmodel2, giszak47ModelV )
                set_pev_string( iPlayer, pev_weaponmodel2, giszak47ModelP )
          }

}

public Fwd_ItemDeploy_awp_Post(id) {

        if(!is_user_alive(id) || !is_user_steam(id)) 
        
{

                const XO_WEAPON  = 4    // 'XO' means extraoffset
                const m_pPlayer  = 41

                new iPlayer 
= get_pdata_cbase( id, m_pPlayer, XO_WEAPON )

                set_pev_string( iPlayer, pev_viewmodel2, giszawpModelV )
                set_pev_string( iPlayer, pev_weaponmodel2, giszawpModelP )
        }

}

public Fwd_ItemDeploy_m4a1_Post(id) {

        if(!is_user_alive(id) || !is_user_steam(id)) 
        
{

                const XO_WEAPON  = 4    // 'XO' means extraoffset
                const m_pPlayer  = 41

                new iPlayer 
= get_pdata_cbase( id, m_pPlayer, XO_WEAPON )

                set_pev_string( iPlayer, pev_viewmodel2, giszm4a1ModelV )
                set_pev_string( iPlayer, pev_weaponmodel2, giszm4a1ModelP )
        }

}

public Fwd_ItemDeploy_deagle_Post(id) {

        if(!is_user_alive(id) || !is_user_steam(id)) 
      
{

                const XO_WEAPON  = 4    // 'XO' means extraoffset
                const m_pPlayer  = 41

                new iPlayer 
= get_pdata_cbase( id, m_pPlayer, XO_WEAPON )

                set_pev_string( iPlayer, pev_viewmodel2, giszdeagleModelV )
                set_pev_string( iPlayer, pev_weaponmodel2, giszdeagleModelP )
    }

}

stock bool:is_user_steam(id)
{
        static dp_pointer;
        if (dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
        {
                server_cmd("dp_clientinfo %d", id);
                server_exec();
                return (get_pcvar_num(dp_pointer) == 2) ? true : false;
        }
        return false;
}

public STEAM(id)

{

        if (is_user_steam(id) )

        {


                fm_give_item( id, "weapon_hegrenade" )

                fm_give_item( id, "weapon_flashbang" )

                fm_give_item( id, "weapon_flashbang" )

                fm_give_item( id, "item_assaultsuit" )

                fm_give_item( id, "item_thighpack" )

                fm_give_item( id, "weapon_deagle")

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

        }

        return




Ещё вопрос есть к вам.
Как ограничить выдачу оружия на определённых картах и оставить функцию замены моделей?

Я тут порылся и нашёл Вы должны зарегистрироваться, чтобы видеть ссылки. но я как-то не пойму как добавить несколько запрещённых карт в функцию
Код: Выделить всё
if(!equal(map, "de_dust2")


в моём случае она проверяет игрока на Steam
Код: Выделить всё
if ( !equali(szMapName, "35_hp") && is_user_steam(id) )


то есть если карта не "35_hp", то выполнить следующее:
Код: Выделить всё
{


                fm_give_item( id, "weapon_hegrenade" )

                fm_give_item( id, "weapon_flashbang" )

                fm_give_item( id, "weapon_flashbang" )

                fm_give_item( id, "item_assaultsuit" )

                fm_give_item( id, "item_thighpack" )

                fm_give_item( id, "weapon_deagle")

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

        }


Подскажите, как добавить запрещённые карты карты?
или нужно назначить данную секцию для каждой карты?

Например:
Код: Выделить всё
        if ( !equali(szMapName, "35_hp") && is_user_steam(id) )

        {


                fm_give_item( id, "weapon_hegrenade" )

                fm_give_item( id, "weapon_flashbang" )

                fm_give_item( id, "weapon_flashbang" )

                fm_give_item( id, "item_assaultsuit" )

                fm_give_item( id, "item_thighpack" )

                fm_give_item( id, "weapon_deagle")

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

        }


Код: Выделить всё
        if ( !equali(szMapName, "awp_india") && is_user_steam(id) )

        {


                fm_give_item( id, "weapon_hegrenade" )

                fm_give_item( id, "weapon_flashbang" )

                fm_give_item( id, "weapon_flashbang" )

                fm_give_item( id, "item_assaultsuit" )

                fm_give_item( id, "item_thighpack" )

                fm_give_item( id, "weapon_deagle")

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

                fm_give_item( id, "ammo_50ae" )

        }


и так далее
Аватара пользователя
Mr.PolaZ
 
Сообщения: 67
Зарегистрирован: 13 мар 2018, 14:36
Благодарил (а): 37 раз.
Поблагодарили: 2 раз.

Re: Steam Bonus: Добавление эксклюзивных моделей

Сообщение 00x1 » 23 апр 2018, 14:47

Mr.PolaZ,
Код: Выделить всё
   if(!is_user_alive(id) || !is_user_steam(id))



Как читается условие? Если игрок НЕ живой ИЛИ НЕ стим, то выполняем ...
Неправильно)

Добавлено спустя 11 минут 59 секунд:
Код: Выделить всё
if(!equal(map, "de_dust2"))


equal сравнивает две строки. В массив map мы записали текущее название карты и сравниваем со вторым аргументом, в данном случае - de_dust2.

Знаки ! и ~ обозначают отрицание.

Код: Выделить всё
#include <amxmodx>

new g_sMap[32]

public plugin_init() {
    get_mapname(g_sMap, charsmax(g_sMap))
}

public lala() {
    if(equal(g_sMap, "35_hp")) {
        server_print("Текущая карта %s, работа завершена", g_sMap)
        return PLUGIN_HANDLED    // блокируем все нахрен
    }else
    if (equal(g_sMap, "de_dust2")) {
        server_print("Текущая карта %s, все круто", g_sMap)
    }
    return PLUGIN_CONTINUE
}


Добавлено спустя 3 минуты 11 секунд:
Вот еще в качестве примера тебе

Код: Выделить всё
public lala() {
    if(!
equal(g_sMap"35_hp") || !equal(g_sMap"awp_india")) {
        
// Если короче не 35хп или не авп индия то чет здесь надо делать.
    
}
Аватара пользователя
00x1
 
Сообщения: 32
Зарегистрирован: 16 апр 2018, 03:17
Благодарил (а): 0 раз.
Поблагодарили: 4 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

След.

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

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

Сейчас этот форум просматривают: Nameless1337 и гости: 7