Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Устаревшая конструкция меню, или нечто иное?

Статус пользователя adin
сообщение 1.2.2015, 6:05
Сообщение #1
Стаж: 14 лет

Сообщений: 87
Благодарностей: 12
Полезность: 107

Дано: плагин xpmod

Совершенные преступления:

Вырезано: респаун (aka DM), меню оружий, как в CSDM, полностью избавил мод от конструкций if use nvault, else sql, вообщем плагин работает только с nvault.

Проблема:

только одна, и почему то кажется - что кроется она в устаревшей конструкции меню (плагин почти 4 года не обновляли)

Пример кода меню плагина:

Код:

public open_MainMenu(id)
{
new szMenuBody[512]
new len = formatex(szMenuBody,511, "%L" , id , "MAIN")
len += formatex(szMenuBody[len],511-len, "%L" , id , "BUY")
len += formatex(szMenuBody[len],511-len, "%L" , id , "SELL")
len += formatex(szMenuBody[len],511-len, "%L" , id , "HELP")
len += formatex(szMenuBody[len],511-len, "%L" , id , "CANCEL")
show_menu(id, Keysmenu_main, szMenuBody, -1, "Main Upgrades Menu")
}


Код:

display_PassiveUpgrades(id)
{
new szMenuBody[512]
new len = formatex(szMenuBody, 511, "%L" , id , "BUY2")

len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY3", g_HealthLevel[id], MaxLevel_Health)

len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY4", g_ArmorLevel[id], MaxLevel_Armor)
len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY5", g_SpeedLevel[id], MaxLevel_Speed)
len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY6", g_RegenerationLevel[id], MaxLevel_Regeneration)
len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY8", g_GravityLevel[id], MaxLevel_Gravity)
len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY7")
show_menu(id, Keysmenu_sell, szMenuBody, -1, "Buy Upgrades")
}


Вследствии всех манипуляций - работает все, как часы, все пишется и читается с nvault, проблема с меню.

При текущих раскладах проблема такова: при использовании плагина, используя админку - можно спокойно перемещаться только на 1 стр главного меню. При нажатии кнопки 9 (Далее) - в консоль сыпятся ругательства на menufront.amxx.

При всем своем багаже знаний, полученом не за 1 год кодинга в pawn - подозреваю, что собака зарыта именно в меню.

Код с консоли:
Скрытый текст
Код
L 02/01/2015 - 05:44:04: String formatted incorrectly - parameter 8 (total 7)
L 02/01/2015 - 05:44:04: [AMXX] Displaying debug trace (plugin "menufront.amxx")

L 02/01/2015 - 05:44:04: [AMXX] Run time error 25: parameter error
L 02/01/2015 - 05:44:04: [AMXX]    [0] menufront.sma::displayMenu (line 244)
L 02/01/2015 - 05:44:04: [AMXX]    [1] menufront.sma::actionMenu (line 170)


Без использования плагина - все работает без проблем.


Верны ли мои догадки? smile.gif

Отредактировал: adin, - 1.2.2015, 6:08
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя adin
сообщение 1.2.2015, 11:47
Сообщение #2
Стаж: 14 лет

Сообщений: 87
Благодарностей: 12
Полезность: 107

58 просмотров, 0 ответов.

Профи, где же вы?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 1.2.2015, 12:03
Сообщение #3
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Хоть бы приложил исходник плагина и строки на которых ругается, никому неохота ходить по ссылкам и искать где скачать
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя adin
сообщение 1.2.2015, 12:22
Сообщение #4
Стаж: 14 лет

Сообщений: 87
Благодарностей: 12
Полезность: 107

Цитата(voed @ 1.2.2015, 12:03) *
Хоть бы приложил исходник плагина и строки на которых ругается, никому неохота ходить по ссылкам и искать где скачать


Какой исходник? Сервер начинает ругаться на стандартный плагин menufront.amxx ( который я не трогал никоим образом), к тому же приложен код с консоли с ошибкой.

Внимательней будьте, товарищ.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 1.2.2015, 12:28
Сообщение #5
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Цитата(adin @ 1.2.2015, 12:22) *
Какой исходник? Сервер начинает ругаться на стандартный плагин menufront.amxx ( который я не трогал никоим образом), к тому же приложен код с консоли с ошибкой.

Внимательней будьте, товарищ.

Не имеет значения, откуда они вызываются, нужно знать, какие функции их вызывают для полноты картины
Я например совсем не понял, что такое "использование плагина, используя админку"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adin
сообщение 1.2.2015, 13:24
Сообщение #6
Стаж: 14 лет

Сообщений: 87
Благодарностей: 12
Полезность: 107

Цитата(voed @ 1.2.2015, 12:28) *
Не имеет значения, откуда они вызываются, нужно знать, какие функции их вызывают для полноты картины
Я например совсем не понял, что такое "использование плагина, используя админку"



Разжевываю: при использовании отредактированного мной плагина xpmod - при вызове админменю командой amxmodmenu - можно спокойно использовать либо какой из пунктов, которые доступны администратору, за исключением возможности перехода на 2 страницу. В админменю, на первой странице (кик,бан,убить,смена\голосование за карту, плагины) при нажатии кнопки "9", которая отвечает за открытие 2 страницы админменю (серверные переменные, управление кварами, телепорт, запрет оружия) - вторая страница не вызывается вообще. Тоесть, после нажатия клавиши "9" - просто пропадает список доступных команд с админменю, одновременно с этим в консоли появляется то, что я указал выше. Продублирую сюда еще раз:

Скрытый текст
Код
L 02/01/2015 - 05:44:04: String formatted incorrectly - parameter 8 (total 7)
L 02/01/2015 - 05:44:04: [AMXX]        Displaying debug trace (plugin "menufront.amxx")
L 02/01/2015 - 05:44:04: [AMXX]        Run time error 25: parameter error
L 02/01/2015 - 05:44:04: [AMXX]    [0] menufront.sma::displayMenu (line 244)
L 02/01/2015 - 05:44:04: [AMXX]    [1] menufront.sma::actionMenu (line 170)


Строчки 166-176 исходника menufront.amxx

Код:

public actionMenu(id, key)
{
switch (key)
{
case 8: displayMenu(id, ++g_menuPosition[id])
case 9: displayMenu(id, --g_menuPosition[id])
default: client_cmd(id, "%s", g_menuCmd[g_menuPosition[id] * 8 + key])
}

return PLUGIN_HANDLED
}


Строчки 244-247 исходника menufront.amxx

Код:

format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
keys |= MENU_KEY_9
} else {
format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 1.2.2015, 13:42
Сообщение #7
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Ну что ж, я пытался, но исходник вы давать отказываетесь, а по ссылке выше нет ланга, в котором, скорее всего, и проблема
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adin
сообщение 1.2.2015, 13:52
Сообщение #8
Стаж: 14 лет

Сообщений: 87
Благодарностей: 12
Полезность: 107

voed,

Насчет ссылки выше - имеете ввиду отсутствие lang-файла для оригинального плагина? Я его нашел, он на предпоследней стр. указан.
Не в нем суть.


idea_1.gif

Суть, как мне кажется, в том, что плагин давно не обновляли (порядка 4 лет почти), а вывод меню на amx-e перетерпел же изменения вроде бы как. И кажется, что проблема в старом формате генерации меню.


Вот код (редактированный):

Скрытый текст


Код:

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

#define IsPlayer(%1) (1 <= %1 <= g_iMaxPlayers)
#define m_LastHitGroup 75
#define DMG_GRENADE ( 1 << 24 )
#define MaxLevel 55
#define MaxLevel_Health 10
#define MaxLevel_Armor 10
#define MaxLevel_Speed 10
#define MaxLevel_Regeneration 10
#define MaxLevel_Gravity 10
#define Health_PerLevel 25
#define Armor_PerLevel 25
#define Speed_PerLevel 8
#define Regeneration_PerLevel 1
#define Gravity_PerLevel 0.06
#define TeamInfo_PlayerID 1
#define XO_PLAYER 5
#define m_iTeam 114
#define m_iDeaths 444
#define Keysmenu_sell (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<9)
#define Keysmenu_buy (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<9)
#define Keysmenu_main (1<<0)|(1<<1)|(1<<2)|(1<<9)
#define Keysmenu_reset (1<<0)|(1<<9)

new g_vault;
new gmsgScoreInfo;
new attacker_he;
new const LEVELS[55] = {865,1835,3500,4235,5040,5915,6860,7875,8960,10115,11340,12635,14000,15435,16940
,19515,20160,21875,23660,25515,27440,29435,31500,33635,35840,38115,40460,42875,4
7
360,53915,59540,66235,76000,86835,97740,129715,135855,149515,157525,168715,17671
5
,186715,199815,218815,230815,242815,254985,266455,278985,290125,302715,314285,32
6
565,338825,350857}
new bool:isalive[33];
new bool:BombPlanted;
new bool:g_PlayerReseted[33];
new bool:g_PlayerReg[33];
new g_HealthLevel[33];
new g_ArmorLevel[33];
new g_SpeedLevel[33];
new g_RegenerationLevel[33];
new g_GravityLevel[33];
new PlayerPoints[33];
new PlayerXP[33],PlayerLevel[33];
new Killstreaks[33];
new kills[33];
new HS[33];
new KILL_XP;
new HS_XP;
new KNF_XP;
new SET_C4_XP;
new LVLUP_PTS;
new DEFUSE_XP;
new EXPLOSION_XP;
new CT_XP;
new HE_XP;
new KILLSTREAK;
new HSSTREAK;
new KILLSTREAKBONUS;
new HSSTREAKBONUS;
new SAVE_XP;
new CONNECT_MSG;
new LVLUP_MSG;
new MOD_SOUNDS;
new UPGRADE_SHOP;
new gHudSync;
new gHudSyncXp;
new g_iMaxPlayers;


public plugin_init()
{
register_plugin("EXP Mod", "1.0", "1st")
register_dictionary("expmod.txt")
g_iMaxPlayers = get_maxplayers();
g_vault = nvault_open("xpmod")
gmsgScoreInfo = get_user_msgid("ScoreInfo")
gHudSync = CreateHudSyncObj();
gHudSyncXp = CreateHudSyncObj();
static iEnt;
iEnt = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target"));
set_pev(iEnt, pev_classname, "HudSyncEnt");
set_pev(iEnt, pev_nextthink, get_gametime());
RegisterHamFromEntity(Ham_Think, iEnt, "HudShow");
RegisterHam(Ham_Killed, "player", "eDeath", 1);
RegisterHam(Ham_TakeDamage, "player", "eDamage");
RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1);
register_logevent("Planted", 3, "2=Planted_The_Bomb");
register_logevent("Defused", 3, "2=Defused_The_Bomb");
register_logevent("Bombed", 6, "3=Target_Bombed");
register_logevent("TargetSaved", 6, "3=Target_Saved");
register_event("TeamInfo", "Event_TeamInfo_All", "a")
SAVE_XP = register_cvar("exp_save", "1")
CONNECT_MSG = register_cvar("exp_conn_msg", "1")
LVLUP_MSG = register_cvar("exp_up_msg", "1")
MOD_SOUNDS = register_cvar("exp_mod_sounds", "1")
UPGRADE_SHOP = register_cvar("exp_ushop", "1")
LVLUP_PTS = register_cvar("exp_lvlup_pts", "0")
KILL_XP = register_cvar("exp_kill_xp", "100")
HE_XP = register_cvar("exp_he_xp", "50")
HS_XP = register_cvar("exp_hs_xp", "50")
KNF_XP = register_cvar("exp_knf_xp", "50")
SET_C4_XP = register_cvar("exp_c4_xp", "50")
DEFUSE_XP = register_cvar("exp_defuse_xp", "50")
EXPLOSION_XP = register_cvar("exp_c4exploded_xp", "50")
CT_XP = register_cvar("exp_ctsaved_xp", "50")
KILLSTREAK = register_cvar("exp_killstreak", "4")
HSSTREAK = register_cvar("exp_hsstreak", "4")
KILLSTREAKBONUS = register_cvar("exp_killstreak_xp", "200")
HSSTREAKBONUS = register_cvar("exp_hsstreak_xp", "250")
register_clcmd("say /reset", "open_Reset")
register_clcmd("say /menu", "open_MainMenu")
register_clcmd("say /shop", "open_PassiveUpgrades")
register_clcmd("say /sell", "display_sellmenu")
register_clcmd("say /help", "display_help")
register_concmd("menu", "open_MainMenu")
register_concmd("shop", "open_PassiveUpgrades")
register_concmd("sell", "display_sellmenu")
register_concmd("help", "display_help")
register_concmd("exp_setlvl","setlevel",ADMIN_BAN,"- usage: <target> <level>")
register_concmd("exp_setpoints","setpoints",ADMIN_BAN,"- usage: <target> <points>")
register_menucmd(register_menuid("Главное меню улучшений"), Keysmenu_main, "Action_MainMenu")
register_menucmd(register_menuid("Покупка улучшений"), Keysmenu_buy, "Action_BuyUpgrades")
register_menucmd(register_menuid("Продажа улучшений"), Keysmenu_sell, "Action_sellMenu")
register_menucmd(register_menuid("Сброс"), Keysmenu_reset, "Action_reset")
}

public plugin_precache()
{
precache_sound("xpmod/xp_levelup.wav")
precache_sound("xpmod/xp_resetstats.wav")
precache_sound("xpmod/xp_upgradepurchase.wav")
precache_sound("xpmod/xp_upgradesell.wav")
return PLUGIN_CONTINUE
}

public client_connect(id)
{
g_HealthLevel[id] = 0
g_ArmorLevel[id] = 0
g_SpeedLevel[id] = 0
g_RegenerationLevel[id] = 0
g_GravityLevel[id] = 0
PlayerPoints[id] = 0
PlayerLevel[id] = 0
PlayerXP[id] = 0
if(get_pcvar_num(SAVE_XP) == 1 && !is_user_bot(id))
{
LoadData(id)
}
if(get_pcvar_num(CONNECT_MSG) == 1) {
new name[32]
get_user_info(id, "name", name, 31)
client_print(0, print_chat, "[EXP] %L", 0, "WELCOME",name , PlayerLevel[id])
}
}

public client_disconnect(id)
{
if(get_pcvar_num(SAVE_XP) == 1 && !is_user_bot(id))
{
SaveData(id)
}
g_HealthLevel[id] = 0
g_ArmorLevel[id] = 0
g_SpeedLevel[id] = 0
g_RegenerationLevel[id] = 0
g_GravityLevel[id] = 0
PlayerPoints[id] = 0
PlayerLevel[id] = 0
PlayerXP[id] = 0
}

LoadData(id)
{
new AuthID[35];
get_user_authid(id,AuthID,34);
new vaultkey[64],vaultdata[256]

formatex(vaultkey,63,"%s-Mod",AuthID)
formatex(vaultdata,255,"%i#%i#%i#%i#%i#%i#%i#%i#",PlayerLevel[id],PlayerXP[id],PlayerPoints[id],g_HealthLevel[id],g_ArmorLev
el[id],g_SpeedLevel[id],g_RegenerationLevel[id],g_GravityLevel[id])
nvault_get(g_vault,vaultkey,vaultdata,255)
replace_all(vaultdata, 255, "#", " ")

new playerlevel[32], playerxp[32], playerpoints[32], playerhealth[32], playerarmor[32], playerspeed[32], playerregeneration[32], playergravity[32]
parse(vaultdata, playerlevel, 31, playerxp, 31, playerpoints, 31, playerhealth, 31, playerarmor, 31, playerspeed, 31, playerregeneration, 31, playergravity, 31)

PlayerLevel[id] = str_to_num(playerlevel)
PlayerXP[id] = str_to_num(playerxp)
PlayerPoints[id] = str_to_num(playerpoints)
g_HealthLevel[id] = str_to_num(playerhealth)
g_ArmorLevel[id] = str_to_num(playerarmor)
g_SpeedLevel[id] = str_to_num(playerspeed)
g_RegenerationLevel[id] = str_to_num(playerregeneration)
g_GravityLevel[id] = str_to_num(playergravity)
}

SaveData(id)
{
new AuthID[35];
get_user_authid(id,AuthID,34);
new vaultkey[64],vaultdata[256]

formatex(vaultkey,63,"%s-Mod",AuthID)
formatex(vaultdata,255,"%i#%i#%i#%i#%i#%i#%i#%i#",PlayerLevel[id],PlayerXP[id],PlayerPoints[id],g_HealthLevel[id],g_ArmorLev
el[id],g_SpeedLevel[id],g_RegenerationLevel[id],g_GravityLevel[id])
nvault_set(g_vault,vaultkey,vaultdata)
}

public setlevel( id, level,cid )
{
if( ! cmd_access ( id, level, cid, 3 ) )
return PLUGIN_HANDLED;

new target[32], amount[21], reason[21];

read_argv( 1, target, 31 );
read_argv(2, amount, 20 );
read_argv( 3, reason, 20 );

new player = cmd_target( id, target, 8 );

if( ! player )
return PLUGIN_HANDLED;

new admin_name[32], player_name[32];
get_user_name( id, admin_name, 31 );
get_user_name( player, player_name, 31 );

new levelnum = str_to_num( amount );

if(levelnum > MaxLevel) {
client_print(id, print_console, "[EXP] %L", id, "MAX", MaxLevel)
return PLUGIN_HANDLED;
}
if(levelnum == 0) {
PlayerLevel[player] = levelnum;
PlayerXP[player] = 0;
} else {
PlayerLevel[player] = levelnum;
PlayerXP[player] = LEVELS[levelnum-1];
}

switch( get_cvar_num ( "amx_show_activity" ) )
{
case 1: client_print(0, print_chat, "[EXP] %L", LANG_PLAYER, "GAVE" , levelnum, player_name);
case 2: client_print(0, print_chat, "[EXP] %L", LANG_PLAYER, "GAVE2" , admin_name, levelnum, player_name);
}

client_print(player, print_chat, "[EXP] %L", player, "RECEIVED", levelnum, PlayerLevel[player] );

if(get_pcvar_num(SAVE_XP) == 1 && !is_user_bot(player)) {
SaveData(player);
}

return PLUGIN_CONTINUE;
}

public setpoints( id, level,cid )
{
if( ! cmd_access ( id, level, cid, 3 ) )
return PLUGIN_HANDLED;

new target[32], amount[21], reason[21];

read_argv( 1, target, 31 );
read_argv(2, amount, 20 );
read_argv( 3, reason, 20 );

new player = cmd_target( id, target, 8 );

if( ! player )
return PLUGIN_HANDLED;

new admin_name[32], player_name[32];
get_user_name( id, admin_name, 31 );
get_user_name( player, player_name, 31 );

new points = str_to_num( amount );

PlayerPoints[player] = points;

switch( get_cvar_num ( "amx_show_activity" ) )
{
case 1: client_print(0, print_chat, "[EXP] %L", LANG_PLAYER, "GAVE3", points, player_name );
case 2: client_print(0, print_chat, "[EXP] %L", LANG_PLAYER, "GAVE4", admin_name, points, player_name );
}

client_print(player, print_chat, "[EXP] %L", player, "RECEIVED2", points);

if(get_pcvar_num(SAVE_XP) == 1 && !is_user_bot(player)) {
SaveData(player);
}

return PLUGIN_CONTINUE;
}

public open_MainMenu(id)
{
new szMenuBody[512]
new len = formatex(szMenuBody,511, "%L" , id , "MAIN")
len += formatex(szMenuBody[len],511-len, "%L" , id , "BUY")
len += formatex(szMenuBody[len],511-len, "%L" , id , "SELL")
len += formatex(szMenuBody[len],511-len, "%L" , id , "HELP")
len += formatex(szMenuBody[len],511-len, "%L" , id , "CANCEL")
show_menu(id, Keysmenu_main, szMenuBody, -1, "Main Upgrades Menu")
}

public Action_MainMenu(id, key)
{
switch(key)
{
case 0: {
open_PassiveUpgrades(id)
}
case 1: {
display_sellmenu(id)
}
case 2: {
display_help(id)
}
case 9: {
}
}
return PLUGIN_HANDLED
}

public display_help(id)
{
new szMotd[2048], szTitle[64], iPos = 0
formatex(szTitle,63, "%L" , id , "TITLE")
iPos += formatex(szMotd[iPos], 2047-iPos, "<html><head><style type=^"text/css^">pre{color:#FFB000;}body{background:#000000;margin-left:8px;margin-top:0px;}</style></head><pre><body>")
iPos += formatex(szMotd[iPos], 2047-iPos, "^n^n<b>%s</b>^n^n", szTitle)
iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "DESC")
iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP1")
iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP2")
iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP3")
iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP4")
iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP5")
iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP6")
iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP7")
iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP8")
iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP9")
iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP10")
iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP11", Health_PerLevel)
iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP12", Armor_PerLevel)
iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP13", Speed_PerLevel)
iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP14", Regeneration_PerLevel)
iPos += formatex(szMotd[iPos], 2047-iPos, "%L" , id , "HELP15", floatround((Gravity_PerLevel * 100)))
show_motd(id, szMotd, szTitle)
return PLUGIN_HANDLED
}

public open_Reset(id)
{
new szMenuBody[512]
new len = formatex(szMenuBody, 511, "%L" , id , "RESET")
len += formatex(szMenuBody[len], 511-len, "%L" , id , "RESET2")
len += formatex(szMenuBody[len], 511-len, "%L" , id , "RESET3")
show_menu(id, Keysmenu_reset, szMenuBody, -1, "Reset")
}

public Action_reset(id, key) {
switch(key) {
case 0: {
g_PlayerReseted[id] = true;
client_print(id, print_chat, "[EXP] %L", id, "RESETED");
}
case 9: {
}
}
return PLUGIN_HANDLED
}

public reset(id)
{
g_PlayerReseted[id] = false;
set_user_health(id, 100);
set_user_armor(id, 100);
set_user_maxspeed(id, 320.0);
g_HealthLevel[id] = 0
g_RegenerationLevel[id] = 0
g_ArmorLevel[id] = 0
g_SpeedLevel[id] = 0
g_GravityLevel[id] = 0
PlayerPoints[id] = 0
PlayerLevel[id] = 0
PlayerXP[id] = 0
client_print(id, print_chat, "[EXP] %L", id, "RESETED2");
ShowHud(id);
if(get_pcvar_num(MOD_SOUNDS) == 1) {
client_cmd(id,"spk xpmod/xp_resetstats")
}
if(get_pcvar_num(SAVE_XP) == 1 && !is_user_bot(id)) {
SaveData(id);
}
return PLUGIN_HANDLED
}

public open_PassiveUpgrades(id)
{
if(get_pcvar_num(UPGRADE_SHOP) == 1) {
display_PassiveUpgrades(id)
}
return PLUGIN_HANDLED
}

display_PassiveUpgrades(id)
{
new szMenuBody[512]
new len = formatex(szMenuBody, 511, "%L" , id , "BUY2")

len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY3", g_HealthLevel[id], MaxLevel_Health)
len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY4", g_ArmorLevel[id], MaxLevel_Armor)
len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY5", g_SpeedLevel[id], MaxLevel_Speed)
len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY6", g_RegenerationLevel[id], MaxLevel_Regeneration)
len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY8", g_GravityLevel[id], MaxLevel_Gravity)
len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY7")
show_menu(id, Keysmenu_sell, szMenuBody, -1, "Покупка улучшений")
}

public Action_BuyUpgrades(id, key)
{
switch(key)
{
case 0:
{
if(g_HealthLevel[id] >= MaxLevel_Health) {
client_print(id, print_chat, "[EXP] %L", id, "MAXLEVEL", g_HealthLevel[id]);
return PLUGIN_HANDLED
} else if(!is_user_alive(id)) {
client_print(id, print_chat, "[EXP] %L", id, "ALIVE");
return PLUGIN_HANDLED
} else {
Set_Upgrade(id, 0)
}
}
case 1:
{
if(g_ArmorLevel[id] >= MaxLevel_Armor) {
client_print(id, print_chat, "[EXP] %L", id, "MAXLEVEL", g_ArmorLevel[id]);
return PLUGIN_HANDLED
} else if(!is_user_alive(id)) {
client_print(id, print_chat, "[EXP] %L", id, "ALIVE");
return PLUGIN_HANDLED
} else {
Set_Upgrade(id, 1)
}
}
case 2:
{
if(g_SpeedLevel[id] >= MaxLevel_Speed) {
client_print(id, print_chat, "[EXP] %L", id, "MAXLEVEL", g_SpeedLevel[id]);
return PLUGIN_HANDLED
} else if(!is_user_alive(id)) {
client_print(id, print_chat, "[EXP] %L", id, "ALIVE");
return PLUGIN_HANDLED
} else {
Set_Upgrade(id, 2)
}
}
case 3:
{
if(g_RegenerationLevel[id] >= MaxLevel_Regeneration) {
client_print(id, print_chat, "[EXP] %L", id, "MAXLEVEL", g_RegenerationLevel[id]);
return PLUGIN_HANDLED
} else if(!is_user_alive(id)) {
client_print(id, print_chat, "[EXP] %L", id, "ALIVE");
return PLUGIN_HANDLED
} else {
Set_Upgrade(id, 3)
}
}
case 4:
{
if(g_GravityLevel[id] >= MaxLevel_Gravity) {
client_print(id, print_chat, "[EXP] %L", id, "MAXLEVEL", g_GravityLevel[id]);
return PLUGIN_HANDLED
} else if(!is_user_alive(id)) {
client_print(id, print_chat, "[EXP] %L", id, "ALIVE");
return PLUGIN_HANDLED
} else {
Set_Upgrade(id, 4)
}
}
case 9:
{
}

}
return PLUGIN_HANDLED
}

public Set_Upgrade(id, value)
{

switch(value)
{
case 0:
{
if(PlayerPoints[id] > 1 * g_HealthLevel[id]) {
g_HealthLevel[id] += 1
PlayerPoints[id] -= 1 * g_HealthLevel[id]
add_health(id, Health_PerLevel)
client_print(id, print_chat, "[EXP] %L", id, "HEALTH", g_HealthLevel[id] * Health_PerLevel)
if(get_pcvar_num(MOD_SOUNDS) == 1) {
client_cmd(id,"spk xpmod/xp_upgradepurchase")
}
}
}
case 1:
{
if(PlayerPoints[id] > 1 * g_ArmorLevel[id]) {
g_ArmorLevel[id] += 1
PlayerPoints[id] -= 1 * g_ArmorLevel[id]
add_armor(id, Armor_PerLevel)
client_print(id, print_chat, "[EXP] %L", id, "ARMOR", g_ArmorLevel[id] * Armor_PerLevel)
if(get_pcvar_num(MOD_SOUNDS) == 1) {
client_cmd(id,"spk xpmod/xp_upgradepurchase")
}
}
}
case 2:
{
if(PlayerPoints[id] > 1 * g_SpeedLevel[id]) {
g_SpeedLevel[id] += 1
PlayerPoints[id] -= 1 * g_SpeedLevel[id]
new Float:fSpeed = 320.0 + (g_SpeedLevel[id] * Speed_PerLevel)
set_user_maxspeed(id, fSpeed)
client_print(id, print_chat, "[EXP] %L", id, "SPEED", g_SpeedLevel[id] * Speed_PerLevel)
if(get_pcvar_num(MOD_SOUNDS) == 1) {
client_cmd(id,"spk xpmod/xp_upgradepurchase")
}
}
}
case 3:
{
if(PlayerPoints[id] > 1 * g_RegenerationLevel[id]) {
g_RegenerationLevel[id] += 1
PlayerPoints[id] -= 1 * g_RegenerationLevel[id]
client_print(id, print_chat, "[EXP] %L", id, "REGENERATION", g_RegenerationLevel[id] * Regeneration_PerLevel)
if(get_pcvar_num(MOD_SOUNDS) == 1) {
client_cmd(id,"spk xpmod/xp_upgradepurchase")
}
}
}
case 4:
{
if(PlayerPoints[id] > 1 * g_GravityLevel[id]) {
g_GravityLevel[id] += 1
PlayerPoints[id] -= 1 * g_GravityLevel[id]
new Float: fGravity = g_GravityLevel[id] * Gravity_PerLevel
set_gravity(id, fGravity)
client_print(id, print_chat, "[EXP] %L", id, "GRAVITY", g_GravityLevel[id] * floatround((Gravity_PerLevel * 100)))
if(get_pcvar_num(MOD_SOUNDS) == 1) {
client_cmd(id,"spk xpmod/xp_upgradepurchase")
}
}
}
}


if(get_pcvar_num(SAVE_XP) == 1 && !is_user_bot(id)) {
SaveData(id);
}

if(PlayerPoints[id] > 0) {
display_PassiveUpgrades(id)
}
}

public display_sellmenu(id)
{
new szMenuBody[512]
new len = formatex(szMenuBody, 511, "%L" , id , "SELL1")
len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY3", g_HealthLevel[id], MaxLevel_Health)
len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY4", g_ArmorLevel[id], MaxLevel_Armor)
len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY5", g_SpeedLevel[id], MaxLevel_Speed)
len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY6", g_RegenerationLevel[id], MaxLevel_Regeneration)
len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY8", g_GravityLevel[id], MaxLevel_Gravity)
len += formatex(szMenuBody[len], 511-len, "%L" , id , "BUY7")
show_menu(id, Keysmenu_sell, szMenuBody, -1, "Продажа улучшений")
}

public Action_sellMenu(id, key)
{

switch(key)
{
case 0:
{
if(g_HealthLevel[id] == 0) {
client_print(id, print_chat, "[EXP] %L", id, "NEEDED")
return PLUGIN_HANDLED
} else if(!is_user_alive(id)) {
client_print(id, print_chat, "[EXP] %L", id, "ALIVE2")
return PLUGIN_HANDLED
} else {
client_print(id, print_chat, "[EXP] %L", id, "SOLD")
PlayerPoints[id] += 1 * g_HealthLevel[id]
g_HealthLevel[id] -= 1
set_user_health(id, 100)
add_health(id, g_HealthLevel[id] * Health_PerLevel)
ShowHud(id);
display_sellmenu(id);
if(get_pcvar_num(MOD_SOUNDS) == 1) {
client_cmd(id,"spk xpmod/xp_upgradesell")
}
}
}
case 1:
{
if(g_ArmorLevel[id] == 0) {
client_print(id, print_chat, "[EXP] %L", id, "NEEDED")
return PLUGIN_HANDLED
} else if(!is_user_alive(id)) {
client_print(id, print_chat, "[EXP] %L", id, "ALIVE2")
return PLUGIN_HANDLED
} else {
client_print(id, print_chat, "[EXP] %L", id, "SOLD")
PlayerPoints[id] += 1 * g_ArmorLevel[id]
g_ArmorLevel[id] -= 1
cs_set_user_armor(id, 100, CS_ARMOR_KEVLAR)
add_armor(id, g_ArmorLevel[id] * Armor_PerLevel)
ShowHud(id);
display_sellmenu(id);
if(get_pcvar_num(MOD_SOUNDS) == 1) {
client_cmd(id,"spk xpmod/xp_upgradesell")
}
}
}
case 2:
{
if(g_SpeedLevel[id] == 0) {
client_print(id, print_chat, "[EXP] %L", id, "NEEDED")
return PLUGIN_HANDLED
} else if(!is_user_alive(id)) {
client_print(id, print_chat, "[EXP] %L", id, "ALIVE2")
return PLUGIN_HANDLED
} else {
client_print(id, print_chat, "[EXP] %L", id, "SOLD")
PlayerPoints[id] += 1 * g_SpeedLevel[id]
g_SpeedLevel[id] -= 1
set_user_maxspeed(id, 320.0)
new Float:fSpeed = 320.0 + (g_SpeedLevel[id] * Speed_PerLevel)
set_user_maxspeed(id, fSpeed)
ShowHud(id);
display_sellmenu(id);
if(get_pcvar_num(MOD_SOUNDS) == 1) {
client_cmd(id,"spk xpmod/xp_upgradesell")
}
}
}
case 3:
{
if(g_RegenerationLevel[id] == 0) {
client_print(id, print_chat, "[EXP] %L", id, "NEEDED")
return PLUGIN_HANDLED
} else if(!is_user_alive(id)) {
client_print(id, print_chat, "[EXP] %L", id, "ALIVE2")
return PLUGIN_HANDLED
} else {
client_print(id, print_chat, "[EXP] %L", id, "SOLD")
PlayerPoints[id] += 1 * g_RegenerationLevel[id]
g_RegenerationLevel[id] -= 1
ShowHud(id);
display_sellmenu(id);
if(get_pcvar_num(MOD_SOUNDS) == 1) {
client_cmd(id,"spk xpmod/xp_upgradesell")
}
}
}
case 4:
{
if(g_GravityLevel[id] == 0) {
client_print(id, print_chat, "[EXP] %L", id, "NEEDED")
return PLUGIN_HANDLED
} else if(!is_user_alive(id)) {
client_print(id, print_chat, "[EXP] %L", id, "ALIVE2")
return PLUGIN_HANDLED
} else {
client_print(id, print_chat, "[EXP] %L", id, "SOLD")
PlayerPoints[id] += 1 * g_GravityLevel[id]
g_GravityLevel[id] -= 1
new Float: fGravity = g_GravityLevel[id] * Gravity_PerLevel
set_gravity(id, fGravity)
ShowHud(id);
display_sellmenu(id);
if(get_pcvar_num(MOD_SOUNDS) == 1) {
client_cmd(id,"spk xpmod/xp_upgradesell")
}
}
}
case 9:
{
}
}
if(get_pcvar_num(SAVE_XP) == 1 && !is_user_bot(id)) {
SaveData(id);
}
ShowHud(id);
return PLUGIN_HANDLED
}

add_armor(id, value)
{
new CsArmorType:ArmorType
new iArmor = cs_get_user_armor(id, ArmorType)
cs_set_user_armor(id, iArmor + value, ArmorType)
}

add_health(id, value)
{
new iHealth = get_user_health(id)
set_user_health(id, iHealth + value)
}

set_gravity(id, Float:value) {
set_user_gravity(id, 1.00 - value)
}

public event_curweapon(id) {
if(!is_user_connected(id))
{
return PLUGIN_HANDLED;
}
if(g_SpeedLevel[id] > 0)
{
new Float:fSpeed = 320.0 + (g_SpeedLevel[id] * Speed_PerLevel)
set_user_maxspeed(id, fSpeed)
}

if(g_GravityLevel[id] > 0)
{
new Float: fGravity = g_GravityLevel[id] * Gravity_PerLevel
if(get_user_gravity(id) != fGravity) {
set_gravity(id, fGravity)
}
}

return PLUGIN_CONTINUE;
}

public eDamage(iVictim, ent, iAttacker, Float:damage, bits)
{
if(!is_user_connected(iVictim) || !is_user_connected(iAttacker) || iVictim == iAttacker)
{
return HAM_IGNORED;
}
if(bits & DMG_GRENADE)
{
iAttacker = attacker_he;
set_task(0.1, "eCheck", iVictim);
}
return HAM_IGNORED;
}

public eCheck(id)
{
++Killstreaks[attacker_he];
if(kills[attacker_he] != get_pcvar_num(KILLSTREAK) && HS[attacker_he] != get_pcvar_num(HSSTREAK))
{
if(!is_user_alive(id))
{
PlayerXP[attacker_he] += (get_pcvar_num(KILL_XP) + get_pcvar_num(HE_XP));
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(attacker_he, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(HE_XP));
++kills[attacker_he];
}
}


if(kills[attacker_he] == get_pcvar_num(KILLSTREAK) && HS[attacker_he] == get_pcvar_num(HSSTREAK))
{
if(!is_user_alive(id))
{
PlayerXP[attacker_he] += (get_pcvar_num(KILL_XP) + get_pcvar_num(HE_XP) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS));
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(attacker_he, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(HE_XP) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS));
kills[attacker_he] = 0;
HS[attacker_he] = 0;
}
}


if(kills[attacker_he] == get_pcvar_num(KILLSTREAK) && HS[attacker_he] != get_pcvar_num(HSSTREAK))
{
if(!is_user_alive(id))
{
PlayerXP[attacker_he] += (get_pcvar_num(KILL_XP) + get_pcvar_num(HE_XP) + get_pcvar_num(KILLSTREAKBONUS));
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(attacker_he, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(HE_XP) + get_pcvar_num(KILLSTREAKBONUS));
}
}


if(HS[attacker_he] == get_pcvar_num(HSSTREAK) && kills[attacker_he] != get_pcvar_num(KILLSTREAK))
{
if(!is_user_alive(id))
{
PlayerXP[attacker_he] += (get_pcvar_num(KILL_XP) + get_pcvar_num(HE_XP) + get_pcvar_num(HSSTREAKBONUS));
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(attacker_he, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(HE_XP) + get_pcvar_num(HSSTREAKBONUS));
HS[attacker_he] = 0;
}
}


if(get_pcvar_num(SAVE_XP) == 1 && !is_user_bot(attacker_he)) {
SaveData(attacker_he);
}
ShowHud(attacker_he);
CheckLevel(attacker_he);
}

public eDeath(iVictim, iAttacker) {
new HitGroup = get_pdata_int(iVictim, m_LastHitGroup);
Killstreaks[iVictim] = 0;
kills[iVictim] = 0;
HS[iVictim] = 0;

if(!IsPlayer(iAttacker)){
return HAM_IGNORED;
}
new weapon = get_user_weapon(iAttacker);

if(get_user_team(iAttacker) != get_user_team(iVictim)) {
++Killstreaks[iAttacker];
if(kills[iAttacker] != get_pcvar_num(KILLSTREAK) && HS[iAttacker] != get_pcvar_num(HSSTREAK))
{
if(weapon == CSW_KNIFE)
{
if(HitGroup != HIT_HEAD)
{
PlayerXP[iAttacker] += (get_pcvar_num(KILL_XP) + get_pcvar_num(KNF_XP));
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(KNF_XP));
++kills[iAttacker];
}
else
{
PlayerXP[iAttacker] += (get_pcvar_num(KILL_XP) + get_pcvar_num(HS_XP) + get_pcvar_num(KNF_XP));
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(HS_XP) + get_pcvar_num(KNF_XP));
++kills[iAttacker];
++HS[iAttacker];
}
}
else
{
if(HitGroup != HIT_HEAD)
{
PlayerXP[iAttacker] += get_pcvar_num(KILL_XP);
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP));
++kills[iAttacker];
}
else
{
PlayerXP[iAttacker] += (get_pcvar_num(KILL_XP) + get_pcvar_num(HS_XP));
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(HS_XP));
++kills[iAttacker];
++HS[iAttacker];
}
}
}
if(kills[iAttacker] == get_pcvar_num(KILLSTREAK) && HS[iAttacker] == get_pcvar_num(HSSTREAK))
{
if(weapon == CSW_KNIFE)
{
if(HitGroup != HIT_HEAD)
{
PlayerXP[iAttacker] += (get_pcvar_num(KILL_XP) + get_pcvar_num(KNF_XP) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS));
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(KNF_XP) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS));
kills[iAttacker] = 0;
HS[iAttacker] = 0;
}
else
{
PlayerXP[iAttacker] += (get_pcvar_num(KILL_XP) + get_pcvar_num(HS_XP) + get_pcvar_num(KNF_XP) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS));
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(HS_XP) + get_pcvar_num(KNF_XP) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS));
kills[iAttacker] = 0;
HS[iAttacker] = 0;
}
}
else
{
if(HitGroup != HIT_HEAD)
{
PlayerXP[iAttacker] += get_pcvar_num(KILL_XP) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS);
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS));
kills[iAttacker] = 0;
HS[iAttacker] = 0;
}
else
{
PlayerXP[iAttacker] += (get_pcvar_num(KILL_XP) + get_pcvar_num(HS_XP) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS));
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(HS_XP) + get_pcvar_num(KILLSTREAKBONUS) + get_pcvar_num(HSSTREAKBONUS));
kills[iAttacker] = 0;
HS[iAttacker] = 0;
}
}
}
if(kills[iAttacker] == get_pcvar_num(KILLSTREAK) && HS[iAttacker] != get_pcvar_num(HSSTREAK))
{
if(weapon == CSW_KNIFE)
{
if(HitGroup != HIT_HEAD)
{
PlayerXP[iAttacker] += (get_pcvar_num(KILL_XP) + get_pcvar_num(KNF_XP) + get_pcvar_num(KILLSTREAKBONUS));
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(KNF_XP) + get_pcvar_num(KILLSTREAKBONUS));
}
else
{
PlayerXP[iAttacker] += (get_pcvar_num(KILL_XP) + get_pcvar_num(HS_XP) + get_pcvar_num(KNF_XP) + get_pcvar_num(KILLSTREAKBONUS));
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(HS_XP) + get_pcvar_num(KNF_XP) + get_pcvar_num(KILLSTREAKBONUS));
++HS[iAttacker];
}
}
else
{
if(HitGroup != HIT_HEAD)
{
PlayerXP[iAttacker] += get_pcvar_num(KILL_XP) + get_pcvar_num(KILLSTREAKBONUS);
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(KILLSTREAKBONUS));
}
else
{
PlayerXP[iAttacker] += (get_pcvar_num(KILL_XP) + get_pcvar_num(HS_XP) + get_pcvar_num(KILLSTREAKBONUS));
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(HS_XP) + get_pcvar_num(KILLSTREAKBONUS));
++HS[iAttacker];
}
}
kills[iAttacker] = 0;
}
if(HS[iAttacker] == get_pcvar_num(HSSTREAK) && kills[iAttacker] != get_pcvar_num(KILLSTREAK))
{
if(weapon == CSW_KNIFE)
{
if(HitGroup != HIT_HEAD)
{
PlayerXP[iAttacker] += (get_pcvar_num(KILL_XP) + get_pcvar_num(KNF_XP) + get_pcvar_num(HSSTREAKBONUS));
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(KNF_XP) + get_pcvar_num(HSSTREAKBONUS));
HS[iAttacker] = 0;
}
else
{
PlayerXP[iAttacker] += (get_pcvar_num(KILL_XP) + get_pcvar_num(HS_XP) + get_pcvar_num(KNF_XP) + get_pcvar_num(HSSTREAKBONUS));
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(HS_XP) + get_pcvar_num(KNF_XP) + get_pcvar_num(HSSTREAKBONUS));
HS[iAttacker] = 0;
}
}
else
{
if(HitGroup != HIT_HEAD)
{
PlayerXP[iAttacker] += get_pcvar_num(KILL_XP) + get_pcvar_num(HSSTREAKBONUS);
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(HSSTREAKBONUS));
HS[iAttacker] = 0;
}
else
{
PlayerXP[iAttacker] += (get_pcvar_num(KILL_XP) + get_pcvar_num(HS_XP) + get_pcvar_num(HSSTREAKBONUS));
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(iAttacker, gHudSyncXp, "+ %d", get_pcvar_num(KILL_XP) + get_pcvar_num(HS_XP) + get_pcvar_num(HSSTREAKBONUS));
HS[iAttacker] = 0;
}
}
}
}
if(get_pcvar_num(SAVE_XP) == 1 && !is_user_bot(iAttacker)) {
SaveData(iAttacker);
}
ShowHud(iAttacker);
CheckLevel(iAttacker);
return HAM_IGNORED;
}

public CheckLevel(id) {
if(PlayerLevel[id] == MaxLevel){
return PLUGIN_HANDLED;
}
else {
if(PlayerXP[id] >= LEVELS[PlayerLevel[id]]){
PlayerLevel[id] += 1;
PlayerPoints[id] += get_pcvar_num(LVLUP_PTS);
client_print(id, print_chat, "[EXP] %L", id, "GRATZ", PlayerLevel[id],PlayerPoints[id]);
if(get_pcvar_num(LVLUP_MSG) == 1) {
new name[32]
get_user_info(id, "name", name, 31)
client_print(0, print_chat, "[EXP] %L", 0, "GRATZ2",name , PlayerLevel[id]);
}
display_PassiveUpgrades(id)
if(get_pcvar_num(MOD_SOUNDS) == 1) {
client_cmd(id,"spk xpmod/xp_levelup")
}
}
}

return PLUGIN_HANDLED
}

public HudShow(iEnt)
{
for(new id = 1; id <= g_iMaxPlayers; id++)
{
ShowHud(id);
}
set_pev(iEnt, pev_nextthink, get_gametime() + 1.0);
}

public ShowHud(id)
{

new amount = PlayerLevel[id];

if(IsPlayer(id) && is_user_connected(id) && PlayerLevel[id] != MaxLevel) {
set_hudmessage(255, 0, 0, 0.02, 0.26, 0, 0.0, 1.0,_ ,_, -1);
ShowSyncHudMsg(id, gHudSync, "%L", id , "LEVEL1", PlayerLevel[id],PlayerXP[id],LEVELS[amount],PlayerPoints[id],Killstreaks[id]);
}
if(IsPlayer(id) && is_user_connected(id) && PlayerLevel[id] == MaxLevel) {
set_hudmessage(255, 0, 0, 0.02, 0.26, 0, 0.0, 1.0,_ ,_, -1);
ShowSyncHudMsg(id, gHudSync, "%L", id , "LEVEL2", PlayerXP[id],PlayerPoints[id],Killstreaks[id]);
}

}

public Planted()
{
for(new i = 1; i <= g_iMaxPlayers; ++i)
{
if(!IsPlayer(i))
return PLUGIN_HANDLED;

if(is_user_alive(i) && get_user_team(i) == 1)
{
isalive[i] = true;
PlayerXP[i] += get_pcvar_num(SET_C4_XP)
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(i, gHudSyncXp, "+ %d", get_pcvar_num(SET_C4_XP));
}
BombPlanted = true;
CheckLevel(i)
}
return PLUGIN_CONTINUE;
}

public Defused()
{
for(new i = 1; i <= g_iMaxPlayers; ++i)
{
if(!IsPlayer(i))
return PLUGIN_HANDLED;

if(is_user_alive(i) && get_user_team(i) == 2)
{
isalive[i] = false;
PlayerXP[i] += get_pcvar_num(DEFUSE_XP)
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(i, gHudSyncXp, "+ %d", get_pcvar_num(DEFUSE_XP));
}
if(BombPlanted) {
BombPlanted = false;
}
CheckLevel(i);
}
return PLUGIN_CONTINUE;
}

public Bombed()
{
for(new i = 1; i <= g_iMaxPlayers; ++i)
{
if(!IsPlayer(i))
return PLUGIN_HANDLED;

if(isalive[i] && get_user_team(i) == 1)
{
isalive[i] = false;
PlayerXP[i] += get_pcvar_num(EXPLOSION_XP)
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(i, gHudSyncXp, "+ %d", get_pcvar_num(EXPLOSION_XP));
}
if(BombPlanted) {
BombPlanted = false;
}
CheckLevel(i);
}
return PLUGIN_CONTINUE;
}

public TargetSaved()
{
for(new i = 1; i <= g_iMaxPlayers; ++i)
{
if(!IsPlayer(i))
return PLUGIN_HANDLED;

if(is_user_alive(i) && get_user_team(i) == 2)
{
PlayerXP[i] += get_pcvar_num(CT_XP)
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 0.5, 0.5);
ShowSyncHudMsg(i, gHudSyncXp, "+ %d", get_pcvar_num(CT_XP));
}
if(BombPlanted) {
BombPlanted = false;
}
CheckLevel(i);
}
return PLUGIN_CONTINUE;
}

public fwHamPlayerSpawnPost(id) {

if (is_user_alive(id))
{
if(g_PlayerReseted[id]) {
reset(id);
}
if(g_HealthLevel[id] == 0) {
set_user_health(id, 100)
}

if(g_ArmorLevel[id] == 0) {
cs_set_user_armor(id, 100, CS_ARMOR_KEVLAR)
}

if(g_SpeedLevel[id] == 0) {
set_user_maxspeed(id, 320.0)
}

if(g_GravityLevel[id] == 0) {
set_user_gravity(id, 1.00)
}

if(g_GravityLevel[id] > 0)
{
new Float: fGravity = g_GravityLevel[id] * Gravity_PerLevel
if(get_user_gravity(id) != fGravity) {
set_gravity(id, fGravity)
}
}

if(g_HealthLevel[id] > 0) {
set_user_health(id, 100)
add_health(id, g_HealthLevel[id] * Health_PerLevel)
}

if(g_ArmorLevel[id] > 0) {
cs_set_user_armor(id, 100, CS_ARMOR_KEVLAR)
add_armor(id, g_ArmorLevel[id] * Armor_PerLevel)
}

if(g_SpeedLevel[id] > 0) {
new Float:fSpeed = 320.0 + (g_SpeedLevel[id] * Speed_PerLevel)
set_user_maxspeed(id, fSpeed)
}

if(g_PlayerReg[id]) {

}
else {
set_task(1.0, "regen", id);
}

}
}

public Event_TeamInfo_All()
{
new id = read_data( TeamInfo_PlayerID )
if( !is_user_alive(id) && is_user_connected(id) )
{
new iTeam = get_pdata_int(id, m_iTeam, XO_PLAYER)
if( iTeam != get_user_team(id) )
{
emessage_begin(MSG_BROADCAST, gmsgScoreInfo)
ewrite_byte( id )
ewrite_short( get_user_frags(id) )
ewrite_short( get_pdata_int(id, m_iDeaths, XO_PLAYER) )
ewrite_short( 0 )
ewrite_short( iTeam )
emessage_end()
}
}
}

public regen(id){
new maxhp = 100 + g_HealthLevel[id] * Health_PerLevel
new regamount = g_RegenerationLevel[id] * Regeneration_PerLevel
new health = get_user_health(id)

if(is_user_alive(id) && !is_user_bot(id)) {
if(get_user_health(id) < maxhp) {
set_user_health(id, health+regamount)
}
if(get_user_health(id) > maxhp) {
set_user_health(id, maxhp)
}
}
g_PlayerReg[id] = true;
set_task(1.0, "regen", id);
}

public plugin_end()
{
nvault_close(g_vault);
}




Отредактировал: adin, - 1.2.2015, 13:55
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 1.2.2015, 14:01
Сообщение #9
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405


Цитата
Суть, как мне кажется, в том, что плагин давно не обновляли (порядка 4 лет почти), а вывод меню на amx-e перетерпел же изменения вроде бы как. И кажется, что проблема в старом формате генерации меню.

Ничего не изменилось.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adin
сообщение 1.2.2015, 14:08
Сообщение #10
Стаж: 14 лет

Сообщений: 87
Благодарностей: 12
Полезность: 107

voed,

Тогда почему происходит то, что происходит?

При использовании оригинального плагина - все работает хорошо, но я просто хочу облегчить его, подогнав под свои требования, избавившись от того, что не буду использовать.

Может еще какие - либо данные Вам предоставить?

Я сегодня 3 часа времени посвятил тому, чтобы построчно перебрать плагин, вырезая ненужные вещи.

Дело принципа, нужно разобраться.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adin
сообщение 1.2.2015, 14:19
Сообщение #11
Стаж: 14 лет

Сообщений: 87
Благодарностей: 12
Полезность: 107

Кстати да, заметил странную вещь:

как только избавлюсь от конструкции if defined USE_NVAULT - сразу же начинаются проблемы.

Хотя вырезал полностью всё, оставляя только nvault glare.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 1.2.2015, 14:25
Сообщение #12
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

А зачем ее вырезать вообще? Как она вам мешает?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adin
сообщение 1.2.2015, 14:39
Сообщение #13
Стаж: 14 лет

Сообщений: 87
Благодарностей: 12
Полезность: 107

Цитата(voed @ 1.2.2015, 14:25) *
А зачем ее вырезать вообще? Как она вам мешает?



Ясно. Спасибо за помощь.

Сам разберусь как то.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adin
сообщение 4.2.2015, 8:33
Сообщение #14
Стаж: 14 лет

Сообщений: 87
Благодарностей: 12
Полезность: 107

Решено.

Проблема была в lang - файле.

/close
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: