Hello, please help, as I rummage in bad scripting.
The essence of the script is that the murder of a player is given a rank.
I need to XP_VALUE was only for admins (How many frags will give the murder)
plugin
PHP Code:
#include <amxmodx> #include <amxmisc> #include <colorchat> #include <fun> #include <cstrike> // #define PLUGIN "Army Ranks" #define VERSION "1.2" #define AUTHOR "Arctic" #define I_ID 7777 #pragma tabsize 0 //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////// НАСТРОЙКА МОДА //////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //=========================== Кол-во опыта,даваемого игроку за килл : ============================== #define XP_VALUE 5 // по умолчанию 1 опыт за 1 килл,рекомендую на время праздников увеличивать его :) //============================= Выберите тип сохранения данных : =================================== // чтобы сохранять с помощью nvault : //#define USE_SQL // чтобы сохранять с помощью mysql : #define USE_SQL //#define USE_SQL #if defined USE_SQL #include <sqlx> new Host[] = "" new User[] = "" new Pass[] = "" new Db[] = "" new Handle:g_SqlTuple new g_Error[512] #else #include <nvault> new gVault; #endif //================================================================================================== //============================= Действия с чатом =================================================== // если ваш сервер использует Colored Translit : #define USE_COLORED_TRANSLIT // иначе (если нет) : //#define USE_COLORED_TRANSLIT //#define USE_COLORED_TRANSLIT //#if !defined USE_COLORED_TRANSLIT new Msg[512]; //#endif //================================================================================================== //==================== Запрет бонусного меню-оружия на некоторых картах ============================ // если вы используете запрет бонусного меню : #define USE_RSTR_BONUS // иначе (если нет) : //#define USE_RSTR_BONUS //#define USE_RSTR_BONUS //================================================================================================== // new g_sync_creat_statustext; new PlayerXP[33],PlayerLevel[33],needXP[64],g_MsgHud,MaxPlayers,levelUp[33]; new players_menu,lvl_menu,cls_menu, players[32], num, i,accessmenu, iName[64], callback,pl_glvl; new bool:restr_blocked; new g_PlBonus,g_plNewLvl; //таблица званий (значения находнятся в lang-файле) new const CLASSES[][] = { "I_0", // (пусто) "I_1", // ряд "I_2", // ефр "I_3", // млсерж "I_4", // серж "I_5", // стсерж "I_6", // старш "I_7", // прапор "I_8", // мллейт "I_9", // лейт "I_10", // стлейт "I_11", // кап "I_12", // май "I_13", // подпол "I_14", // полк "I_15", // гнмай "I_16", // гнлейт "I_17", // гнполк "I_18", // гнарм "I_19" // вгк }; // таблица уровней new const LEVELS[] = { 0, // ряд 100, // ефр 300, // млсерж 400, // серж 700, // стсерж 1000, // старш 1500, // прапор 1700, // мллейт 2000, // лейт 2300, // стлейт 2700, // кап 3000, // май 4000, // подпол 5000, // полк 7000, // гнмай 10000, // гнлейт 12000, // гнполк 17000, // гнарм 30000 // вгк }; // таблица бонусов,0 = не давать,1 = давать.При условии того,что значени квара g_PlBonus = 1. new const FLASH_G[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; new const SMOKE_G[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; new const HE_G[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; new const NIGHT_V[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; new const ARMOR_B[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; new const DEFUSE_N[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; // 1.2 бонус хп за каждый лвл,для csdm сервера :) new const HEALTH_BONUS[] = { 0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,3,4 }; #if defined USE_RSTR_BONUS // 1.2 запрет вызова меню оружия на картах,редактируйте его под себя // ВАЖНО! чтобы последний элемент массива был БЕЗ запятой new const restrict_bonus[][] = { "35hp", "35hp_2", "35hp_gx", "35hp_gladiators_day", "most_wanted", "35hp_xmas", "35hp_3", "aim_afl_deagle", "awp_8bit", "awp_india", "awp_india_csp", "awp_pit", "ka_100x100", "ka_wintershank" // последний элемент массива БЕЗ запятой }; #endif // public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_cvar("army_ranks",VERSION, FCVAR_SERVER | FCVAR_SPONLY); set_cvar_string("army_ranks",VERSION); register_logevent( "EventRoundStart", 2, "1=Round_Start" ); set_task(1.0, "Info", I_ID, "", 0, "b") g_MsgHud = CreateHudSyncObj(); MaxPlayers = get_maxplayers(); register_dictionary("army.txt" ); register_event( "DeathMsg","EventDeath", "a"); g_PlBonus = register_cvar( "ar_givebonus", "0" ); // давать бонусы игроку взависимости от звания (гранаты и т.п.) g_plNewLvl = register_cvar( "ar_givebonusnl", "0" ); // давать бонусы игроку при получении нового лвл (оружие) // v1.2 проверка на запр карты #if defined USE_RSTR_BONUS if(get_pcvar_num(g_plNewLvl)) { new szMapName[64]; get_mapname(szMapName,63); for(new a = 0; a < sizeof restrict_bonus; a++) { if(equal(szMapName, restrict_bonus[a])) { restr_blocked = true; server_print("weapon menu is blocked on this map [%s]",restrict_bonus[a]); break; } else { restr_blocked = false; }
// установить фраги register_clcmd("amx_set_xp", "Set_Xp_Menu", ADMIN_RCON, "Set frags player") register_clcmd("amx_setxp", "Set_Xp", ADMIN_RCON, "Set frags player") // дать фраги register_clcmd("amx_give_xp", "Give_Xp_Menu", ADMIN_RCON, "Give frags player") register_clcmd("amx_givexp", "Give_Xp", ADMIN_RCON, "Give frags player") // установить звание register_clcmd("amx_set_lvl", "Set_Lvl_Menu", ADMIN_RCON, "Set lvl player") // статистика игроков онлайн register_clcmd("say /astats", "ShowInfMotd") register_clcmd("say_team /astats", "ShowInfMotd")
// система сохранения #if defined USE_SQL set_task(1.0,"MySql_Init"); #else gVault = nvault_open("plData"); #endif } public plugin_end() { #if defined USE_SQL SQL_FreeHandle(g_SqlTuple); #else nvault_close(gVault); #endif } public client_putinserver(id) { load_client_data(id); }
public client_disconnect(id) { save_client_data(id); }
public checkLvl(id) { if(PlayerLevel[id] <= 0) { PlayerLevel[id] = 1; } while(PlayerXP[id] >= LEVELS[PlayerLevel[id]]) { PlayerLevel[id]++; levelUp[id] = 1; new szName[ 32 ]; get_user_name( id, szName, 31 ); static buffer[192], len; len = format(buffer, charsmax(buffer), "^4[^3%L^4]^1 ",LANG_PLAYER,"ARMY"); len += format(buffer[len], charsmax(buffer) - len, "%L ",LANG_PLAYER,"PLAYER"); len += format(buffer[len], charsmax(buffer) - len, "^4%s^1 ",szName); len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,"NEW_LEVEL"); len += format(buffer[len], charsmax(buffer) - len, " ^4%L^1.",LANG_PLAYER,CLASSES[PlayerLevel[id]]); len += format(buffer[len], charsmax(buffer) - len, "%L",LANG_PLAYER,"CONTR"); ColorChat(0,NORMAL,buffer); //break; } } // ======================================== добавляем фраги ======================================== public EventDeath(id) {
new iVictim = read_data( 2 ); new iTeam = get_user_team(iVictim); new iKiller = read_data( 1 ); if(iKiller != iVictim && get_user_team(iKiller) != iTeam && is_user_connected(iKiller) && PlayerLevel[iKiller] <= 18)