Доделать army_ranks, Доделать |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
+
) или ссылку на плагин который вызывает у вас вопросы.
|
|
Доделать army_ranks, Доделать |
s-nesterov
|
10.7.2012, 12:08
Сообщение
|
![]() |
Приветствую всех
Опять 25)) Я опять же про плагин army_ranks Что нужно 1.Нормальное сохранение званий 2.Убрать инфу при наведении на игрока 3.Чтобы игрок не получал грены на картах как awp_india , 35_xp 4.Цветной чат там уже есть,добавить русский язык с /rus /eng (colored ставить не хочу) 5.Не обязательно ну желательно настройки вынести в отдельный CFG имеется веду настройки типо чтобы рядового получить 10 фрагов сержанта 50 ну и т.д Ну а остальное все оставить Ну и конечно сколько это все будет стоить? Выкладываю исходник свой измененный. Там я просто изменил количество фрагов и еще AndrewZ убрал баг .За что ему огромное спасибо.Баг,любой желающий мог прописать себе звание. Тема Исходник #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 1 // по умолчанию 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,g_AdminGMsg; //таблица званий (значения находнятся в 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, // ряд 10, // ефр 20, // млсерж 30, // серж 50, // стсерж 70, // старш 100, // прапор 300, // мллейт 600, // лейт 900, // стлейт 1200, // кап 1500, // май 2000, // подпол 2500, // полк 3000, // гнмай 3500, // гнлейт 4000, // гнполк 5000, // гнарм 6000 // вгк }; // таблица бонусов,0 = не давать,1 = давать.При условии того,что значени квара g_PlBonus = 1. new const FLASH_G[] = { 0,0,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2 }; new const SMOKE_G[] = { 0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1 }; new const HE_G[] = { 0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1 }; new const NIGHT_V[] = { 0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1 }; new const ARMOR_B[] = { 0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 }; new const DEFUSE_N[] = { 0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 }; // 1.2 бонус хп за каждый лвл,для csdm сервера :) new const HEALTH_BONUS[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; #if defined USE_RSTR_BONUS // 1.2 запрет вызова меню оружия на картах,редактируйте его под себя // ВАЖНО! чтобы последний элемент массива был БЕЗ запятой new const restrict_bonus[][] = { "35hp", "35hp_2", "35hp_gx", "35hp_gladiators_day", "most_wanted", "35hp_inductee", "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", "1" ); // давать бонусы игроку взависимости от звания (гранаты и т.п.) g_plNewLvl = register_cvar( "ar_givebonusnl", "1" ); // давать бонусы игроку при получении нового лвл (оружие) g_AdminGMsg = register_cvar( "ar_admin_cchat", "1" ); // 1 = сообщ.админа зеленое,0 = желтое, 2 = цвета команды. // 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; } } } #endif TeamInfo = get_user_msgid("TeamInfo"); SayText = get_user_msgid("SayText"); register_event("StatusValue", "show_ranks", "be", "1=2", "2!0") g_sync_creat_statustext = CreateHudSyncObj() register_clcmd("amx_armenu", "main_admar_menu", ADMIN_KICK, "Main army ranks admin-menu") // установить фраги register_clcmd("amx_set_xp", "Set_Xp_Menu", ADMIN_KICK, "Set frags player") register_clcmd("amx_setxp", "Set_Xp", ADMIN_KICK, "Set frags player") // дать фраги register_clcmd("amx_give_xp", "Give_Xp_Menu", ADMIN_KICK, "Give frags player") register_clcmd("amx_givexp", "Give_Xp", ADMIN_KICK, "Give frags player") // установить звание register_clcmd("amx_set_lvl", "Set_Lvl_Menu", ADMIN_KICK, "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 // использование чата #if !defined USE_COLORED_TRANSLIT register_clcmd("say", "hookSay") register_clcmd("say_team", "hookSayTeam") #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); } #if !defined USE_COLORED_TRANSLIT public hookSay(id) { if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id)) { return PLUGIN_CONTINUE; } new message[192],Len; read_args(message, 191); remove_quotes(message); new szName[32]; get_user_name(id,szName,31); if(is_user_admin(id)) { if(get_pcvar_num(g_AdminGMsg) == 1) // green color { Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]); Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName); Len += format(Msg[Len], charsmax(Msg) - 1, "%s",message); ColorChat(0,NORMAL,Msg) } else if(get_pcvar_num(g_AdminGMsg) == 2) // team color { Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]); Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName); Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s",message); ColorChat(0,NORMAL,Msg) } else { // yellow color Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]); Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName); Len += format(Msg[Len], charsmax(Msg) - 1, "^1%s",message); ColorChat(0,NORMAL,Msg) } } else { Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]); Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName); Len += format(Msg[Len], charsmax(Msg) - 1, "^1%s",message); ColorChat(0,NORMAL,Msg) } return PLUGIN_HANDLED_MAIN } public hookSayTeam(id) { if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id)) { return PLUGIN_CONTINUE; } new message[192],Len; read_args(message, 191); remove_quotes(message); new szName[32]; get_user_name(id,szName,31); if(is_user_admin(id)) { if(get_pcvar_num(g_AdminGMsg) == 1) // green color { Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]); Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName); Len += format(Msg[Len], charsmax(Msg) - 1, "%s",message); SendTeamMessage(Msg,get_user_team(id)); } else if(get_pcvar_num(g_AdminGMsg) == 2) // team color { Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]); Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName); Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s",message); SendTeamMessage(Msg,get_user_team(id)); } else { // yellow color Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]); Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName); Len += format(Msg[Len], charsmax(Msg) - 1, "^1%s",message); SendTeamMessage(Msg,get_user_team(id)); } } else { Len = format(Msg[Len], charsmax(Msg) - 1, "^4[^3%L^4] ",LANG_PLAYER,CLASSES[PlayerLevel[id]]); Len += format(Msg[Len], charsmax(Msg) - 1, "^3%s^4 : ",szName); Len += format(Msg[Len], charsmax(Msg) - 1, "^1%s",message); SendTeamMessage(Msg,get_user_team(id)); } return PLUGIN_HANDLED_MAIN } stock SendTeamMessage(Message[],playerTeam) { for (new player = 0; player <= MaxPlayers; player++) { if (!is_user_connected(player)) { continue } if(get_user_team(player) == playerTeam) { ColorChat(player,NORMAL,Message); } } } #endif 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() { 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) { PlayerXP[iKiller] += XP_VALUE; save_client_data(iKiller); checkLvl(iKiller); } return PLUGIN_CONTINUE; } // ======================================== Получение бонуса ======================================= public EventRoundStart() { new flash[33],he[33],smoke[33],arm[33],nv[33],def[33],hlth[33]; for(new id = 1; id <= MaxPlayers; id++) { if(is_user_alive(id) && is_user_connected(id) && get_pcvar_num(g_PlBonus)) { flash[id] = FLASH_G[PlayerLevel[id]]; he[id] = HE_G[PlayerLevel[id]]; smoke[id] = SMOKE_G[PlayerLevel[id]]; arm[id] = ARMOR_B[PlayerLevel[id]]; nv[id] = NIGHT_V[PlayerLevel[id]]; def[id] = DEFUSE_N[PlayerLevel[id]]; hlth[id] = HEALTH_BONUS[PlayerLevel[id]];// 1.2 give_user_bonus(id,flash[id],he[id],smoke[id],nv[id],arm[id],def[id],hlth[id]); if(levelUp[id] == 1 && get_pcvar_num(g_plNewLvl) && !restr_blocked) // if g_plNewLvl == 1 { GetWeapon(id); levelUp[id] = 0; } } } return PLUGIN_CONTINUE; } // ======================================== Получение бонуса за lvl ================================ public GetWeapon(id) { new szText[700 char]; formatex( szText, charsmax( szText ), "%L", id, "GW_TITLE"); new menu = menu_create( szText, "gw_menu" ); //================================================================================ ========== formatex( szText, charsmax( szText ), "AWP"); menu_additem( menu, szText, "1", 0 ); // formatex( szText, charsmax( szText ), "AK-47"); menu_additem( menu, szText, "2", 0 ); // formatex( szText, charsmax( szText ), "M16"); menu_additem( menu, szText, "3", 0 ); // formatex( szText, charsmax( szText ), "Famas"); menu_additem( menu, szText, "4", 0 ); //================================================================================ ========== menu_setprop( menu, MPROP_EXIT, MEXIT_ALL ); menu_display( id, menu,0); return PLUGIN_CONTINUE; } public gw_menu(id,menu,item) { if( item == MENU_EXIT ) { return PLUGIN_HANDLED; } new data[ 6 ], iName[ 64 ], access, callback; menu_item_getinfo( menu, item, access, data, charsmax( data ), iName, charsmax( iName ), callback ); new key = str_to_num( data ); switch( key ) { case 1: { give_item(id,"weapon_awp"); cs_set_user_bpammo( id, CSW_AWP, 100); } case 2: { give_item(id,"weapon_ak47"); cs_set_user_bpammo( id, CSW_AK47, 200); } case 3: { give_item(id,"weapon_m4a1"); cs_set_user_bpammo( id, CSW_M4A1, 200); } case 4: { give_item(id,"weapon_famas"); cs_set_user_bpammo( id, CSW_FAMAS, 200); } } return PLUGIN_HANDLED; } stock give_user_bonus(id,f_g,h_g,s_g,n_v,a_b,d_k,health) { if(f_g) { give_item(id,"weapon_flashbang"); } if(h_g) { give_item(id,"weapon_hegrenade"); } if(s_g) { give_item(id,"weapon_smokegrenade"); } cs_set_user_nvg(id,n_v) if(a_b) { give_item(id,"item_kevlar"); } if(d_k) { give_item(id,"item_assaultsuit"); } set_user_health(id,get_user_health(id)+health); } // ======================================== Информер =============================================== public Info() { for(new id = 1; id <= MaxPlayers; id++) { if(!is_user_bot(id) && is_user_connected(id)) { if(PlayerLevel[id] <= 18) { needXP[id] = LEVELS[PlayerLevel[id]] - PlayerXP[id]; set_hudmessage(18, 230, 0, 0.01, 0.89, 0, 1.0, 1.0, _, _, -1) static buffer[192], len; len = format(buffer, charsmax(buffer), "%L",LANG_PLAYER,"ZVANIE"); len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,CLASSES[PlayerLevel[id]]); len += format(buffer[len], charsmax(buffer) - len, "^n%L %d",LANG_PLAYER,"PL_XP",PlayerXP[id]); len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"NEXT_LVL"); len += format(buffer[len], charsmax(buffer) - len, " %d ",needXP[id]); len += format(buffer[len], charsmax(buffer) - len, "%L",LANG_PLAYER,"FRAGS"); ShowSyncHudMsg(id, g_MsgHud, "%s", buffer); } else { set_hudmessage(100, 100, 100, 0.01, 0.13, 0, 1.0, 1.0, _, _, -1) static buffer[192], len; len = format(buffer, charsmax(buffer), "%L",LANG_PLAYER,"ZVANIE"); len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,CLASSES[PlayerLevel[id]]); len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"PL_MAX"); ShowSyncHudMsg(id, g_MsgHud, "%s", buffer); } } } return PLUGIN_CONTINUE } stock save_client_data(id) { new szName[33]; get_user_name(id, szName, charsmax(szName)) #if defined USE_SQL new szTemp[512]; format(szTemp,charsmax(szTemp),"UPDATE `pl_data` SET `pl_xp` = '%i',`pl_lvl` = '%i' WHERE `pl_data`.`pl_name` = '%s';",PlayerXP[id],PlayerLevel[id], szName) SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp) #else new vaultkey[64],vaultdata[256] format(vaultkey,63,"%s-data",szName) format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id]); nvault_set(gVault,vaultkey,vaultdata) #endif } stock load_client_data(id) { new szName[33]; get_user_name(id, szName, charsmax(szName)) #if defined USE_SQL new Data[1],szTemp[512]; Data[0] = id; format(szTemp,charsmax(szTemp),"SELECT * FROM `pl_data` WHERE (`pl_data`.`pl_name` = '%s')", szName) SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp,Data,1) #else new vaultkey[64],vaultdata[256] format(vaultkey,63,"%s-data",szName) format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id]); nvault_get(gVault,vaultkey,vaultdata,255) replace_all(vaultdata, 255, "#", " ") new ldr[33],lvl[33]; parse(vaultdata, ldr, 32,lvl,32); PlayerXP[id] = str_to_num(ldr); PlayerLevel[id] = str_to_num(lvl); #endif } #if defined USE_SQL public MySql_Init() { g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db); new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error)); if(SqlConnection == Empty_Handle) set_fail_state(g_Error); new Handle:Queries; Queries = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS pl_data (pl_name varchar(32),pl_xp INT(11),pl_lvl INT(11))"); if(!SQL_Execute(Queries)) { SQL_QueryError(Queries,g_Error,charsmax(g_Error)); set_fail_state(g_Error); } SQL_FreeHandle(Queries); SQL_FreeHandle(SqlConnection) ; } public register_client(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { if(FailState == TQUERY_CONNECT_FAILED) { log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error) } else if(FailState == TQUERY_QUERY_FAILED) { log_amx("Load Query failed. [%d] %s", Errcode, Error) } new id = Data[0] if(SQL_NumResults(Query) < 1) { new szName[33] get_user_name(id, szName, charsmax(szName)) if (equal(szName,"ID_PENDING")) return PLUGIN_HANDLED new szTemp[512] format(szTemp,charsmax(szTemp),"INSERT INTO `pl_data` ( `pl_name` , `pl_xp`, `pl_lvl`)VALUES ('%s','0','1');",szName) SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp) } else { PlayerXP[id] = SQL_ReadResult(Query, 1) PlayerLevel[id] = SQL_ReadResult(Query, 2) } return PLUGIN_HANDLED } public IgnoreHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { SQL_FreeHandle(Query) return PLUGIN_HANDLED } #endif public plugin_natives() { register_native("get_user_exp", "native_get_user_exp", 1); register_native("get_user_lvl", "native_get_user_lvl", 1); } public native_get_user_exp(id) { return PlayerXP[id]; } public native_get_user_lvl(id) { return PlayerLevel[id]; } //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////// ДОБАВЛЕНО В ВЕРСИИ 1.2 //////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //============= установить фраги (хр) ============================================================= public Set_Xp_Menu( id, level, cid ) { if ( !cmd_access( id, level, cid, 1 ) ) return PLUGIN_HANDLED new szText[700 char],tempname[32], info[10]; get_players(players, num, "h") formatex( szText, charsmax( szText ), "%L", id, "CHOOSE_PLAYER"); players_menu = menu_create( szText, "setxp_handler" ); for(i = 0; i < num; i++) { get_user_name(players[i], tempname, 31) num_to_str(players[i], info, 9) menu_additem(players_menu, tempname, info, 0) } menu_setprop(players_menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, players_menu, 0); return PLUGIN_CONTINUE; } public setxp_handler(id, players_menu, item) { if(item == MENU_EXIT) { menu_destroy(players_menu) return PLUGIN_HANDLED } new data[6] menu_item_getinfo(players_menu, item, accessmenu, data, charsmax(data), iName, charsmax(iName), callback) new player = str_to_num(data) client_cmd(id, "messagemode ^"amx_setxp %i^"", player) return PLUGIN_CONTINUE } public Set_Xp( id, level, cid ) { if ( !cmd_access( id, level, cid, 2 ) ) return PLUGIN_HANDLED new param[10],names[2][32]; read_argv(2, param, charsmax(param)) for (new x; x < strlen(param); x++) { if(!isdigit(param[x])) { ColorChat(id, NORMAL,"^3[Army Ranks]^1 %L",LANG_PLAYER,"PARAM_VALUE"); return PLUGIN_HANDLED } } new amount = str_to_num(param); if (amount <= 0) { ColorChat(id, NORMAL, "^3[Army Ranks]^1 %L | ^3%d",LANG_PLAYER,"PARAM_MIN",amount); return PLUGIN_HANDLED } if (amount > 10000) { ColorChat(id, NORMAL, "^3[Army Ranks]^1 %L | ^3%d",LANG_PLAYER,"PARAM_MAX",amount); return PLUGIN_HANDLED } read_argv(1, param, charsmax(param)) new player = str_to_num(param) PlayerXP[player] = amount; setlvl_user(player); setlvl_user(player); save_client_data(player); get_user_name(id, names[0], 31) get_user_name(player, names[1], 31) ColorChat(0, NORMAL, "^3[Army Ranks]^1 %L",LANG_PLAYER,"SET_XP", names[0], names[1],amount); return PLUGIN_HANDLED } //============= дать фраги (хр) =================================================================== public Give_Xp_Menu( id, level, cid ) { if ( !cmd_access( id, level, cid, 1 ) ) return PLUGIN_HANDLED new szText[700 char],tempname[32], info[10]; get_players(players, num, "h") formatex( szText, charsmax( szText ), "%L", id, "CHOOSE_PLAYER"); players_menu = menu_create( szText, "givexp_handler" ); for(i = 0; i < num; i++) { get_user_name(players[i], tempname, 31) num_to_str(players[i], info, 9) menu_additem(players_menu, tempname, info, 0) } menu_setprop(players_menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, players_menu, 0); return PLUGIN_CONTINUE; } public givexp_handler(id, players_menu, item) { if(item == MENU_EXIT) { menu_destroy(players_menu) return PLUGIN_HANDLED } new data[6] menu_item_getinfo(players_menu, item, accessmenu, data, charsmax(data), iName, charsmax(iName), callback) new player = str_to_num(data) client_cmd(id, "messagemode ^"amx_givexp %i^"", player) return PLUGIN_CONTINUE } public Give_Xp( id, level, cid ) { if ( !cmd_access( id, level, cid, 2 ) ) return PLUGIN_HANDLED new param[10],names[2][32]; read_argv(2, param, charsmax(param)) for (new x; x < strlen(param); x++) { if(!isdigit(param[x])) { ColorChat(id, NORMAL,"^3[Army Ranks]^1 %L",LANG_PLAYER,"PARAM_VALUE"); return PLUGIN_HANDLED } } new amount = str_to_num(param); if (amount <= 0) { ColorChat(id, NORMAL, "^3[Army Ranks]^1 %L | ^3%d",LANG_PLAYER,"PARAM_MIN",amount); return PLUGIN_HANDLED } if (amount > 10000) { ColorChat(id, NORMAL, "^3[Army Ranks]^1 %L | ^3%d",LANG_PLAYER,"PARAM_MAX",amount); return PLUGIN_HANDLED } read_argv(1, param, charsmax(param)) new player = str_to_num(param) PlayerXP[player] += amount; setlvl_user(player); save_client_data(player); get_user_name(id, names[0], 31) get_user_name(player, names[1], 31) ColorChat(0, NORMAL, "^3[Army Ranks]^1 %L",LANG_PLAYER,"GIVE_XP", names[0],amount,names[1]); return PLUGIN_HANDLED } stock setlvl_user(id) { if(PlayerLevel[id] <= 18) { while(PlayerXP[id] >= LEVELS[PlayerLevel[id]]) { PlayerLevel[id]++; } checkLvl(id); } } //============= дать звание (лвл) ================================================================= public Set_Lvl_Menu( id, level, cid ) { if ( !cmd_access( id, level, cid, 1 ) ) return PLUGIN_HANDLED if(pl_glvl != 0) { ColorChat(id,NORMAL,"^3[Army Ranks]^1 %L",LANG_PLAYER,"ALREADY_USE") return PLUGIN_HANDLED } new szText[700 char],tempname[32], info[10]; get_players(players, num, "h") formatex( szText, charsmax( szText ), "%L", id, "CHOOSE_PLAYER"); lvl_menu = menu_create( szText, "setlvl_handler" ); for(i = 0; i < num; i++) { get_user_name(players[i], tempname, 31) num_to_str(players[i], info, 9) menu_additem(lvl_menu, tempname, info, 0) } menu_setprop(lvl_menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, lvl_menu, 0); return PLUGIN_CONTINUE; } public setlvl_handler(id, lvl_menu, item) { if(item == MENU_EXIT) { menu_destroy(lvl_menu); return PLUGIN_HANDLED } new data[10]; menu_item_getinfo(lvl_menu, item, accessmenu, data, charsmax(data), iName, charsmax(iName), callback) pl_glvl= str_to_num(data); sub_slm(id); menu_destroy(lvl_menu); return PLUGIN_CONTINUE } public sub_slm(id) { new szText[700 char],cid[3]; get_players(players, num, "h") formatex( szText, charsmax( szText ), "%L", id, "CHOOSE_RANK"); cls_menu = menu_create( szText, "sub_slm_handler" ); for(i = 1; i < sizeof CLASSES; i++) { formatex(szText, charsmax( szText ),"%L",id,CLASSES[i]); formatex(cid, charsmax( cid ),"%d",i); menu_additem(cls_menu,szText, cid); //client_print(id,print_chat,"%L = %d",LANG_PLAYER,CLASSES[i],i); } menu_setprop(cls_menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, cls_menu, 0); return PLUGIN_CONTINUE; } public sub_slm_handler(id, cls_menu, item) { if(item == MENU_EXIT) { menu_destroy(cls_menu); return PLUGIN_HANDLED } if(is_user_bot(pl_glvl) || !is_user_connected(pl_glvl)) { menu_destroy(cls_menu); ColorChat(id, NORMAL, "^3[Army Ranks]^1 %L | ^3%d",LANG_PLAYER,"NO_ID",pl_glvl); pl_glvl = 0; return PLUGIN_HANDLED } new data2[10]; menu_item_getinfo(cls_menu, item, accessmenu, data2, charsmax(data2), iName, charsmax(iName), callback) new rank_num = str_to_num(data2); PlayerLevel[pl_glvl] = rank_num - 1 PlayerXP[pl_glvl] = LEVELS[PlayerLevel[pl_glvl]] setlvl_user(pl_glvl); static buffer[192], len, names[2][32]; get_user_name(id, names[0], 31) get_user_name(pl_glvl, names[1], 31) len = format(buffer, charsmax(buffer), "^3[Army Ranks]^1 "); len += format(buffer[len], charsmax(buffer) - len, "%L ",LANG_PLAYER,"SET_LVL1",names[0]); len += format(buffer[len], charsmax(buffer) - len, "^4%L^1",LANG_PLAYER,CLASSES[PlayerLevel[pl_glvl]]); len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,"SET_LVL2",names[1]); ColorChat(0,NORMAL,buffer); menu_destroy(cls_menu); pl_glvl = 0; return PLUGIN_CONTINUE } //============= данные игрока,при наведении прицела на него ======================================= public show_ranks(id) { if(!is_user_bot(id) && is_user_connected(id)) { static name[32] new pid = read_data(2) new red = 0, blue = 0; if (cs_get_user_team(pid) == CS_TEAM_T) red = 255 else if(cs_get_user_team(pid) == CS_TEAM_CT) blue = 255 get_user_name(pid, name, charsmax(name)) set_hudmessage(red, 50, blue, -1.0, 0.60, 1, 0.01, 0.6, 0.01, 0.01, 8) static buffer[192], len; len = format(buffer, charsmax(buffer), "^n^n%L :",LANG_PLAYER,"A_NAME"); len += format(buffer[len], charsmax(buffer) - len, " %s^n",name); len += format(buffer[len], charsmax(buffer) - len, "%L :",LANG_PLAYER,"ZVANIE"); len += format(buffer[len], charsmax(buffer) - len, " %L^n",LANG_PLAYER,CLASSES[PlayerLevel[pid]]); len += format(buffer[len], charsmax(buffer) - len, "%L %d",LANG_PLAYER,"PL_XP",PlayerXP[pid]); ShowSyncHudMsg(id, g_sync_creat_statustext, "%s", buffer); } return PLUGIN_CONTINUE } //============= Звания игроков онлайн ============================================================= public ShowInfMotd(id) { static buffer[4096], len; len = format(buffer, charsmax(buffer), "<html><head><meta http-equiv=Content-Type content=text/html; charset=utf-8><style>") len += format(buffer[len], charsmax(buffer) - len, "body{ background:#F2F2F2; font-family:Arial; margin:0; padding:0;}") len += format(buffer[len], charsmax(buffer) - len, "table{ width:800; height;auto; color:#153B7C; background:#F4F4F4; font-size:11px; border:1px solid #BFBDBD }") len += format(buffer[len], charsmax(buffer) - len, ".th{ width:200; height:auto; background:#175D8B; color:#FFF; padding:7; border:1px solid #BFBDBD}") len += format(buffer[len], charsmax(buffer) - len, "td{ padding:3; border:1px solid #BFBDBD}") len += format(buffer[len], charsmax(buffer) - len, "</style></head><body>") len += format(buffer[len], charsmax(buffer) - len, " <table>") len += format(buffer[len], charsmax(buffer) - len, "<tr><td class=th> Huk <td class=th> 3BaHue <td class=th> XP</tr>") new iPlayers[ 32 ], iNum, iPlayer; get_players( iPlayers, iNum, "c" ); for( new i = 0; i < iNum; i++ ) { iPlayer = iPlayers[ i ]; new namepl[32]; get_user_name(iPlayer, namepl, 31); len += format(buffer[len], charsmax(buffer) - len, "<tr><td> %s ",namepl) len += format(buffer[len], charsmax(buffer) - len, "<td> %L ",LANG_PLAYER,CLASSES[PlayerLevel[iPlayer]]); len += format(buffer[len], charsmax(buffer) - len, "<td> %d ",PlayerXP[iPlayer]) } len += format(buffer[len], charsmax(buffer) - len, "</tr></table> </body></html>") new motd[64] formatex(motd[0], charsmax(motd), "[Army Ranks] On-line player stats :") show_motd(id, buffer, motd) } //========== Главное адм.меню ====================================================================== public main_admar_menu(id) { if(!is_user_admin(id)) { // nahyi return PLUGIN_HANDLED; } new szText[700 char]; formatex( szText, charsmax( szText ), "%L", id, "MAIN_MENUAR"); new menu_main = menu_create( szText, "mainar_handler" ); // formatex( szText, charsmax( szText ), "%L", id, "ADM_AR_SET"); menu_additem( menu_main, szText, "1", 0 ); formatex( szText, charsmax( szText ), "%L", id, "ADM_AR_GIVE"); menu_additem( menu_main, szText, "2", 0 ); formatex( szText, charsmax( szText ), "%L", id, "ADM_AR_RANK"); menu_additem( menu_main, szText, "3", 0 ); // menu_setprop( menu_main, MPROP_EXIT, MEXIT_ALL ); menu_display( id, menu_main,0); return PLUGIN_CONTINUE; } public mainar_handler(id,menu,item) { if( item == MENU_EXIT ) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[ 6 ], iName[ 64 ], access, callback; menu_item_getinfo( menu, item, access, data, charsmax( data ), iName, charsmax( iName ), callback ); new key = str_to_num( data ); switch( key ) { case 1: { client_cmd(id,"amx_set_xp") } case 2: { client_cmd(id,"amx_give_xp") } case 3: { client_cmd(id,"amx_set_lvl") } } return PLUGIN_HANDLED; } Кстати,это не срочно.Нужен будет к началу осени. Всем спасибо
Отредактировал: s-nesterov, - 10.7.2012, 12:11
|
|
|
|
Fred Perry
|
10.7.2012, 15:01
Сообщение
|
![]() ![]() |
Такой заказ выполнят только за денюшку.
![]() You become responsible, forever, for what you have tamed
|
|
|
|
Rejiser
|
10.7.2012, 15:48
Сообщение
|
![]() |
А что там с сохранениями не так?
|
|
|
|
Fred Perry
|
10.7.2012, 15:55
Сообщение
|
![]() ![]() |
А что там с сохранениями не так? Сбиваются звания, чаще всего когда достигаешь максимального. ![]() You become responsible, forever, for what you have tamed
|
|
|
|
Fred Perry
|
10.7.2012, 20:08
Сообщение
|
![]() ![]() |
Одна из проблем - смена ника.
При смене ника - сбиваются звания. ![]() You become responsible, forever, for what you have tamed
|
|
|
|
s-nesterov
|
10.7.2012, 20:25
Сообщение
|
![]() |
|
|
|
|
![]() ![]() |