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

vipMenu баг с выдачей оружия  [Решено]

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

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

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

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

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

vipMenu баг с выдачей оружия

Сообщение nemec21 » 09 мар 2017, 00:36

Ребят доброй ночи. подскажите почему иногда когда выбираешь оружие выдает калаш выкидывает сразу же. а потом выдает совсем другое оружие. это произошло после смены карты. потом я перезашел и все стало выдавать как надо. может надо создать какое то условие?
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>  
#include <fun> 
#include <strip_weapon> 

new key = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_0 
new keys 
= MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_0
new g_szBlockMapPrefixList
[][] = 
{    
    
"$2000$",
    "awp_india2",        
    
"aim_usp", 
    
"aim_deagle",
    "aim_headshot",             
    
"aim_aztec",      
    
"awp_india"                 
}  
new gl_RoundsCount                                  
new szMapName
[32]                 
 
public plugin_init
()
{
    register_plugin ("LS VipzSistem", "1.0", "Nemec")
                                              
    get_mapname
(szMapName, charsmax(szMapName))
    for(new i; i < sizeof(g_szBlockMapPrefixList); i++)
    {
        if (contain(g_szBlockMapPrefixList[i], szMapName) != INVALID_HANDLE)
        {                                       
            pause
("d");                   
        
}
    }
    register_event("HLTV", "EventStartRound", "a", "1=0", "2=0")
    register_event("TextMsg", "EventRestartRound", "a", "2=#Game_will_restart_in","2=#Game_Commencing")
    register_menu("VipMenu", key, "VipMenuFunc")
    register_menu("PistolsMenu", keys, "PistolsMenuFunc")
    
    RegisterHam
(Ham_Spawn, "player", "SpawnPlayer", 1)
 }

public EventStartRound()
    gl_RoundsCount++

public EventRestartRound()
    gl_RoundsCount = 0

public SpawnPlayer
(id)
{
                                                                    
    if
(!is_user_alive(id) || !(get_user_flags(id) & ADMIN_LEVEL_H)) 
        return 
                                             
    give_item
(id,"weapon_hegrenade")      
    give_item
(id,"weapon_flashbang")
    cs_set_user_bpammo(id , CSW_FLASHBANG, 2)
    give_item(id,"weapon_smokegrenade")
    give_item(id,"item_assaultsuit")                 
    give_item
(id,"item_thighpack")
              
    if
(gl_RoundsCount < 2) 
    
{    
        strip_weapons
(id,SECONDARY_ONLY)
        give_item(id,"weapon_deagle")
        cs_set_user_bpammo( id , CSW_DEAGLE, 35)
    }
    else 
    
{              
        VipMenu
(id)    
    
}
}
                                                  
public VipMenu
(id)
{
                                                                       
    new ctime
[64]
    get_time("%m/%d/%Y - %H.%M.%S", ctime, 63)

    static weaponmenu[650], len

    len 
= 0
    len 
= formatex(weaponmenu[len], charsmax(weaponmenu) - len, "     ...[Immortal_classic 18+]...^n            V.I.P menu^n^n\d ...%s...^n^n", ctime)

    len += formatex(weaponmenu[len], charsmax(weaponmenu) - len, "\w1. Ak-47^n")
    key |= MENU_KEY_1                                                  

    len 
+= formatex(weaponmenu[len], charsmax(weaponmenu) - len, "2. M4a1^n")
    key |= MENU_KEY_2                                                                                           

    len 
+= formatex(weaponmenu[len], charsmax(weaponmenu) - len, "3. Famas^n")
    key |= MENU_KEY_3                                                                          
    
    len 
+= formatex(weaponmenu[len], charsmax(weaponmenu) - len, (gl_RoundsCount > 3) ? "4. Awp^n^n" : "")
    key |= MENU_KEY_4 
                                                                    
    len 
+= formatex(weaponmenu[len], charsmax(weaponmenu) - len, "5. P.I.S.T.O.L.S menu^n^n") 
    key 
|= MENU_KEY_5 
   
    len 
+= formatex(weaponmenu[len], charsmax(weaponmenu) - len, "0. Exit") 
    key 
|= MENU_KEY_0

    show_menu
(id, key, weaponmenu, 30, "VipMenu")
}
 
public VipMenuFunc
(id, key)
{
    switch(key)
    {
        case 0: 
        
{
            strip_weapons(id,PRIMARY_ONLY) 
            give_item
(id,"weapon_ak47")
            cs_set_user_bpammo(id , CSW_AK47, 90)
        } 
        case 1
:
        {
            strip_weapons(id,PRIMARY_ONLY)
            give_item(id, "weapon_m4a1")
            cs_set_user_bpammo(id , CSW_M4A1, 90)
        }
        case 2: 
        
{    
            strip_weapons
(id,PRIMARY_ONLY)
            give_item(id, "weapon_famas")
            cs_set_user_bpammo(id , CSW_FAMAS, 90)
        }
        case 3:
        {   
            strip_weapons
(id,PRIMARY_ONLY)
            give_item(id, "weapon_awp")
            cs_set_user_bpammo(id , CSW_AWP, 30) 
        
} 
        case 4
:
        {    
            PistolsMenu
(id)
        }
        case 9:
            return
    
}
}
                              

public PistolsMenu
(id)
{
                                                                       
    static weaponmenu
[650], len

    len 
= 0                                                                                                      
    len 
= formatex(weaponmenu[len], charsmax(weaponmenu) - len, "     ...[Immortal_classic 18+]...^n        P.I.S.T.O.L.S menu^n^n")

    len += formatex(weaponmenu[len], charsmax(weaponmenu) - len, "1. Deagle^n")
    keys |= MENU_KEY_1                                                  

    len 
+= formatex(weaponmenu[len], charsmax(weaponmenu) - len, "2. Usp^n")
    keys |= MENU_KEY_2                                                                                           

    len 
+= formatex(weaponmenu[len], charsmax(weaponmenu) - len, "3. Glock^n^n")
    keys |= MENU_KEY_3  
                                                                                             
    len 
+= formatex(weaponmenu[len], charsmax(weaponmenu) - len, "0. Back") 
    keys 
|= MENU_KEY_0

    show_menu
(id, keys, weaponmenu, 30, "PistolsMenu")
}
           
public PistolsMenuFunc
(id, key)
{
    switch(key)
    {
        case 0: 
        
{   
            strip_weapons
(id,SECONDARY_ONLY) 
            give_item
(id,"weapon_deagle")
            cs_set_user_bpammo( id , CSW_DEAGLE, 35) 
            VipMenu
(id)
        } 
        case 1
:
        {    
            strip_weapons
(id,SECONDARY_ONLY)
            give_item(id, "weapon_usp")
            cs_set_user_bpammo(id , CSW_USP, 100)
            VipMenu(id)
        }
        case 2: 
        
{    
            strip_weapons
(id,SECONDARY_ONLY)
            give_item(id, "weapon_glock18")
            cs_set_user_bpammo(id , CSW_GLOCK18, 120)
            VipMenu(id)
        } 
        case 9
:
        {    
            VipMenu
(id)
        }
    }


Добавлено спустя 1 минуту 8 секунд:
или возможно инклуид левый?
Код: Выделить всё
#include <strip_weapon>   


Добавлено спустя 8 минут 44 секунды:
ведь по сути перед тем как выдать оружие отбирает основное
Код: Выделить всё
 {          
           
strip_weapons(id,SECONDARY_ONLY
            
give_item(id,"weapon_deagle")
            
cs_set_user_bpammoid CSW_DEAGLE35
            
VipMenu(id)
Аватара пользователя
nemec21
 
Сообщения: 799
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 212 раз.
Поблагодарили: 44 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: vipMenu баг с выдачей оружия  [Решено]

Сообщение jjey1 » 09 мар 2017, 01:54

не понимаю почему у тебя не было инклуда HAM
когда есть: HAM_Spawn
---------------------------------------------------------
под этим:
Код: Выделить всё
new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_0

добавляешь это:
Код: Выделить всё

new 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)
new const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)


добавляешь stock
Код: Выделить всё

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


за место:
Код: Выделить всё
strip_weapons(id,SECONDARY_ONLY)

Ставишь слот для автомата:
Код: Выделить всё
drop_weapons(id, 1)

Ставишь слот для пист:
Код: Выделить всё
drop_weapons(id, 2)


не забываем добавить инклуды и убрать strip
#include <hamsandwich>
#include <cstrike>

Готовый код, чуть поправил строки:
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>  
#include <fun>
#include <hamsandwich>
#include <cstrike>

new key = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_0 
new keys 
= MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_0
new 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)
new const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)

new g_szBlockMapPrefixList[][] = 
{    
    
"$2000$",
    "awp_india2",        
    
"aim_usp", 
    
"aim_deagle",
    "aim_headshot",             
    
"aim_aztec",      
    
"awp_india"                 
}  
new gl_RoundsCount                                  
new szMapName
[32]                 
 
public plugin_init
()
{
register_plugin ("LS VipzSistem", "1.0", "Nemec")
                                              
get_mapname
(szMapName, charsmax(szMapName))
for(
new i; i < sizeof(g_szBlockMapPrefixList); i++)
    {
        if (contain(g_szBlockMapPrefixList[i], szMapName) != INVALID_HANDLE)
        {                                       
            pause
("d");                   
        
}
    }
register_event("HLTV", "EventStartRound", "a", "1=0", "2=0")
register_event("TextMsg", "EventRestartRound", "a", "2=#Game_will_restart_in","2=#Game_Commencing")
register_menu("VipMenu", key, "VipMenuFunc")
register_menu("PistolsMenu", keys, "PistolsMenuFunc")
    
RegisterHam
(Ham_Spawn, "player", "SpawnPlayer", 1)
}

public EventStartRound()
    gl_RoundsCount++

public EventRestartRound()
    gl_RoundsCount = 0

public SpawnPlayer
(id)
{
                                                                    
    if
(!is_user_alive(id) || !(get_user_flags(id) & ADMIN_LEVEL_H)) 
        return 
                                             
    give_item
(id,"weapon_hegrenade")      
    give_item
(id,"weapon_flashbang")
    cs_set_user_bpammo(id , CSW_FLASHBANG, 2)
    give_item(id,"weapon_smokegrenade")
    give_item(id,"item_assaultsuit")                 
    give_item
(id,"item_thighpack")
              
    if
(gl_RoundsCount < 2) 
    
{    
        drop_weapons
(id, 2)
        give_item(id,"weapon_deagle")
        cs_set_user_bpammo( id , CSW_DEAGLE, 35)
    }
    else 
    
{              
        VipMenu
(id)    
    
}
}
                                                  
public VipMenu
(id)
{
                                                                       
    new ctime
[64]
    get_time("%m/%d/%Y - %H.%M.%S", ctime, 63)

    static weaponmenu[650], len

    len 
= 0
    len 
= formatex(weaponmenu[len], charsmax(weaponmenu) - len, "     ...[Immortal_classic 18+]...^n            V.I.P menu^n^n\d ...%s...^n^n", ctime)

    len += formatex(weaponmenu[len], charsmax(weaponmenu) - len, "\w1. Ak-47^n")
    key |= MENU_KEY_1                                                  

    len 
+= formatex(weaponmenu[len], charsmax(weaponmenu) - len, "2. M4a1^n")
    key |= MENU_KEY_2                                                                                           

    len 
+= formatex(weaponmenu[len], charsmax(weaponmenu) - len, "3. Famas^n")
    key |= MENU_KEY_3                                                                          
    
    len 
+= formatex(weaponmenu[len], charsmax(weaponmenu) - len, (gl_RoundsCount > 3) ? "4. Awp^n^n" : "")
    key |= MENU_KEY_4 
                                                                    
    len 
+= formatex(weaponmenu[len], charsmax(weaponmenu) - len, "5. P.I.S.T.O.L.S menu^n^n") 
    key 
|= MENU_KEY_5 
   
    len 
+= formatex(weaponmenu[len], charsmax(weaponmenu) - len, "0. Exit") 
    key 
|= MENU_KEY_0

    show_menu
(id, key, weaponmenu, 30, "VipMenu")
}
 
public VipMenuFunc
(id, key)
{
    switch(key)
    {
        case 0: 
        
{
            drop_weapons(id, 1)
            give_item(id,"weapon_ak47")
            cs_set_user_bpammo(id , CSW_AK47, 90)
        } 
        case 1
:
        {
            drop_weapons(id, 1)
            give_item(id, "weapon_m4a1")
            cs_set_user_bpammo(id , CSW_M4A1, 90)
        }
        case 2: 
        
{    
            drop_weapons
(id, 1)
            give_item(id, "weapon_famas")
            cs_set_user_bpammo(id , CSW_FAMAS, 90)
        }
        case 3:
        {   
            drop_weapons
(id, 1)
            give_item(id, "weapon_awp")
            cs_set_user_bpammo(id , CSW_AWP, 30) 
        
} 
        case 4
:
        {    
            PistolsMenu
(id)
        }
        case 9:
            return
    
}
}
                         

public PistolsMenu
(id)
{
                                                                       
    static weaponmenu
[650], len

    len 
= 0                                                                                                      
    len 
= formatex(weaponmenu[len], charsmax(weaponmenu) - len, "     ...[Immortal_classic 18+]...^n        P.I.S.T.O.L.S menu^n^n")

    len += formatex(weaponmenu[len], charsmax(weaponmenu) - len, "1. Deagle^n")
    keys |= MENU_KEY_1                                                  

    len 
+= formatex(weaponmenu[len], charsmax(weaponmenu) - len, "2. Usp^n")
    keys |= MENU_KEY_2                                                                                           

    len 
+= formatex(weaponmenu[len], charsmax(weaponmenu) - len, "3. Glock^n^n")
    keys |= MENU_KEY_3  
                                                                                             
    len 
+= formatex(weaponmenu[len], charsmax(weaponmenu) - len, "0. Back") 
    keys 
|= MENU_KEY_0

    show_menu
(id, keys, weaponmenu, 30, "PistolsMenu")
}
           
public PistolsMenuFunc
(id, key)
{
    switch(key)
    {
        case 0: 
        
{   
            drop_weapons
(id, 2)
            give_item(id,"weapon_deagle")
            cs_set_user_bpammo( id , CSW_DEAGLE, 35) 
            VipMenu
(id)
        } 
        case 1
:
        {    
            drop_weapons
(id, 2)
            give_item(id, "weapon_usp")
            cs_set_user_bpammo(id , CSW_USP, 100)
            VipMenu(id)
        }
        case 2: 
        
{    
            drop_weapons
(id, 2)
            give_item(id, "weapon_glock18")
            cs_set_user_bpammo(id , CSW_GLOCK18, 120)
            VipMenu(id)
        } 
        case 9
:
        {    
            VipMenu
(id)
        }
    }
}

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

То что норм компилируется:
skype: tatoxa80
Аватара пользователя
jjey1
 
Сообщения: 199
Зарегистрирован: 08 мар 2016, 18:32
Забанен
Благодарил (а): 39 раз.
Поблагодарили: 9 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: vipMenu баг с выдачей оружия

Сообщение nemec21 » 09 мар 2017, 02:05

спасибо понял ошибку
Аватара пользователя
nemec21
 
Сообщения: 799
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 212 раз.
Поблагодарили: 44 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6


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

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

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