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

CSDM Shop menu: скомпилировать с небольшими изменениями

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

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

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

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

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

CSDM Shop menu: скомпилировать с небольшими изменениями

Сообщение 6u6uka » 22 янв 2018, 19:19

И снова я, но уже с другим меню
Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <amxmisc>

#define PLUGIN "CSDM Menu"
#define VERSION "1.0"
#define AUTHOR "ANONIM"

#define MAX_PLAYERS    32


 #define VIP ADMIN_LEVEL_H //Флаг доступа для ВИП
 #define ADMIN ADMIN_BAN //Флаг доступа для АДМИНА



        new M4_V_MODEL[64] = "models/v_golden_m4a1.mdl" //Модель золотой M4A1
        new M4_P_MODEL[64] = "models/p_golden_m4a1.mdl" //Модель золотой M4A1

        new AK_V_MODEL[64] = "models/v_golden_ak47.mdl" //Модель золотой AK47
        new AK_P_MODEL[64] = "models/p_golden_ak47.mdl" //Модель золотой AK47

        #define is_valid_player(%1) (1 <= %1 <= 32)

        new cvar_dmgmultiplier
        new cvar_goldbullets    
        new cvar_custommodel    
        new    cvar_uclip            

        new bool
:g_HasM4[33]    

        new bullets
[ 33 ]        

        new m_spriteTexture   



        new const AK47_BIT_SUM 
= (1<<CSW_AK47)

        new g_hasZoom[33]
        new gold_damage
        new golden_model

        new bool
:g_HasAk[33]

    #define DELAY_MONEY 350 //Время после которого, можно взять деньги            | По умолчанию: 600 (10 мин.)
    #define DELAY_HP 300     //Время после которого, можно взять HP                      | По умолчанию: 60  (10 мин.)
    #define DELAY_MENU 250  //Время после которого, меню включится                      | По умолчанию: 300 (5 мин.)
    #define DELAY_GM4A1 120 //Время после которого, можно взять Gold M4a1      | По умолчанию: 120 (2 мин.)
    #define DELAY_GAK47 120 //Время после которого, можно взять Gold M4a1      | По умолчанию: 120 (2 мин.)

    #define VIP_MONEYS 16000 //Сколько денег выдавать | По умолчанию: 10000
    #define VIP_HP 200   //Сколько здоровья выдавать  | По умолчанию: 100

  #define VIP_SPEED 500.0 //Сколько скорости выдавать      s| По умолчанию: 100
  #define VIP_GRAVITY 0.5 //Сколько гравитации выдавать  | По умолчанию: 100

    new MenuTimeHP[MAX_PLAYERS + 1];
    new MenuTimeMoney[MAX_PLAYERS + 1];
    new MenuTimeGOLDM4A1[MAX_PLAYERS + 1];
    new MenuTimeGOLDAK47[MAX_PLAYERS + 1];

        new VipMenuTimeGOLDM4A1 [MAX_PLAYERS + 1];
        new VipMenuTimeGOLDAK47 [MAX_PLAYERS + 1];
        new VipMenuTimeMoney [MAX_PLAYERS + 1];
        new VipMenuTimeHP [MAX_PLAYERS + 1];
        new VipMenuTime;

        new GravityTake [MAX_PLAYERS + 1];
        new SpeedTake [MAX_PLAYERS + 1];

        new PlayerDeathNow [MAX_PLAYERS + 1];
        new PlayerDeathLast [MAX_PLAYERS + 1];

    new bool:g_speed[MAX_PLAYERS+1] = false;

    #if AMXX_VERSION_NUM < 183
    #define Ham_CS_Player_ResetMaxSpeed Ham_Item_PreFrame
    #endif

    #define MONEY_LASER 800 // Цена лазера для обычного игрока                  | По умолчанию: 800
    #define MONEY_DISPANSER 4000 //Цена раздатчика для обычного игрока | По умолчанию: 4000

    #define VIP_MONEY_LASER 780 //Цена лазера для ВИП игрока                      | По умолчанию: 800
    #define VIP_MONEY_DISPANSER 3950 //Цена раздатчика для ВИП игрока  | По умолчанию: 4000


        new MoneysPlayer[MAX_PLAYERS + 1];





    new PlayerInSpec;
    new PlayerInTeam;


public plugin_init() {

            register_plugin(PLUGIN, VERSION, AUTHOR);



            register_clcmd("menu", "csdmMenuFirst");
            register_clcmd("nightvision","csdmMenuFirst");
            register_menucmd(register_menuid("csdmMenuFirst"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "csdmMenuHandle");



            register_clcmd("amxmodmenu", "csdmAdminMenu");
            register_menucmd(register_menuid("csdmAdminMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "csdmAdminMenuHandle");



            register_clcmd("say /vipmenu", "csdmVipMenu");
            register_clcmd("say_team /vipmenu", "csdmVipMenu");
            register_clcmd("vipmenu", "csdmVipMenu");
            register_menucmd(register_menuid("csdmVipMenu"), (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9), "csdmVipMenuHandle");
                  RegisterHam(Ham_CS_Player_ResetMaxSpeed, "player", "Check_speed", 0);

              VipMenuTime = get_systime() + DELAY_MENU; 



            register_clcmd
("say_team /resetscore","ResetScore");
            register_clcmd("say /resetscore","ResetScore");
            register_clcmd("say_team /rs","ResetScore");
            register_clcmd("say /rs","ResetScore");



            register_clcmd("say /spec", "spec");
            register_clcmd("say_team /spec", "spec");
            register_clcmd("say /back", "back");
            register_clcmd("say_team /back", "back");

                  cvar_dmgmultiplier = register_cvar("goldenm4_dmg_multiplier", "2");
                cvar_custommodel = register_cvar("goldenm4_custom_model", "1");
                cvar_goldbullets = register_cvar("goldenm4_gold_bullets", "1");
                cvar_uclip = register_cvar("goldenm4_unlimited_clip", "1");



                    gold_damage = register_cvar("goldenak_dmg", "5")
                    golden_model = register_cvar("goldenak_custommodel", "1")


            register_event("DeathMsg", "Death", "a");
        register_event("WeapPickup","checkModel","b","1=19");
        register_event("CurWeapon","checkWeapon","be","1=1");
        register_event("CurWeapon", "make_tracer", "be", "1=1", "3>0");
        RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");
        register_forward( FM_CmdStart, "fw_CmdStart" );
        RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1);

}

public csdmMenuFirst(id) {


        remove_task(id);
        MoneysPlayer[id] = cs_get_user_money(id);


        new szMenu[1024];
        new iKeys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9);
        new iLen = formatex(szMenu, charsmax(szMenu), "\yМеню Сервера^n^n");
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1.\w Поставить \yПушку \r[\w3000$\r]^n" );


        if ((MoneysPlayer[id] >= MONEY_LASER) && (!VIP)){
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2.\w Поставить \yЛазер \r[\w%d\r]^n", MONEY_LASER);
        } else if ((MoneysPlayer[id] >= VIP_MONEY_LASER) && (VIP)) {
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2.\w Поставить \yЛазер \r[\w%d\r]^n", VIP_MONEY_LASER);
            } else if ((MoneysPlayer[id] < VIP_MONEY_LASER) && (VIP)){
                    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2.\w Поставить \yЛазер \w[\r%d\w]^n", VIP_MONEY_LASER);
                } else if ((MoneysPlayer[id] < MONEY_LASER) && (!VIP)){
                        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2.\w Поставить \yЛазер \w[\r%d\w]^n", MONEY_LASER);
                    }



        if ((MoneysPlayer[id] >= MONEY_DISPANSER) && (!VIP)){
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3.\w Поставить \yРаздатчик \r[\w%d\r]^n^n", MONEY_DISPANSER);
        } else if ((MoneysPlayer[id] >= VIP_MONEY_DISPANSER) && (VIP)) {
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3.\w Поставить \yРаздатчик \r[\w%d\r]^n^n", VIP_MONEY_DISPANSER);
            } else if ((MoneysPlayer[id] < VIP_MONEY_DISPANSER) && (VIP)){
                    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3.\w Поставить \yРаздатчик \w[\r%d\w]^n^n", VIP_MONEY_DISPANSER);
                } else if ((MoneysPlayer[id] < MONEY_DISPANSER) && (!VIP)){
                        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3.\w Поставить \yРаздатчик \w[\r%d\w]^n^n", MONEY_DISPANSER);
                    }

        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4.\w Магазин \r| \yОружия ^n");
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5.\w Магазин \r| \yНавыков ^n^n");
        if(get_user_flags(id) & ADMIN){
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r6.\w Админ \yМеню - \r[\wЕсть доступ\r]^n");
            } else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r6.\w Админ \yМеню - \w[\rНет доступа\w]^n");
        if(get_user_flags(id) & VIP){
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r7.\w Вип \yМеню - \r[\wЕсть доступ\r] ^n^n");
            } else  iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r7.\w Вип \yМеню - \w[\rНет доступ\w] ^n^n");
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0.\w Выход");

        return show_menu(id, iKeys, szMenu, -1, "csdmMenuFirst");
}

public csdmAdminMenu(id) {

        remove_task(id)

        new szMenu[1024];
        new iKeys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9);
        new iLen = formatex(szMenu, charsmax(szMenu), "\yАдмин Меню^n^n");

        if(get_user_flags(id) & ADMIN){
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1.\w Забанить \yигрока^n");
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2.\w Кикнуть \yигрока ^n");
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3.\w Ударить\r/\yУбить \yигрока^n");
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4.\w Сменить команду \yигрока^n^n");
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5.\w Заткнуть \yигрока ^n");
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r6.\w Сменить \yкарту \d[\wГолосование\d] ^n^n");
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r7.\w Сделать \yрестарт ^n^n");
        }
        else {
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d1. Забанить игрока^n");
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d2. Кикнуть игрока ^n");
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d3. Пнуть/Убить игрока^n");
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d3. Сменить команду игрока ^n^n");
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5.\w Заткнуть \yигрока ^n");
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r6.\w Сменить \yкарту \d[\wГолосование\d] ^n^n");
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d7. Сделать рестарт ^n^n");
        }
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0.\w Выход");
        return show_menu(id, iKeys, szMenu, -1, "csdmAdminMenu");
}
public csdmVipMenu(id) {


        new szMenu[1024];
        new MenuTime = VipMenuTime - get_systime();
        MenuTimeHP[id] = VipMenuTimeHP[id] - get_systime();
        MenuTimeMoney[id] = VipMenuTimeMoney[id] - get_systime();
        MenuTimeGOLDM4A1[id] = VipMenuTimeGOLDM4A1[id] - get_systime();
        MenuTimeGOLDAK47[id] = VipMenuTimeGOLDAK47[id] - get_systime();
        new iKeys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9);

        PlayerDeathNow[id] = cs_get_user_deaths(id);


        if ((MenuTime >= -1) || (MenuTimeHP[id] >= -1) || (MenuTimeHP[id] >= -1) || (MenuTimeGOLDM4A1[id] >= -1)) {
            set_task (1.0 , "csdmVipMenu", id);
        } else remove_task(id);
    //Отображение

        new iLen = formatex(szMenu, charsmax(szMenu), "\yВип Меню^n^n");

        if (PlayerDeathNow[id] != PlayerDeathLast[id]){
            GravityTake[id] = 0;
            SpeedTake[id] = 0;
            PlayerDeathLast[id] = PlayerDeathNow[id];
        }

        if (is_user_admin(id) && VIP){
            if (VipMenuTime > get_systime()){
                iLen += formatex(szMenu[iLen], charsmax(szMenu), "\wМеню заработает через \w[\r%d\w] сек.^n^n", MenuTime);
            }
        } else iLen += formatex(szMenu[iLen], charsmax(szMenu), "\dМеню заработает через [%d] сек.^n^n", DELAY_MENU);

        if ((VipMenuTime < get_systime()) && (VIP)){
            if(VipMenuTimeMoney[id] > get_systime()){
                    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d1. Деньги [%d] - [\r%d\d] сек.^n", VIP_MONEYS,MenuTimeMoney[id]);
                } else    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r1.\w Деньги \y[\r%d$\y] - \y[\rГотово\y]^n", VIP_MONEYS);

            if (VipMenuTimeHP[id] > get_systime())
                {
                    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d2.\d Здоровье \d[\d%d HP\d] - [\r%d\d] сек.^n", VIP_HP,MenuTimeHP[id]);
                } else    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r2.\w Здоровье \y[\r%d HP\y] - \y[\rГотово\y]^n", VIP_HP);

            if (SpeedTake[id] == 1) {
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3.\w Скорость - \y[\rВзято\y]^n");
            } else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r3.\w Скорость^n");

            if (GravityTake[id] == 1) {
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4.\w Гравитация - \y[\rВзято\y]^n");
            } else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r4.\w Гравитация^n");

            if ((VipMenuTimeGOLDM4A1[id] > get_systime()) && (VIP)) {
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d5. Взять Золотой [M4A1] - [\r%d\d] сек.^n", MenuTimeGOLDM4A1[id]);
            } else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r5.\w Взять Золотой \y[\rM4A1\y]\w - \y[\rГотово\y]^n");

            if ((VipMenuTimeGOLDAK47[id] > get_systime()) && (VIP)) {
                iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d6. Взять Золотой [AK47] - [\r%d\d] сек.^n^n", MenuTimeGOLDAK47[id]);
            } else iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r6.\w Взять Золотой \y[\rAK47\y]\w - \y[\rГотово\y]^n^n");
        }
        else {
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d1. Деньги [%d$] - [%d] сек.^n", VIP_MONEYS, DELAY_MONEY);
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d2. Здоровье [%d HP] - [%d] сек.^n", VIP_HP, DELAY_HP);
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d3. Гравитация^n");
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d4. Скорость^n");
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d5. Взять Золотой [M4A1] - [%d] сек.^n", DELAY_GM4A1);
            iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\d6. Взять Золотой [AK47] - [%d] сек.^n^n", DELAY_GAK47);
        }
        iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r0.\w Выход");
        return show_menu(id, iKeys, szMenu, -1, "csdmVipMenu");
}

public csdmVipMenuHandle(id, iKey)
{
    remove_task(id)

    if(!is_user_admin(id) && !VIP)
    {
        ColorChat(id, "!y[!gСервер!y] !tУ вас нету доступа к Вип Меню!");
        return PLUGIN_HANDLED;
    }

    switch(iKey)
    {
        case 0:
        {
            if (VipMenuTime < get_systime())
            {
                if (VipMenuTimeMoney[id] > get_systime())
                {
                    return PLUGIN_HANDLED;
                }
                ColorChat(id, "!y[!gGoodGame!y] !gВы взяли деньги. Удачной игры!");
                cs_set_user_money(id, cs_get_user_money(id) + VIP_MONEYS);
                VipMenuTimeMoney[id] = get_systime(DELAY_MONEY);
            }
            else csdmVipMenu(id);
        }
        case 1:
        {
            if (VipMenuTime < get_systime())
            {
                ColorChat(id, "!y[!gGoodGame!y] !gВы взяли здоровье. Удачной игры!");
                set_user_health(id, get_user_health(id) + VIP_HP);
                VipMenuTimeHP[id] = get_systime(DELAY_HP);
            }
            else csdmVipMenu(id);
        }
        case 2:
        {
            if (VipMenuTime < get_systime())
            {
                ColorChat(id, "!y[!gGoodGame!y] !gВы взяли 'Скорость'. Удачной игры!");
                speedhack(id);
                SpeedTake[id] = 1;
                PlayerDeathLast[id] = get_user_deaths(id);
            }
            else csdmVipMenu(id);
        }
        case 3:
        {
            if (VipMenuTime < get_systime())
            {
                ColorChat(id, "!y[!gGoodGame!y] !gВы взяли 'Гравитацию'. Удачной игры!");
                set_user_gravity(id, VIP_GRAVITY);
                GravityTake[id] = 1;
                PlayerDeathLast[id] = get_user_deaths(id);
            }
            else csdmVipMenu(id);
        }
        case 4: {
            if ( !is_user_alive(id) )
        {
                 ColorChat(id, "!y[!gGoodGame!y] !tЧтобы взять золотую M4A1 вы должны быть живы!");
           return PLUGIN_HANDLED
        
}
            if (VipMenuTime < get_systime())
            {
                if(VipMenuTimeGOLDM4A1[id] > get_systime())
                {
                    return PLUGIN_HANDLED;
                }
           give_item(id, "weapon_m4a1");
           g_HasM4[id] = true;
                 ColorChat(id, "!y[!gGoodGame!y] !gВы взяли Золотой M4A1. Удачной игры!");
                 VipMenuTimeGOLDM4A1[id] = get_systime(DELAY_GM4A1);
            }
        }
        case 5: {
            if ( !is_user_alive(id) )
        {
                 ColorChat(id, "!y[!gGoodGame!y] !tЧтобы взять золотой АК47 вы должны быть живы!");
           return PLUGIN_HANDLED
        
}
            if (VipMenuTime < get_systime())
            {
                if (VipMenuTimeGOLDAK47[id] > get_systime())
                {
                    return PLUGIN_HANDLED;
                }
                 drop_weapon(id, 1)
                 give_item(id, "weapon_ak47")
                 cs_set_user_bpammo(id, CSW_AK47, 90)
                 g_HasAk[id] = true
                 ColorChat
(id, "!y[!gGoodGame!y] !gВы взяли Золотой AK47. Удачной игры!");
                 VipMenuTimeGOLDAK47[id] = get_systime(DELAY_GAK47);
            }
        }
        case 9: {
            remove_task(id);
        }
    }
    return PLUGIN_HANDLED;
}

public csdmAdminMenuHandle(id, iKey)
{
    if(!is_user_admin(id) && !ADMIN)
    {
        ColorChat(id, "!y[!gGoodGame!y] У вас нету доступа к Админ Меню!");
        return PLUGIN_HANDLED;
    }

    switch(iKey)
    {
        case 0: client_cmd(id, "amx_banmenu")
        case 1: client_cmd(id, "amx_kickmenu")
        case 2: client_cmd(id, "amx_slapmenu")
        case 3: client_cmd(id, "amx_teammenu")
        case 4: client_cmd(id, "amx_gagmenu")
        case 5: client_cmd(id, "amx_votemapmenu")
        case 6:
            {
                server_cmd("sv_restartround 1")
                new name[32]
                get_user_name(id, name, 31)
                ColorChat(0, "!y[!gGoodGame!y] !tАдмин !g%s !tСделал рестарт", name)
            }
    }
    return PLUGIN_HANDLED;
}

public csdmMenuHandle(id, iKey) {
    switch(iKey)
    {
        case 0:    client_cmd(id, "sentry_build")
        case 1: client_cmd(id, "+setlaser")
        case 2: client_cmd(id, "buy_disp")
        case 3: client_cmd(id, "shopmenu3")
        case 4: client_cmd(id, "say /shop")
        case 5: client_cmd(id, "amxmodmenu")
        case 6: client_cmd(id, "say /vipmenu")
    }
    return PLUGIN_HANDLED;
}

//-----------------------Доп.Плагины--------------------
public speedhack(id){
        g_speed[id] = !g_speed[id];

        set_pev(id, pev_maxspeed, VIP_SPEED);
}

public Check_speed(id){
        if(g_speed[id])
                return HAM_SUPERCEDE;
        return HAM_IGNORED;
}

public ResetScore(id) {
    if(is_user_connected(id))
    {
        new name[32]
        get_user_name(id, name, 31)
        set_user_frags(id, 0);
        cs_set_user_deaths(id, 0);
        ColorChat(id, "!y[!gGoodGame!y] !t%s !gВы сбросили счет!", name);
    }
}
//ResetScore

public spec(id) {
    PlayerInSpec = cs_get_user_deaths(id);
    if (cs_get_user_team(id) == CS_TEAM_SPECTATOR)
        return PLUGIN_HANDLED
    else 
{
        PlayerInTeam = cs_get_user_team(id);
        cs_set_user_team(id, CS_TEAM_SPECTATOR);
        user_kill(id, 1);
    }
    return PLUGIN_CONTINUE

}//SPEC

public back(id) {
    if ((cs_get_user_team(id) == CS_TEAM_SPECTATOR) && (!is_user_alive(id))){
        cs_set_user_team(id, PlayerInTeam);
        cs_set_user_deaths(id, PlayerInSpec);
        cs_user_spawn(id);
    }
}
//SPEC

//------------------------GOLD------------------------

public client_connect(id)
{
     g_HasM4[id] = false
     g_HasAk
[id] = false
}

public client_disconnect(id)
{
     g_HasM4[id] = false
     g_HasAk
[id] = false
}

public Death(id)
{
     g_HasM4[read_data(2)] = false
     g_HasAk
[read_data(2)] = false
   set_pev
(id, pev_maxspeed, 400.0);
}

public fwHamPlayerSpawnPost(id)
{
     g_HasM4[id] = false
     g_HasAk
[id] = false
}

public plugin_precache()
{
     precache_model(M4_V_MODEL)
   precache_model(M4_P_MODEL)

     precache_model(AK_V_MODEL)
     precache_model(AK_P_MODEL)

     m_spriteTexture = precache_model("sprites/dot.spr")

     precache_sound("weapons/zoom.wav")
}

public checkModel(id)
{
     new szWeapID = read_data(2)

     if ( szWeapID == CSW_M4A1 && g_HasM4[id] == true && get_pcvar_num(cvar_custommodel) )
     {
            set_pev(id, pev_viewmodel2, M4_V_MODEL)
            set_pev(id, pev_weaponmodel2, M4_P_MODEL)
     }

     if(szWeapID == CSW_AK47 && g_HasAk[id] == true && get_pcvar_num(golden_model) == 1) {
         set_pev(id, pev_viewmodel2, AK_V_MODEL)
         set_pev(id, pev_weaponmodel2, AK_P_MODEL)
     }

     return PLUGIN_HANDLED
}

public checkWeapon(id)
{
     new plrClip, plrAmmo, plrWeap[32]
     new plrWeapId

     plrWeapId 
= get_user_weapon(id, plrClip , plrAmmo)

     if (plrWeapId == CSW_AK47 && g_HasAk[id])
           checkModel(id)
      else
     
{
         if (plrWeapId == CSW_M4A1 && g_HasM4[id])
             {
                checkModel(id)
             }
             else
             
{
                return PLUGIN_CONTINUE
             
}
              return PLUGIN_CONTINUE
     
}

     if (plrClip == 0 && get_pcvar_num(cvar_uclip))
     {
            get_weaponname(plrWeapId, plrWeap, 31)
            give_item(id, plrWeap)
            engclient_cmd(id, plrWeap)
            engclient_cmd(id, plrWeap)
            engclient_cmd(id, plrWeap)
     }
     return PLUGIN_HANDLED
}



public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
     if (is_valid_player(attacker) && get_user_weapon(attacker) == CSW_M4A1 && g_HasM4[attacker])
            SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmgmultiplier))
     if(is_valid_player(attacker) && get_user_weapon(attacker) == CSW_AK47 && g_HasAk[attacker])
          SetHamParamFloat(4, damage * get_pcvar_float(gold_damage))
}


public make_tracer(id)
{
     if (get_pcvar_num(cvar_goldbullets))
     {
            new clip,ammo
            new wpnid 
= get_user_weapon(id,clip,ammo)
            new pteam[16]

            get_user_team(id, pteam, 15)

            if ((bullets[id] > clip) && (((wpnid == CSW_M4A1) && g_HasM4[id]) || ((wpnid == CSW_AK47) && g_HasAk[id])))
            {
                 new vec1[3], vec2[3]
                 get_user_origin(id, vec1, 1) // origin; your camera point.
                 get_user_origin(id, vec2, 4) // termina; where your bullet goes (4 is cs-only)


                 //BEAMENTPOINTS
                 message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
                 write_byte (0)     //TE_BEAMENTPOINTS 0
                 write_coord(vec1[0])
                 write_coord(vec1[1])
                 write_coord(vec1[2])
                 write_coord(vec2[0])
                 write_coord(vec2[1])
                 write_coord(vec2[2])
                 write_short( m_spriteTexture )
                 write_byte(1) // framestart
                 write_byte(5) // framerate
                 write_byte(2) // life
                 write_byte(10) // width
                 write_byte(0) // noise
                 write_byte( 255 )     // r, g, b
                 write_byte( 215 )       // r, g, b
                 write_byte( 0 )       // r, g, b
                 write_byte(200) // brightness
                 write_byte(150) // speed
                 message_end()
            }

            bullets[id] = clip
     
}

}

public CmdBuyM4(id)
{
     if ( !is_user_alive(id) )
     {
            client_print(id,print_chat, "Чтобы купить золотую M4A1 вы должны быть живы!")
            return PLUGIN_HANDLED
     
}

     give_item(id, "weapon_m4a1")

     g_HasM4[id] = true

     return PLUGIN_HANDLED
}

public CmdGiveM4(id,level,cid)
{
     if (!cmd_access(id,level,cid,2))
            return PLUGIN_HANDLED;
     new arg[32];
     read_argv(1,arg,31);

     new player = cmd_target(id,arg,7);
     if (!player)
            return PLUGIN_HANDLED;

     new name[32];
     get_user_name(player,name,31);

     give_item(player, "weapon_m4a1")
     g_HasM4[player] = true

     return PLUGIN_HANDLED
}

public fw_CmdStart( id, uc_handle, seed ) {
    if(!is_user_alive(id))
        return PLUGIN_HANDLED

    if
((get_uc(uc_handle, UC_Buttons) & IN_ATTACK2) && !( pev(id, pev_oldbuttons) & IN_ATTACK2)) {
        new szWeapID = get_user_weapon(id)

        if(szWeapID == CSW_AK47 && g_HasAk[id] == true && !g_hasZoom[id] == true) {
            g_hasZoom[id] = true
            cs_set_user_zoom
(id, CS_SET_AUGSG552_ZOOM, 0)
            emit_sound(id, CHAN_ITEM, "weapons/zoom.wav", 0.20, 2.40, 0, 100)
        } else if(szWeapID == CSW_AK47 && g_HasAk[id] == true && g_hasZoom[id]) {
            g_hasZoom[id] = false
            cs_set_user_zoom
(id, CS_RESET_ZOOM, 0)
        }
    }
    return PLUGIN_HANDLED
}
//-------------------------GOLD------------------------

//-----------------------Доп.Плагины--------------------

//-----------------------Другое-------------------------

stock ColorChat(const id, const input[], any:...)
{
        new count = 1, players[32]
        static msg[191]
        vformat(msg, 190, input, 3)
        format(msg, sizeof(msg), "%s", msg)
        replace_all(msg, 190, "!g", "^4") // Green Color
        replace_all(msg, 190, "!y", "^1") // Default Color
        replace_all(msg, 190, "!t", "^3") // Team Color

        if (id) players[0] = id; else get_players(players, count, "ch")
        {
                for (new i = 0; i < count; i++)
                {
                        if (is_user_connected(players[i]))
                        {
                                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                                write_byte(players[i]);
                                write_string(msg);
                                message_end();
                        }
                }
        }
}

stock drop_weapon(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) & AK47_BIT_SUM))) {
            static wname[32]
            get_weaponname(weaponid, wname, charsmax(wname))
            engclient_cmd(id, "drop", wname)
        }
    }
}

нужно изменить код так чтобы получилось скомпилировать, кто сможет сделайте пожалуйста и скиньте код

Добавлено спустя 1 минуту 10 секунд:
И в данном плагине сразу идут установка раздатчика и лазера?
Аватара пользователя
6u6uka
 
Сообщения: 12
Зарегистрирован: 29 окт 2017, 13:30
Забанен
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Php

Re: CSDM Shop menu: скомпилировать с небольшими изменениями

Сообщение Subb98 » 22 янв 2018, 19:51

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

Re: CSDM Shop menu: скомпилировать с небольшими изменениями

Сообщение Mapaky9 » 22 янв 2018, 22:25

1. Код у тебя рабочий, просто код не ровно прописан вот и все, оно будет работать. Если мешает, то при компиляции тебе выдает строку , где не ровно прописан поле. Можешь использовать ctrl+g и выровнить другими строками, так ты решишь проблему.
2. Второй вопрос не понятен, можешь подробнее? Мб помогу :-D
Аватара пользователя
Mapaky9
 
Сообщения: 185
Зарегистрирован: 02 июн 2013, 20:30
Откуда: Уфа
Благодарил (а): 61 раз.
Поблагодарили: 67 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: CSDM Shop menu: скомпилировать с небольшими изменениями

Сообщение 6u6uka » 22 янв 2018, 22:54

Mapaky9 писал(а):2. Второй вопрос не понятен, можешь подробнее? Мб помогу :-D

ну есть команды и блоки для лазеров, раздатчиков и ResetScore, их установка дополнительно требуется или нет
К примеру вот этот блок
Код: Выделить всё

    
#if AMXX_VERSION_NUM < 183
    #define Ham_CS_Player_ResetMaxSpeed Ham_Item_PreFrame
    #endif

    #define MONEY_LASER 800 // Цена лазера для обычного игрока                  | По умолчанию: 800
    #define MONEY_DISPANSER 4000 //Цена раздатчика для обычного игрока | По умолчанию: 4000

    #define VIP_MONEY_LASER 780 //Цена лазера для ВИП игрока                      | По умолчанию: 800
    #define VIP_MONEY_DISPANSER 3950 //Цена раздатчика для ВИП игрока  | По умолчанию: 4000 
Аватара пользователя
6u6uka
 
Сообщения: 12
Зарегистрирован: 29 окт 2017, 13:30
Забанен
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Php

Re: CSDM Shop menu: скомпилировать с небольшими изменениями

Сообщение mega18 » 25 май 2018, 14:52

Я даже проверить код не могу, так как от этого кода серв не может загрузится!
Аватара пользователя
mega18
 
Сообщения: 7
Зарегистрирован: 13 май 2018, 22:12
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: CSDM Shop menu: скомпилировать с небольшими изменениями

Сообщение flymic24 » 25 май 2018, 18:12

Как заметили выше код должен работать.
- Исправил табуляцию, предупреждений при компиляции не будет
- Требуется дополнительно установить плагины работающие с:
Код: Выделить всё

        
case 0client_cmd(id"sentry_build") - допплагин
        
case 1client_cmd(id"+setlaser") - допплагин
        
case 2client_cmd(id"buy_disp") - допплагин
        
case 3client_cmd(id"shopmenu3") - допплагин
        
case 4client_cmd(id"say /shop") - допплагин
        
case 5client_cmd(id"amxmodmenu") - стандартная команданичего не нужно
        
case 6client_cmd(id"say /vipmenu") - это уже вшита в ваш плагин
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
flymic24
 
Сообщения: 209
Зарегистрирован: 05 окт 2012, 17:29
Откуда: Bryansk
Благодарил (а): 4 раз.
Поблагодарили: 76 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6


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

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

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