Не компилируется плагин, colorchat.inc

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
62
Реакции
3
Ошибка
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(28) : error 021: symbol already defined: "client_print_color"
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(31) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(33) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(36) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(40) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(57) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(59) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(63) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(68) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(70) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(74) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(76) : warning 218: old style prototypes used with optional semicolumns
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(77) : error 054: unmatched closing brace
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(79) : warning 218: old style prototypes used with optional semicolumns
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(80) : error 054: unmatched closing brace
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(83) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(88) : error 021: symbol already defined: "get_players"
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(89) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(91) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(96) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(98) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(101) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(105) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(106) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(109) : error 021: symbol already defined: "ArrayPushCell"
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(113) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(121) : error 010: invalid function or declaration
// C:\Users\Maxim\Desktop\amxmodx\scripting\include\colorchat.inc(123) : error 010: invalid function or declaration
Компилятор
Локальный
Amx Mod X
1.9.0
Исходный код
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#include <engine>
#include <colorchat>

#define FL_WATERJUMP (1<<11)
#define FL_ONGROUND (1<<9)

#define PLUGIN "Shop for Knife"
#define VERSION "0.1beta"
#define AUTHOR "-NegaTiV-"


new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_8|MENU_KEY_0
new Gravity[33], Speed[33], Health[33], HeGrenade[33], FreezGrenade[33], Rendering[33], Bhop[33], Bunny_Hop[33]

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

register_menu("Menu 1", keys, "func_menu")
register_clcmd("say /shop", "ShopKnife")

RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
}

public player_spawn(id)
{
Gravity[id] = 0
Speed[id] = 0
Health[id] = 0
HeGrenade[id] = 0
FreezGrenade[id] = 0
Rendering[id] = 0
Bhop[id] = 0
Bunny_Hop[id] = false
}

public client_connect(id)
{
Bunny_Hop[id] = false
}

public ShopKnife(id)
{
static menu[1024], len
len = 0

new my_money = cs_get_user_money(id)

// Menu
if(get_user_flags(id) & ADMIN_LEVEL_A) {
len += formatex(menu[len], charsmax(menu) - len, "\r[\yМагазин\r] \wСкидка: \yЕсть^n^n")
} else {
len += formatex(menu[len], charsmax(menu) - len, "\r[\yМагазин\r] \wСкидка: \rНету^n^n")
}


if(get_user_flags(id) & ADMIN_LEVEL_A)
{
if(!is_user_alive(id) || my_money < 5000 || Gravity[id] >= 1)
{
len += formatex(menu[len], charsmax(menu) - len, "\r1. \dГравитация (\r5000$\d)^n")
keys &= ~MENU_KEY_1
} else {
len += formatex(menu[len], charsmax(menu) - len, "\r1. \wГравитация \d(\r5000$\d)^n")
keys |= MENU_KEY_1
}
} else {
if(!is_user_alive(id) || my_money < 10000 || Gravity[id] >= 1)
{
len += formatex(menu[len], charsmax(menu) - len, "\r1. \dГравитация (\r10000$\d)^n")
keys &= ~MENU_KEY_1
} else {
len += formatex(menu[len], charsmax(menu) - len, "\r1. \wГравитация \d(\r10000$\d)^n")
keys |= MENU_KEY_1
}
}

if(get_user_flags(id) & ADMIN_LEVEL_A)
{
if(!is_user_alive(id) || my_money < 5000 || Speed[id] >= 1)
{
len += formatex(menu[len], charsmax(menu) - len, "\r1. \dСкорость (\r5000$\d)^n")
keys &= ~MENU_KEY_2
} else {
len += formatex(menu[len], charsmax(menu) - len, "\r1. \wСкорость \d(\r5000$\d)^n")
keys |= MENU_KEY_2
}
} else {
if(!is_user_alive(id) || my_money < 10000 || Speed[id] >= 1)
{
len += formatex(menu[len], charsmax(menu) - len, "\r1. \dСкорость (\r10000$\d)^n")
keys &= ~MENU_KEY_2
} else {
len += formatex(menu[len], charsmax(menu) - len, "\r1. \wСкорость \d(\r10000$\d)^n")
keys |= MENU_KEY_2
}
}

if(get_user_flags(id) & ADMIN_LEVEL_A)
{
if(!is_user_alive(id) || my_money < 5000 || Health[id] >= 1)
{
len += formatex(menu[len], charsmax(menu) - len, "\r3. \d+255 HP (\r5000$\d)^n")
keys &= ~MENU_KEY_3
} else {
len += formatex(menu[len], charsmax(menu) - len, "\r3. \w+255 HP \d(\r5000$\d)^n")
keys |= MENU_KEY_3
}
} else {
if(!is_user_alive(id) || my_money < 8000 || Health[id] >= 1)
{
len += formatex(menu[len], charsmax(menu) - len, "\r3. \d+255 HP (\r8000$\d)^n")
keys &= ~MENU_KEY_3
} else {
len += formatex(menu[len], charsmax(menu) - len, "\r3. \w+255 HP \d(\r8000$\d)^n")
keys |= MENU_KEY_3
}
}

if(get_user_flags(id) & ADMIN_LEVEL_A)
{
if(!is_user_alive(id) || my_money < 4500 || HeGrenade[id] >= 1)
{
len += formatex(menu[len], charsmax(menu) - len, "\r4. \dВзрывная граната (\r4500$\d)^n")
keys &= ~MENU_KEY_4
} else {
len += formatex(menu[len], charsmax(menu) - len, "\r4. \wВзрывная граната \d(\r4500$\d)^n")
keys |= MENU_KEY_4
}
} else {
if(!is_user_alive(id) || my_money < 9000 || HeGrenade[id] >= 1)
{
len += formatex(menu[len], charsmax(menu) - len, "\r4. \dВзрывная граната (\r9000$\d)^n")
keys &= ~MENU_KEY_4
} else {
len += formatex(menu[len], charsmax(menu) - len, "\r4. \wВзрывная граната \d(\r9000$\d)^n")
keys |= MENU_KEY_4
}
}

if(get_user_flags(id) & ADMIN_LEVEL_A)
{
if(!is_user_alive(id) || my_money < 4500 || FreezGrenade[id] >= 1)
{
len += formatex(menu[len], charsmax(menu) - len, "\r4. \dЗамораживающая гараната (\r4500$\d)^n")
keys &= ~MENU_KEY_5
} else {
len += formatex(menu[len], charsmax(menu) - len, "\r4. \wЗамораживающая гараната \d(\r4500$\d)^n")
keys |= MENU_KEY_5
}
} else {
if(!is_user_alive(id) || my_money < 16000 || FreezGrenade[id] >= 1)
{
len += formatex(menu[len], charsmax(menu) - len, "\r4. \dЗамораживающая гараната (\r9000$\d)^n")
keys &= ~MENU_KEY_5
} else {
len += formatex(menu[len], charsmax(menu) - len, "\r4. \wЗамораживающая гараната \d(\r9000$\d)^n")
keys |= MENU_KEY_5
}
}

if(get_user_flags(id) & ADMIN_LEVEL_A)
{
if(!is_user_alive(id) || my_money < 12000 || Rendering[id] >= 1)
{
len += formatex(menu[len], charsmax(menu) - len, "\r6. \dНевидимость (\r12000$\d)^n")
keys &= ~MENU_KEY_6
} else {
len += formatex(menu[len], charsmax(menu) - len, "\r6. \wНевидимость \d(\r12000$\d)^n")
keys |= MENU_KEY_6
}
} else {
if(!is_user_alive(id) || my_money < 16000 || Rendering[id] >= 1)
{
len += formatex(menu[len], charsmax(menu) - len, "\r6. \dНевидимость (\r16000$\d)^n")
keys &= ~MENU_KEY_6
} else {
len += formatex(menu[len], charsmax(menu) - len, "\r6. \wНевидимость \d(\r16000$\d)^n")
keys |= MENU_KEY_6
}
}

if(get_user_flags(id) & ADMIN_LEVEL_A)
{
if(!is_user_alive(id) || my_money < 8000 || Bhop[id] >= 1)
{
len += formatex(menu[len], charsmax(menu) - len, "\r8. \dБанихоп (\r8000$\d)^n^n")
keys &= ~MENU_KEY_8
} else {
len += formatex(menu[len], charsmax(menu) - len, "\r8. \wБанихоп \d(\r8000$\d)^n^n")
keys |= MENU_KEY_8
}
} else {
if(!is_user_alive(id) || my_money < 16000 || Health[id] >= 1)
{
len += formatex(menu[len], charsmax(menu) - len, "\r8. \dБанихоп (\r16000$\d)^n^n")
keys &= ~MENU_KEY_8
} else {
len += formatex(menu[len], charsmax(menu) - len, "\r8. \wБанихоп \d(\r16000$\d)^n^n")
keys |= MENU_KEY_8
}
}

len += formatex(menu[len], charsmax(menu) - len, "\r0. \wВыход")
keys |= MENU_KEY_0

show_menu(id, keys, menu, -1, "Menu 1")
return PLUGIN_HANDLED;
}

public func_menu(id, key)
{
new my_money = cs_get_user_money(id)

switch(key)
{
case 0:{
if(get_user_flags(id) & ADMIN_LEVEL_A) {
if(!is_user_alive(id) || my_money < 5000 || Gravity[id] >= 1) {
return PLUGIN_CONTINUE;
} else {
cs_set_user_money(id, my_money - 5000)
set_user_gravity(id, 0.5)
ColorChat(id, NORMAL, "^1[^4Shop^1] ^3Вы купили: ^4Гравитацию")
Gravity[id]++
}
} else {
if(!is_user_alive(id) || my_money < 10000 || Gravity[id] >= 1) {
return PLUGIN_CONTINUE;
} else {
cs_set_user_money(id, my_money - 10000)
set_user_gravity(id, 0.5)
ColorChat(id, NORMAL, "^1[^4Shop^1] ^3Вы купили: ^4Гравитацию")
Gravity[id]++
}
}
}
case 1:{
if(get_user_flags(id) & ADMIN_LEVEL_A) {
if(!is_user_alive(id) || my_money < 5000 || Speed[id] >= 1) {
return PLUGIN_CONTINUE;
} else {
cs_set_user_money(id, my_money - 5000)
set_user_maxspeed(id, 320.0)
ColorChat(id, NORMAL, "^1[^4Shop^1] ^3Вы купили: ^4Скорость")
Speed[id]++
}
} else {
if(!is_user_alive(id) || my_money < 10000 || Gravity[id] >= 1) {
return PLUGIN_CONTINUE;
} else {
cs_set_user_money(id, my_money - 10000)
set_user_maxspeed(id, 320.0)
ColorChat(id, NORMAL, "^1[^4Shop^1] ^3Вы купили: ^4Скорость")
Speed[id]++
}
}
}
case 2:{
if(get_user_flags(id) & ADMIN_LEVEL_A) {
if(!is_user_alive(id) || my_money < 5000 || Health[id] >= 1) {
return PLUGIN_CONTINUE;
} else {
cs_set_user_money(id, my_money - 5000)
set_user_health(id, get_user_health(id) + 255)
ColorChat(id, NORMAL, "^1[^4Shop^1] ^3Вы купили: ^4+255 HP")
Health[id]++
}
} else {
if(!is_user_alive(id) || my_money < 8000 || Health[id] >= 1) {
return PLUGIN_CONTINUE;
} else {
cs_set_user_money(id, my_money - 8000)
set_user_health(id, get_user_health(id) + 255)
ColorChat(id, NORMAL, "^1[^4Shop^1] ^3Вы купили: ^4+255 HP")
Health[id]++
}
}
}
case 3:{
if(get_user_flags(id) & ADMIN_LEVEL_A) {
if(!is_user_alive(id) || my_money < 4500 || HeGrenade[id] >= 1) {
return PLUGIN_CONTINUE;
} else {
cs_set_user_money(id, my_money - 4500)
give_item(id, "weapon_hegrenade")
ColorChat(id, NORMAL, "^1[^4Shop^1] ^3Вы купили: ^4Взрывную гранату")
HeGrenade[id]++
}
} else {
if(!is_user_alive(id) || my_money < 9000 || HeGrenade[id] >= 1) {
return PLUGIN_CONTINUE;
} else {
cs_set_user_money(id, my_money - 9000)
give_item(id, "weapon_hegrenade")
ColorChat(id, NORMAL, "^1[^4Shop^1] ^3Вы купили: ^4Взрывную гранату")
HeGrenade[id]++
}
}
}
case 4:{
if(get_user_flags(id) & ADMIN_LEVEL_A) {
if(!is_user_alive(id) || my_money < 4500 || FreezGrenade[id] >= 1) {
return PLUGIN_CONTINUE;
} else {
cs_set_user_money(id, my_money - 4500)
give_item(id, "weapon_smokegrenade")
ColorChat(id, NORMAL, "^1[^4Shop^1] ^3Вы купили: ^4Замораживающую гранату")
FreezGrenade[id]++
}
} else {
if(!is_user_alive(id) || my_money < 9000 || FreezGrenade[id] >= 1) {
return PLUGIN_CONTINUE;
} else {
cs_set_user_money(id, my_money - 9000)
give_item(id, "weapon_smokegrenade")
ColorChat(id, NORMAL, "^1[^4Shop^1] ^3Вы купили: ^4Замораживающую гранату")
FreezGrenade[id]++
}
}
}
case 5:{
if(get_user_flags(id) & ADMIN_LEVEL_A) {
if(!is_user_alive(id) || my_money < 12000 || Rendering[id] >= 1) {
return PLUGIN_CONTINUE;
} else {
cs_set_user_money(id, my_money - 12000)
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,20)
ColorChat(id, NORMAL, "^1[^4Shop^1] ^3Вы купили: ^4Невидимость")
Rendering[id]++
}
} else {
if(!is_user_alive(id) || my_money < 16000 || Rendering[id] >= 1) {
return PLUGIN_CONTINUE;
} else {
cs_set_user_money(id, my_money - 16000)
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,20)
ColorChat(id, NORMAL, "^1[^4Shop^1] ^3Вы купили: ^4Невидимость")
Rendering[id]++
}
}
}
case 6:{
if(get_user_flags(id) & ADMIN_LEVEL_A) {
if(!is_user_alive(id) || my_money < 8000 || Bhop[id] >= 1) {
return PLUGIN_CONTINUE;
} else {
cs_set_user_money(id, my_money - 8000)
Bunny_Hop[id] = true
ColorChat(id, NORMAL, "^1[^4Shop^1] ^3Вы купили: ^4Банихоп")
Bhop[id]++
}
} else {
if(!is_user_alive(id) || my_money < 16000 || Bhop[id] >= 1) {
return PLUGIN_CONTINUE;
} else {
cs_set_user_money(id, my_money - 16000)
Bunny_Hop[id] = true
ColorChat(id, NORMAL, "^1[^4Shop^1] ^3Вы купили: ^4Банихоп")
Bhop[id]++
}
}
}
}
return PLUGIN_HANDLED;
}

public client_PreThink(id)
{
entity_set_float(id, EV_FL_fuser2, 0.0)
if(entity_get_int(id, EV_INT_button) & 2)
{
new flags = entity_get_int(id, EV_INT_flags)
if(flags & FL_WATERJUMP)
return PLUGIN_CONTINUE
if(entity_get_int(id, EV_INT_waterlevel) >= 2)
return PLUGIN_CONTINUE
if(!(flags & FL_ONGROUND))
return PLUGIN_CONTINUE

new Float:vecVelocity[3]
entity_get_vector(id, EV_VEC_velocity, vecVelocity)

if(Bunny_Hop[id])
vecVelocity[2] += 250.0

entity_set_vector(id, EV_VEC_velocity, vecVelocity)
entity_set_int(id, EV_INT_gaitsequence, 6)
}
return PLUGIN_CONTINUE
}
Пробовал 2 разных инклуда colorchat, ничего не получается
 
В этой теме было размещено решение! Перейти к решению.
Сообщения
1,335
Реакции
528
Помог
91 раз(а)
amax, плагин немного устарел, надо убрать #include <colorchat> и заменить ColorChat на client_print_color (если не ошибаюсь)
 
Сообщения
345
Реакции
77
Помог
14 раз(а)
Легко все скомпилилось, странно.

Код:
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#include <engine>
#if !defined client_print_color
#include <colorchat>
#endif

#define    FL_WATERJUMP    (1<<11)   
#define    FL_ONGROUND    (1<<9) 

#define PLUGIN "Shop for Knife"
#define VERSION "0.1beta"
#define AUTHOR "-NegaTiV-"


new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_8|MENU_KEY_0
new Gravity[33], Speed[33], Health[33], HeGrenade[33], FreezGrenade[33], Rendering[33], Bhop[33], Bunny_Hop[33]

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_menu("Menu 1", keys, "func_menu")
    register_clcmd("say /shop", "ShopKnife")
    
    RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
}

public player_spawn(id)
{
    Gravity[id] = 0
    Speed[id] = 0
    Health[id] = 0
    HeGrenade[id] = 0
    FreezGrenade[id] = 0
    Rendering[id] = 0
    Bhop[id] = 0
    Bunny_Hop[id] = false
}

public client_connect(id)
{
    Bunny_Hop[id] = false
}

public ShopKnife(id)
{
    static menu[1024], len
    len = 0
    
    new my_money = cs_get_user_money(id)
    
    // Menu
    if(get_user_flags(id) & ADMIN_LEVEL_A) {
        len += formatex(menu[len], charsmax(menu) - len, "\r[\yМагазин\r] \wСкидка: \yЕсть^n^n")
    } else {
        len += formatex(menu[len], charsmax(menu) - len, "\r[\yМагазин\r] \wСкидка: \rНету^n^n")
    }
        
    
    if(get_user_flags(id) & ADMIN_LEVEL_A)
    {
        if(!is_user_alive(id) || my_money < 5000 || Gravity[id] >= 1)
        {
            len += formatex(menu[len], charsmax(menu) - len, "\r1. \dГравитация (\r5000$\d)^n")
            keys &= ~MENU_KEY_1
        } else {
            len += formatex(menu[len], charsmax(menu) - len, "\r1. \wГравитация \d(\r5000$\d)^n")
            keys |= MENU_KEY_1
        }
    } else {
        if(!is_user_alive(id) || my_money < 10000 || Gravity[id] >= 1)
        {
            len += formatex(menu[len], charsmax(menu) - len, "\r1. \dГравитация (\r10000$\d)^n")
            keys &= ~MENU_KEY_1
        } else {
            len += formatex(menu[len], charsmax(menu) - len, "\r1. \wГравитация \d(\r10000$\d)^n")
            keys |= MENU_KEY_1
        }
    }
    
    if(get_user_flags(id) & ADMIN_LEVEL_A)
    {
        if(!is_user_alive(id) || my_money < 5000 || Speed[id] >= 1)
        {
            len += formatex(menu[len], charsmax(menu) - len, "\r1. \dСкорость (\r5000$\d)^n")
            keys &= ~MENU_KEY_2
        } else {
            len += formatex(menu[len], charsmax(menu) - len, "\r1. \wСкорость \d(\r5000$\d)^n")
            keys |= MENU_KEY_2
        }
    } else {
        if(!is_user_alive(id) || my_money < 10000 || Speed[id] >= 1)
        {
            len += formatex(menu[len], charsmax(menu) - len, "\r1. \dСкорость (\r10000$\d)^n")
            keys &= ~MENU_KEY_2
        } else {
            len += formatex(menu[len], charsmax(menu) - len, "\r1. \wСкорость \d(\r10000$\d)^n")
            keys |= MENU_KEY_2
        }
    }
    
    if(get_user_flags(id) & ADMIN_LEVEL_A)
    {
        if(!is_user_alive(id) || my_money < 5000 || Health[id] >= 1)
        {
            len += formatex(menu[len], charsmax(menu) - len, "\r3. \d+255 HP (\r5000$\d)^n")
            keys &= ~MENU_KEY_3
        } else {
            len += formatex(menu[len], charsmax(menu) - len, "\r3. \w+255 HP \d(\r5000$\d)^n")
            keys |= MENU_KEY_3
        }
    } else {
        if(!is_user_alive(id) || my_money < 8000 || Health[id] >= 1)
        {
            len += formatex(menu[len], charsmax(menu) - len, "\r3. \d+255 HP (\r8000$\d)^n")
            keys &= ~MENU_KEY_3
        } else {
            len += formatex(menu[len], charsmax(menu) - len, "\r3. \w+255 HP \d(\r8000$\d)^n")
            keys |= MENU_KEY_3
        }
    }
    
    if(get_user_flags(id) & ADMIN_LEVEL_A)
    {
        if(!is_user_alive(id) || my_money < 4500 || HeGrenade[id] >= 1)
        {
            len += formatex(menu[len], charsmax(menu) - len, "\r4. \dВзрывная граната (\r4500$\d)^n")
            keys &= ~MENU_KEY_4
        } else {
            len += formatex(menu[len], charsmax(menu) - len, "\r4. \wВзрывная граната \d(\r4500$\d)^n")
            keys |= MENU_KEY_4
        }
    } else {
        if(!is_user_alive(id) || my_money < 9000 || HeGrenade[id] >= 1)
        {
            len += formatex(menu[len], charsmax(menu) - len, "\r4. \dВзрывная граната (\r9000$\d)^n")
            keys &= ~MENU_KEY_4
        } else {
            len += formatex(menu[len], charsmax(menu) - len, "\r4. \wВзрывная граната \d(\r9000$\d)^n")
            keys |= MENU_KEY_4
        }
    }
    
    if(get_user_flags(id) & ADMIN_LEVEL_A)
    {
        if(!is_user_alive(id) || my_money < 4500 || FreezGrenade[id] >= 1)
        {
            len += formatex(menu[len], charsmax(menu) - len, "\r4. \dЗамораживающая гараната (\r4500$\d)^n")
            keys &= ~MENU_KEY_5
        } else {
            len += formatex(menu[len], charsmax(menu) - len, "\r4. \wЗамораживающая гараната \d(\r4500$\d)^n")
            keys |= MENU_KEY_5
        }
    } else {
        if(!is_user_alive(id) || my_money < 16000 || FreezGrenade[id] >= 1)
        {
            len += formatex(menu[len], charsmax(menu) - len, "\r4. \dЗамораживающая гараната (\r9000$\d)^n")
            keys &= ~MENU_KEY_5
        } else {
            len += formatex(menu[len], charsmax(menu) - len, "\r4. \wЗамораживающая гараната \d(\r9000$\d)^n")
            keys |= MENU_KEY_5
        }
    }
    
    if(get_user_flags(id) & ADMIN_LEVEL_A)
    {
        if(!is_user_alive(id) || my_money < 12000 || Rendering[id] >= 1)
        {
            len += formatex(menu[len], charsmax(menu) - len, "\r6. \dНевидимость (\r12000$\d)^n")
            keys &= ~MENU_KEY_6
        } else {
            len += formatex(menu[len], charsmax(menu) - len, "\r6. \wНевидимость \d(\r12000$\d)^n")
            keys |= MENU_KEY_6
        }
    } else {
        if(!is_user_alive(id) || my_money < 16000 || Rendering[id] >= 1)
        {
            len += formatex(menu[len], charsmax(menu) - len, "\r6. \dНевидимость (\r16000$\d)^n")
            keys &= ~MENU_KEY_6
        } else {
            len += formatex(menu[len], charsmax(menu) - len, "\r6. \wНевидимость \d(\r16000$\d)^n")
            keys |= MENU_KEY_6
        }
    }
    
    if(get_user_flags(id) & ADMIN_LEVEL_A)
    {
        if(!is_user_alive(id) || my_money < 8000 || Bhop[id] >= 1)
        {
            len += formatex(menu[len], charsmax(menu) - len, "\r8. \dБанихоп (\r8000$\d)^n^n")
            keys &= ~MENU_KEY_8
        } else {
            len += formatex(menu[len], charsmax(menu) - len, "\r8. \wБанихоп \d(\r8000$\d)^n^n")
            keys |= MENU_KEY_8
        }
    } else {
        if(!is_user_alive(id) || my_money < 16000 || Health[id] >= 1)
        {
            len += formatex(menu[len], charsmax(menu) - len, "\r8. \dБанихоп (\r16000$\d)^n^n")
            keys &= ~MENU_KEY_8
        } else {
            len += formatex(menu[len], charsmax(menu) - len, "\r8. \wБанихоп \d(\r16000$\d)^n^n")
            keys |= MENU_KEY_8
        }
    }
    
    len += formatex(menu[len], charsmax(menu) - len, "\r0. \wВыход")
    keys |= MENU_KEY_0
    
    show_menu(id, keys, menu, -1, "Menu 1")
    return PLUGIN_HANDLED;
}

public func_menu(id, key)
{
    new my_money = cs_get_user_money(id)
    
    switch(key)
    {
        case 0:{
            if(get_user_flags(id) & ADMIN_LEVEL_A) {
                if(!is_user_alive(id) || my_money < 5000 || Gravity[id] >= 1) {
                return PLUGIN_CONTINUE;
                } else {
                    cs_set_user_money(id, my_money - 5000)
                    set_user_gravity(id, 0.5)
                    client_print_color(id, print_team_default, "^1[^4Shop^1] ^3Вы купили: ^4Гравитацию")
                    Gravity[id]++
                }
            } else {
                if(!is_user_alive(id) || my_money < 10000 || Gravity[id] >= 1) {
                return PLUGIN_CONTINUE;
                } else {
                    cs_set_user_money(id, my_money - 10000)
                    set_user_gravity(id, 0.5)
                    client_print_color(id, print_team_default, "^1[^4Shop^1] ^3Вы купили: ^4Гравитацию")
                    Gravity[id]++
                }
            }
        }
        case 1:{
            if(get_user_flags(id) & ADMIN_LEVEL_A) {
                if(!is_user_alive(id) || my_money < 5000 || Speed[id] >= 1) {
                return PLUGIN_CONTINUE;
                } else {
                    cs_set_user_money(id, my_money - 5000)
                    set_user_maxspeed(id, 320.0)
                    client_print_color(id, print_team_default, "^1[^4Shop^1] ^3Вы купили: ^4Скорость")
                    Speed[id]++
                }
            } else {
                if(!is_user_alive(id) || my_money < 10000 || Gravity[id] >= 1) {
                return PLUGIN_CONTINUE;
                } else {
                    cs_set_user_money(id, my_money - 10000)
                    set_user_maxspeed(id, 320.0)
                    client_print_color(id, print_team_default, "^1[^4Shop^1] ^3Вы купили: ^4Скорость")
                    Speed[id]++
                }
            }
        }
        case 2:{
            if(get_user_flags(id) & ADMIN_LEVEL_A) {
                if(!is_user_alive(id) || my_money < 5000 || Health[id] >= 1) {
                return PLUGIN_CONTINUE;
                } else {
                    cs_set_user_money(id, my_money - 5000)
                    set_user_health(id, get_user_health(id) + 255)
                    client_print_color(id, print_team_default, "^1[^4Shop^1] ^3Вы купили: ^4+255 HP")
                    Health[id]++
                }
            } else {
                if(!is_user_alive(id) || my_money < 8000 || Health[id] >= 1) {
                return PLUGIN_CONTINUE;
                } else {
                    cs_set_user_money(id, my_money - 8000)
                    set_user_health(id, get_user_health(id) + 255)
                    client_print_color(id, print_team_default, "^1[^4Shop^1] ^3Вы купили: ^4+255 HP")
                    Health[id]++
                }
            }
        }
        case 3:{
            if(get_user_flags(id) & ADMIN_LEVEL_A) {
                if(!is_user_alive(id) || my_money < 4500 || HeGrenade[id] >= 1) {
                return PLUGIN_CONTINUE;
                } else {
                    cs_set_user_money(id, my_money - 4500)
                    give_item(id, "weapon_hegrenade")
                    client_print_color(id, print_team_default, "^1[^4Shop^1] ^3Вы купили: ^4Взрывную гранату")
                    HeGrenade[id]++
                }
            } else {
                if(!is_user_alive(id) || my_money < 9000 || HeGrenade[id] >= 1) {
                return PLUGIN_CONTINUE;
                } else {
                    cs_set_user_money(id, my_money - 9000)
                    give_item(id, "weapon_hegrenade")
                    client_print_color(id, print_team_default, "^1[^4Shop^1] ^3Вы купили: ^4Взрывную гранату")
                    HeGrenade[id]++
                }
            }
        }
        case 4:{
            if(get_user_flags(id) & ADMIN_LEVEL_A) {
                if(!is_user_alive(id) || my_money < 4500 || FreezGrenade[id] >= 1) {
                return PLUGIN_CONTINUE;
                } else {
                    cs_set_user_money(id, my_money - 4500)
                    give_item(id, "weapon_smokegrenade")
                    client_print_color(id, print_team_default, "^1[^4Shop^1] ^3Вы купили: ^4Замораживающую гранату")
                    FreezGrenade[id]++
                }
            } else {
                if(!is_user_alive(id) || my_money < 9000 || FreezGrenade[id] >= 1) {
                return PLUGIN_CONTINUE;
                } else {
                    cs_set_user_money(id, my_money - 9000)
                    give_item(id, "weapon_smokegrenade")
                    client_print_color(id, print_team_default, "^1[^4Shop^1] ^3Вы купили: ^4Замораживающую гранату")
                    FreezGrenade[id]++
                }
            }
        }
        case 5:{
            if(get_user_flags(id) & ADMIN_LEVEL_A) {
                if(!is_user_alive(id) || my_money < 12000 || Rendering[id] >= 1) {
                return PLUGIN_CONTINUE;
                } else {
                    cs_set_user_money(id, my_money - 12000)
                    set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,20)
                    client_print_color(id, print_team_default, "^1[^4Shop^1] ^3Вы купили: ^4Невидимость")
                    Rendering[id]++
                }
            } else {
                if(!is_user_alive(id) || my_money < 16000 || Rendering[id] >= 1) {
                return PLUGIN_CONTINUE;
                } else {
                    cs_set_user_money(id, my_money - 16000)
                    set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,20)
                    client_print_color(id, print_team_default, "^1[^4Shop^1] ^3Вы купили: ^4Невидимость")
                    Rendering[id]++
                }
            }
        }
        case 6:{
            if(get_user_flags(id) & ADMIN_LEVEL_A) {
                if(!is_user_alive(id) || my_money < 8000 || Bhop[id] >= 1) {
                return PLUGIN_CONTINUE;
                } else {
                    cs_set_user_money(id, my_money - 8000)
                    Bunny_Hop[id] = true
                    client_print_color(id, print_team_default, "^1[^4Shop^1] ^3Вы купили: ^4Банихоп")
                    Bhop[id]++
                }
            } else {
                if(!is_user_alive(id) || my_money < 16000 || Bhop[id] >= 1) {
                return PLUGIN_CONTINUE;
                } else {
                    cs_set_user_money(id, my_money - 16000)
                    Bunny_Hop[id] = true
                    client_print_color(id, print_team_default, "^1[^4Shop^1] ^3Вы купили: ^4Банихоп")
                    Bhop[id]++
                }
            }
        }
    }
    return PLUGIN_HANDLED;
}

public client_PreThink(id)
{   
    entity_set_float(id, EV_FL_fuser2, 0.0)       
    if(entity_get_int(id, EV_INT_button) & 2)
    {   
        new flags = entity_get_int(id, EV_INT_flags)
        if(flags & FL_WATERJUMP)
            return PLUGIN_CONTINUE
        if(entity_get_int(id, EV_INT_waterlevel) >= 2)
            return PLUGIN_CONTINUE
        if(!(flags & FL_ONGROUND))
            return PLUGIN_CONTINUE

        new Float:vecVelocity[3]
        entity_get_vector(id, EV_VEC_velocity, vecVelocity)

        if(Bunny_Hop[id])   
            vecVelocity[2] += 250.0
            
        entity_set_vector(id, EV_VEC_velocity, vecVelocity)
        entity_set_int(id, EV_INT_gaitsequence, 6)
    }
    return PLUGIN_CONTINUE
}


Пробуйте так.
 
Сообщения
1,419
Реакции
2,508
Помог
59 раз(а)
error 021: symbol already defined: "client_print_color"
В AMXX 1.8.3 и выше уже по стандарту есть client_print_color и не нужен include colorchat.
 
Сообщения
62
Реакции
3
w0w, а не подскажите, что нужно для работы:

if(get_user_team(id) == 3){
client_print_color(id, "!tВыберите !gкоманду !tчтобы открыть Магазин")
return PLUGIN_HANDLED
}
Хочу, чтобы менюшка не открывалась когда игрок в спекторах или мертв
Скрытое содержимое для пользователей:
 
Сообщения
1,419
Реакции
2,508
Помог
59 раз(а)
if(get_user_team(id) == 3){
client_print_color(id, "!tВыберите !gкоманду !tчтобы открыть Магазин")
return PLUGIN_HANDLED
}
Всё правильно, это нужно добавить при вызове открытия меню. А хукается открытие меню в Server_Menu поэтому нужно добавить эти строки до получения имени игрока (new name[32]...)
 
Сообщения
62
Реакции
3
w0w, error 035: argument type mismatch (argument 2)
Скрытое содержимое для пользователей:
 
Сообщения
1,419
Реакции
2,508
Помог
59 раз(а)
Вот мой вариант ниже, для сравнения, возможно пригодится. Напишу чем я считаю что он лучше.
Код:
#include <amxmodx>

#define PLUGIN  "Menu"
#define VERSION "1.01"
#define AUTHOR  "amax"

#define KEYS (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<9)

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

    register_clcmd("menu", "func_ServerMenu");
    register_clcmd("say /menu", "func_ServerMenu");
    register_clcmd("nightvision", "func_ServerMenu");

    register_menucmd(register_menuid("func_ServerMenu"), KEYS, "func_ServerMenu_Handler");
}

public func_ServerMenu(id)
{
    if(get_user_team(id) == 3)
    {
        client_print_color(id, print_team_default, "^1Нельзя открыть меню за наблюдателей");
        return PLUGIN_HANDLED;
    }

    static szMenu[MAX_MENU_LENGTH], iLen;
    iLen = formatex(szMenu[iLen], charsmax(szMenu), "\wМеню сервера^n^n");

    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[1] » \wПоставить \yРаздатчик \r[\y$2000\r]^n");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[2] » \wПоставить \yЛазер \r[\y$1000\r]^n");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[3] » \wПоставить \yПушку \r[\y$3-4k\r]^n");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[4] » \wМагазин \r[\yСупер оружия\r]^n");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[5] » \wМагазин \r[\yСпособностей\r]^n");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[6] » \wМагазин \r[\yСупер Шапки\r]^n");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[7] » \wПередать деньги^n");
    iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[8] » \wКупить \yпривилегии^n");
    formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\r[0] x \wВыход^n^n\dvk.com/csdmbymax");

    show_menu(id, KEYS, szMenu, -1, "func_ServerMenu");
    return PLUGIN_HANDLED;
}

public func_ServerMenu_Handler(id, iKey)
{
    switch(iKey)
    {
        case 0: amxclient_cmd(id, "buy_disp");
        case 1: amxclient_cmd(id, "+setlaser");
        case 2: amxclient_cmd(id, "sentry_build");
        case 3: client_cmd(id, "say /goldmenu");
        case 4: client_cmd(id, "say /shop");
        case 5: client_cmd(id, "say /hats");
        case 6: client_cmd(id, "say /money");
        case 7: client_cmd(id, "say /adminka");
    }
    return PLUGIN_HANDLED;
}
Во первых, я убрал бинд меню -по моему мнению не нужно биндить что либо игрокам насильно и думаю что многие согласятся с этим-. Во вторых, используем константы (MAX_MENU_LENGTH) вместо того чтобы вручную писать непонятное число. Далее, вместо client_cmd используем amxclient_cmd (протекторы не будут блокировать выполнение команды так как эта команда зарегистрирована в каком-то из плагинов поэтому она выполнится, не работает на команды которые не зарегистрированы).
Я убрал ^" из команд как +setlaser, честно говоря, не знаю почему там это вообще, оно без этого не работает или что? Или логика такая что на консольные команды надо это добавлять? Если второе, то тогда ответ - не нужно.

Я рекомендую заменить любые команды say /hats на консольные команды, например hatsmenu, так как если стоит антифлуд на сервере то команда просто не выполнится. Поэтому я советую изменить чат команды на консольные (в том смысле что оставить конечно же чат но чтобы именно в этом месте использовались консольные команды, так как никакой блокировки тогда не произойдет и команда выполнится успешно).
Однако amxclient_cmd работает только с консольными командами (не получится запихнуть туда например, /say test). Поэтому нужно заменить say команды на консольные и client_cmd поменять на amxclient_cmd и будет работать.

Нужно иметь ввиду при использовании client_print_color что у него есть три обязательных аргумента: native client_print_color(index, sender, const message[], any:...);, посмотри как реализовано это в варианте выше, у меня указан второй аргумент, в твоём коде такого нет, это нужно обязательно указывать иначе будет ошибка о том что не хватает одного из аргументов натива.
Нужно иметь так же ввиду что нужно использовать ^1 вместо !y, ^3 вместо !t и ^4 вместо !g а так же что сообщение должно всегда начинаться с какого-то цвета, то есть в 3 аргументе всегда в самом начале должен быть указан какой-то цвет, т.е. вот так вот нельзя делать: client_print_color(id, print_team_default, "Тест сообщение"); а нужно добавить цвет, чтобы получилось, например: client_print_color(id, print_team_default, "^1Тест сообщение");

Кроме этого, не понятно зачем подключались некоторые другие include файлы, возможно для будущей разработки? Если нет, то не нужно их подключать, разницы конечно думаю нет, но всё же и толку нет. В этом случае хватает одного для реализации текущего функционала.
 
Сообщения
62
Реакции
3
w0w, да вы правы. спасибо за развернутый ответ.
сейчас добавил на сервер, столкнулся с проблемой, что say /shop команы не работают, в консоле

Unknown command: say /shop

а обычные case 0: amxclient_cmd(id, "hats"); работают

И ещё, как сделать сообщение цветным \r \w \d \y
 
Сообщения
1,419
Реакции
2,508
Помог
59 раз(а)
сейчас добавил на сервер, столкнулся с проблемой, что say /shop команы не работают, в консоле

Unknown command: say /shop

а обычные case 0: amxclient_cmd(id, "hats"); работают
Да, забыл об этом упомянуть и пару минут назад про это добавил, нужно заменить чат команды на консольные в любом случае.

И ещё, как сделать сообщение цветным \r \w \d \y
Как я написал в том сообщении, можно сделать цвет жёлтым, красным, синим или серым.
Пример: client_print_color(id, print_team_red, "^3Привет");
Это сообщение выведется красным цветом, мы используем ^3 который отвечает за цвет команды (красный, синий или серый только выводит) и print_team_redозначает что весь текст что под действием ^3 будет выводиться красным цветом. Таким образом можно использовать print_team_blue и print_team_grey.

Если мы сделаем так: client_print_color(id, print_team_default, "^3Привет"); то сообщение выведется в зависимости от команды игрока, например если игрок за террористов то сообщение будет красным, за КТ - синим, за наблюдателей - серым. Это равносильно такому применению: client_print_color(id, id, "^3Привет");. В последнем случае мы используем id игрока как второй аргумент, таким образом мы узнаем его команду, т.е. если он за террористов то сообщение будет красным, ну и так далее.
 
Сообщения
62
Реакции
3
w0w, что-то я написал не подумав, вы же все правильно сказали, зачем say если антифлуд стоит, сейчас в исходниках поправлю.
А на счет цветного сообщения я имел виду, что: \nПривет \rкрасный \dсерый \wбелый день.
Т.е. множество цветов вместо 1. А тут я понимаю 1 цвет используется с помощью print_team_***
И почему именно ^3 я могу использовать сразу их много в одном сообщении и они будут разных цветов?
 
Сообщения
1,419
Реакции
2,508
Помог
59 раз(а)
amax, можно использовать разные цвета в одном сообщении но нельзя использовать например красный вместе с синим или серым.
Вот примеры:
client_print_color(id, print_team_red, "^1Жёлтый ^3Красный ^4Зелёный");
client_print_color(id, print_team_blue, "^1Жёлтый ^3Синий ^4Зелёный");
client_print_color(id, print_team_grey, "^1Жёлтый ^3Серый ^4Зелёный");
client_print_color(id, print_team_default, "^1Жёлтый ^3Цвет ^4Зелёный"); (в этом случае в зависимости от команды игрока, ему выведется красный (Т), синий (CT) или серый (SPEC) цвет.
 
Статус
В этой теме нельзя размещать новые ответы.

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

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