Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Steam Bonus + Replace Models (нужна помощь)

, плагин работает не так как хотелось бы, помогите пожалуйста.
Статус пользователя PolaZ
сообщение 15.5.2018, 20:47
Сообщение #1


Стаж: 8 лет

Сообщений: 33
Благодарностей: 2
Полезность: 48

Доброго времени суток дорогие участники сообщества.
Пришёл я к вам за помощью.
Я нашёл у вас как-то на форуме плагин "Knife Custom Model" (замена модели ножа )
Решил в общем написать первый плагин, позаимствовав идею данного плагина.

Суть написанного плагина в том:
Плагин предназначен для игроков Steam
1. Плагин выдаёт в начале каждого раунда игрокам Steam (Deagle;Full Armor;HE;Smoke and Flash Grenade начиная с первого раунда)
2. Плагин заменяет модели Knife, AWP, M4a1, AK47, Deagle (только игрокам Steam)
2.1 Плагин не выдаёт AWP, M4a1, AK47 игроки Steam их покупают так же как и все игроки на сервере (просто идёт замена моделей)

Плагин выдаёт бонусы Steam игрокам, но замена моделей происходит у всех игроков как Steam и NonSteam
подскажите пожалуйста что я делаю не так?

Я хотел бы сделать отображение моделей оружия по принципу плагина "Gold Weapon"
Что бы при наблюдении за Steam игроком NonSteam видел заменённую модель которая находится в руках у Steam игрока.
Если NonSteam поднимает данную модель оружия, он с ней может побегать.
Т.е. NonSteam мог бы полностью взаимодействовать со Steam моделями.(но при покупке выше указанного оружия, замена моделей происходила только у Steam игроков)

Сам код:
Код
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>

#define PLUGIN "Custom Weapon Model & Steam Bonus"
#define VERSION "0.1"
#define AUTHOR "PolaZ"

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

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

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

new g_round
new szMapName[32]

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

        RegisterHam(Ham_Spawn,"player","HamSpawnPlayer",1)
        register_event("HLTV","round_start","a","1=0","2=0")

    RegisterHam( Ham_Item_Deploy,"weapon_knife","HamItemDeploy_Knife", 1 )
    RegisterHam( Ham_Item_Deploy,"weapon_ak47","HamItemDeploy_ak47", 1 )
    RegisterHam( Ham_Item_Deploy,"weapon_awp","HamItemDeploy_awp", 1 )
    RegisterHam( Ham_Item_Deploy,"weapon_m4a1","HamItemDeploy_m4a1", 1 )
    RegisterHam( Ham_Item_Deploy,"weapon_deagle","HamItemDeploy_deagle", 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 plugin_cfg()

{

        get_mapname(szMapName, 31);

}

public round_start()  

        g_round++;      



public round_restart()

        g_round = 0;

      

public HamSpawnPlayer(id){

        if(is_user_alive(id) && is_user_steam(id))

        if(!equali(szMapName, "css_india_go"))

        {

                STEAM(id)
                

        }else{
              return;
        }
}

public 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" )
}

public HamItemDeploy(id){

            if(is_user_steam(id))

           {

                HamItemDeploy_Knife(id)
                HamItemDeploy_ak47(id)
                HamItemDeploy_awp(id)
                HamItemDeploy_m4a1(id)
                HamItemDeploy_deagle(id)

           }else{
      return;          
      }
}

public HamItemDeploy_Knife(id){

                const XO_WEAPON  = 4
                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 HamItemDeploy_ak47(id){

                const XO_WEAPON  = 4
                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 HamItemDeploy_awp(id){

                const XO_WEAPON  = 4
                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 HamItemDeploy_m4a1(id){

                const XO_WEAPON  = 4
                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 HamItemDeploy_deagle(id){

                const XO_WEAPON  = 4
                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 )
}

drop_weapons(id, dropwhat)

{

        static weapons[32], num, i, weaponid

        num = 0;

        get_user_weapons(id, weapons, num)



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

        {

                weaponid = weapons[i]

        

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

                {

                        static wname[32]

                        get_weaponname(weaponid, wname, charsmax(wname))

                        engclient_cmd(id, "drop", wname)

                }

        }

}

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;
}


P.S. Я только недавно занялся програмированием и отдал своё предпочтение многоплатформенному языку "Java", прошу сильно не ругать :)
Ребята, помогите и объясните пожалуйста как это можно осуществить...этот плагин уже мне все мозги выел...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Legenda
сообщение 15.5.2018, 22:01
Сообщение #2


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

ты же сам зарегисрировал событие
Код
   RegisterHam( Ham_Item_Deploy,"weapon_knife","HamItemDeploy_Knife", 1 )

по этому событию вызывается функция HamItemDeploy_Knife внутри плагина

Код
public HamItemDeploy_Knife(id){

                const XO_WEAPON  = 4
                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 )
}
и где тут проверка steam игрок или нет?

вообще не нужно, тем более эта функция ни где не вызывается
Код
public HamItemDeploy(id){

            if(is_user_steam(id))

           {

                HamItemDeploy_Knife(id)
                HamItemDeploy_ak47(id)
                HamItemDeploy_awp(id)
                HamItemDeploy_m4a1(id)
                HamItemDeploy_deagle(id)

           }else{
      return;          
      }
}


is_user_steam дергать каждый раз смысла нет
используй

Код
#define BIT_VALID(%1,%2) ((%1) & (1 << ((%2) - 1)))
#define BIT_ADD(%1,%2) ((%1) |= (1 << ((%2) - 1)))
#define BIT_SUB(%1,%2) ((%1) &= ~(1 << ((%2) - 1)))
#define BIT_NOT_VALID(%1,%2) (~(%1) & (1 << ((%2) - 1)))

new g_iBitClientSteam

public client_putinserver(id)
{
    if (is_user_steam(id))
        BIT_ADD(g_iBitClientSteam, id);
}

public client_disconnect(id)
{
    BIT_SUB(g_iBitClientSteam, id);
}

public HamItemDeploy_Knife(plr){
                new iPlayer = get_pdata_cbase( plr, 41, 4)
                if(BIT_VALID(g_iBitClientAccess, iPlayer )
                {      
                      set_pev_string( iPlayer, pev_viewmodel2, giszKnifeModelV )
                      set_pev_string( iPlayer, pev_weaponmodel2, giszKnifeModelP )
                      }
}

и так далее.....


const XO_WEAPON = 4
const m_pPlayer = 41
так же не понятно зачем каждый раз объявлять....

ну HamItemDeploy ... id игрока не содержит...
несколько мелких ошибок и т.п.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя PolaZ
сообщение 15.5.2018, 22:05
Сообщение #3


Стаж: 8 лет

Сообщений: 33
Благодарностей: 2
Полезность: 48

Legenda, Спасибо, я попробую что-нибудь сделать :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя PolaZ
сообщение 15.5.2018, 23:19
Сообщение #4


Стаж: 8 лет

Сообщений: 33
Благодарностей: 2
Полезность: 48

Цитата(PolaZ @ 15.5.2018, 22:05) *
Legenda, Спасибо, я попробую что-нибудь сделать :)

Немогу понять из за чего ошибка "не массив или слишком много индексов"
Код
error 028: invalid subscript (not an array or too many subscripts): "g_iBitClientAccess"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя PolaZ
сообщение 16.5.2018, 9:18
Сообщение #5


Стаж: 8 лет

Сообщений: 33
Благодарностей: 2
Полезность: 48

Cкрытый текст
Код
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>

#define PLUGIN "Custom Weapon Model & Steam Bonus"
#define VERSION "0.1"
#define AUTHOR "PolaZ"

#define BIT_VALID(%1,%2) ((%1) & (1 << ((%2) - 1)))
#define BIT_ADD(%1,%2) ((%1) |= (1 << ((%2) - 1)))
#define BIT_SUB(%1,%2) ((%1) &= ~(1 << ((%2) - 1)))
#define BIT_NOT_VALID(%1,%2) (~(%1) & (1 << ((%2) - 1)))

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

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

new giszKnifeModelV, giszKnifeModelP
new giszak47ModelV, giszak47ModelP, giszak47ModelW
new giszawpModelV, giszawpModelP, giszawpModelW
new giszm4a1ModelV, giszm4a1ModelP, giszm4a1ModelW
new giszdeagleModelV, giszdeagleModelP, giszdeagleModelW

new g_round
new szMapName[32]
new g_iBitClientSteam

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

        RegisterHam(Ham_Spawn,"player","HamSpawnPlayer",1)
        register_event("HLTV","round_start","a","1=0","2=0")

    RegisterHam( Ham_Item_Deploy,"weapon_knife","HamItemDeploy_Knife", 1 )
    RegisterHam( Ham_Item_Deploy,"weapon_ak47","HamItemDeploy_ak47", 1 )
    RegisterHam( Ham_Item_Deploy,"weapon_awp","HamItemDeploy_awp", 1 )
    RegisterHam( Ham_Item_Deploy,"weapon_m4a1","HamItemDeploy_m4a1", 1 )
    RegisterHam( Ham_Item_Deploy,"weapon_deagle","HamItemDeploy_deagle", 1 )

    giszKnifeModelV = engfunc(EngFunc_AllocString,gszKnifeModelV)
    giszKnifeModelP = engfunc(EngFunc_AllocString,gszKnifeModelP)
    giszak47ModelV = engfunc(EngFunc_AllocString,gszak47ModelV)
    giszak47ModelP = engfunc(EngFunc_AllocString,gszak47ModelP)
    giszak47ModelW = engfunc(EngFunc_AllocString,gszak47ModelW)
    giszawpModelV = engfunc(EngFunc_AllocString,gszawpModelV)
    giszawpModelP = engfunc(EngFunc_AllocString,gszawpModelP)
    giszawpModelW = engfunc(EngFunc_AllocString,gszawpModelW)
    giszm4a1ModelV = engfunc(EngFunc_AllocString,gszm4a1ModelV)
    giszm4a1ModelP = engfunc(EngFunc_AllocString,gszm4a1ModelP)
    giszm4a1ModelW = engfunc(EngFunc_AllocString,gszm4a1ModelW)
    giszdeagleModelV = engfunc(EngFunc_AllocString,gszdeagleModelV)
    giszdeagleModelP = engfunc(EngFunc_AllocString,gszdeagleModelP)
    giszdeagleModelW = engfunc(EngFunc_AllocString,gszdeagleModelW)
}

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

public client_putinserver(id)
{
    if (is_user_steam(id))
        BIT_ADD(g_iBitClientSteam, id);
}

public client_disconnect(id)
{
    BIT_SUB(g_iBitClientSteam, id);
}

public plugin_cfg()

{

        get_mapname(szMapName, 31);

}

public round_start()  

        g_round++;      



public round_restart()

        g_round = 0;

      

public HamSpawnPlayer(id){

        if(is_user_alive(id) && is_user_steam(id))

        if(!equali(szMapName, "css_india_go"))

        {

                STEAM(id)
                

        }else{
              return;
        }
}

public 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" )
}

public HamItemDeploy_Knife(plr){

                new iPlayer = get_pdata_cbase( plr, 41, 4)
                if(BIT_VALID( g_iBitClientAccess , iPlayer)
                {      
                      set_pev_string( iPlayer, pev_viewmodel2, giszKnifeModelV )
                      set_pev_string( iPlayer, pev_weaponmodel2, giszKnifeModelP )
}

public HamItemDeploy_ak47(plr){

                new iPlayer = get_pdata_cbase( plr, 41, 4)
                if(BIT_VALID( g_iBitClientAccess , iPlayer)
                {      
                      set_pev_string( iPlayer, pev_viewmodel2, giszak47ModelV )
                      set_pev_string( iPlayer, pev_weaponmodel2, giszak47ModelP )
                      set_pev_string( iPlayer, pev_weaponmodel2, giszak47ModelW )
}

public HamItemDeploy_awp(plr){

                new iPlayer = get_pdata_cbase( plr, 41, 4)
                if(BIT_VALID( g_iBitClientAccess , iPlayer)
                {      
                      set_pev_string( iPlayer, pev_viewmodel2, giszawpModelV )
                      set_pev_string( iPlayer, pev_weaponmodel2, giszawpModelP )
                      set_pev_string( iPlayer, pev_weaponmodel2, giszawpModelW )
}

public HamItemDeploy_m4a1(plr){

                new iPlayer = get_pdata_cbase( plr, 41, 4)
                if(BIT_VALID( g_iBitClientAccess , iPlayer)
                {      
                       set_pev_string( iPlayer, pev_viewmodel2, giszm4a1ModelV )
                       set_pev_string( iPlayer, pev_weaponmodel2, giszm4a1ModelP )
                       set_pev_string( iPlayer, pev_weaponmodel2, giszm4a1ModelW )
}

public HamItemDeploy_deagle(plr){

                new iPlayer = get_pdata_cbase( plr, 41, 4)
                if(BIT_VALID( g_iBitClientAccess , iPlayer)
                {      
                       set_pev_string( iPlayer, pev_viewmodel2, giszdeagleModelV )
                       set_pev_string( iPlayer, pev_weaponmodel2, giszdeagleModelP )
                       set_pev_string( iPlayer, pev_weaponmodel2, giszdeagleModelW )
}

drop_weapons(id, dropwhat)

{

        static weapons[32], num, i, weaponid

        num = 0;

        get_user_weapons(id, weapons, num)



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

        {

                weaponid = weapons[i]

        

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

                {

                        static wname[32]

                        get_weaponname(weaponid, wname, charsmax(wname))

                        engclient_cmd(id, "drop", wname)

                }

        }

}

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;
}


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 16.5.2018, 11:14
Сообщение #6


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

Код:
if(BIT_VALID( g_iBitClientAccess , iPlayer)

как минимум не хватает закрывающей скобки
Код:
if(BIT_VALID( g_iBitClientAccess , iPlayer))


и компилятор стоит локальный использовать, 1.8.2 последней версии

и функции много где не закрыты.
Код
имя функции
{
.....
.....
}

а ты пишешь

имя функции
{
.....

имя функции
{
.....

имя функции
{
.....

поэтому компилятору не понятно что и где находится, где начинается и где заканчивается функция
вообще разметка кривая.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя PolaZ
сообщение 16.5.2018, 12:25
Сообщение #7


Стаж: 8 лет

Сообщений: 33
Благодарностей: 2
Полезность: 48

Legenda,

Cкрытый текст
Код
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>

#define PLUGIN "Custom Weapon Model & Steam Bonus"
#define VERSION "0.1"
#define AUTHOR "PolaZ"

#define BIT_VALID(%1,%2) ((%1) & (1 << ((%2) - 1)))
#define BIT_ADD(%1,%2) ((%1) |= (1 << ((%2) - 1)))
#define BIT_SUB(%1,%2) ((%1) &= ~(1 << ((%2) - 1)))
#define BIT_NOT_VALID(%1,%2) (~(%1) & (1 << ((%2) - 1)))

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

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

new giszKnifeModelV, giszKnifeModelP
new giszak47ModelV, giszak47ModelP, giszak47ModelW
new giszawpModelV, giszawpModelP, giszawpModelW
new giszm4a1ModelV, giszm4a1ModelP, giszm4a1ModelW
new giszdeagleModelV, giszdeagleModelP, giszdeagleModelW

new g_round
new szMapName[32]
new g_iBitClientSteam, g_iBitClientAccess

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

        RegisterHam(Ham_Spawn,"player","HamSpawnPlayer",1)
        register_event("HLTV","round_start","a","1=0","2=0")

    RegisterHam( Ham_Item_Deploy,"weapon_knife","HamItemDeploy_Knife", 1 )
    RegisterHam( Ham_Item_Deploy,"weapon_ak47","HamItemDeploy_ak47", 1 )
    RegisterHam( Ham_Item_Deploy,"weapon_awp","HamItemDeploy_awp", 1 )
    RegisterHam( Ham_Item_Deploy,"weapon_m4a1","HamItemDeploy_m4a1", 1 )
    RegisterHam( Ham_Item_Deploy,"weapon_deagle","HamItemDeploy_deagle", 1 )

    giszKnifeModelV = engfunc(EngFunc_AllocString,gszKnifeModelV)
    giszKnifeModelP = engfunc(EngFunc_AllocString,gszKnifeModelP)
    giszak47ModelV = engfunc(EngFunc_AllocString,gszak47ModelV)
    giszak47ModelP = engfunc(EngFunc_AllocString,gszak47ModelP)
    giszak47ModelW = engfunc(EngFunc_AllocString,gszak47ModelW)
    giszawpModelV = engfunc(EngFunc_AllocString,gszawpModelV)
    giszawpModelP = engfunc(EngFunc_AllocString,gszawpModelP)
    giszawpModelW = engfunc(EngFunc_AllocString,gszawpModelW)
    giszm4a1ModelV = engfunc(EngFunc_AllocString,gszm4a1ModelV)
    giszm4a1ModelP = engfunc(EngFunc_AllocString,gszm4a1ModelP)
    giszm4a1ModelW = engfunc(EngFunc_AllocString,gszm4a1ModelW)
    giszdeagleModelV = engfunc(EngFunc_AllocString,gszdeagleModelV)
    giszdeagleModelP = engfunc(EngFunc_AllocString,gszdeagleModelP)
    giszdeagleModelW = engfunc(EngFunc_AllocString,gszdeagleModelW)
}

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

public client_putinserver(id)
{
    if (is_user_steam(id))
        BIT_ADD(g_iBitClientSteam, id);
}

public client_disconnect(id)
{
    BIT_SUB(g_iBitClientSteam, id);
}

public plugin_cfg()

{

        get_mapname(szMapName, 31);

}

public round_start()  

        g_round++;      



public round_restart()

        g_round = 0;

      

public HamSpawnPlayer(id){

        if(is_user_alive(id) && is_user_steam(id))

        if(!equali(szMapName, "css_india_go"))

        {

                STEAM(id)
                

        }else{
              return;
        }
}

public 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" )
}

public HamItemDeploy_Knife(plr){

                new iPlayer = get_pdata_cbase( plr, 41, 4)
                if(BIT_VALID( g_iBitClientAccess , iPlayer))
                {      
                      set_pev_string( iPlayer, pev_viewmodel2, giszKnifeModelV )
                      set_pev_string( iPlayer, pev_weaponmodel2, giszKnifeModelP )
                }
}

public HamItemDeploy_ak47(plr){

                new iPlayer = get_pdata_cbase( plr, 41, 4)
                if(BIT_VALID( g_iBitClientAccess , iPlayer))
                {      
                      set_pev_string( iPlayer, pev_viewmodel2, giszak47ModelV )
                      set_pev_string( iPlayer, pev_weaponmodel2, giszak47ModelP )
                      set_pev_string( iPlayer, pev_weaponmodel2, giszak47ModelW )
                }
}

public HamItemDeploy_awp(plr){

                new iPlayer = get_pdata_cbase( plr, 41, 4)
                if(BIT_VALID( g_iBitClientAccess , iPlayer))
                {      
                      set_pev_string( iPlayer, pev_viewmodel2, giszawpModelV )
                      set_pev_string( iPlayer, pev_weaponmodel2, giszawpModelP )
                      set_pev_string( iPlayer, pev_weaponmodel2, giszawpModelW )
                }
}

public HamItemDeploy_m4a1(plr){

                new iPlayer = get_pdata_cbase( plr, 41, 4)
                if(BIT_VALID( g_iBitClientAccess , iPlayer))
                {      
                       set_pev_string( iPlayer, pev_viewmodel2, giszm4a1ModelV )
                       set_pev_string( iPlayer, pev_weaponmodel2, giszm4a1ModelP )
                       set_pev_string( iPlayer, pev_weaponmodel2, giszm4a1ModelW )
                }
}

public HamItemDeploy_deagle(plr){

                new iPlayer = get_pdata_cbase( plr, 41, 4)
                if(BIT_VALID( g_iBitClientAccess , iPlayer))
                {      
                       set_pev_string( iPlayer, pev_viewmodel2, giszdeagleModelV )
                       set_pev_string( iPlayer, pev_weaponmodel2, giszdeagleModelP )
                       set_pev_string( iPlayer, pev_weaponmodel2, giszdeagleModelW )
                }
}

drop_weapons(id, dropwhat)

{

        static weapons[32], num, i, weaponid

        num = 0;

        get_user_weapons(id, weapons, num)



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

        {

                weaponid = weapons[i]

        

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

                {

                        static wname[32]

                        get_weaponname(weaponid, wname, charsmax(wname))

                        engclient_cmd(id, "drop", wname)

                }

        }

}

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;
}


Компиляция успешна, но модели не заменяет , объясните пожалуйста как работает данная функция "g_iBitClientAccess" и "g_iBitClientSteam"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 16.5.2018, 13:19
Сообщение #8


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

g_iBitClientAccess замени на g_iBitClientSteam
g_iBitClientSteam как массив битов работает
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя PolaZ
сообщение 16.5.2018, 14:49
Сообщение #9


Стаж: 8 лет

Сообщений: 33
Благодарностей: 2
Полезность: 48

[quote name='Legenda' date='16.5.2018, 13:19' post='1058457']
Спасибо большое :) , подскажите пожалуйста а игроки NonSteam будут видеть Steam модели? (при наблюдении за Steam игроком)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 18.5.2018, 12:59
Сообщение #10


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

смотря какие модели, будут

для оружие есть три модели
модель на полу/земле
модель от 3 лица
модель от 1 лица
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: