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

помогите исправить плагин  [Решено]

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

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

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

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

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

помогите исправить плагин

Сообщение dUGDI1 » 01 май 2021, 22:19

при компиляции выдает ошибку. Помогите поправить
Код: Выделить всё


#include <amxmodx> 
#include <fakemeta>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <fakemeta_util>   

#define PLUGIN "LAVKA" 
#define VERSION "0.1" 
#define AUTHOR "Th1nk 1 1" 

new LAVKAGAN[12][64] = { 
"models/pdgeweapons/v_deagle.mdl", "models/pdgeweapons/p_deagle.mdl", "models/pdgeweapons/w_deagle.mdl",         // 0-1-2
"models/pdgeweapons/v_awp.mdl", "models/pdgeweapons/p_awp.mdl", "models/pdgeweapons/w_awp.mdl",                 // 3-4-5
"models/pdgeweapons/v_ak47.mdl", "models/pdgeweapons/p_ak47.mdl", "models/pdgeweapons/w_ak47.mdl",     // 6-7-8
"models/pdgeweapons/v_m4a1.mdl", "models/pdgeweapons/p_m4a1.mdl", "models/pdgeweapons/w_m4a1.mdl" }     // 9-10-11

public plugin_precache()
{
    for (new num = 0; num < 12; num++)
    {
        precache_model(LAVKAGAN[num]);
    }
}

new pistols[6] = {CSW_P228, CSW_ELITE, CSW_FIVESEVEN, CSW_DEAGLE, CSW_USP, CSW_GLOCK18}
new primary[18] = {CSW_SCOUT, CSW_XM1014, CSW_MAC10, CSW_AUG, CSW_UMP45, CSW_SG550, CSW_GALIL, CSW_FAMAS, CSW_AWP, 
CSW_MP5NAVY
, CSW_M249, CSW_M3, CSW_M4A1, CSW_TMP, CSW_G3SG1, CSW_SG552, CSW_AK47, CSW_P90}

new bool:has_lavka_m4a1[33], bool:has_lavka_ak47[33], bool:has_lavka_awp[33], bool:has_lavka_deagle[33]
                           
public plugin_init
() {

register_event("WeapPickup","checkModel","b","1=19")
register_event("CurWeapon","checkWeapon","be","1=1")

register_clcmd("lavka", "NewMenu", ADMIN_BAN); //Команда вызова меню: lavka
register_message(get_user_msgid("DeathMsg"),"dmsg")
register_plugin(PLUGIN, VERSION, AUTHOR);

}

public checkModel(id)
{
    new WeaponID = read_data(2)
    
    switch
(WeaponID)
    {
    case has_lavka_m4a1[id]:
        {
            if(has_lavka_m4a1[id])
            {
                set_pev(id, pev_viewmodel2, LAVKAGAN[9])
                set_pev(id, pev_weaponmodel2, LAVKAGAN[10])
            }
        }
        case CSW_AK47:
        {
            if(has_lavka_ak47[id])
            {
                set_pev(id, pev_viewmodel2, LAVKAGAN[6])
                set_pev(id, pev_weaponmodel2, LAVKAGAN[7])
            }
        }
        case CSW_AWP:
        {
            if(has_lavka_awp[id])
            {
                set_pev(id, pev_viewmodel2, LAVKAGAN[3])
                set_pev(id, pev_weaponmodel2, LAVKAGAN[4])
            }
        }
        case CSW_DEAGLE:
        {
            if(has_lavka_deagle[id])
            {
                set_pev(id, pev_viewmodel2, LAVKAGAN[0])
                set_pev(id, pev_weaponmodel2, LAVKAGAN[1])
            }
        }
    }
    
    return PLUGIN_CONTINUE
}

public checkWeapon(id)
{
    checkModel(id)
}

public dmsg(msg,dest,id)
{
    has_lavka_m4a1[id] = false
    has_lavka_ak47
[id] = false
    has_lavka_awp
[id] = false
    has_lavka_deagle
[id] = false
}

public client_connect(id)
{
    has_lavka_m4a1[id] = false
    has_lavka_ak47
[id] = false
    has_lavka_awp
[id] = false
    has_lavka_deagle
[id] = false
}

public NewMenu(id) {
if(
 get_user_flags(id) & ADMIN_LEVEL_A ){
new i_Menu = menu_create("\yЛавочка Пуджа", "NewMenu_handler");
menu_additem(i_Menu, "\rDEAGLE+ 130%dmg", "1", 0);
menu_additem(i_Menu, "\yAWP + 130%dmg", "2", 0);
menu_additem(i_Menu, "\yAK-47 + 130%dmg", "3", 0);
menu_additem(i_Menu, "\rM4A1 + 130%dmg", "4", 0);
menu_additem(i_Menu, "\yЧто-то еще + 130%dmg", "5", 0);
menu_setprop(i_Menu, MPROP_NEXTNAME, "\rДалее");
menu_setprop(i_Menu, MPROP_BACKNAME, "\rНазад");
menu_setprop(i_Menu, MPROP_EXITNAME, "\rВыход");
menu_display(id, i_Menu, 0)
}
else {
client_print(id, print_chat, "У вас нет прав на использование этой команды") //Сообщение в чат игрокам у которых нет нужного админ-флага
}
return PLUGIN_HANDLED
}

public NewMenu_handler(id, menu, item) {
if(
 item < 0 ) return PLUGIN_CONTINUE;
new cmd[3], access, callback;
menu_item_getinfo(menu, item, access, cmd,2,_,_, callback);
new Choise = str_to_num(cmd)
switch (Choise) {
case 1: {
                give_item(id, "weapon_deagle")
                cs_set_user_bpammo(id, CSW_DEAGLE, 80)
                has_lavka_deagle[id] = true
    
}
case 2: {
                remove_primary(id)
                give_item(id, "weapon_awp")
                cs_set_user_bpammo(id, CSW_AWP, 45)
                has_lavka_awp[id] = true

}
case 3: {
                remove_primary(id)
                give_item(id, "weapon_ak47")
                cs_set_user_bpammo(id, CSW_AK47, 120)
                has_lavka_ak47[id] = true

}
case 4: {
                remove_primary(id)
                give_item(id, "weapon_m4a1")
                cs_set_user_bpammo(id, CSW_M4A1, 120)
                has_lavka_m4a1[id] = true

}
case 5: {
//ТУТА СВОЕ
}
}
return PLUGIN_HANDLED;
}

remove_primary(id)
{
    for(new i = 0; i < 18; i++)
    {
        fm_strip_user_gun(id, primary[i])
    }
}

public remove_secondary(id)
{
    for(new i = 0; i < 6; i++)
    {
        fm_strip_user_gun(id, pistols[i])
    }
}
Аватара пользователя
dUGDI1
 
Сообщения: 10
Зарегистрирован: 21 апр 2021, 21:43
Откуда: г. Пинск
Благодарил (а): 5 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше месяца
Языки программирования: Pawn

Re: помогите исправить плагин  [Решено]

Сообщение vitalik19842105 » 01 май 2021, 22:31

LAVKAGAN[12][64], зачем тут указывать размер массива? LAVKAGAN[ ][ ] достаточно написать так
case has_lavka_m4a1[id]: обратите внимание на это!!! Посмотрите второй case, третий и далее, замените на case CSW_M4A1:
Код: Выделить всё
public plugin_precache()
{
  
    new num
    for 
(num = 0; num < charsmax(LAVKAGAN); num++)
    {
        precache_model(LAVKAGAN[num]);
    }
}

Плохая привычка, создавать переменную в цикле, выносите её за цикл
Желательно избавляться от чисел, 12 ====》charsmax(LAVKAGAN), будет в цикле от 0 до 11
И еще, что бы небыло предупреждений при компиляции, выровняйте код
Для чего вы ловите это событие???
Код: Выделить всё
register_event("WeapPickup","checkModel","b","1=19")

Мне кажется, достаточно только это событие
Код: Выделить всё
register_event("CurWeapon","checkWeapon","be","1=1"

Присваивать значение false, правильнее в client_disconnect
Что бы не создоавать большое количество болевых массивов, используйте enum и двумерный массив
И потом с помощью arrayset, присвойте всему массиву значение false
Код: Выделить всё
#include <amxmodx> 
#include <fakemeta> 
#include <hamsandwich> 
#include <fun> 
#include <cstrike> 
#include <fakemeta_util> 
 
#define PLUGIN "LAVKA" 
#define VERSION "0.1" 
#define AUTHOR "Th1nk 1 1" 
 
new LAVKAGAN[][] = { 
 
"models/pdgeweapons/v_deagle.mdl"
 
"models/pdgeweapons/p_deagle.mdl"
 
"models/pdgeweapons/w_deagle.mdl"
 
"models/pdgeweapons/v_awp.mdl"
 
"models/pdgeweapons/p_awp.mdl"
 
"models/pdgeweapons/w_awp.mdl"
 
"models/pdgeweapons/v_ak47.mdl"
 
"models/pdgeweapons/p_ak47.mdl"
 
"models/pdgeweapons/w_ak47.mdl"
 
"models/pdgeweapons/v_m4a1.mdl"
 
"models/pdgeweapons/p_m4a1.mdl"
 
"models/pdgeweapons/w_m4a1.mdl" 

 
public 
plugin_precache() { 
 new 
num
 
 for(
num 0num charsmax(LAVKAGAN); num ++) 
 
precache_model(LAVKAGAN[num]); 

 
new 
pistols[6] = { CSW_P228CSW_ELITECSW_FIVESEVENCSW_DEAGLECSW_USPCSW_GLOCK18 
new 
primary[18] = { CSW_SCOUTCSW_XM1014CSW_MAC10CSW_AUGCSW_UMP45CSW_SG550CSW_GALILCSW_FAMASCSW_AWP
CSW_MP5NAVYCSW_M249CSW_M3CSW_M4A1CSW_TMPCSW_G3SG1CSW_SG552CSW_AK47CSW_P90 
 
enum _:weapon 
 
m4a1
 
ak47
 
awp
 
deagle 

 
new 
bool:has_lavka[33][weapon]; 
 
public 
plugin_init() { 
 
register_event("CurWeapon","checkWeapon","be","1=1"); 
 
 
register_clcmd("lavka""NewMenu"ADMIN_BAN); 
 
register_message(get_user_msgid("DeathMsg"),"dmsg"); 
 
register_plugin(PLUGINVERSIONAUTHOR); 

 
public 
checkWeapon(id) { 
 new 
WeaponID read_data(2); 
 
 switch(
WeaponID) { 
 
 case 
CSW_M4A1: { 
 if(
has_lavka[id][m4a1]) { 
 
set_pev(idpev_viewmodel2LAVKAGAN[9]); 
 
set_pev(idpev_weaponmodel2LAVKAGAN[10]); 
 } 
 } 
 
 case 
CSW_AK47: { 
 if(
has_lavka[id][ak47]) { 
 
set_pev(idpev_viewmodel2LAVKAGAN[6]); 
 
set_pev(idpev_weaponmodel2LAVKAGAN[7]); 
 } 
 } 
 
 case 
CSW_AWP: { 
 if(
has_lavka[id][awp]) { 
 
set_pev(idpev_viewmodel2LAVKAGAN[3]); 
 
set_pev(idpev_weaponmodel2LAVKAGAN[4]); 
 } 
 } 
 
 case 
CSW_DEAGLE: { 
 if(
has_lavka[id][deagle]) { 
 
set_pev(idpev_viewmodel2LAVKAGAN[0]); 
 
set_pev(idpev_weaponmodel2LAVKAGAN[1]); 
 } 
 } 
 } 

 
public 
dmsg(msg,dest,id
 
arrayset(has_lavka[id] ,falsecharsmax(has_lavka)); 
 
public 
client_connect(id
 
arrayset(has_lavka[id] ,falsecharsmax(has_lavka)); 
 
public 
NewMenu(id) { 
 if(
get_user_flags(id) & ADMIN_LEVEL_A) { 
 new 
i_Menu menu_create("\yЛавочка Пуджа""NewMenu_handler"); 
 
menu_additem(i_Menu"\rDEAGLE+ 130%dmg""1"0); 
 
menu_additem(i_Menu"\yAWP + 130%dmg""2"0); 
 
menu_additem(i_Menu"\yAK-47 + 130%dmg""3"0); 
 
menu_additem(i_Menu"\rM4A1 + 130%dmg""4"0); 
 
menu_additem(i_Menu"\yЧто-то еще + 130%dmg""5"0); 
 
menu_setprop(i_MenuMPROP_NEXTNAME"\rДалее"); 
 
menu_setprop(i_MenuMPROP_BACKNAME"\rНазад"); 
 
menu_setprop(i_MenuMPROP_EXITNAME"\rВыход"); 
 
menu_display(idi_Menu0); 
 } 
 
 else 
 
client_print(idprint_chat"У вас нет прав на использование этой команды"); //Сообщение в чат игрокам у которых нет нужного админ-флага 
 
 
return PLUGIN_HANDLED

 
public 
NewMenu_handler(idmenuitem) { 
 if(
item 0
 return 
PLUGIN_CONTINUE
 
 new 
cmd[3], accesscallback
 
menu_item_getinfo(menuitemaccesscmd,2,_,_callback); 
 new 
Choise str_to_num(cmd); 
 
 switch (
Choise) { 
 case 
1: { 
 
remove_secondary(id); 
 
give_item(id"weapon_deagle"); 
 
cs_set_user_bpammo(idCSW_DEAGLE80); 
 
has_lavka[id][deagle] = true
 } 
 
 case 
2: { 
 
remove_primary(id); 
 
give_item(id"weapon_awp"); 
 
cs_set_user_bpammo(idCSW_AWP45); 
 
has_lavka[id][awp] = true
 
 } 
 
 case 
3: { 
 
remove_primary(id); 
 
give_item(id"weapon_ak47"); 
 
cs_set_user_bpammo(idCSW_AK47120); 
 
has_lavka[id][ak47] = true
 
 } 
 
 case 
4: { 
 
remove_primary(id); 
 
give_item(id"weapon_m4a1"); 
 
cs_set_user_bpammo(idCSW_M4A1120); 
 
has_lavka[id][m4a1] = true
 
 } 
 
 case 
5: { 
 
//ТУТА СВОЕ 
 

 } 
 
 return 
PLUGIN_HANDLED

 
remove_primary(id) { 
 new 
i
 
 for(
0charsmax(primary); ++) 
 
fm_strip_user_gun(idprimary[i]); 

 
remove_secondary(id) { 
 new 
i
 
 for(
0charsmax(pistols); ++) 
 
fm_strip_user_gun(idpistols[i]); 

Попробуй, выраовняй код сам, а то я через копирование, и все пробелы сбиваются
Аватара пользователя
vitalik19842105
 
Сообщения: 195
Зарегистрирован: 14 фев 2021, 10:48
Предупреждения: 1
Благодарил (а): 30 раз.
Поблагодарили: 22 раз.
Опыт программирования: Меньше недели
Языки программирования: Нуждаюсь в помощи


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

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

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