проблемы с компилированием плагина [damager]

Сообщения
3
Реакции
0
Ошибка
damager.sma(102) : error 017: undefined symbol "get_menu_item"
damager.sma(113) : error 002: only a single statement (or expression) can follow each "case"
damager.sma(113) : error 036: empty statement
damager.sma(114) : warning 217: loose indentation
damager.sma(114) : error 014: invalid statement; not in switch
damager.sma(114) : warning 215: expression has no effect
damager.sma(114) : error 001: expected token: ";", but found ":"
damager.sma(114) : error 029: invalid expression, assumed zero
damager.sma(114) : fatal error 107: too many error messages on one line
Компилятор
Локальный
Amx Mod X
1.9.0
Исходный код
#include <amxmodx>
#include <fakemeta>
#include <fakemeta_util>

new const PLUGIN[] = "Damager"
new const VERSION[] = "2.0"
new const AUTHOR[] = "Prayer & slutter666"

new g_MsgSync
new g_MsgSync2

new pid
new damage
new g_Enabled[MAX_PLAYERS] // Переменная для отслеживания состояния дамагера для каждого игрока
new g_Color[MAX_PLAYERS][3] // Хранение цвета для каждого игрока

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

register_clcmd("say /dm", "cmd_ToggleDamager")
register_clcmd("say_team /dm", "cmd_ToggleDamager")
register_clcmd("say /color", "cmd_ColorMenu")
register_clcmd("say_team /color", "cmd_ColorMenu")
register_event("Damage", "EVENT_Damage", "b", "2!0", "3=0", "4!0")

g_MsgSync = CreateHudSyncObj()
g_MsgSync2 = CreateHudSyncObj()

// Инициализация цветов по умолчанию (белый)
for (new i = 0; i < MAX_PLAYERS; i++)
{
g_Color[i][0] = 255; // Red
g_Color[i][1] = 255; // Green
g_Color[i][2] = 255; // Blue
g_Enabled[i] = 1; // Включено по умолчанию
}

}

public EVENT_Damage(id)
{
if(pev_valid(id) && g_Enabled[id])
{
pid = get_user_attacker(id)
damage = read_data(2)

set_hudmessage(g_Color[id][0], g_Color[id][1], g_Color[id][2], 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1)
ShowSyncHudMsg(id, g_MsgSync2, "%i", damage)

if(pev(pid, pev_flags) & FL_CLIENT)
{
set_hudmessage(g_Color[pid][0], g_Color[pid][1], g_Color[pid][2], -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
ShowSyncHudMsg(pid, g_MsgSync, "%i", damage)
}
}
}

public cmd_ToggleDamager(id)
{
g_Enabled[id] = !g_Enabled[id] // Переключение состояния дамагера для игрока

if (g_Enabled[id])
{
client_print(id, print_chat, "Информирование урона - включено")
}
else
{
client_print(id, print_chat, "Информирование урона - отключено")
}
}

public cmd_ColorMenu(id)
{
new menu = menu_create("Выберите цвет дамагера", "cmd_SetColor")

menu_additem(menu, "Красный", "1")
menu_additem(menu, "Зеленый", "2")
menu_additem(menu, "Синий", "3")
menu_additem(menu, "Желтый", "4")
menu_additem(menu, "Фиолетовый", "5")
menu_additem(menu, "Циан", "6")

menu_display(menu, id)
}

public cmd_SetColor(id, const menu_id)
{
new item_id = get_menu_item(menu_id);

g_Color[id][0] = 0;
g_Color[id][1] = 0;
g_Color[id][2] = 0;

switch (item_id)
{
case 1: // Красный
g_Color[id][0] = 255;
break;
case 2: // Зеленый
g_Color[id][1] = 255;
break;
case 3: // Синий
g_Color[id][2] = 255;
break;
case 4: // Желтый
g_Color[id][0] = 255;
g_Color[id][1] = 255;
break;
case 5: // Фиолетовый
g_Color[id][0] = 128;
g_Color[id][2] = 128;
break;
case 6: // Циан
g_Color[id][1] = 255;
g_Color[id][2] = 255;
break;
}

client_print(id, print_chat, "Цвет дамагера изменен!")
}
решил шо то сам натыкать, и получилось такое чудо
сижу мудрю, и не могу решить траблы '.'
хелп ми, гайзззз
 
В этой теме было размещено решение! Перейти к решению.

fgd

Сообщения
92
Реакции
25
Помог
12 раз(а)
В amxmodx не нужно писать break в switch.

Код:
#include <amxmodx>
#include <fakemeta>
#include <fakemeta_util>

new const PLUGIN[] = "Damager"
new const VERSION[] = "2.0"
new const AUTHOR[] = "Prayer & slutter666"

new g_MsgSync
new g_MsgSync2

new pid
new damage
new g_Enabled[MAX_PLAYERS] // Переменная для отслеживания состояния дамагера для каждого игрока
new g_Color[MAX_PLAYERS][3] // Хранение цвета для каждого игрока

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
   
    register_clcmd("say /dm", "cmd_ToggleDamager")
    register_clcmd("say_team /dm", "cmd_ToggleDamager")
    register_clcmd("say /color", "cmd_ColorMenu")
    register_clcmd("say_team /color", "cmd_ColorMenu")
    register_event("Damage", "EVENT_Damage", "b", "2!0", "3=0", "4!0")
   
    g_MsgSync = CreateHudSyncObj()
    g_MsgSync2 = CreateHudSyncObj()
   
    // Инициализация цветов по умолчанию (белый)
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
        g_Color[i][0] = 255; // Red
        g_Color[i][1] = 255; // Green
        g_Color[i][2] = 255; // Blue
        g_Enabled[i] = 1; // Включено по умолчанию
    }

}

public EVENT_Damage(id)
{
    if(pev_valid(id) && g_Enabled[id])
    {
        pid = get_user_attacker(id)
        damage = read_data(2)
       
        set_hudmessage(g_Color[id][0], g_Color[id][1], g_Color[id][2], 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1)
        ShowSyncHudMsg(id, g_MsgSync2, "%i", damage)
       
        if(pev(pid, pev_flags) & FL_CLIENT)
        {
            set_hudmessage(g_Color[pid][0], g_Color[pid][1], g_Color[pid][2], -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1)
            ShowSyncHudMsg(pid, g_MsgSync, "%i", damage)
        }
    }
}

public cmd_ToggleDamager(id)
{
    g_Enabled[id] = !g_Enabled[id] // Переключение состояния дамагера для игрока
   
    if (g_Enabled[id])
    {
        client_print(id, print_chat, "Информирование урона - включено")
    }
    else
    {
        client_print(id, print_chat, "Информирование урона - отключено")
    }
}

public cmd_ColorMenu(id)
{
    new menu = menu_create("Выберите цвет дамагера", "cmd_SetColor")
   
    menu_additem(menu, "Красный", "1")
    menu_additem(menu, "Зеленый", "2")
    menu_additem(menu, "Синий", "3")
    menu_additem(menu, "Желтый", "4")
    menu_additem(menu, "Фиолетовый", "5")
    menu_additem(menu, "Циан", "6")
   
    menu_display(id, menu)
}

public cmd_SetColor(id, const menu_id, const menu_item)
{

    g_Color[id][0] = 0;
    g_Color[id][1] = 0;
    g_Color[id][2] = 0;

    switch (menu_item)
    {
        case 1: // Красный
            g_Color[id][0] = 255;
        case 2: // Зеленый
            g_Color[id][1] = 255;
        case 3: // Синий
            g_Color[id][2] = 255;
        case 4: // Желтый
        {
            g_Color[id][0] = 255;
            g_Color[id][1] = 255;
        }
        case 5: // Фиолетовый
        {
            g_Color[id][0] = 128;
            g_Color[id][2] = 128;
        }
        case 6: // Циан
        {
            g_Color[id][1] = 255;
            g_Color[id][2] = 255;
        }
    }

    client_print(id, print_chat, "Цвет дамагера изменен!")
}
slutter666, я забыл изменить расположение case, надо начинать с NULL
 
Последнее редактирование:
Сообщения
3
Реакции
0
fgd, плагин работает, спасибо
один минус произошел, цвета перепутаны :D
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу