[ CERERE PLUGIN - ZE ]
Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com
Forum rules
Accesează link-ul pentru a putea vedea regulile forumului
Daca doriti sa vi se modifice un plugin, va rugam postati aici .
Accesează link-ul pentru a putea vedea regulile forumului
Daca doriti sa vi se modifice un plugin, va rugam postati aici .
- King Innsane
- Membru, skill 0
- Posts: 20
- Joined: 30 Mar 2019, 15:34
- Detinator Steam: Da
- Detinator server CS: 193.203.39.156:27015
- Fond eXtream: 0
- Been thanked: 1 time
Plugin Cerut:Mini level
Descriere (adica ce face el mai exact):un plugin de arme pe xp in care sa apara asa [https://imgur.com/a/diXjt10], cu modele la arme v/p/w. Meniul acela sa apara automat , iar daca scrii /weapons iti apar toate armele pe care le detii in alt meniu ( in timp ce e deschis meniul weapons sa nu se suprapuna meniul care arata arma xp cu meniul care arata armele pe care le detii sa poti sa folosesti meniul weapons o data pe runda si sa alegi alta arma pe care o ai ), iar la zombie sa-ti schime skin-ul de la un nivel la altul cat si mainile (cutitul) + hp (sa pot sa-l setez First zombie , hp x , model x)
Serverul ruleaza (HLDS/ReHLDS):HLDS
Versiune AMX Mod X:1.8.2
Modul Serverului: ZE [sursa este a lui dias]
Descriere (adica ce face el mai exact):un plugin de arme pe xp in care sa apara asa [https://imgur.com/a/diXjt10], cu modele la arme v/p/w. Meniul acela sa apara automat , iar daca scrii /weapons iti apar toate armele pe care le detii in alt meniu ( in timp ce e deschis meniul weapons sa nu se suprapuna meniul care arata arma xp cu meniul care arata armele pe care le detii sa poti sa folosesti meniul weapons o data pe runda si sa alegi alta arma pe care o ai ), iar la zombie sa-ti schime skin-ul de la un nivel la altul cat si mainile (cutitul) + hp (sa pot sa-l setez First zombie , hp x , model x)
Serverul ruleaza (HLDS/ReHLDS):HLDS
Versiune AMX Mod X:1.8.2
Modul Serverului: ZE [sursa este a lui dias]
"Am făcut lucruri pe care acum le regret. Dar dacă nu învăţ din greşeli o să le repet."
- levin
- Scripter eXtreamCS
- Posts: 3850
- Joined: 24 Aug 2011, 12:24
- Detinator Steam: Da
- CS Status: ♅
- Detinator server CS: ☯∴
- SteamID: 76561198063679589
- Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy - Location: ҳ̸Ҳ̸ҳ
- Discord: devilclass
- Has thanked: 36 times
- Been thanked: 595 times
- Contact:
păi ai sistem de xp?
Nu îmi mai trimiteți PM pe forum! Nu merge să răspund
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
- King Innsane
- Membru, skill 0
- Posts: 20
- Joined: 30 Mar 2019, 15:34
- Detinator Steam: Da
- Detinator server CS: 193.203.39.156:27015
- Fond eXtream: 0
- Been thanked: 1 time
Da, daca se poate sa-l faci pe nick inca un cvar cu salvarea xp-ului si cele de sus de le-am mentionat.Multumesc ca-ti faci timp pentru mine.
"Am făcut lucruri pe care acum le regret. Dar dacă nu învăţ din greşeli o să le repet."
-
- Utilizator neserios
- Posts: 847
- Joined: 02 Nov 2014, 18:21
- Detinator Steam: Da
- CS Status: Citesc forumul eXtreamCS.com...!
- Reputatie: Fost Scripter eXtreamCS
Utilizator neserios - Fond eXtream: 0
- Location: Constanta
- Has thanked: 40 times
- Been thanked: 30 times
Pentru salvarea pe nume pune cvar-ul "xp_save" pe 2 si "xp_savetype" pe 0.
https://discord.gg/VABVdhXMrK ZM CSO server in working..
- levin
- Scripter eXtreamCS
- Posts: 3850
- Joined: 24 Aug 2011, 12:24
- Detinator Steam: Da
- CS Status: ♅
- Detinator server CS: ☯∴
- SteamID: 76561198063679589
- Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy - Location: ҳ̸Ҳ̸ҳ
- Discord: devilclass
- Has thanked: 36 times
- Been thanked: 595 times
- Contact:
uite baza, restu nu mai am timp să fac, am făcut doar meniul pentru arme, trebuie făcut și un public în care setează armele, când o să am timp poate o să l termin
nu ai pus inc necersae, deci nu știu dacă mergea sau va merge compilat
edit: cum credeam, nu merge compilat ce ai dat din start, și asta din cazua sursa, nu că ai editat sma prost
nu ai pus inc necersae, deci nu știu dacă mergea sau va merge compilat
edit: cum credeam, nu merge compilat ce ai dat din start, și asta din cazua sursa, nu că ai editat sma prost
Code: Select all
#include "gunxpmod.cfg"
#if defined ZOMBIE_BIOHAZARD
#include <biohazard>
#endif
#if defined ZOMBIE_PLAGUE
//#include <zombieplague>
#endif
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <nvault>
#include <sqlx>
#include <hamsandwich>
#define PLUGIN "XP-Mod"
#define AUTHOR "-"
#define VERSION "2.5"
#define OFFSET_PRIMARYWEAPON 116
#define TASK_SHOW_LEVEL 10113
#define fm_cs_set_user_nobuy(%1) set_pdata_int(%1, 235, get_pdata_int(%1, 235) & ~(1<<0) ) //no weapon buy
new PlayerXp[33];
new PlayerLevel[33];
new g_Vault;
new g_remember_selection[33], g_kills[33], g_remember_selection_pistol[33];
new g_maxplayers, g_msgHudSync1, SayTxT, enable_grenades;
new levelspr, levelspr2, show_level_text, show_rank;
new savexp, save_type, xp_kill, xp_triple, enable_triple, triple_kills, xp_ultra, ultra_kills, enable_ultra, p_Enabled, level_style;
new enable_admin_xp, admin_xp;
/*================================================================================
[MySQLx Vars, other]
=================================================================================*/
new Handle:g_hTuple;
new mysqlx_host, mysqlx_user, mysqlx_db, mysqlx_pass;
new const szTables[][] =
{
"CREATE TABLE IF NOT EXISTS `mytable` ( `player_id` varchar(32) NOT NULL,`player_level` int(8) default NULL,`player_xp` int(16) default NULL,PRIMARY KEY (`player_id`) ) TYPE=MyISAM;"
}
enum _:MF
{
WName[32],
WCCode,
WTCode[32],
WLevel,
VModel[32],
PModel[32],
WModel[32]/*,*/
}
new const WeaponsFUNC[/*MAXLEVEL*/][MF] = { //ARME PE LEVEL(meniu)
{ "GLOCK 18", CSW_GLOCK18, "weapon_glock18", 1, "models/v_glock18.mdl", "models/p_glock18.mdl", "models/w_glock18.mdl" }/*,*/
};
/*
#define LEVELUPXP 400
#define SKINHATSLEVELCHANGE 30
new const WLVLS[MAXLEVEL]=//LVL ARME
{
0,//DEF
1,
2,
3
}*/
new const AMMOCONST[MAXLEVEL] = { 10, 16, 23, 26, 10, 16, 17, 20, 8, 19, 28 }
/*================================================================================
[Plugin natives,precache,init]
=================================================================================*/
new menuCBH
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_cvar("gxm_version", VERSION, FCVAR_SPONLY|FCVAR_SERVER)
set_cvar_string("gxm_version", VERSION)
register_concmd("amx_level", "cmd_give_level", ADMIN_CFG, "<Nume Joc> <NR LVL>" );
register_clcmd("say lvl", "showlevel");
register_clcmd("say /lvl", "showlevel");
register_clcmd("say /top20","showtop20");
register_clcmd("say /menu","show_main_menu_info");
register_clcmd("say menu","show_main_menu_info");
p_Enabled = register_cvar( "xp_enable", "1" ); // Plugin enabled? 1 = Yes, 0 = No.
save_type = register_cvar("xp_savetype","0"); // Save Xp to : 1 = MySQL, 0 = NVault.
savexp = register_cvar("xp_save","2"); // Save Xp by : 1 = SteamID, 0 = IP, 2 = Nicks
xp_kill = register_cvar("xp_nivel","10"); // How much xp gain if you killed someone?
show_level_text = register_cvar("xp_level_text","0"); // Show your level by : 1 = HUD message, 0 = Simple colored text message.
show_rank = register_cvar("xp_show_rank","1"); // Show rank in /top20? 1 = Yes, 0 = No.
level_style = register_cvar("xp_level_style","0"); // You will gain each level new gun : 1 = Yes, 0 = No,select your gun by menu.
enable_grenades = register_cvar("xp_grenades","1"); // Give to player grenades? 1 = Yes, 0 = No.
enable_triple = register_cvar("xp_triple","1"); // Enable Triple Kill bonus xp? 1 = Yes, 0 = No.
xp_triple = register_cvar("xp_triple_xp","3"); // How much bonus xp give for Triple Kill?
triple_kills = register_cvar("xp_triple_kills","3"); // How much kills needed to give bonus xp?
enable_ultra = register_cvar("xp_ultra","1"); // Enable Ultra Kill bonus xp? 1 = Yes, 0 = No.
xp_ultra = register_cvar("xp_ultra_xp","5"); // How much bonus xp give for Ultra Kill?
ultra_kills = register_cvar("xp_ultra_kills","6"); // How much kills needed to give bonus xp?
enable_admin_xp = register_cvar("xp_admin_xp","1"); // Enable Extra xp for killing? 1 = Yes, 0 = No.
admin_xp = register_cvar("xp_extra_xp","10"); // How much extra xp give to admins?
// SQLx cvars
mysqlx_host = register_cvar ("xp_host", ""); // The host from the db
mysqlx_user = register_cvar ("xp_user", ""); // The username from the db login
mysqlx_pass = register_cvar ("xp_pass", ""); // The password from the db login
mysqlx_db = register_cvar ("xp_dbname", ""); // The database name
// Events //
register_event("DeathMsg", "event_deathmsg", "a");
register_event("StatusValue", "Event_StatusValue", "bd", "1=2")
// Forwards //
RegisterHam(Ham_Spawn, "player", "fwd_PlayerSpawn", 1);
register_forward(FM_Touch, "fwd_Touch");
// Messages //
#if defined NORMAL_MOD || defined ZOMBIE_SWARM
register_message(get_user_msgid("StatusIcon"), "Message_StatusIcon")
#endif
// Other //
register_menucmd(register_menuid("Main Menu"), 1023, "main_menu_info")
register_dictionary("gunxpmod.txt");
MySQLx_Init()
SayTxT = get_user_msgid("SayText");
g_msgHudSync1 = CreateHudSyncObj()
g_maxplayers = get_maxplayers();
menuCBH = menu_makecallback( "menucallback1" );
register_clcmd("say /tw","WM")
register_clcmd("say_team /tw","WM")
}
public TW(id)
{
if(!is_user_alive(id)) return
new menu = menu_create( "Choose your weapon", "menuhandler1" );
new level = PlayerLevel[id]//PlayerXp[ id ] / LEVELUPXP;
for( new i=0; i < sizeof(WeaponsFUNC); i++ )
{
/*
for(new x;x<sizeof(WLVLS);x++)
{
menu_additem( menu, WeaponsFUNC[ i ][WName], _, level>=WLVLS[x], menuCBH );
}
*/
new text[512]
if(level<WeaponsFUNC[ i ][WLevel]) formatex(text,charsmax(text),"\w[\yLOCKED\w]\r %s\w [\dAvailable on level:\r %d\w]",WeaponsFUNC[ i ][WName],WeaponsFUNC[ i ][WLevel])
menu_additem( menu, WeaponsFUNC[ i ][WName], _, _, menuCBH );
}
menu_display( id, menu, 0);
}
public menuhandler1( id, menu, item )
{
if(item == MENU_EXIT||!is_user_alive(id))
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
if(/*item == */user_has_weapon(id,WeaponsFUNC[item][WCCode]))
{
client_print(id,print_chat, "%s You already have: %s",PLUG_TAG, WeaponsFUNC[item][WName]);
menu_destroy(menu)
return PLUGIN_HANDLED
}
//Set_WP( id, WeaponsFUNC[item][WTCode],WeaponsFUNC[item][WCCode] );
client_print(id,print_chat, "%s The weapon you chose is: %s",PLUG_TAG, WeaponsFUNC[item][WName]);
menu_destroy(menu);
return PLUGIN_HANDLED
}
public menucallback1( id, menu, item )
{
static szInfo[8], iAccess, iCallback;
menu_item_getinfo(menu, item, iAccess, szInfo, charsmax(szInfo), .callback = iCallback);
/*static iType;
iType = str_to_num(szInfo);*/
new level = PlayerLevel[ id ];
if( WeaponsFUNC[item][WLevel] > level /*/ SKINWPEVELCHANGE||item == settingH[id]*/ ) return ITEM_DISABLED;
return ITEM_ENABLED;
}
// Main Menu Level Style
public show_main_menu_level(id)
{
if ( !is_user_alive(id) )
return;
new szInfo[60], szChooseT[40], szLastG[40];
formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] );
new menu = menu_create(szInfo , "main_menu_level");
formatex(szChooseT, charsmax(szChooseT), "%L", LANG_SERVER, "CHOOSE_TEXT");
menu_additem(menu, szChooseT, "1", 0);
formatex(szLastG, charsmax(szLastG), "%L", LANG_SERVER, "LAST_GUNS");
menu_additem(menu, szLastG, "2", 0);
new szExit[15];
formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU");
menu_setprop(menu, MPROP_EXITNAME, szExit);
menu_display(id , menu , 0);
}
public main_menu_level(id , menu , item)
{
if ( !is_user_alive(id) )
{
return PLUGIN_HANDLED;
}
#if defined ZOMBIE_PLAGUE
if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T )
return PLUGIN_HANDLED;
#endif
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new item_id = str_to_num(data);
switch (item_id)
{
case 1: // show pistols
{
show_menu_level_pistol(id);
}
case 2: // last weapons
{
if ( PlayerLevel[id] > MAX_PISTOLS_MENU - 1 )
{
give_weapon_menu(id, g_remember_selection[id], 1, 1);
give_weapon_menu(id, g_remember_selection_pistol[id], 0, 0);
}
else if ( PlayerLevel[id] < MAX_PISTOLS_MENU )
{
give_weapon_menu(id, g_remember_selection_pistol[id], 1, 1);
}
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
// Menu Level Style Pistols
public show_menu_level_pistol(id)
{
if ( !is_user_alive(id) )
return;
new szInfo[60];
formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] );
new menu = menu_create(szInfo , "pistol_menu");
for (new item_id = 0; item_id < MAX_PISTOLS_MENU; item_id++)
{
new szItems[60], szTempid[32];
if ( PlayerLevel[id] >= GUN_LEVELS[item_id] )
{
formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "ACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )
num_to_str(item_id, szTempid, charsmax(szTempid) );
menu_additem(menu, szItems, szTempid, 0);
}
else
{
formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "INACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )
menu_additem(menu, szItems, "999", 0, menu_makecallback("CallbackMenu"));
}
}
new szNext[15], szBack[15], szExit[15];
formatex(szBack, charsmax(szBack), "%L", LANG_SERVER, "BACK_MENU");
formatex(szNext, charsmax(szNext), "%L", LANG_SERVER, "NEXT_MENU");
formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU");
menu_setprop(menu, MPROP_BACKNAME, szBack)
menu_setprop(menu, MPROP_NEXTNAME, szNext)
menu_setprop(menu, MPROP_EXITNAME, szExit)
menu_display(id , menu , 0);
}
public pistol_menu(id , menu , item)
{
if ( !is_user_alive(id) )
{
return PLUGIN_HANDLED;
}
#if defined ZOMBIE_PLAGUE
if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T )
return PLUGIN_HANDLED;
#endif
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new item_id = str_to_num(data);
g_remember_selection_pistol[id] = item_id;
give_weapon_menu(id, item_id, 1, 1);
if ( PlayerLevel[id] > MAX_PISTOLS_MENU - 1 )
{
show_menu_level(id);
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
// Menu Level Style Primary
public show_menu_level(id)
{
if ( !is_user_alive(id) || PlayerLevel[id] < MAX_PISTOLS_MENU )
return;
new szInfo[100];
formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] );
new menu = menu_create(szInfo , "level_menu");
for (new item_id = MAX_PISTOLS_MENU; item_id < MAXLEVEL; item_id++)
{
new szItems[512], szTempid[32];
if ( PlayerLevel[id] >= GUN_LEVELS[item_id] )
{
formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "ACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )
num_to_str(item_id, szTempid, charsmax(szTempid) );
menu_additem(menu, szItems, szTempid, 0);
}
else
{
formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "INACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )
menu_additem(menu, szItems, "999", 0, menu_makecallback("CallbackMenu"));
}
}
new szNext[15], szBack[15], szExit[15];
formatex(szBack, charsmax(szBack), "%L", LANG_SERVER, "BACK_MENU");
formatex(szNext, charsmax(szNext), "%L", LANG_SERVER, "NEXT_MENU");
formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU");
menu_setprop(menu, MPROP_BACKNAME, szBack)
menu_setprop(menu, MPROP_NEXTNAME, szNext)
menu_setprop(menu, MPROP_EXITNAME, szExit)
menu_display(id , menu , 0);
}
public level_menu(id , menu , item)
{
if ( !is_user_alive(id) || PlayerLevel[id] < MAX_PISTOLS_MENU )
{
return PLUGIN_HANDLED;
}
#if defined ZOMBIE_PLAGUE
if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T )
return PLUGIN_HANDLED;
#endif
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new item_id = str_to_num(data);
g_remember_selection[id] = item_id;
give_weapon_menu(id, item_id, 0, 0);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public CallbackMenu(id, menu, item)
{
return ITEM_DISABLED;
}
// Selected by menu or remember selection and give item
public give_weapon_menu(id, selection, strip, givegren)
{
#if defined ZOMBIE_SWARM
if( is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && get_pcvar_num(p_Enabled) )
{
if ( strip )
{
StripPlayerWeapons(id);
}
if ( get_pcvar_num(enable_grenades) && givegren )
{
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
}
give_item(id, WEAPONCONST[selection]);
cs_set_user_bpammo(id, AMMOCONST[selection], AMMO2CONST[selection])
}
#endif
#if defined ZOMBIE_INFECTION || defined NORMAL_MOD
if(is_user_alive(id) && get_pcvar_num(p_Enabled))
{
if ( strip )
{
StripPlayerWeapons(id);
}
if ( get_pcvar_num(enable_grenades) && givegren )
{
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
}
give_item(id, WEAPONCONST[selection]);
cs_set_user_bpammo(id, AMMOCONST[selection], AMMO2CONST[selection])
}
#endif
}
public plugin_natives()
{
// Player natives //
register_native("get_user_xp", "native_get_user_xp", 1);
register_native("set_user_xp", "native_set_user_xp", 1);
register_native("get_user_level", "native_get_user_level", 1);
register_native("set_user_level", "native_set_user_level", 1);
register_native("get_user_max_level", "native_get_user_max_level", 1);
}
public plugin_precache()
{
levelspr = engfunc(EngFunc_PrecacheModel, "sprites/xfire.spr");
levelspr2 = engfunc(EngFunc_PrecacheModel, "sprites/xfire2.spr");
engfunc(EngFunc_PrecacheSound, LevelUp);
for(new i; i < sizeof(WeaponsFUNC); i++)
{
if(WeaponsFUNC[i][0])
{
precache_model(WeaponsFUNC[i][VModel])
precache_model(WeaponsFUNC[i][PModel])
precache_model(WeaponsFUNC[i][WModel])
}
}
}
public plugin_cfg()
{
new ConfDir[32], File[192];
get_configsdir( ConfDir, charsmax( ConfDir ) );
formatex( File, charsmax( File ), "%s/gunxpmod.cfg", ConfDir );
if( !file_exists( File ) )
{
server_print( "File %s doesn't exist!", File );
write_file( File, "", -1 );
}
else
{
server_print( "%s successfully loaded.", File );
server_cmd( "exec %s", File );
}
//Open our vault and have g_Vault store the handle.
g_Vault = nvault_open( "gunxpmod" );
//Make the plugin error if vault did not successfully open
if ( g_Vault == INVALID_HANDLE )
set_fail_state( "Error opening GunXpMod nVault, file does not exist!" );
}
public plugin_end()
{
//Close the vault when the plugin ends (map change\server shutdown\restart)
nvault_close( g_Vault );
}
public client_connect(id)
{
g_remember_selection[id] = MAX_PISTOLS_MENU;
g_remember_selection_pistol[id] = 0;
LoadLevel(id)
}
public client_disconnect(id)
{
SaveLevel(id)
PlayerXp[id] = 0;
PlayerLevel[id] = 0;
remove_task( TASK_SHOW_LEVEL + id );
}
public Message_StatusIcon(iMsgId, MSG_DEST, id)
{
if( !get_pcvar_num(p_Enabled) )
return PLUGIN_HANDLED;
static szIcon[5]
get_msg_arg_string(2, szIcon, 4)
if( szIcon[0] == 'b' && szIcon[2] == 'y' && szIcon[3] == 'z' )
{
if( get_msg_arg_int(1))
{
fm_cs_set_user_nobuy(id)
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
}
public fwd_Touch(ent, id)
{
if (!is_user_alive(id) || !pev_valid( ent ) )
return FMRES_IGNORED;
static szEntModel[32];
pev( ent , pev_model , szEntModel , 31 );
for (new level_equip_id = PlayerLevel[id] + 1; level_equip_id < MAXLEVEL; level_equip_id++)
{
if ( equali( szEntModel , WEAPONMDL[level_equip_id] ) )
{
return FMRES_SUPERCEDE;
}
}
return FMRES_IGNORED;
}
public fwd_PlayerSpawn(id)
{
if( !get_pcvar_num(p_Enabled) || !is_user_alive(id) )
return;
g_kills[id] = 0
#if defined ZOMBIE_SWARM
if ( !get_pcvar_num(level_style) && cs_get_user_team(id) == CS_TEAM_CT )
{
StripPlayerWeapons(id);
set_task(2.0, "show_main_menu_level", id)
}
#endif
#if defined NORMAL_MOD || defined ZOMBIE_INFECTION
if ( !get_pcvar_num(level_style))
{
StripPlayerWeapons(id);
set_task(2.0, "show_main_menu_level", id)
}
#endif
if( get_pcvar_num(show_level_text) )
{
remove_task( TASK_SHOW_LEVEL + id );
set_task(0.1, "task_show_level", TASK_SHOW_LEVEL + id)
}
#if defined ZOMBIE_SWARM
if ( get_pcvar_num(level_style) && cs_get_user_team(id) == CS_TEAM_CT )
{
set_task(0.3, "give_weapon", id);
}
#endif
#if defined NORMAL_MOD || defined ZOMBIE_INFECTION
if ( get_pcvar_num(level_style) )
{
set_task(0.3, "give_weapon", id);
}
#endif
}
#if defined ZOMBIE_PLAGUE
public zp_user_humanized_post(id, survivor)
{
if( !get_pcvar_num(p_Enabled) || !is_user_alive(id) )
return;
set_task(1.0, "show_main_menu_level", id);
}
#endif
#if defined ZOMBIE_BIOHAZARD
public event_infect(g_victim, g_attacker)
{
if( !get_pcvar_num(p_Enabled) )
return;
new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple) + get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0
new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra) + get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0
if((1 <= g_attacker <= g_maxplayers))
{
if(g_victim != g_attacker)
{
g_kills[g_attacker]++;
if(PlayerLevel[g_attacker] < MAXLEVEL-1)
{
if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA)
{
PlayerXp[g_attacker] += get_pcvar_num(admin_xp)
}
if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) )
{
PlayerXp[g_attacker] += counted_triple
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
}
else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) )
{
PlayerXp[g_attacker] += counted_ultra
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
}
else
{
PlayerXp[g_attacker] += get_pcvar_num(xp_kill)
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) )
}
check_level(g_attacker)
}
}
}
}
#endif
#if defined ZOMBIE_PLAGUE
public zp_user_infected_post(g_victim, g_attacker)
{
if( !get_pcvar_num(p_Enabled) )
return;
new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple)
new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra)
if((1 <= g_attacker <= g_maxplayers))
{
if(g_victim != g_attacker)
{
g_kills[g_attacker]++;
if(PlayerLevel[g_attacker] < MAXLEVEL-1)
{
if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA)
{
PlayerXp[g_attacker] += get_pcvar_num(admin_xp)
}
if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) )
{
PlayerXp[g_attacker] += counted_triple
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
}
else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) )
{
PlayerXp[g_attacker] += counted_ultra
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
}
else
{
PlayerXp[g_attacker] += get_pcvar_num(xp_kill)
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) )
}
check_level(g_attacker)
}
}
}
}
#endif
public event_deathmsg()
{
if( !get_pcvar_num(p_Enabled) )
return;
new g_attacker = read_data(1);
new g_victim = read_data(2);
new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple)
new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra)
if((1 <= g_attacker <= g_maxplayers))
{
if(g_victim != g_attacker)
{
g_kills[g_attacker]++;
if(PlayerLevel[g_attacker] < MAXLEVEL-1)
{
if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA)
{
PlayerXp[g_attacker] += get_pcvar_num(admin_xp)
}
if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) )
{
PlayerXp[g_attacker] += counted_triple
set_hudmessage(0, 40, 255, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
}
else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) )
{
PlayerXp[g_attacker] += counted_ultra
set_hudmessage(255, 30, 0, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
}
else
{
PlayerXp[g_attacker] += get_pcvar_num(xp_kill)
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) )
}
check_level(g_attacker)
}
}
}
}
public Event_StatusValue(id)
{
new target = read_data(2)
if(target != id && target != 0 && get_pcvar_num(p_Enabled))
{
static sName[32];
get_user_name(target, sName, 31)
set_hudmessage(255, 255, 255, 0.6, -1.0, 0, 0.0, 6.0, 0.0, 0.0, 2)
ShowSyncHudMsg(id, g_msgHudSync1, "%L", LANG_SERVER, "LEVEL_TEXT", sName, PlayerLevel[target], RANKLEVELS[PlayerLevel[target]])
}
}
public task_show_level(task)
{
new id = task - TASK_SHOW_LEVEL
if(!is_user_alive(id) || !get_pcvar_num(show_level_text) || !get_pcvar_num(p_Enabled) )
return;
set_hudmessage(255, 0, 0, 0.02, 0.33, 0, 0.0, 0.3, 0.0, 0.0)
ShowSyncHudMsg(id, g_msgHudSync1 , "%L", LANG_SERVER, "LEVEL_HUD_TEXT", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]], RANK[PlayerLevel[id]], RANKLEVELS[PlayerLevel[id]])
set_task(0.1, "task_show_level", TASK_SHOW_LEVEL + id)
}
public showlevel(id)
{
if ( !get_pcvar_num(p_Enabled) || get_pcvar_num(show_level_text) )
return PLUGIN_HANDLED;
client_printcolor(id, "%L", LANG_SERVER, "LEVEL_TEXT2", PlayerLevel[id] , PlayerXp[id], LEVELS[PlayerLevel[id]]);
client_printcolor(id, "%L", LANG_SERVER, "LEVEL_TEXT3", RANK[PlayerLevel[id]], RANKLEVELS[PlayerLevel[id]]);
return PLUGIN_HANDLED;
}
public descriptionx(id)
{
new szMotd[2048], szTitle[64], iPos = 0
format(szTitle, 63, "Info")
iPos += format(szMotd[iPos], 2047-iPos, "<html><head><style type=^"text/css^">pre{color:#FFB000;}body{background:#000000;margin-left:8px;margin-left:0px;}</style></head><pre><body>")
iPos += format(szMotd[iPos], 2047-iPos, "^n^n<b>%s</b>^n^n", szTitle)
iPos += format(szMotd[iPos], 2047-iPos, "%L^n", LANG_SERVER, "DESCRIPTION")
iPos += format(szMotd[iPos], 2047-iPos, "%L", LANG_SERVER, "DESCRIPTION2")
show_motd(id, szMotd, szTitle)
return PLUGIN_HANDLED;
}
public check_level(id)
{
if(PlayerLevel[id] < MAXLEVEL-1 && get_pcvar_num(p_Enabled))
{
while(PlayerXp[id] >= LEVELS[PlayerLevel[id]])
{
PlayerLevel[id]++;
if(is_user_alive(id))
{
if ( get_pcvar_num(level_style) )
{
give_weapon(id);
}
new p_origin[3];
get_user_origin(id, p_origin, 0);
set_sprite(p_origin, levelspr, 30)
set_sprite(p_origin, levelspr2, 30)
}
emit_sound(id, CHAN_ITEM, LevelUp, 1.0, ATTN_NORM, 0, PITCH_NORM);
static name[32] ; get_user_name(id, name, charsmax(name));
client_printcolor(0, "%L", LANG_SERVER, "LEVEL_UP", name, PlayerLevel[id]);
}
}
}
// Main Menu Info
public show_main_menu_info(id)
{
if ( !get_pcvar_num(p_Enabled) )
return;
static menu[510], len;
len = 0;
new xKeys3 = MENU_KEY_0|MENU_KEY_1;
// Title
len += formatex(menu[len], sizeof menu - 1 - len, "%L", LANG_SERVER, "TITLE_MENU_INFO")
len += formatex(menu[len], sizeof menu - 1 - len, "\r1. \w%L", id, "INFO")
if ( get_pcvar_num(show_rank) )
{
xKeys3 |= (MENU_KEY_2)
len += formatex(menu[len], sizeof menu - 1 - len, "^n\r2. \wTop 20^n")
}
else
{
len += formatex(menu[len], sizeof menu - 1 - len, "^n\d2. Top 20^n")
}
if(find_plugin_byfile("gunxpmod_shop.amxx") != INVALID_PLUGIN_ID)
{
xKeys3 |= (MENU_KEY_3)
len += formatex(menu[len], sizeof menu - 1 - len, "\r3. \w%L^n", id, "ITEM_LIST")
if ( is_user_alive(id) )
{
xKeys3 |= (MENU_KEY_4)
len += formatex(menu[len], sizeof menu - 1 - len, "\r4. \w%L^n", id, "UNLOCKS_SHOP_TEXT")
}
}
len += formatex(menu[len], sizeof menu - 1 - len, "^n^n\r0.\w %L", id, "EXIT_MENU")
show_menu(id, xKeys3, menu, -1, "Main Menu")
}
public main_menu_info(id, key)
{
switch (key)
{
case 0:
{
show_main_menu_info(id)
descriptionx(id)
}
case 1:
{
showtop20(id)
show_main_menu_info(id)
}
case 2:
{
show_main_menu_info(id)
if(callfunc_begin( "display_items","") == 1)
{
callfunc_push_int( id );
callfunc_end();
}
}
case 3:
{
if(callfunc_begin("item_upgrades","") == 1)
{
callfunc_push_int( id );
callfunc_end();
}
}
case 9:
{
return PLUGIN_HANDLED;
}
}
return PLUGIN_HANDLED;
}
public give_weapon(id)
{
#if defined ZOMBIE_SWARM
if( is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && get_pcvar_num(p_Enabled))
{
StripPlayerWeapons(id);
if ( get_pcvar_num(enable_grenades) && get_pcvar_num(level_style) )
{
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
}
give_item(id, WEAPONCONST[PlayerLevel[id]]);
cs_set_user_bpammo(id, AMMOCONST[PlayerLevel[id]], AMMO2CONST[PlayerLevel[id]])
}
#endif
#if defined ZOMBIE_INFECTION || defined NORMAL_MOD
if(is_user_alive(id) && get_pcvar_num(p_Enabled))
{
StripPlayerWeapons(id);
if ( get_pcvar_num(enable_grenades) && get_pcvar_num(level_style) )
{
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
}
give_item(id, WEAPONCONST[PlayerLevel[id]]);
cs_set_user_bpammo(id, AMMOCONST[PlayerLevel[id]], AMMO2CONST[PlayerLevel[id]])
}
#endif
}
public set_sprite(p_origin[3], sprite, radius)
{
// Explosion
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, p_origin)
write_byte(TE_EXPLOSION)
write_coord(p_origin[0])
write_coord(p_origin[1])
write_coord(p_origin[2])
write_short(sprite)
write_byte(radius)
write_byte(15)
write_byte(4)
message_end()
}
//Shows Top 20
public showtop20(id)
{
if( !get_pcvar_num(p_Enabled) && !get_pcvar_num(show_rank) )
return;
static Sort[33][2];
new players[32],num,count,index;
get_players(players,num);
for(new i = 0; i < num; i++)
{
index = players;
Sort[count][0] = index;
Sort[count][1] = PlayerXp[index];
count++;
}
SortCustom2D(Sort,count,"CompareXp");
new motd[1501],iLen;
iLen = formatex(motd, sizeof motd - 1,"<body bgcolor=#000000><font color=#98f5ff><pre>");
iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"%s %-22.22s %3s^n", "#", "Name", "# Experience");
new y = clamp(count,0,20);
new name[32],kindex;
for(new x = 0; x < y; x++)
{
kindex = Sort[x][0];
get_user_name(kindex,name,sizeof name - 1);
iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"%d %-22.22s %d^n", x + 1, name, Sort[x][1]);
}
iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"</body></font></pre>");
show_motd(id,motd, "GunXpMod Top 20");
}
public CompareXp(elem1[], elem2[])
{
if(elem1[1] > elem2[1])
return -1;
else if(elem1[1] < elem2[1])
return 1;
return 0;
}
// Command to set player Level
public cmd_give_level(id, level, cid)
{
if( !cmd_access(id, level, cid, 3) || !get_pcvar_num(p_Enabled) )
{
return PLUGIN_HANDLED;
}
new Arg1[64], Target
read_argv(1, Arg1, 63)
Target = cmd_target(id, Arg1, 0)
new iLevel[32], Value
read_argv(2, iLevel, 31)
Value = str_to_num(iLevel)
if(iLevel[0] == '-')
{
console_print(id, "You can't have a '-' in the value!")
return PLUGIN_HANDLED;
}
if(!Target)
{
console_print(id, "Target not found!")
return PLUGIN_HANDLED;
}
if(Value > MAXLEVEL-1)
{
console_print(id, "You can't set a more than %d!", MAXLEVEL-1)
return PLUGIN_HANDLED;
}
if(Value < 1)
{
console_print(id, "You can't set less than 1!")
return PLUGIN_HANDLED;
}
new AdminName[32]
get_user_name(id, AdminName, 31)
new TargetName[32]
get_user_name(Target, TargetName, 31)
PlayerLevel[Target] = Value - 1
PlayerXp[Target] = LEVELS[PlayerLevel[Target]]
check_level(Target)
client_printcolor(Target, "/gADMIN: /ctr%s /yhas set your level to /g%d", AdminName, Value)
return PLUGIN_HANDLED;
}
// ============================================================//
// [~ Saving datas ~] //
// ============================================================//
public MySQLx_Init()
{
if ( !get_pcvar_num(p_Enabled) || !get_pcvar_num(save_type) )
return;
new szHost[64], szUser[32], szPass[32], szDB[128];
get_pcvar_string( mysqlx_host, szHost, charsmax( szHost ) );
get_pcvar_string( mysqlx_user, szUser, charsmax( szUser ) );
get_pcvar_string( mysqlx_pass, szPass, charsmax( szPass ) );
get_pcvar_string( mysqlx_db, szDB, charsmax( szDB ) );
g_hTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDB );
for ( new i = 0; i < sizeof szTables; i++ )
{
SQL_ThreadQuery( g_hTuple, "QueryCreateTable", szTables)
}
}
public QueryCreateTable( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
{
if( iFailState == TQUERY_CONNECT_FAILED
|| iFailState == TQUERY_QUERY_FAILED )
{
log_amx( "%s", szError );
return;
}
}
SaveLevel(id)
{
new szAuth[33];
new szKey[64];
if ( get_pcvar_num(savexp) == 0 )
{
get_user_ip( id, szAuth , charsmax(szAuth), 1);
formatex( szKey , 63 , "%s-IP" , szAuth);
}
else if ( get_pcvar_num(savexp) == 1 )
{
get_user_authid( id , szAuth , charsmax(szAuth) );
formatex( szKey , 63 , "%s-ID" , szAuth);
}
else if ( get_pcvar_num(savexp) == 2 )
{
get_user_name( id, szAuth , charsmax(szAuth) );
formatex( szKey , 63 , "%s-NAME" , szAuth);
}
if ( !get_pcvar_num(save_type) )
{
new szData[256];
formatex( szData , 255 , "%i#%i#" , PlayerLevel[id], PlayerXp[id] );
nvault_set( g_Vault , szKey , szData );
}
else
{
static szQuery[ 128 ];
formatex( szQuery, 127, "REPLACE INTO `mytable` (`player_id`, `player_level`, `player_xp`) VALUES ('%s', '%d', '%d');", szAuth , PlayerLevel[id], PlayerXp[id] );
SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
}
}
LoadLevel(id)
{
new szAuth[33];
new szKey[40];
if ( get_pcvar_num(savexp) == 0 )
{
get_user_ip( id, szAuth , charsmax(szAuth), 1);
formatex( szKey , 63 , "%s-IP" , szAuth);
}
else if ( get_pcvar_num(savexp) == 1 )
{
get_user_authid( id , szAuth , charsmax(szAuth) );
formatex( szKey , 63 , "%s-ID" , szAuth);
}
else if ( get_pcvar_num(savexp) == 2 )
{
get_user_name( id, szAuth , charsmax(szAuth) );
formatex( szKey , 63 , "%s-NAME" , szAuth);
}
if ( !get_pcvar_num(save_type) )
{
new szData[256];
formatex(szData , 255, "%i#%i#", PlayerLevel[id], PlayerXp[id])
nvault_get(g_Vault, szKey, szData, 255)
replace_all(szData , 255, "#", " ")
new xp[32], level[32]
parse(szData, level, 31, xp, 31)
PlayerLevel[id] = str_to_num(level)
PlayerXp[id] = str_to_num(xp)
}
else
{
static szQuery[ 128 ], iData[ 1 ];
formatex( szQuery, 127, "SELECT `player_level`, `player_xp` FROM `mytable` WHERE ( `player_id` = '%s' );", szAuth );
iData[ 0 ] = id;
SQL_ThreadQuery( g_hTuple, "QuerySelectData", szQuery, iData, 1 );
}
}
public QuerySelectData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
{
if( iFailState == TQUERY_CONNECT_FAILED
|| iFailState == TQUERY_QUERY_FAILED )
{
log_amx( "%s", szError );
return;
}
else
{
new id = iData[ 0 ];
new ColLevel = SQL_FieldNameToNum(hQuery, "player_level")
new ColXp = SQL_FieldNameToNum(hQuery, "player_xp")
while (SQL_MoreResults(hQuery))
{
PlayerLevel[id] = SQL_ReadResult(hQuery, ColLevel);
PlayerXp[id] = SQL_ReadResult(hQuery, ColXp);
SQL_NextRow(hQuery)
}
}
}
public QuerySetData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
{
if( iFailState == TQUERY_CONNECT_FAILED
|| iFailState == TQUERY_QUERY_FAILED )
{
log_amx( "%s", szError );
return;
}
}
// ============================================================//
// [~ Natives ~] //
// ============================================================//
// Native: get_user_xp
public native_get_user_xp(id)
{
return PlayerXp[id];
}
// Native: set_user_xp
public native_set_user_xp(id, amount)
{
PlayerXp[id] = amount;
}
// Native: get_user_level
public native_get_user_level(id)
{
return PlayerLevel[id];
}
// Native: set_user_xp
public native_set_user_level(id, amount)
{
PlayerLevel[id] = amount;
}
// Native: Gets user level by Xp
public native_get_user_max_level(id)
{
return LEVELS[PlayerLevel[id]];
}
// ============================================================//
// [~ Stocks ~] //
// ============================================================//
stock client_printcolor(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg,190,input,3);
replace_all(msg,190,"/g","^4");// green txt
replace_all(msg,190,"/y","^1");// orange txt
replace_all(msg,190,"/ctr","^3");// team txt
replace_all(msg,190,"/w","^0");// team txt
if (id) players[0] = id; else get_players(players,count,"ch");
for (new i = 0; i < count; i++)
if (is_user_connected(players))
{
message_begin(MSG_ONE_UNRELIABLE, SayTxT, _, players);
write_byte(players);
write_string(msg);
message_end();
}
}
public StripPlayerWeapons(id)
{
strip_user_weapons(id)
set_pdata_int(id, OFFSET_PRIMARYWEAPON, 0)
give_item(id, "weapon_knife");
}
Last edited by levin on 14 Sep 2019, 20:41, edited 1 time in total.
Nu îmi mai trimiteți PM pe forum! Nu merge să răspund
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
- King Innsane
- Membru, skill 0
- Posts: 20
- Joined: 30 Mar 2019, 15:34
- Detinator Steam: Da
- Detinator server CS: 193.203.39.156:27015
- Fond eXtream: 0
- Been thanked: 1 time
L E V I N wrote: ↑14 Sep 2019, 14:20uite baza, restu nu mai am timp să fac, am făcut doar meniul pentru arme, trebuie făcut și un public în care setează armele, când o să am timp poate o să l termin
BTW : acestea sunt erorile de mai jos , daca ai putea sa faci la fiecare win sa-ti dea X [ xp ] . Apreciez efortul, nu este o probleme cand ai tu timp .. astept cu nerabdare!
gunxpmod.cfg : gunxpmod.inc :GUNXPv3.sma(185) : error 017: undefined symbol "PLUG_TAG"
GUNXPv3.sma(185) : warning 215: expression has no effect
GUNXPv3.sma(185) : error 001: expected token: ";", but found ")"
GUNXPv3.sma(185) : error 029: invalid expression, assumed zero
GUNXPv3.sma(185) : fatal error 107: too many error messages on one line
Code: Select all
#include "gunxpmod.cfg" #if defined ZOMBIE_BIOHAZARD #include <biohazard> #endif #if defined ZOMBIE_PLAGUE //#include <zombieplague> #endif #include <amxmodx> #include <amxmisc> #include <fakemeta> #include <fun> #include <cstrike> #include <nvault> #include <sqlx> #include <hamsandwich> #define PLUGIN "XP-Mod" #define AUTHOR "-" #define VERSION "2.5" #define OFFSET_PRIMARYWEAPON 116 #define TASK_SHOW_LEVEL 10113 #define fm_cs_set_user_nobuy(%1) set_pdata_int(%1, 235, get_pdata_int(%1, 235) & ~(1<<0) ) //no weapon buy new PlayerXp[33]; new PlayerLevel[33]; new g_Vault; new g_remember_selection[33], g_kills[33], g_remember_selection_pistol[33]; new g_maxplayers, g_msgHudSync1, SayTxT, enable_grenades; new levelspr, levelspr2, show_level_text, show_rank; new savexp, save_type, xp_kill, xp_triple, enable_triple, triple_kills, xp_ultra, ultra_kills, enable_ultra, p_Enabled, level_style; new enable_admin_xp, admin_xp; /*================================================================================ [MySQLx Vars, other] =================================================================================*/ new Handle:g_hTuple; new mysqlx_host, mysqlx_user, mysqlx_db, mysqlx_pass; new const szTables[][] = { "CREATE TABLE IF NOT EXISTS `mytable` ( `player_id` varchar(32) NOT NULL,`player_level` int(8) default NULL,`player_xp` int(16) default NULL,PRIMARY KEY (`player_id`) ) TYPE=MyISAM;" } enum _:MF { WName[32], WCCode, WTCode[32], WLevel, VModel[32], PModel[32], WModel[32]/*,*/ } new const WeaponsFUNC[/*MAXLEVEL*/][MF] = { //ARME PE LEVEL(meniu) { "GLOCK 18", CSW_GLOCK18, "weapon_glock18", 1, "models/v_glock18.mdl", "models/p_glock18.mdl", "models/w_glock18.mdl" }/*,*/ }; /* #define LEVELUPXP 400 #define SKINHATSLEVELCHANGE 30 new const WLVLS[MAXLEVEL]=//LVL ARME { 0,//DEF 1, 2, 3 }*/ new const AMMOCONST[MAXLEVEL] = { 10, 16, 23, 26, 10, 16, 17, 20, 8, 19, 28 } /*================================================================================ [Plugin natives,precache,init] =================================================================================*/ new menuCBH public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_cvar("gxm_version", VERSION, FCVAR_SPONLY|FCVAR_SERVER) set_cvar_string("gxm_version", VERSION) register_concmd("amx_level", "cmd_give_level", ADMIN_CFG, "<Nume Joc> <NR LVL>" ); register_clcmd("say lvl", "showlevel"); register_clcmd("say /lvl", "showlevel"); register_clcmd("say /top20","showtop20"); register_clcmd("say /menu","show_main_menu_info"); register_clcmd("say menu","show_main_menu_info"); p_Enabled = register_cvar( "xp_enable", "1" ); // Plugin enabled? 1 = Yes, 0 = No. save_type = register_cvar("xp_savetype","0"); // Save Xp to : 1 = MySQL, 0 = NVault. savexp = register_cvar("xp_save","2"); // Save Xp by : 1 = SteamID, 0 = IP, 2 = Nicks xp_kill = register_cvar("xp_nivel","10"); // How much xp gain if you killed someone? show_level_text = register_cvar("xp_level_text","0"); // Show your level by : 1 = HUD message, 0 = Simple colored text message. show_rank = register_cvar("xp_show_rank","1"); // Show rank in /top20? 1 = Yes, 0 = No. level_style = register_cvar("xp_level_style","0"); // You will gain each level new gun : 1 = Yes, 0 = No,select your gun by menu. enable_grenades = register_cvar("xp_grenades","1"); // Give to player grenades? 1 = Yes, 0 = No. enable_triple = register_cvar("xp_triple","1"); // Enable Triple Kill bonus xp? 1 = Yes, 0 = No. xp_triple = register_cvar("xp_triple_xp","3"); // How much bonus xp give for Triple Kill? triple_kills = register_cvar("xp_triple_kills","3"); // How much kills needed to give bonus xp? enable_ultra = register_cvar("xp_ultra","1"); // Enable Ultra Kill bonus xp? 1 = Yes, 0 = No. xp_ultra = register_cvar("xp_ultra_xp","5"); // How much bonus xp give for Ultra Kill? ultra_kills = register_cvar("xp_ultra_kills","6"); // How much kills needed to give bonus xp? enable_admin_xp = register_cvar("xp_admin_xp","1"); // Enable Extra xp for killing? 1 = Yes, 0 = No. admin_xp = register_cvar("xp_extra_xp","10"); // How much extra xp give to admins? // SQLx cvars mysqlx_host = register_cvar ("xp_host", ""); // The host from the db mysqlx_user = register_cvar ("xp_user", ""); // The username from the db login mysqlx_pass = register_cvar ("xp_pass", ""); // The password from the db login mysqlx_db = register_cvar ("xp_dbname", ""); // The database name // Events // register_event("DeathMsg", "event_deathmsg", "a"); register_event("StatusValue", "Event_StatusValue", "bd", "1=2") // Forwards // RegisterHam(Ham_Spawn, "player", "fwd_PlayerSpawn", 1); register_forward(FM_Touch, "fwd_Touch"); // Messages // #if defined NORMAL_MOD || defined ZOMBIE_SWARM register_message(get_user_msgid("StatusIcon"), "Message_StatusIcon") #endif // Other // register_menucmd(register_menuid("Main Menu"), 1023, "main_menu_info") register_dictionary("gunxpmod.txt"); MySQLx_Init() SayTxT = get_user_msgid("SayText"); g_msgHudSync1 = CreateHudSyncObj() g_maxplayers = get_maxplayers(); menuCBH = menu_makecallback( "menucallback1" ); register_clcmd("say /tw","WM") register_clcmd("say_team /tw","WM") } public TW(id) { if(!is_user_alive(id)) return new menu = menu_create( "Choose your weapon", "menuhandler1" ); new level = PlayerLevel[id]//PlayerXp[ id ] / LEVELUPXP; for( new i=0; i < sizeof(WeaponsFUNC); i++ ) { /* for(new x;x<sizeof(WLVLS);x++) { menu_additem( menu, WeaponsFUNC[ i ][WName], _, level>=WLVLS[x], menuCBH ); } */ new text[512] if(level<WeaponsFUNC[ i ][WLevel]) formatex(text,charsmax(text),"\w[\yLOCKED\w]\r %s\w [\dAvailable on level:\r %d\w]",WeaponsFUNC[ i ][WName],WeaponsFUNC[ i ][WLevel]) menu_additem( menu, WeaponsFUNC[ i ][WName], _, _, menuCBH ); } menu_display( id, menu, 0); } public menuhandler1( id, menu, item ) { if(item == MENU_EXIT||!is_user_alive(id)) { menu_destroy(menu) return PLUGIN_HANDLED } if(/*item == */user_has_weapon(id,WeaponsFUNC[item][WCCode])) { client_print(id,print_chat, "%s You already have: %s",PLUG_TAG, WeaponsFUNC[item][WName]); menu_destroy(menu) return PLUGIN_HANDLED } //Set_WP( id, WeaponsFUNC[item][WTCode],WeaponsFUNC[item][WCCode] ); client_print(id,print_chat, "%s The weapon you chose is: %s",PLUG_TAG, WeaponsFUNC[item][WName]); menu_destroy(menu); return PLUGIN_HANDLED } public menucallback1( id, menu, item ) { static szInfo[8], iAccess, iCallback; menu_item_getinfo(menu, item, iAccess, szInfo, charsmax(szInfo), .callback = iCallback); /*static iType; iType = str_to_num(szInfo);*/ new level = PlayerLevel[ id ]; if( WeaponsFUNC[item][WLevel] > level /*/ SKINWPEVELCHANGE||item == settingH[id]*/ ) return ITEM_DISABLED; return ITEM_ENABLED; } // Main Menu Level Style public show_main_menu_level(id) { if ( !is_user_alive(id) ) return; new szInfo[60], szChooseT[40], szLastG[40]; formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] ); new menu = menu_create(szInfo , "main_menu_level"); formatex(szChooseT, charsmax(szChooseT), "%L", LANG_SERVER, "CHOOSE_TEXT"); menu_additem(menu, szChooseT, "1", 0); formatex(szLastG, charsmax(szLastG), "%L", LANG_SERVER, "LAST_GUNS"); menu_additem(menu, szLastG, "2", 0); new szExit[15]; formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU"); menu_setprop(menu, MPROP_EXITNAME, szExit); menu_display(id , menu , 0); } public main_menu_level(id , menu , item) { if ( !is_user_alive(id) ) { return PLUGIN_HANDLED; } #if defined ZOMBIE_PLAGUE if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T ) return PLUGIN_HANDLED; #endif if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[6], iName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,5, iName, 63, callback); new item_id = str_to_num(data); switch (item_id) { case 1: // show pistols { show_menu_level_pistol(id); } case 2: // last weapons { if ( PlayerLevel[id] > MAX_PISTOLS_MENU - 1 ) { give_weapon_menu(id, g_remember_selection[id], 1, 1); give_weapon_menu(id, g_remember_selection_pistol[id], 0, 0); } else if ( PlayerLevel[id] < MAX_PISTOLS_MENU ) { give_weapon_menu(id, g_remember_selection_pistol[id], 1, 1); } } } menu_destroy(menu); return PLUGIN_HANDLED; } // Menu Level Style Pistols public show_menu_level_pistol(id) { if ( !is_user_alive(id) ) return; new szInfo[60]; formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] ); new menu = menu_create(szInfo , "pistol_menu"); for (new item_id = 0; item_id < MAX_PISTOLS_MENU; item_id++) { new szItems[60], szTempid[32]; if ( PlayerLevel[id] >= GUN_LEVELS[item_id] ) { formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "ACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] ) num_to_str(item_id, szTempid, charsmax(szTempid) ); menu_additem(menu, szItems, szTempid, 0); } else { formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "INACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] ) menu_additem(menu, szItems, "999", 0, menu_makecallback("CallbackMenu")); } } new szNext[15], szBack[15], szExit[15]; formatex(szBack, charsmax(szBack), "%L", LANG_SERVER, "BACK_MENU"); formatex(szNext, charsmax(szNext), "%L", LANG_SERVER, "NEXT_MENU"); formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU"); menu_setprop(menu, MPROP_BACKNAME, szBack) menu_setprop(menu, MPROP_NEXTNAME, szNext) menu_setprop(menu, MPROP_EXITNAME, szExit) menu_display(id , menu , 0); } public pistol_menu(id , menu , item) { if ( !is_user_alive(id) ) { return PLUGIN_HANDLED; } #if defined ZOMBIE_PLAGUE if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T ) return PLUGIN_HANDLED; #endif if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[6], iName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,5, iName, 63, callback); new item_id = str_to_num(data); g_remember_selection_pistol[id] = item_id; give_weapon_menu(id, item_id, 1, 1); if ( PlayerLevel[id] > MAX_PISTOLS_MENU - 1 ) { show_menu_level(id); } menu_destroy(menu); return PLUGIN_HANDLED; } // Menu Level Style Primary public show_menu_level(id) { if ( !is_user_alive(id) || PlayerLevel[id] < MAX_PISTOLS_MENU ) return; new szInfo[100]; formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] ); new menu = menu_create(szInfo , "level_menu"); for (new item_id = MAX_PISTOLS_MENU; item_id < MAXLEVEL; item_id++) { new szItems[512], szTempid[32]; if ( PlayerLevel[id] >= GUN_LEVELS[item_id] ) { formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "ACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] ) num_to_str(item_id, szTempid, charsmax(szTempid) ); menu_additem(menu, szItems, szTempid, 0); } else { formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "INACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] ) menu_additem(menu, szItems, "999", 0, menu_makecallback("CallbackMenu")); } } new szNext[15], szBack[15], szExit[15]; formatex(szBack, charsmax(szBack), "%L", LANG_SERVER, "BACK_MENU"); formatex(szNext, charsmax(szNext), "%L", LANG_SERVER, "NEXT_MENU"); formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU"); menu_setprop(menu, MPROP_BACKNAME, szBack) menu_setprop(menu, MPROP_NEXTNAME, szNext) menu_setprop(menu, MPROP_EXITNAME, szExit) menu_display(id , menu , 0); } public level_menu(id , menu , item) { if ( !is_user_alive(id) || PlayerLevel[id] < MAX_PISTOLS_MENU ) { return PLUGIN_HANDLED; } #if defined ZOMBIE_PLAGUE if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T ) return PLUGIN_HANDLED; #endif if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[6], iName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,5, iName, 63, callback); new item_id = str_to_num(data); g_remember_selection[id] = item_id; give_weapon_menu(id, item_id, 0, 0); menu_destroy(menu); return PLUGIN_HANDLED; } public CallbackMenu(id, menu, item) { return ITEM_DISABLED; } // Selected by menu or remember selection and give item public give_weapon_menu(id, selection, strip, givegren) { #if defined ZOMBIE_SWARM if( is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && get_pcvar_num(p_Enabled) ) { if ( strip ) { StripPlayerWeapons(id); } if ( get_pcvar_num(enable_grenades) && givegren ) { give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]); give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]); give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]); give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]); } give_item(id, WEAPONCONST[selection]); cs_set_user_bpammo(id, AMMOCONST[selection], AMMO2CONST[selection]) } #endif #if defined ZOMBIE_INFECTION || defined NORMAL_MOD if(is_user_alive(id) && get_pcvar_num(p_Enabled)) { if ( strip ) { StripPlayerWeapons(id); } if ( get_pcvar_num(enable_grenades) && givegren ) { give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]); give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]); give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]); give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]); } give_item(id, WEAPONCONST[selection]); cs_set_user_bpammo(id, AMMOCONST[selection], AMMO2CONST[selection]) } #endif } public plugin_natives() { // Player natives // register_native("get_user_xp", "native_get_user_xp", 1); register_native("set_user_xp", "native_set_user_xp", 1); register_native("get_user_level", "native_get_user_level", 1); register_native("set_user_level", "native_set_user_level", 1); register_native("get_user_max_level", "native_get_user_max_level", 1); } public plugin_precache() { levelspr = engfunc(EngFunc_PrecacheModel, "sprites/xfire.spr"); levelspr2 = engfunc(EngFunc_PrecacheModel, "sprites/xfire2.spr"); engfunc(EngFunc_PrecacheSound, LevelUp); for(new i; i < sizeof(WeaponsFUNC); i++) { if(WeaponsFUNC[i][0]) { precache_model(WeaponsFUNC[i][VModel]) precache_model(WeaponsFUNC[i][PModel]) precache_model(WeaponsFUNC[i][WModel]) } } } public plugin_cfg() { new ConfDir[32], File[192]; get_configsdir( ConfDir, charsmax( ConfDir ) ); formatex( File, charsmax( File ), "%s/gunxpmod.cfg", ConfDir ); if( !file_exists( File ) ) { server_print( "File %s doesn't exist!", File ); write_file( File, "", -1 ); } else { server_print( "%s successfully loaded.", File ); server_cmd( "exec %s", File ); } //Open our vault and have g_Vault store the handle. g_Vault = nvault_open( "gunxpmod" ); //Make the plugin error if vault did not successfully open if ( g_Vault == INVALID_HANDLE ) set_fail_state( "Error opening GunXpMod nVault, file does not exist!" ); } public plugin_end() { //Close the vault when the plugin ends (map change\server shutdown\restart) nvault_close( g_Vault ); } public client_connect(id) { g_remember_selection[id] = MAX_PISTOLS_MENU; g_remember_selection_pistol[id] = 0; LoadLevel(id) } public client_disconnect(id) { SaveLevel(id) PlayerXp[id] = 0; PlayerLevel[id] = 0; remove_task( TASK_SHOW_LEVEL + id ); } public Message_StatusIcon(iMsgId, MSG_DEST, id) { if( !get_pcvar_num(p_Enabled) ) return PLUGIN_HANDLED; static szIcon[5] get_msg_arg_string(2, szIcon, 4) if( szIcon[0] == 'b' && szIcon[2] == 'y' && szIcon[3] == 'z' ) { if( get_msg_arg_int(1)) { fm_cs_set_user_nobuy(id) return PLUGIN_HANDLED; } } return PLUGIN_CONTINUE; } public fwd_Touch(ent, id) { if (!is_user_alive(id) || !pev_valid( ent ) ) return FMRES_IGNORED; static szEntModel[32]; pev( ent , pev_model , szEntModel , 31 ); for (new level_equip_id = PlayerLevel[id] + 1; level_equip_id < MAXLEVEL; level_equip_id++) { if ( equali( szEntModel , WEAPONMDL[level_equip_id] ) ) { return FMRES_SUPERCEDE; } } return FMRES_IGNORED; } public fwd_PlayerSpawn(id) { if( !get_pcvar_num(p_Enabled) || !is_user_alive(id) ) return; g_kills[id] = 0 #if defined ZOMBIE_SWARM if ( !get_pcvar_num(level_style) && cs_get_user_team(id) == CS_TEAM_CT ) { StripPlayerWeapons(id); set_task(2.0, "show_main_menu_level", id) } #endif #if defined NORMAL_MOD || defined ZOMBIE_INFECTION if ( !get_pcvar_num(level_style)) { StripPlayerWeapons(id); set_task(2.0, "show_main_menu_level", id) } #endif if( get_pcvar_num(show_level_text) ) { remove_task( TASK_SHOW_LEVEL + id ); set_task(0.1, "task_show_level", TASK_SHOW_LEVEL + id) } #if defined ZOMBIE_SWARM if ( get_pcvar_num(level_style) && cs_get_user_team(id) == CS_TEAM_CT ) { set_task(0.3, "give_weapon", id); } #endif #if defined NORMAL_MOD || defined ZOMBIE_INFECTION if ( get_pcvar_num(level_style) ) { set_task(0.3, "give_weapon", id); } #endif } #if defined ZOMBIE_PLAGUE public zp_user_humanized_post(id, survivor) { if( !get_pcvar_num(p_Enabled) || !is_user_alive(id) ) return; set_task(1.0, "show_main_menu_level", id); } #endif #if defined ZOMBIE_BIOHAZARD public event_infect(g_victim, g_attacker) { if( !get_pcvar_num(p_Enabled) ) return; new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple) + get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0 new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra) + get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0 if((1 <= g_attacker <= g_maxplayers)) { if(g_victim != g_attacker) { g_kills[g_attacker]++; if(PlayerLevel[g_attacker] < MAXLEVEL-1) { if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA) { PlayerXp[g_attacker] += get_pcvar_num(admin_xp) } if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) ) { PlayerXp[g_attacker] += counted_triple set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0) show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0)) } else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) ) { PlayerXp[g_attacker] += counted_ultra set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0) show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0)) } else { PlayerXp[g_attacker] += get_pcvar_num(xp_kill) set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0) show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) ) } check_level(g_attacker) } } } } #endif #if defined ZOMBIE_PLAGUE public zp_user_infected_post(g_victim, g_attacker) { if( !get_pcvar_num(p_Enabled) ) return; new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple) new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra) if((1 <= g_attacker <= g_maxplayers)) { if(g_victim != g_attacker) { g_kills[g_attacker]++; if(PlayerLevel[g_attacker] < MAXLEVEL-1) { if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA) { PlayerXp[g_attacker] += get_pcvar_num(admin_xp) } if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) ) { PlayerXp[g_attacker] += counted_triple set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0) show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0)) } else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) ) { PlayerXp[g_attacker] += counted_ultra set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0) show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0)) } else { PlayerXp[g_attacker] += get_pcvar_num(xp_kill) set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0) show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) ) } check_level(g_attacker) } } } } #endif public event_deathmsg() { if( !get_pcvar_num(p_Enabled) ) return; new g_attacker = read_data(1); new g_victim = read_data(2); new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple) new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra) if((1 <= g_attacker <= g_maxplayers)) { if(g_victim != g_attacker) { g_kills[g_attacker]++; if(PlayerLevel[g_attacker] < MAXLEVEL-1) { if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA) { PlayerXp[g_attacker] += get_pcvar_num(admin_xp) } if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) ) { PlayerXp[g_attacker] += counted_triple set_hudmessage(0, 40, 255, 0.50, 0.33, 1, 2.0, 2.0) show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0)) } else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) ) { PlayerXp[g_attacker] += counted_ultra set_hudmessage(255, 30, 0, 0.50, 0.33, 1, 2.0, 2.0) show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0)) } else { PlayerXp[g_attacker] += get_pcvar_num(xp_kill) set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0) show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) ) } check_level(g_attacker) } } } } public Event_StatusValue(id) { new target = read_data(2) if(target != id && target != 0 && get_pcvar_num(p_Enabled)) { static sName[32]; get_user_name(target, sName, 31) set_hudmessage(255, 255, 255, 0.6, -1.0, 0, 0.0, 6.0, 0.0, 0.0, 2) ShowSyncHudMsg(id, g_msgHudSync1, "%L", LANG_SERVER, "LEVEL_TEXT", sName, PlayerLevel[target], RANKLEVELS[PlayerLevel[target]]) } } public task_show_level(task) { new id = task - TASK_SHOW_LEVEL if(!is_user_alive(id) || !get_pcvar_num(show_level_text) || !get_pcvar_num(p_Enabled) ) return; set_hudmessage(255, 0, 0, 0.02, 0.33, 0, 0.0, 0.3, 0.0, 0.0) ShowSyncHudMsg(id, g_msgHudSync1 , "%L", LANG_SERVER, "LEVEL_HUD_TEXT", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]], RANK[PlayerLevel[id]], RANKLEVELS[PlayerLevel[id]]) set_task(0.1, "task_show_level", TASK_SHOW_LEVEL + id) } public showlevel(id) { if ( !get_pcvar_num(p_Enabled) || get_pcvar_num(show_level_text) ) return PLUGIN_HANDLED; client_printcolor(id, "%L", LANG_SERVER, "LEVEL_TEXT2", PlayerLevel[id] , PlayerXp[id], LEVELS[PlayerLevel[id]]); client_printcolor(id, "%L", LANG_SERVER, "LEVEL_TEXT3", RANK[PlayerLevel[id]], RANKLEVELS[PlayerLevel[id]]); return PLUGIN_HANDLED; } public descriptionx(id) { new szMotd[2048], szTitle[64], iPos = 0 format(szTitle, 63, "Info") iPos += format(szMotd[iPos], 2047-iPos, "<html><head><style type=^"text/css^">pre{color:#FFB000;}body{background:#000000;margin-left:8px;margin-left:0px;}</style></head><pre><body>") iPos += format(szMotd[iPos], 2047-iPos, "^n^n<b>%s</b>^n^n", szTitle) iPos += format(szMotd[iPos], 2047-iPos, "%L^n", LANG_SERVER, "DESCRIPTION") iPos += format(szMotd[iPos], 2047-iPos, "%L", LANG_SERVER, "DESCRIPTION2") show_motd(id, szMotd, szTitle) return PLUGIN_HANDLED; } public check_level(id) { if(PlayerLevel[id] < MAXLEVEL-1 && get_pcvar_num(p_Enabled)) { while(PlayerXp[id] >= LEVELS[PlayerLevel[id]]) { PlayerLevel[id]++; if(is_user_alive(id)) { if ( get_pcvar_num(level_style) ) { give_weapon(id); } new p_origin[3]; get_user_origin(id, p_origin, 0); set_sprite(p_origin, levelspr, 30) set_sprite(p_origin, levelspr2, 30) } emit_sound(id, CHAN_ITEM, LevelUp, 1.0, ATTN_NORM, 0, PITCH_NORM); static name[32] ; get_user_name(id, name, charsmax(name)); client_printcolor(0, "%L", LANG_SERVER, "LEVEL_UP", name, PlayerLevel[id]); } } } // Main Menu Info public show_main_menu_info(id) { if ( !get_pcvar_num(p_Enabled) ) return; static menu[510], len; len = 0; new xKeys3 = MENU_KEY_0|MENU_KEY_1; // Title len += formatex(menu[len], sizeof menu - 1 - len, "%L", LANG_SERVER, "TITLE_MENU_INFO") len += formatex(menu[len], sizeof menu - 1 - len, "\r1. \w%L", id, "INFO") if ( get_pcvar_num(show_rank) ) { xKeys3 |= (MENU_KEY_2) len += formatex(menu[len], sizeof menu - 1 - len, "^n\r2. \wTop 20^n") } else { len += formatex(menu[len], sizeof menu - 1 - len, "^n\d2. Top 20^n") } if(find_plugin_byfile("gunxpmod_shop.amxx") != INVALID_PLUGIN_ID) { xKeys3 |= (MENU_KEY_3) len += formatex(menu[len], sizeof menu - 1 - len, "\r3. \w%L^n", id, "ITEM_LIST") if ( is_user_alive(id) ) { xKeys3 |= (MENU_KEY_4) len += formatex(menu[len], sizeof menu - 1 - len, "\r4. \w%L^n", id, "UNLOCKS_SHOP_TEXT") } } len += formatex(menu[len], sizeof menu - 1 - len, "^n^n\r0.\w %L", id, "EXIT_MENU") show_menu(id, xKeys3, menu, -1, "Main Menu") } public main_menu_info(id, key) { switch (key) { case 0: { show_main_menu_info(id) descriptionx(id) } case 1: { showtop20(id) show_main_menu_info(id) } case 2: { show_main_menu_info(id) if(callfunc_begin( "display_items","") == 1) { callfunc_push_int( id ); callfunc_end(); } } case 3: { if(callfunc_begin("item_upgrades","") == 1) { callfunc_push_int( id ); callfunc_end(); } } case 9: { return PLUGIN_HANDLED; } } return PLUGIN_HANDLED; } public give_weapon(id) { #if defined ZOMBIE_SWARM if( is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && get_pcvar_num(p_Enabled)) { StripPlayerWeapons(id); if ( get_pcvar_num(enable_grenades) && get_pcvar_num(level_style) ) { give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]); give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]); give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]); give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]); } give_item(id, WEAPONCONST[PlayerLevel[id]]); cs_set_user_bpammo(id, AMMOCONST[PlayerLevel[id]], AMMO2CONST[PlayerLevel[id]]) } #endif #if defined ZOMBIE_INFECTION || defined NORMAL_MOD if(is_user_alive(id) && get_pcvar_num(p_Enabled)) { StripPlayerWeapons(id); if ( get_pcvar_num(enable_grenades) && get_pcvar_num(level_style) ) { give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]); give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]); give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]); give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]); } give_item(id, WEAPONCONST[PlayerLevel[id]]); cs_set_user_bpammo(id, AMMOCONST[PlayerLevel[id]], AMMO2CONST[PlayerLevel[id]]) } #endif } public set_sprite(p_origin[3], sprite, radius) { // Explosion message_begin(MSG_BROADCAST, SVC_TEMPENTITY, p_origin) write_byte(TE_EXPLOSION) write_coord(p_origin[0]) write_coord(p_origin[1]) write_coord(p_origin[2]) write_short(sprite) write_byte(radius) write_byte(15) write_byte(4) message_end() } //Shows Top 20 public showtop20(id) { if( !get_pcvar_num(p_Enabled) && !get_pcvar_num(show_rank) ) return; static Sort[33][2]; new players[32],num,count,index; get_players(players,num); for(new i = 0; i < num; i++) { index = players; Sort[count][0] = index; Sort[count][1] = PlayerXp[index]; count++; } SortCustom2D(Sort,count,"CompareXp"); new motd[1501],iLen; iLen = formatex(motd, sizeof motd - 1,"<body bgcolor=#000000><font color=#98f5ff><pre>"); iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"%s %-22.22s %3s^n", "#", "Name", "# Experience"); new y = clamp(count,0,20); new name[32],kindex; for(new x = 0; x < y; x++) { kindex = Sort[x][0]; get_user_name(kindex,name,sizeof name - 1); iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"%d %-22.22s %d^n", x + 1, name, Sort[x][1]); } iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"</body></font></pre>"); show_motd(id,motd, "GunXpMod Top 20"); } public CompareXp(elem1[], elem2[]) { if(elem1[1] > elem2[1]) return -1; else if(elem1[1] < elem2[1]) return 1; return 0; } // Command to set player Level public cmd_give_level(id, level, cid) { if( !cmd_access(id, level, cid, 3) || !get_pcvar_num(p_Enabled) ) { return PLUGIN_HANDLED; } new Arg1[64], Target read_argv(1, Arg1, 63) Target = cmd_target(id, Arg1, 0) new iLevel[32], Value read_argv(2, iLevel, 31) Value = str_to_num(iLevel) if(iLevel[0] == '-') { console_print(id, "You can't have a '-' in the value!") return PLUGIN_HANDLED; } if(!Target) { console_print(id, "Target not found!") return PLUGIN_HANDLED; } if(Value > MAXLEVEL-1) { console_print(id, "You can't set a more than %d!", MAXLEVEL-1) return PLUGIN_HANDLED; } if(Value < 1) { console_print(id, "You can't set less than 1!") return PLUGIN_HANDLED; } new AdminName[32] get_user_name(id, AdminName, 31) new TargetName[32] get_user_name(Target, TargetName, 31) PlayerLevel[Target] = Value - 1 PlayerXp[Target] = LEVELS[PlayerLevel[Target]] check_level(Target) client_printcolor(Target, "/gADMIN: /ctr%s /yhas set your level to /g%d", AdminName, Value) return PLUGIN_HANDLED; } // ============================================================// // [~ Saving datas ~] // // ============================================================// public MySQLx_Init() { if ( !get_pcvar_num(p_Enabled) || !get_pcvar_num(save_type) ) return; new szHost[64], szUser[32], szPass[32], szDB[128]; get_pcvar_string( mysqlx_host, szHost, charsmax( szHost ) ); get_pcvar_string( mysqlx_user, szUser, charsmax( szUser ) ); get_pcvar_string( mysqlx_pass, szPass, charsmax( szPass ) ); get_pcvar_string( mysqlx_db, szDB, charsmax( szDB ) ); g_hTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDB ); for ( new i = 0; i < sizeof szTables; i++ ) { SQL_ThreadQuery( g_hTuple, "QueryCreateTable", szTables) } } public QueryCreateTable( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) { if( iFailState == TQUERY_CONNECT_FAILED || iFailState == TQUERY_QUERY_FAILED ) { log_amx( "%s", szError ); return; } } SaveLevel(id) { new szAuth[33]; new szKey[64]; if ( get_pcvar_num(savexp) == 0 ) { get_user_ip( id, szAuth , charsmax(szAuth), 1); formatex( szKey , 63 , "%s-IP" , szAuth); } else if ( get_pcvar_num(savexp) == 1 ) { get_user_authid( id , szAuth , charsmax(szAuth) ); formatex( szKey , 63 , "%s-ID" , szAuth); } else if ( get_pcvar_num(savexp) == 2 ) { get_user_name( id, szAuth , charsmax(szAuth) ); formatex( szKey , 63 , "%s-NAME" , szAuth); } if ( !get_pcvar_num(save_type) ) { new szData[256]; formatex( szData , 255 , "%i#%i#" , PlayerLevel[id], PlayerXp[id] ); nvault_set( g_Vault , szKey , szData ); } else { static szQuery[ 128 ]; formatex( szQuery, 127, "REPLACE INTO `mytable` (`player_id`, `player_level`, `player_xp`) VALUES ('%s', '%d', '%d');", szAuth , PlayerLevel[id], PlayerXp[id] ); SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery); } } LoadLevel(id) { new szAuth[33]; new szKey[40]; if ( get_pcvar_num(savexp) == 0 ) { get_user_ip( id, szAuth , charsmax(szAuth), 1); formatex( szKey , 63 , "%s-IP" , szAuth); } else if ( get_pcvar_num(savexp) == 1 ) { get_user_authid( id , szAuth , charsmax(szAuth) ); formatex( szKey , 63 , "%s-ID" , szAuth); } else if ( get_pcvar_num(savexp) == 2 ) { get_user_name( id, szAuth , charsmax(szAuth) ); formatex( szKey , 63 , "%s-NAME" , szAuth); } if ( !get_pcvar_num(save_type) ) { new szData[256]; formatex(szData , 255, "%i#%i#", PlayerLevel[id], PlayerXp[id]) nvault_get(g_Vault, szKey, szData, 255) replace_all(szData , 255, "#", " ") new xp[32], level[32] parse(szData, level, 31, xp, 31) PlayerLevel[id] = str_to_num(level) PlayerXp[id] = str_to_num(xp) } else { static szQuery[ 128 ], iData[ 1 ]; formatex( szQuery, 127, "SELECT `player_level`, `player_xp` FROM `mytable` WHERE ( `player_id` = '%s' );", szAuth ); iData[ 0 ] = id; SQL_ThreadQuery( g_hTuple, "QuerySelectData", szQuery, iData, 1 ); } } public QuerySelectData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) { if( iFailState == TQUERY_CONNECT_FAILED || iFailState == TQUERY_QUERY_FAILED ) { log_amx( "%s", szError ); return; } else { new id = iData[ 0 ]; new ColLevel = SQL_FieldNameToNum(hQuery, "player_level") new ColXp = SQL_FieldNameToNum(hQuery, "player_xp") while (SQL_MoreResults(hQuery)) { PlayerLevel[id] = SQL_ReadResult(hQuery, ColLevel); PlayerXp[id] = SQL_ReadResult(hQuery, ColXp); SQL_NextRow(hQuery) } } } public QuerySetData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) { if( iFailState == TQUERY_CONNECT_FAILED || iFailState == TQUERY_QUERY_FAILED ) { log_amx( "%s", szError ); return; } } // ============================================================// // [~ Natives ~] // // ============================================================// // Native: get_user_xp public native_get_user_xp(id) { return PlayerXp[id]; } // Native: set_user_xp public native_set_user_xp(id, amount) { PlayerXp[id] = amount; } // Native: get_user_level public native_get_user_level(id) { return PlayerLevel[id]; } // Native: set_user_xp public native_set_user_level(id, amount) { PlayerLevel[id] = amount; } // Native: Gets user level by Xp public native_get_user_max_level(id) { return LEVELS[PlayerLevel[id]]; } // ============================================================// // [~ Stocks ~] // // ============================================================// stock client_printcolor(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg,190,input,3); replace_all(msg,190,"/g","^4");// green txt replace_all(msg,190,"/y","^1");// orange txt replace_all(msg,190,"/ctr","^3");// team txt replace_all(msg,190,"/w","^0");// team txt if (id) players[0] = id; else get_players(players,count,"ch"); for (new i = 0; i < count; i++) if (is_user_connected(players)) { message_begin(MSG_ONE_UNRELIABLE, SayTxT, _, players); write_byte(players); write_string(msg); message_end(); } } public StripPlayerWeapons(id) { strip_user_weapons(id) set_pdata_int(id, OFFSET_PRIMARYWEAPON, 0) give_item(id, "weapon_knife"); }
"Am făcut lucruri pe care acum le regret. Dar dacă nu învăţ din greşeli o să le repet."
- levin
- Scripter eXtreamCS
- Posts: 3850
- Joined: 24 Aug 2011, 12:24
- Detinator Steam: Da
- CS Status: ♅
- Detinator server CS: ☯∴
- SteamID: 76561198063679589
- Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy - Location: ҳ̸Ҳ̸ҳ
- Discord: devilclass
- Has thanked: 36 times
- Been thanked: 595 times
- Contact:
sper că am înțeles bine..
w_ nu știam că există..da mna
.sma
.cfg
w_ nu știam că există..da mna
.sma
Code: Select all
#include "gunxpmod.cfg"
#if defined ZOMBIE_BIOHAZARD
#include <biohazard>
#endif
#if defined ZOMBIE_PLAGUE
#include <zombieplague>
#endif
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <sqlx>
#include <nvault>
#include <colorchat>
#define PLUGIN "XP-Mod"
#define AUTHOR "-"
#define VERSION "2.5"
#define OFFSET_PRIMARYWEAPON 116
#define TASK_SHOW_LEVEL 10113
#define fm_cs_set_user_nobuy(%1) set_pdata_int(%1, 235, get_pdata_int(%1, 235) & ~(1<<0) ) //no weapon buy
new PlayerXp[33];
new PlayerLevel[33];
new g_Vault;
new g_remember_selection[33], g_kills[33], g_remember_selection_pistol[33];
new g_maxplayers, g_msgHudSync1, SayTxT, enable_grenades;
new levelspr, levelspr2, show_level_text, show_rank;
new savexp, save_type, xp_kill, xp_triple, enable_triple, triple_kills, xp_ultra, ultra_kills, enable_ultra, p_Enabled, level_style;
new enable_admin_xp, admin_xp;
/*================================================================================
[MySQLx Vars, other]
=================================================================================*/
new Handle:g_hTuple;
new mysqlx_host, mysqlx_user, mysqlx_db, mysqlx_pass;
new const szTables[][] =
{
"CREATE TABLE IF NOT EXISTS `mytable` ( `player_id` varchar(32) NOT NULL,`player_level` int(8) default NULL,`player_xp` int(16) default NULL,PRIMARY KEY (`player_id`) ) TYPE=MyISAM;"
}
enum _:MF
{
WName[32],
WCCode,
WTCode[32],
WAmmo,
WLevel,
VModel[32],
PModel[32],
WModel[32]/*,*/
}
new const WeaponsFUNC[/*MAXLEVEL*/][MF] = { //ARME PE LEVEL(meniu)
// NUME ARMA MENIU COD CSW COD WEAPON AMMO ARMA LEVEL NECESAR pentru ARMA MODEL ARMA V_ MODEL ARMA P_ MODEL ARMA W_
{ "GLOCK 18", CSW_GLOCK18, "weapon_glock18", 120, 1, "models/v_glock18.mdl", "models/p_glock18.mdl", "models/w_glock18.mdl" }/*,*/
};
/*
#define LEVELUPXP 400
#define SKINHATSLEVELCHANGE 30
new const WLVLS[MAXLEVEL]=//LVL ARME
{
0,//DEF
1,
2,
3
}*/
new menuCBH,bool:used[33]
enum _:ZMF
{
SKIN[32],
VKnife[32],
PKnife[32],
WKnife[32],
HP,
LVL
}
new const ZmFUNC[][ZMF]=
{
{// NUME SKIN(models/players/nume_skin/nume_skin.mdl) NUME CUTIT(v) NUME CUTIT(p) NUME CUTIT(w) HP START LEVEL pentru BENEFICII
"test_skin", "v_knife1", "p_knife1", "w_knife1", 1337, 1
}
}
/*inutile zic*/
new const AMMOCONST[MAXLEVEL] = { 10, 16, 23, 26, 10, 16, 17, 20, 8, 19, 28 }
new const WEAPONCONST[MAXLEVEL][] = {"weapon_glock18",
"weapon_usp",
"weapon_elite",
"weapon_deagle",
"weapon_tmp",
"weapon_mac10",
"weapon_mp5navy",
"weapon_m249",
"weapon_aug",
"weapon_m4a1",
"weapon_ak47"
}; // Give Weapons
new const WEAPONMDL[MAXLEVEL][] = { "models/w_glock18.mdl",
"models/w_usp.mdl",
"models/w_elite",
"models/w_deagle.mdl",
"models/w_tmp10.mdl",
"models/w_mac10.mdl",
"models/w_mp5.mdl",
"models/w_m249.mdl",
"models/w_aug.mdl",
"models/w_m4a1.mdl",
"models/w_ak47.mdl"
}; // Blocks pick up weapon, don't change!
/*================================================================================
[Plugin natives,precache,init]
=================================================================================*/
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_cvar("gxm_version", VERSION, FCVAR_SPONLY|FCVAR_SERVER)
set_cvar_string("gxm_version", VERSION)
register_concmd("amx_level", "cmd_give_level", ADMIN_CFG, "<Nume Joc> <NR LVL>" );
register_clcmd("say /lvl", "showlevel");
register_clcmd("say /top20","showtop20");
register_clcmd("say /menu","show_main_menu_info");
p_Enabled = register_cvar( "xp_enable", "1" ); // Plugin enabled? 1 = Yes, 0 = No.
save_type = register_cvar("xp_savetype","0"); // Save Xp to : 1 = MySQL, 0 = NVault.
savexp = register_cvar("xp_save","2"); // Save Xp by : 1 = SteamID, 0 = IP, 2 = Nicks
xp_kill = register_cvar("xp_nivel","10"); // How much xp gain if you killed someone?
show_level_text = register_cvar("xp_level_text","0"); // Show your level by : 1 = HUD message, 0 = Simple colored text message.
show_rank = register_cvar("xp_show_rank","1"); // Show rank in /top20? 1 = Yes, 0 = No.
level_style = register_cvar("xp_level_style","0"); // You will gain each level new gun : 1 = Yes, 0 = No,select your gun by menu.
enable_grenades = register_cvar("xp_grenades","1"); // Give to player grenades? 1 = Yes, 0 = No.
enable_triple = register_cvar("xp_triple","1"); // Enable Triple Kill bonus xp? 1 = Yes, 0 = No.
xp_triple = register_cvar("xp_triple_xp","3"); // How much bonus xp give for Triple Kill?
triple_kills = register_cvar("xp_triple_kills","3"); // How much kills needed to give bonus xp?
enable_ultra = register_cvar("xp_ultra","1"); // Enable Ultra Kill bonus xp? 1 = Yes, 0 = No.
xp_ultra = register_cvar("xp_ultra_xp","5"); // How much bonus xp give for Ultra Kill?
ultra_kills = register_cvar("xp_ultra_kills","6"); // How much kills needed to give bonus xp?
enable_admin_xp = register_cvar("xp_admin_xp","1"); // Enable Extra xp for killing? 1 = Yes, 0 = No.
admin_xp = register_cvar("xp_extra_xp","10"); // How much extra xp give to admins?
// SQLx cvars
mysqlx_host = register_cvar ("xp_host", ""); // The host from the db
mysqlx_user = register_cvar ("xp_user", ""); // The username from the db login
mysqlx_pass = register_cvar ("xp_pass", ""); // The password from the db login
mysqlx_db = register_cvar ("xp_dbname", ""); // The database name
// Events //
register_event("DeathMsg", "event_deathmsg", "a");
register_event("StatusValue", "Event_StatusValue", "bd", "1=2")
// Forwards //
RegisterHam(Ham_Spawn, "player", "fwd_PlayerSpawn", 1);
register_forward(FM_Touch, "fwd_Touch");
// Messages //
#if defined NORMAL_MOD || defined ZOMBIE_SWARM
register_message(get_user_msgid("StatusIcon"), "Message_StatusIcon")
#endif
// Other //
register_menucmd(register_menuid("Main Menu"), 1023, "main_menu_info")
register_dictionary("gunxpmod.txt");
MySQLx_Init()
SayTxT = get_user_msgid("SayText");
g_msgHudSync1 = CreateHudSyncObj()
g_maxplayers = get_maxplayers();
menuCBH = menu_makecallback( "menucallback1" );//teste
register_clcmd("say /tw","WM")
register_clcmd("say_team /tw","WM")
register_event("SendAudio", "Win_T", "a", "2=%!MRAD_terwin")
register_event("SendAudio", "Win_CT", "a", "2=%!MRAD_ctwin")
register_event("HLTV", "event_new_round", "a", "1=0", "2=0")
RegisterHam( Ham_Item_Deploy, "weapon_knife", "Ham_KnifeDeployPost", 1 );
register_forward(FM_SetModel, "fw_SetModel")
}
public event_new_round() for(new id=1;id<=get_maxplayers();id++) used[id]=false
public WM(id)
{
if(!is_user_alive(id)) return
new menu = menu_create( "Choose your weapon", "menuhandler1" );
new level = PlayerLevel[id]//PlayerXp[ id ] / LEVELUPXP;
for( new i=0; i < sizeof(WeaponsFUNC); i++ )
{
/*
for(new x;x<sizeof(WLVLS);x++)
{
menu_additem( menu, WeaponsFUNC[ i ][WName], _, level>=WLVLS[x], menuCBH );
}
*/
new text[512]
if(level<WeaponsFUNC[ i ][WLevel]) formatex(text,charsmax(text),"\w[\yLOCKED\w]\r %s\w [\dAvailable on level:\r %d\w]",WeaponsFUNC[ i ][WName],WeaponsFUNC[ i ][WLevel])
menu_additem( menu, WeaponsFUNC[ i ][WName], _, _, menuCBH );
}
menu_display( id, menu, 0);
}
public menuhandler1( id, menu, item )
{
if(item == MENU_EXIT||!is_user_alive(id))
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
if(/*item == */user_has_weapon(id,WeaponsFUNC[item][WCCode]))
{
client_print(id,print_chat, "%s You already have: %s",PLUG_TAG, WeaponsFUNC[item][WName]);
menu_destroy(menu)
return PLUGIN_HANDLED
}
Set_WP( id, WeaponsFUNC[item][WTCode],WeaponsFUNC[item][WCCode],WeaponsFUNC[item][WAmmo] );
client_print(id,print_chat, "%s The weapon you chose is: %s",PLUG_TAG, WeaponsFUNC[item][WName]);
menu_destroy(menu);
return PLUGIN_HANDLED
}
public menucallback1( id, menu, item )
{
static szInfo[8], iAccess, iCallback;
menu_item_getinfo(menu, item, iAccess, szInfo, charsmax(szInfo), .callback = iCallback);
/*static iType;
iType = str_to_num(szInfo);*/
new level = PlayerLevel[ id ];
if( WeaponsFUNC[item][WLevel] > level /*/ SKINWPEVELCHANGE||item == settingH[id]*/ ) return ITEM_DISABLED;
return ITEM_ENABLED;
}
stock Set_WP(const id,const WPName[]="",WPCode,WPAmmo)
{
if(!is_user_alive(id)) return
strip_user_weapons(id)
give_item(id,"weapon_knife")
give_item(id,WPName)
cs_set_user_bpammo(id,WPCode,WPAmmo)
}
// Main Menu Level Style
public show_main_menu_level(id)
{
if ( !is_user_alive(id) )
return;
new szInfo[60], szChooseT[40], szLastG[40];
formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] );
new menu = menu_create(szInfo , "main_menu_level");
formatex(szChooseT, charsmax(szChooseT), "%L", LANG_SERVER, "CHOOSE_TEXT");
menu_additem(menu, szChooseT, "1", 0);
formatex(szLastG, charsmax(szLastG), "%L", LANG_SERVER, "LAST_GUNS");
menu_additem(menu, szLastG, "2", 0);
new szExit[15];
formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU");
menu_setprop(menu, MPROP_EXITNAME, szExit);
menu_display(id , menu , 0);
}
public main_menu_level(id , menu , item)
{
if ( !is_user_alive(id) )
{
return PLUGIN_HANDLED;
}
#if defined ZOMBIE_PLAGUE
if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T )
return PLUGIN_HANDLED;
#endif
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new item_id = str_to_num(data);
switch (item_id)
{
case 1: // show pistols
{
if(!used[id]) show_menu_level_pistol(id);
}
case 2: // last weapons
{
if ( PlayerLevel[id] > MAX_PISTOLS_MENU - 1 )
{
give_weapon_menu(id, g_remember_selection[id], 1, 1);
give_weapon_menu(id, g_remember_selection_pistol[id], 0, 0);
}
else if ( PlayerLevel[id] < MAX_PISTOLS_MENU )
{
give_weapon_menu(id, g_remember_selection_pistol[id], 1, 1);
}
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
// Menu Level Style Pistols
public show_menu_level_pistol(id)
{
if ( !is_user_alive(id) )
return;
new szInfo[60];
formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] );
new menu = menu_create(szInfo , "pistol_menu");
for (new item_id = 0; item_id < MAX_PISTOLS_MENU; item_id++)
{
new szItems[60], szTempid[32];
if ( PlayerLevel[id] >= GUN_LEVELS[item_id] )
{
formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "ACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )
num_to_str(item_id, szTempid, charsmax(szTempid) );
menu_additem(menu, szItems, szTempid, 0);
}
else
{
formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "INACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )
menu_additem(menu, szItems, "999", 0, menu_makecallback("CallbackMenu"));
}
}
new szNext[15], szBack[15], szExit[15];
formatex(szBack, charsmax(szBack), "%L", LANG_SERVER, "BACK_MENU");
formatex(szNext, charsmax(szNext), "%L", LANG_SERVER, "NEXT_MENU");
formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU");
menu_setprop(menu, MPROP_BACKNAME, szBack)
menu_setprop(menu, MPROP_NEXTNAME, szNext)
menu_setprop(menu, MPROP_EXITNAME, szExit)
menu_display(id , menu , 0);
}
public pistol_menu(id , menu , item)
{
if ( !is_user_alive(id) )
{
return PLUGIN_HANDLED;
}
#if defined ZOMBIE_PLAGUE
if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T )
return PLUGIN_HANDLED;
#endif
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new item_id = str_to_num(data);
g_remember_selection_pistol[id] = item_id;
give_weapon_menu(id, item_id, 1, 1);
if ( PlayerLevel[id] > MAX_PISTOLS_MENU - 1 )///hmmm
{
show_menu_level(id);
}
used[id]=true
menu_destroy(menu);
return PLUGIN_HANDLED;
}
// Menu Level Style Primary
public show_menu_level(id)
{
if ( !is_user_alive(id) || PlayerLevel[id] < MAX_PISTOLS_MENU )
return;
new szInfo[100];
formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] );
new menu = menu_create(szInfo , "level_menu");
for (new item_id = MAX_PISTOLS_MENU; item_id < MAXLEVEL; item_id++)
{
new szItems[512], szTempid[32];
if ( PlayerLevel[id] >= GUN_LEVELS[item_id] )
{
formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "ACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )
num_to_str(item_id, szTempid, charsmax(szTempid) );
menu_additem(menu, szItems, szTempid, 0);
}
else
{
formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "INACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )
menu_additem(menu, szItems, "999", 0, menu_makecallback("CallbackMenu"));
}
}
new szNext[15], szBack[15], szExit[15];
formatex(szBack, charsmax(szBack), "%L", LANG_SERVER, "BACK_MENU");
formatex(szNext, charsmax(szNext), "%L", LANG_SERVER, "NEXT_MENU");
formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU");
menu_setprop(menu, MPROP_BACKNAME, szBack)
menu_setprop(menu, MPROP_NEXTNAME, szNext)
menu_setprop(menu, MPROP_EXITNAME, szExit)
menu_display(id , menu , 0);
}
public level_menu(id , menu , item)
{
if ( !is_user_alive(id) || PlayerLevel[id] < MAX_PISTOLS_MENU )
{
return PLUGIN_HANDLED;
}
#if defined ZOMBIE_PLAGUE
if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T )
return PLUGIN_HANDLED;
#endif
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new item_id = str_to_num(data);
g_remember_selection[id] = item_id;
give_weapon_menu(id, item_id, 0, 0);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public CallbackMenu(id, menu, item)
{
return ITEM_DISABLED;
}
// Selected by menu or remember selection and give item
public give_weapon_menu(id, selection, strip, givegren)
{
#if defined ZOMBIE_SWARM
if( is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && get_pcvar_num(p_Enabled) )
{
if ( strip )
{
StripPlayerWeapons(id);
}
if ( get_pcvar_num(enable_grenades) && givegren )
{
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
}
give_item(id, WEAPONCONST[selection]);
cs_set_user_bpammo(id, AMMOCONST[selection], AMMO2CONST[selection])
}
#endif
#if defined ZOMBIE_INFECTION || defined NORMAL_MOD
if(is_user_alive(id) && get_pcvar_num(p_Enabled))
{
if ( strip )
{
StripPlayerWeapons(id);
}
if ( get_pcvar_num(enable_grenades) && givegren )
{
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
}
give_item(id, WEAPONCONST[selection]);
cs_set_user_bpammo(id, AMMOCONST[selection], AMMO2CONST[selection])
}
#endif
}
public plugin_natives()
{
// Player natives //
register_native("get_user_xp", "native_get_user_xp", 1);
register_native("set_user_xp", "native_set_user_xp", 1);
register_native("get_user_level", "native_get_user_level", 1);
register_native("set_user_level", "native_set_user_level", 1);
register_native("get_user_max_level", "native_get_user_max_level", 1);
}
public plugin_precache()
{
levelspr = engfunc(EngFunc_PrecacheModel, "sprites/xfire.spr");
levelspr2 = engfunc(EngFunc_PrecacheModel, "sprites/xfire2.spr");
engfunc(EngFunc_PrecacheSound, LevelUp);
for(new i; i < sizeof(WeaponsFUNC); i++)
{
if(WeaponsFUNC[i][0])
{
precache_model(WeaponsFUNC[i][VModel])
precache_model(WeaponsFUNC[i][PModel])
precache_model(WeaponsFUNC[i][WModel])
}
}
for(new i; i < sizeof(ZmFUNC); i++)
{
precache_player_model(ZmFUNC[i][SKIN],1)
precache_player_model(ZmFUNC[i][VKnife],2)
precache_player_model(ZmFUNC[i][PKnife],2)
precache_player_model(ZmFUNC[i][WKnife],2)
}
}
precache_player_model(szModel[],mode)
{
static szFile[512]
switch(mode)
{
case 1:
{
formatex(szFile, charsmax(szFile), "models/player/%s/%s.mdl", szModel, szModel)
precache_model(szFile)
replace(szFile, charsmax(szFile), ".mdl", "T.mdl")
if(file_exists(szFile)) precache_model(szFile)
}
case 2:
{
formatex(szFile, charsmax(szFile), "models/%s/%s.mdl", szModel, szModel)
precache_model(szFile)
}
}
}
public plugin_cfg()
{
new ConfDir[32], File[192];
get_configsdir( ConfDir, charsmax( ConfDir ) );
formatex( File, charsmax( File ), "%s/gunxpmod.cfg", ConfDir );
if( !file_exists( File ) )
{
server_print( "File %s doesn't exist!", File );
write_file( File, "", -1 );
}
else
{
server_print( "%s successfully loaded.", File );
server_cmd( "exec %s", File );
}
//Open our vault and have g_Vault store the handle.
g_Vault = nvault_open( "gunxpmod" );
//Make the plugin error if vault did not successfully open
if ( g_Vault == INVALID_HANDLE )
set_fail_state( "Error opening GunXpMod nVault, file does not exist!" );
}
public plugin_end()
{
//Close the vault when the plugin ends (map change\server shutdown\restart)
nvault_close( g_Vault );
}
public client_connect(id)
{
g_remember_selection[id] = MAX_PISTOLS_MENU;
g_remember_selection_pistol[id] = 0;
LoadLevel(id)
}
public client_disconnect(id)
{
SaveLevel(id)
PlayerXp[id] = 0;
PlayerLevel[id] = 0;
remove_task( TASK_SHOW_LEVEL + id );
}
public Message_StatusIcon(iMsgId, MSG_DEST, id)
{
if( !get_pcvar_num(p_Enabled) )
return PLUGIN_HANDLED;
static szIcon[5]
get_msg_arg_string(2, szIcon, 4)
if( szIcon[0] == 'b' && szIcon[2] == 'y' && szIcon[3] == 'z' )
{
if( get_msg_arg_int(1))
{
fm_cs_set_user_nobuy(id)
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
}
public fwd_Touch(ent, id)
{
if (!is_user_alive(id) || !pev_valid( ent ) )
return FMRES_IGNORED;
static szEntModel[32];
pev( ent , pev_model , szEntModel , 31 );
for (new level_equip_id = PlayerLevel[id] + 1; level_equip_id < MAXLEVEL; level_equip_id++)
{
if ( equali( szEntModel , WEAPONMDL[level_equip_id] ) )
{
return FMRES_SUPERCEDE;
}
}
return FMRES_IGNORED;
}
public fw_SetModel(entity, model[])//dropped knife??for W_....
{
if(!pev_valid(entity)) return FMRES_IGNORED
for(new i; i < sizeof(ZmFUNC); i++)
{
if(!equali(model, ZmFUNC[i][WKnife])) return FMRES_IGNORED
new className[33]
pev(entity, pev_classname, className, 32)
// dropped weapons map weapons c4 + grenades
if(equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade"))
{
engfunc(EngFunc_SetModel, entity, ZmFUNC[i][WKnife])
return FMRES_SUPERCEDE
}
}
return FMRES_IGNORED
}
public Ham_KnifeDeployPost( iEnt )
{
new id = get_pdata_cbase( iEnt, 41,4 ); // m_pPlayer = 41 , 4 - linux offset...
if(!is_user_alive(id)) return
for(new i; i < sizeof(ZmFUNC); i++)
{
if(PlayerLevel[id]==ZmFUNC[i][LVL])
{
set_pev(id, pev_viewmodel2, ZmFUNC[i][VKnife])
set_pev(id, pev_weaponmodel2, ZmFUNC[i][PKnife]);
break
}
}
}
public fwd_PlayerSpawn(id)
{
if( !get_pcvar_num(p_Enabled) || !is_user_alive(id) )
return;
g_kills[id] = 0
/*switch(PlayerLevel[id])
{
}*/
for(new i; i < sizeof(ZmFUNC); i++)
{
if(PlayerLevel[id]==ZmFUNC[i][LVL])
{
cs_set_user_model(id,ZmFUNC[i][SKIN])
set_user_health(id,ZmFUNC[i][HP])
break
}
}
#if defined ZOMBIE_SWARM
if ( !get_pcvar_num(level_style) && cs_get_user_team(id) == CS_TEAM_CT )
{
StripPlayerWeapons(id);
set_task(2.0, "show_main_menu_level", id)
}
#endif
#if defined NORMAL_MOD || defined ZOMBIE_INFECTION
if ( !get_pcvar_num(level_style))
{
StripPlayerWeapons(id);
set_task(2.0, "show_main_menu_level", id)
}
#endif
if( get_pcvar_num(show_level_text) )
{
remove_task( TASK_SHOW_LEVEL + id );
set_task(0.1, "task_show_level", TASK_SHOW_LEVEL + id)
}
#if defined ZOMBIE_SWARM
if ( get_pcvar_num(level_style) && cs_get_user_team(id) == CS_TEAM_CT )
{
set_task(0.3, "give_weapon", id);
}
#endif
#if defined NORMAL_MOD || defined ZOMBIE_INFECTION
if ( get_pcvar_num(level_style) )
{
set_task(0.3, "give_weapon", id);
WM(id)
}
#endif
}
#if defined ZOMBIE_PLAGUE
public zp_user_humanized_post(id, survivor)
{
if( !get_pcvar_num(p_Enabled) || !is_user_alive(id) )
return;
set_task(1.0, "show_main_menu_level", id);
}
#endif
#if defined ZOMBIE_BIOHAZARD
public event_infect(g_victim, g_attacker)
{
if( !get_pcvar_num(p_Enabled) )
return;
new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple) + get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0
new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra) + get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0
if((1 <= g_attacker <= g_maxplayers))
{
if(g_victim != g_attacker)
{
g_kills[g_attacker]++;
if(PlayerLevel[g_attacker] < MAXLEVEL-1)
{
if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA)
{
PlayerXp[g_attacker] += get_pcvar_num(admin_xp)
}
if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) )
{
PlayerXp[g_attacker] += counted_triple
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
}
else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) )
{
PlayerXp[g_attacker] += counted_ultra
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
}
else
{
PlayerXp[g_attacker] += get_pcvar_num(xp_kill)
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) )
}
check_level(g_attacker)
}
}
}
}
#endif
#if defined ZOMBIE_PLAGUE
public zp_user_infected_post(g_victim, g_attacker)
{
if( !get_pcvar_num(p_Enabled) )
return;
new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple)
new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra)
if((1 <= g_attacker <= g_maxplayers))
{
if(g_victim != g_attacker)
{
g_kills[g_attacker]++;
if(PlayerLevel[g_attacker] < MAXLEVEL-1)
{
if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA)
{
PlayerXp[g_attacker] += get_pcvar_num(admin_xp)
}
if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) )
{
PlayerXp[g_attacker] += counted_triple
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
}
else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) )
{
PlayerXp[g_attacker] += counted_ultra
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
}
else
{
PlayerXp[g_attacker] += get_pcvar_num(xp_kill)
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) )
}
check_level(g_attacker)
}
}
}
}
#endif
public event_deathmsg()
{
if( !get_pcvar_num(p_Enabled) )
return;
new g_attacker = read_data(1);
new g_victim = read_data(2);
new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple)
new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra)
if((1 <= g_attacker <= g_maxplayers))
{
if(g_victim != g_attacker)
{
g_kills[g_attacker]++;
if(PlayerLevel[g_attacker] < MAXLEVEL-1)
{
if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA)
{
PlayerXp[g_attacker] += get_pcvar_num(admin_xp)
}
if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) )
{
PlayerXp[g_attacker] += counted_triple
set_hudmessage(0, 40, 255, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
}
else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) )
{
PlayerXp[g_attacker] += counted_ultra
set_hudmessage(255, 30, 0, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
}
else
{
PlayerXp[g_attacker] += get_pcvar_num(xp_kill)
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) )
}
check_level(g_attacker)
}
}
}
}
public Event_StatusValue(id)
{
new target = read_data(2)
if(target != id && target != 0 && get_pcvar_num(p_Enabled))
{
static sName[32];
get_user_name(target, sName, 31)
set_hudmessage(255, 255, 255, 0.6, -1.0, 0, 0.0, 6.0, 0.0, 0.0, 2)
ShowSyncHudMsg(id, g_msgHudSync1, "%L", LANG_SERVER, "LEVEL_TEXT", sName, PlayerLevel[target], RANKLEVELS[PlayerLevel[target]])
}
}
public task_show_level(task)
{
new id = task - TASK_SHOW_LEVEL
if(!is_user_alive(id) || !get_pcvar_num(show_level_text) || !get_pcvar_num(p_Enabled) )
return;
set_hudmessage(255, 0, 0, 0.02, 0.33, 0, 0.0, 0.3, 0.0, 0.0)
ShowSyncHudMsg(id, g_msgHudSync1 , "%L", LANG_SERVER, "LEVEL_HUD_TEXT", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]], RANK[PlayerLevel[id]], RANKLEVELS[PlayerLevel[id]])
set_task(0.1, "task_show_level", TASK_SHOW_LEVEL + id)
}
public showlevel(id)
{
if ( !get_pcvar_num(p_Enabled) || get_pcvar_num(show_level_text) )
return PLUGIN_HANDLED;
client_printcolor(id, "%L", LANG_SERVER, "LEVEL_TEXT2", PlayerLevel[id] , PlayerXp[id], LEVELS[PlayerLevel[id]]);
client_printcolor(id, "%L", LANG_SERVER, "LEVEL_TEXT3", RANK[PlayerLevel[id]], RANKLEVELS[PlayerLevel[id]]);
return PLUGIN_HANDLED;
}
public descriptionx(id)
{
new szMotd[2048], szTitle[64], iPos = 0
format(szTitle, 63, "Info")
iPos += format(szMotd[iPos], 2047-iPos, "<html><head><style type=^"text/css^">pre{color:#FFB000;}body{background:#000000;margin-left:8px;margin-left:0px;}</style></head><pre><body>")
iPos += format(szMotd[iPos], 2047-iPos, "^n^n<b>%s</b>^n^n", szTitle)
iPos += format(szMotd[iPos], 2047-iPos, "%L^n", LANG_SERVER, "DESCRIPTION")
iPos += format(szMotd[iPos], 2047-iPos, "%L", LANG_SERVER, "DESCRIPTION2")
show_motd(id, szMotd, szTitle)
return PLUGIN_HANDLED;
}
public check_level(id)
{
if(PlayerLevel[id] < MAXLEVEL-1 && get_pcvar_num(p_Enabled))
{
while(PlayerXp[id] >= LEVELS[PlayerLevel[id]])
{
PlayerLevel[id]++;
if(is_user_alive(id))
{
if ( get_pcvar_num(level_style) )
{
give_weapon(id);
}
new p_origin[3];
get_user_origin(id, p_origin, 0);
set_sprite(p_origin, levelspr, 30)
set_sprite(p_origin, levelspr2, 30)
}
emit_sound(id, CHAN_ITEM, LevelUp, 1.0, ATTN_NORM, 0, PITCH_NORM);
static name[32] ; get_user_name(id, name, charsmax(name));
client_printcolor(0, "%L", LANG_SERVER, "LEVEL_UP", name, PlayerLevel[id]);
}
}
}
// Main Menu Info
public show_main_menu_info(id)
{
if ( !get_pcvar_num(p_Enabled) )
return;
static menu[510], len;
len = 0;
new xKeys3 = MENU_KEY_0|MENU_KEY_1;
// Title
len += formatex(menu[len], sizeof menu - 1 - len, "%L", LANG_SERVER, "TITLE_MENU_INFO")
len += formatex(menu[len], sizeof menu - 1 - len, "\r1. \w%L", id, "INFO")
if ( get_pcvar_num(show_rank) )
{
xKeys3 |= (MENU_KEY_2)
len += formatex(menu[len], sizeof menu - 1 - len, "^n\r2. \wTop 20^n")
}
else
{
len += formatex(menu[len], sizeof menu - 1 - len, "^n\d2. Top 20^n")
}
if(find_plugin_byfile("gunxpmod_shop.amxx") != INVALID_PLUGIN_ID)
{
xKeys3 |= (MENU_KEY_3)
len += formatex(menu[len], sizeof menu - 1 - len, "\r3. \w%L^n", id, "ITEM_LIST")
if ( is_user_alive(id) )
{
xKeys3 |= (MENU_KEY_4)
len += formatex(menu[len], sizeof menu - 1 - len, "\r4. \w%L^n", id, "UNLOCKS_SHOP_TEXT")
}
}
len += formatex(menu[len], sizeof menu - 1 - len, "^n^n\r0.\w %L", id, "EXIT_MENU")
show_menu(id, xKeys3, menu, -1, "Main Menu")
}
public main_menu_info(id, key)
{
switch (key)
{
case 0:
{
show_main_menu_info(id)
descriptionx(id)
}
case 1:
{
showtop20(id)
show_main_menu_info(id)
}
case 2:
{
show_main_menu_info(id)
if(callfunc_begin( "display_items","") == 1)
{
callfunc_push_int( id );
callfunc_end();
}
}
case 3:
{
if(callfunc_begin("item_upgrades","") == 1)
{
callfunc_push_int( id );
callfunc_end();
}
}
case 9:
{
return PLUGIN_HANDLED;
}
}
return PLUGIN_HANDLED;
}
public give_weapon(id)
{
#if defined ZOMBIE_SWARM
if( is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && get_pcvar_num(p_Enabled))
{
StripPlayerWeapons(id);
if ( get_pcvar_num(enable_grenades) && get_pcvar_num(level_style) )
{
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
}
give_item(id, WEAPONCONST[PlayerLevel[id]]);
cs_set_user_bpammo(id, AMMOCONST[PlayerLevel[id]], AMMO2CONST[PlayerLevel[id]])
}
#endif
#if defined ZOMBIE_INFECTION || defined NORMAL_MOD
if(is_user_alive(id) && get_pcvar_num(p_Enabled))
{
StripPlayerWeapons(id);
if ( get_pcvar_num(enable_grenades) && get_pcvar_num(level_style) )
{
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
}
give_item(id, WEAPONCONST[PlayerLevel[id]]);
cs_set_user_bpammo(id, AMMOCONST[PlayerLevel[id]], AMMO2CONST[PlayerLevel[id]])
}
#endif
}
public set_sprite(p_origin[3], sprite, radius)
{
// Explosion
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, p_origin)
write_byte(TE_EXPLOSION)
write_coord(p_origin[0])
write_coord(p_origin[1])
write_coord(p_origin[2])
write_short(sprite)
write_byte(radius)
write_byte(15)
write_byte(4)
message_end()
}
//Shows Top 20
public showtop20(id)
{
if( !get_pcvar_num(p_Enabled) && !get_pcvar_num(show_rank) )
return;
static Sort[33][2];
new players[32],num,count,index;
get_players(players,num);
for(new i = 0; i < num; i++)
{
index = players[i];
Sort[count][0] = index;
Sort[count][1] = PlayerXp[index];
count++;
}
SortCustom2D(Sort,count,"CompareXp");
new motd[1501],iLen;
iLen = formatex(motd, sizeof motd - 1,"<body bgcolor=#000000><font color=#98f5ff><pre>");
iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"%s %-22.22s %3s^n", "#", "Name", "# Experience");
new y = clamp(count,0,20);
new name[32],kindex;
for(new x = 0; x < y; x++)
{
kindex = Sort[x][0];
get_user_name(kindex,name,sizeof name - 1);
iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"%d %-22.22s %d^n", x + 1, name, Sort[x][1]);
}
iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"</body></font></pre>");
show_motd(id,motd, "GunXpMod Top 20");
}
public CompareXp(elem1[], elem2[])
{
if(elem1[1] > elem2[1])
return -1;
else if(elem1[1] < elem2[1])
return 1;
return 0;
}
// Command to set player Level
public cmd_give_level(id, level, cid)
{
if( !cmd_access(id, level, cid, 3) || !get_pcvar_num(p_Enabled) )
{
return PLUGIN_HANDLED;
}
new Arg1[64], Target
read_argv(1, Arg1, 63)
Target = cmd_target(id, Arg1, 0)
new iLevel[32], Value
read_argv(2, iLevel, 31)
Value = str_to_num(iLevel)
if(iLevel[0] == '-')
{
console_print(id, "You can't have a '-' in the value!")
return PLUGIN_HANDLED;
}
if(!Target)
{
console_print(id, "Target not found!")
return PLUGIN_HANDLED;
}
if(Value > MAXLEVEL-1)
{
console_print(id, "You can't set a more than %d!", MAXLEVEL-1)
return PLUGIN_HANDLED;
}
if(Value < 1)
{
console_print(id, "You can't set less than 1!")
return PLUGIN_HANDLED;
}
new AdminName[32]
get_user_name(id, AdminName, 31)
new TargetName[32]
get_user_name(Target, TargetName, 31)
PlayerLevel[Target] = Value - 1
PlayerXp[Target] = LEVELS[PlayerLevel[Target]]
check_level(Target)
client_printcolor(Target, "/gADMIN: /ctr%s /yhas set your level to /g%d", AdminName, Value)
return PLUGIN_HANDLED;
}
// ============================================================//
// [~ Saving datas ~] //
// ============================================================//
public MySQLx_Init()
{
if ( !get_pcvar_num(p_Enabled) || !get_pcvar_num(save_type) )
return;
new szHost[64], szUser[32], szPass[32], szDB[128];
get_pcvar_string( mysqlx_host, szHost, charsmax( szHost ) );
get_pcvar_string( mysqlx_user, szUser, charsmax( szUser ) );
get_pcvar_string( mysqlx_pass, szPass, charsmax( szPass ) );
get_pcvar_string( mysqlx_db, szDB, charsmax( szDB ) );
g_hTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDB );
for ( new i = 0; i < sizeof szTables; i++ )
{
SQL_ThreadQuery( g_hTuple, "QueryCreateTable", szTables[i])
}
}
public QueryCreateTable( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
{
if( iFailState == TQUERY_CONNECT_FAILED
|| iFailState == TQUERY_QUERY_FAILED )
{
log_amx( "%s", szError );
return;
}
}
SaveLevel(id)
{
new szAuth[33];
new szKey[64];
if ( get_pcvar_num(savexp) == 0 )
{
get_user_ip( id, szAuth , charsmax(szAuth), 1);
formatex( szKey , 63 , "%s-IP" , szAuth);
}
else if ( get_pcvar_num(savexp) == 1 )
{
get_user_authid( id , szAuth , charsmax(szAuth) );
formatex( szKey , 63 , "%s-ID" , szAuth);
}
else if ( get_pcvar_num(savexp) == 2 )
{
get_user_name( id, szAuth , charsmax(szAuth) );
formatex( szKey , 63 , "%s-NAME" , szAuth);
}
if ( !get_pcvar_num(save_type) )
{
new szData[256];
formatex( szData , 255 , "%i#%i#" , PlayerLevel[id], PlayerXp[id] );
nvault_set( g_Vault , szKey , szData );
}
else
{
static szQuery[ 128 ];
formatex( szQuery, 127, "REPLACE INTO `mytable` (`player_id`, `player_level`, `player_xp`) VALUES ('%s', '%d', '%d');", szAuth , PlayerLevel[id], PlayerXp[id] );
SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
}
}
LoadLevel(id)
{
new szAuth[33];
new szKey[40];
if ( get_pcvar_num(savexp) == 0 )
{
get_user_ip( id, szAuth , charsmax(szAuth), 1);
formatex( szKey , 63 , "%s-IP" , szAuth);
}
else if ( get_pcvar_num(savexp) == 1 )
{
get_user_authid( id , szAuth , charsmax(szAuth) );
formatex( szKey , 63 , "%s-ID" , szAuth);
}
else if ( get_pcvar_num(savexp) == 2 )
{
get_user_name( id, szAuth , charsmax(szAuth) );
formatex( szKey , 63 , "%s-NAME" , szAuth);
}
if ( !get_pcvar_num(save_type) )
{
new szData[256];
formatex(szData , 255, "%i#%i#", PlayerLevel[id], PlayerXp[id])
nvault_get(g_Vault, szKey, szData, 255)
replace_all(szData , 255, "#", " ")
new xp[32], level[32]
parse(szData, level, 31, xp, 31)
PlayerLevel[id] = str_to_num(level)
PlayerXp[id] = str_to_num(xp)
}
else
{
static szQuery[ 128 ], iData[ 1 ];
formatex( szQuery, 127, "SELECT `player_level`, `player_xp` FROM `mytable` WHERE ( `player_id` = '%s' );", szAuth );
iData[ 0 ] = id;
SQL_ThreadQuery( g_hTuple, "QuerySelectData", szQuery, iData, 1 );
}
}
public QuerySelectData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
{
if( iFailState == TQUERY_CONNECT_FAILED
|| iFailState == TQUERY_QUERY_FAILED )
{
log_amx( "%s", szError );
return;
}
else
{
new id = iData[ 0 ];
new ColLevel = SQL_FieldNameToNum(hQuery, "player_level")
new ColXp = SQL_FieldNameToNum(hQuery, "player_xp")
while (SQL_MoreResults(hQuery))
{
PlayerLevel[id] = SQL_ReadResult(hQuery, ColLevel);
PlayerXp[id] = SQL_ReadResult(hQuery, ColXp);
SQL_NextRow(hQuery)
}
}
}
public QuerySetData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
{
if( iFailState == TQUERY_CONNECT_FAILED
|| iFailState == TQUERY_QUERY_FAILED )
{
log_amx( "%s", szError );
return;
}
}
// ============================================================//
// [~ Natives ~] //
// ============================================================//
// Native: get_user_xp
public native_get_user_xp(id)
{
return PlayerXp[id];
}
// Native: set_user_xp
public native_set_user_xp(id, amount)
{
PlayerXp[id] = amount;
}
// Native: get_user_level
public native_get_user_level(id)
{
return PlayerLevel[id];
}
// Native: set_user_xp
public native_set_user_level(id, amount)
{
PlayerLevel[id] = amount;
}
// Native: Gets user level by Xp
public native_get_user_max_level(id)
{
return LEVELS[PlayerLevel[id]];
}
public Win_T()
{
new players[32], num, player;
get_players(players, num, "ch", "TERRORIST")
for(new i = 0; i < num; i++)
{
player = players[i]
if(is_user_connected(player))
{
PlayerXp[player] += T_WIN_XP
ColorChat(player,RED, "%s Ai castigat bonus %d XP pentru castigarea rundei.",PLUG_TAG,T_WIN_XP)
}
if(is_user_alive(player))
{
PlayerXp[player] += T_WIN_XP_ALIVE
ColorChat(player,RED, "%s Ai castigat bonus %d XP pentru ca ai supravietuit.",PLUG_TAG,T_WIN_XP_ALIVE)
}
}
return PLUGIN_CONTINUE
}
public Win_CT()
{
new players[32], num, player;
get_players(players, num, "ch", "CT")
for(new i = 0; i < num; i++)
{
player = players[i]
if(is_user_connected(player))
{
PlayerXp[player] += CT_WIN_XP
ColorChat(player,BLUE, "%s Ai castigat bonus %d XP pentru castigarea rundei.",PLUG_TAG,CT_WIN_XP)
}
if(is_user_alive(player))
{
PlayerXp[player] += CT_WIN_XP_ALIVE
ColorChat(player,BLUE, "%s Ai castigat bonus %d XP pentru ca ai supravietuit.",PLUG_TAG,CT_WIN_XP_ALIVE)
}
}
return PLUGIN_CONTINUE
}
// ============================================================ //
// [~ Stocks ~] //
// ============================================================ //
stock client_printcolor(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg,190,input,3);
replace_all(msg,190,"/g","^4");// green txt
replace_all(msg,190,"/y","^1");// orange txt
replace_all(msg,190,"/ctr","^3");// team txt
replace_all(msg,190,"/w","^0");// team txt
if (id) players[0] = id; else get_players(players,count,"ch");
for (new i = 0; i < count; i++)
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, SayTxT, _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
public StripPlayerWeapons(id)
{
strip_user_weapons(id)
set_pdata_int(id, OFFSET_PRIMARYWEAPON, 0)
give_item(id, "weapon_knife");
}
Code: Select all
#define MAXLEVEL 11
#define MAX_PISTOLS_MENU 6
#define PLUG_TAG "[AMXX]"
#define CT_WIN_XP 10
#define CT_WIN_XP_ALIVE 15
#define T_WIN_XP 10
#define T_WIN_XP_ALIVE 15
/*================================================================================
[!-->All those settings can be modified<--!]
=================================================================================*/
/*================================================================================
[Commenting/uncommenting MODS.]
=================================================================================*/
/*Normal mod,means simple cs style, without other mods.*/
//#define NORMAL_MOD
/*Uncomment it if you are using Zombie Swarm and comment other.*/
//#define ZOMBIE_SWARM
/*Uncomment it if you are using Zombie Infection style mods and comment other.*/
#define ZOMBIE_INFECTION
/*================================================================================
[Uncomment it if ZOMBIE_INFECTION and select zombie style MOD.]
=================================================================================*/
//#define ZOMBIE_BIOHAZARD
#define ZOMBIE_PLAGUE
/*================================================================================
[End of MODS.]
=================================================================================*/
/*================================================================================
[Admin 'Flag' for giving extra Experience to admins each kill.]
=================================================================================*/
#define ADMIN_EXTRA ADMIN_LEVEL_H
/*================================================================================
[End of flags.]
=================================================================================*/
/*================================================================================
[Sounds, Level Up wave sound.]
=================================================================================*/
new const LevelUp[] = "umbrella/levelup.wav";
/*================================================================================
[End of sounds.]
=================================================================================*/
/*================================================================================
[XP Table, rank,gun level names.]
=================================================================================*/
new const LEVELS[MAXLEVEL] = {
90, // Needed on level 1
180, // Needed on level 2
300, // Needed on level 3
450, // Needed on level 4
700, // Needed on level 5
1200, // Needed on level 6
1800, // Needed on level 7
2800, // Needed on level 8
4100, // Needed on level 9
5200, // Needed on level 10
6000 // Needed on level 11
}; // Needed Xp on each Levels
new const GUN_LEVELS[MAXLEVEL] = {
0, // level 0, Glock.
1, // level 1, USP.
2, // level 2, P228.
3, // level 3, Fiveseven.
4, // level 4, Deagle.
5, // level 5, Elite. // End of Secondary Weapons.
6, // level 6, TMP.
7, // level 7, MAC-10.
8, // level 8, UMP 45.
9, // level 9, MP5 Navy.
10 // level 10, P90.
}; // Needed Level to choose gun from menu
new const RANKLEVELS[MAXLEVEL][] = { "Beginner", "Beginner", "Beginner", "Beginner", "Beginner", "Slayer", "Slayer", "Slayer",
"Hunter", "Hunter", "Hunter"
}; // Rank Level Names
new const RANK[MAXLEVEL][] = { "Glock 18C", "USP .45 ACP Tactical", "P228 Compact", "FiveseveN", "Desert Eagle .50 AE", "Dual Elite Berettas",
"Schmidt TMP", "Ingram MAC-10", "UMP 45", "MP5 Navy", "ES P90"
}; // Gun Level Rank Names
/*================================================================================
[End of XP Table.]
=================================================================================*/
/*================================================================================
[Grenades on each level settings.]
=================================================================================*/
new const FLASHBANG_LEVEL[MAXLEVEL][] = { "", // 0 level, nothing if you want,won't give grenade on level 0
"", "", "",
"", "", "",
"", "", "",
"weapon_flashbang"
}; // Give Flashbangs on current level
new const HEGRENADE_LEVEL[MAXLEVEL][] = { "weapon_hegrenade",
"weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade",
"weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade",
"weapon_hegrenade", "weapon_hegrenade", "weapon_hegrenade", // 9 level
"weapon_hegrenade"
}; // Give Hegrenade on current level
new const SMOKEGRENADE_LEVEL[MAXLEVEL][] = { "weapon_smokegrenade",
"weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade",
"weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade",
"weapon_smokegrenade", "weapon_smokegrenade", "weapon_smokegrenade", // 9 level
"weapon_smokegrenade"
}; // Give Smokegrenade on current level
/*================================================================================
[Weapon's backpack ammo on spawn/menu choose.]
=================================================================================*/
new const AMMO2CONST[MAXLEVEL] = { 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400
}; // Weapons Ammo
Nu îmi mai trimiteți PM pe forum! Nu merge să răspund
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
- King Innsane
- Membru, skill 0
- Posts: 20
- Joined: 30 Mar 2019, 15:34
- Detinator Steam: Da
- Detinator server CS: 193.203.39.156:27015
- Fond eXtream: 0
- Been thanked: 1 time
Rectific totul , pluginul merge [ am modificat l-am pus pe normal mode ] dar , am omis ceva si te rog sa ma scuzi de deranj .. poti sa-mi scoti modelele p/w de la zombie [ deoarece mi-am dat seama p nu imi trebuie si w-ul nu exista eram obosit si nu mi-am dat seama ce am scris ]. Sa-mi lasi doar v. Multumesc! [ din cauza la p/w imi da eroare de la modele ]
BTW : sper ca in meniul de arme sa inceapa cu primary , dupa cu secondary alergerile . [ lvl 0 arma mare , dupa pistol ]
BTW : sper ca in meniul de arme sa inceapa cu primary , dupa cu secondary alergerile . [ lvl 0 arma mare , dupa pistol ]
Last edited by King Innsane on 14 Sep 2019, 23:06, edited 3 times in total.
"Am făcut lucruri pe care acum le regret. Dar dacă nu învăţ din greşeli o să le repet."
- levin
- Scripter eXtreamCS
- Posts: 3850
- Joined: 24 Aug 2011, 12:24
- Detinator Steam: Da
- CS Status: ♅
- Detinator server CS: ☯∴
- SteamID: 76561198063679589
- Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy - Location: ҳ̸Ҳ̸ҳ
- Discord: devilclass
- Has thanked: 36 times
- Been thanked: 595 times
- Contact:
e activ pentru zm, pune l pe normal mod
eu ți am dat ce mi ai dat
eu ți am dat ce mi ai dat
Nu îmi mai trimiteți PM pe forum! Nu merge să răspund
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
- King Innsane
- Membru, skill 0
- Posts: 20
- Joined: 30 Mar 2019, 15:34
- Detinator Steam: Da
- Detinator server CS: 193.203.39.156:27015
- Fond eXtream: 0
- Been thanked: 1 time
Da, multumesc frumos.Functioneza cum mi-ai zis , dar imi da eroare din cauza la p/w. [Modelele la zombie pentru knife ]. Daca se poate sa mi-le scoti cum am specificat mai sus.[Am editat].
"Am făcut lucruri pe care acum le regret. Dar dacă nu învăţ din greşeli o să le repet."
- levin
- Scripter eXtreamCS
- Posts: 3850
- Joined: 24 Aug 2011, 12:24
- Detinator Steam: Da
- CS Status: ♅
- Detinator server CS: ☯∴
- SteamID: 76561198063679589
- Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy - Location: ҳ̸Ҳ̸ҳ
- Discord: devilclass
- Has thanked: 36 times
- Been thanked: 595 times
- Contact:
nu știu ce eroare poate să-ți dea de la _p...dacă nu are _p lași "" la cazul său, sau dacă vrei să folosești ceva default pui modelul respecitv(gen p_knife)
e doar 1 meniu, în care bagi ce arme vrei...nu ai zis de primare sau secundare...
e doar 1 meniu, în care bagi ce arme vrei...nu ai zis de primare sau secundare...
Code: Select all
#include "gunxpmod.cfg"
#if defined ZOMBIE_BIOHAZARD
#include <biohazard>
#endif
#if defined ZOMBIE_PLAGUE
#include <zombieplague>
#endif
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <sqlx>
#include <nvault>
#include <colorchat>
#define PLUGIN "XP-Mod"
#define AUTHOR "-"
#define VERSION "2.5"
#define OFFSET_PRIMARYWEAPON 116
#define TASK_SHOW_LEVEL 10113
#define fm_cs_set_user_nobuy(%1) set_pdata_int(%1, 235, get_pdata_int(%1, 235) & ~(1<<0) ) //no weapon buy
new PlayerXp[33];
new PlayerLevel[33];
new g_Vault;
new g_remember_selection[33], g_kills[33], g_remember_selection_pistol[33];
new g_maxplayers, g_msgHudSync1, SayTxT, enable_grenades;
new levelspr, levelspr2, show_level_text, show_rank;
new savexp, save_type, xp_kill, xp_triple, enable_triple, triple_kills, xp_ultra, ultra_kills, enable_ultra, p_Enabled, level_style;
new enable_admin_xp, admin_xp;
/*================================================================================
[MySQLx Vars, other]
=================================================================================*/
new Handle:g_hTuple;
new mysqlx_host, mysqlx_user, mysqlx_db, mysqlx_pass;
new const szTables[][] =
{
"CREATE TABLE IF NOT EXISTS `mytable` ( `player_id` varchar(32) NOT NULL,`player_level` int(8) default NULL,`player_xp` int(16) default NULL,PRIMARY KEY (`player_id`) ) TYPE=MyISAM;"
}
enum _:MF
{
WName[32],
WCCode,
WTCode[32],
WAmmo,
WLevel,
VModel[32],
PModel[32],
WModel[32]/*,*/
}
new const WeaponsFUNC[/*MAXLEVEL*/][MF] = { //ARME PE LEVEL(meniu)
// NUME ARMA MENIU COD CSW COD WEAPON AMMO ARMA LEVEL NECESAR pentru ARMA MODEL ARMA V_ MODEL ARMA P_ MODEL ARMA W_
{ "GLOCK 18", CSW_GLOCK18, "weapon_glock18", 120, 1, "models/v_glock18.mdl", "models/p_glock18.mdl", "models/w_glock18.mdl" }/*,*/
};
/*
#define LEVELUPXP 400
#define SKINHATSLEVELCHANGE 30
new const WLVLS[MAXLEVEL]=//LVL ARME
{
0,//DEF
1,
2,
3
}*/
new menuCBH,bool:used[33]
enum _:ZMF
{
SKIN[32],
VKnife[32],
/*PKnife[32],
WKnife[32],*/
HP,
LVL
}
new const ZmFUNC[][ZMF]=
{
{// NUME SKIN(models/players/nume_skin/nume_skin.mdl) NUME CUTIT(v) NUME CUTIT(p) NUME CUTIT(w) HP START LEVEL pentru BENEFICII
"test_skin", "v_knife1", /*"p_knife1", "w_knife1",*/ 1337, 1
}
}
/*inutile zic*/
new const AMMOCONST[MAXLEVEL] = { 10, 16, 23, 26, 10, 16, 17, 20, 8, 19, 28 }
new const WEAPONCONST[MAXLEVEL][] = {"weapon_glock18",
"weapon_usp",
"weapon_elite",
"weapon_deagle",
"weapon_tmp",
"weapon_mac10",
"weapon_mp5navy",
"weapon_m249",
"weapon_aug",
"weapon_m4a1",
"weapon_ak47"
}; // Give Weapons
new const WEAPONMDL[MAXLEVEL][] = { "models/w_glock18.mdl",
"models/w_usp.mdl",
"models/w_elite",
"models/w_deagle.mdl",
"models/w_tmp10.mdl",
"models/w_mac10.mdl",
"models/w_mp5.mdl",
"models/w_m249.mdl",
"models/w_aug.mdl",
"models/w_m4a1.mdl",
"models/w_ak47.mdl"
}; // Blocks pick up weapon, don't change!
/*================================================================================
[Plugin natives,precache,init]
=================================================================================*/
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_cvar("gxm_version", VERSION, FCVAR_SPONLY|FCVAR_SERVER)
set_cvar_string("gxm_version", VERSION)
register_concmd("amx_level", "cmd_give_level", ADMIN_CFG, "<Nume Joc> <NR LVL>" );
register_clcmd("say /lvl", "showlevel");
register_clcmd("say /top20","showtop20");
register_clcmd("say /menu","show_main_menu_info");
p_Enabled = register_cvar( "xp_enable", "1" ); // Plugin enabled? 1 = Yes, 0 = No.
save_type = register_cvar("xp_savetype","0"); // Save Xp to : 1 = MySQL, 0 = NVault.
savexp = register_cvar("xp_save","2"); // Save Xp by : 1 = SteamID, 0 = IP, 2 = Nicks
xp_kill = register_cvar("xp_nivel","10"); // How much xp gain if you killed someone?
show_level_text = register_cvar("xp_level_text","0"); // Show your level by : 1 = HUD message, 0 = Simple colored text message.
show_rank = register_cvar("xp_show_rank","1"); // Show rank in /top20? 1 = Yes, 0 = No.
level_style = register_cvar("xp_level_style","0"); // You will gain each level new gun : 1 = Yes, 0 = No,select your gun by menu.
enable_grenades = register_cvar("xp_grenades","1"); // Give to player grenades? 1 = Yes, 0 = No.
enable_triple = register_cvar("xp_triple","1"); // Enable Triple Kill bonus xp? 1 = Yes, 0 = No.
xp_triple = register_cvar("xp_triple_xp","3"); // How much bonus xp give for Triple Kill?
triple_kills = register_cvar("xp_triple_kills","3"); // How much kills needed to give bonus xp?
enable_ultra = register_cvar("xp_ultra","1"); // Enable Ultra Kill bonus xp? 1 = Yes, 0 = No.
xp_ultra = register_cvar("xp_ultra_xp","5"); // How much bonus xp give for Ultra Kill?
ultra_kills = register_cvar("xp_ultra_kills","6"); // How much kills needed to give bonus xp?
enable_admin_xp = register_cvar("xp_admin_xp","1"); // Enable Extra xp for killing? 1 = Yes, 0 = No.
admin_xp = register_cvar("xp_extra_xp","10"); // How much extra xp give to admins?
// SQLx cvars
mysqlx_host = register_cvar ("xp_host", ""); // The host from the db
mysqlx_user = register_cvar ("xp_user", ""); // The username from the db login
mysqlx_pass = register_cvar ("xp_pass", ""); // The password from the db login
mysqlx_db = register_cvar ("xp_dbname", ""); // The database name
// Events //
register_event("DeathMsg", "event_deathmsg", "a");
register_event("StatusValue", "Event_StatusValue", "bd", "1=2")
// Forwards //
RegisterHam(Ham_Spawn, "player", "fwd_PlayerSpawn", 1);
register_forward(FM_Touch, "fwd_Touch");
// Messages //
#if defined NORMAL_MOD || defined ZOMBIE_SWARM
register_message(get_user_msgid("StatusIcon"), "Message_StatusIcon")
#endif
// Other //
register_menucmd(register_menuid("Main Menu"), 1023, "main_menu_info")
register_dictionary("gunxpmod.txt");
MySQLx_Init()
SayTxT = get_user_msgid("SayText");
g_msgHudSync1 = CreateHudSyncObj()
g_maxplayers = get_maxplayers();
menuCBH = menu_makecallback( "menucallback1" );//teste
register_clcmd("say /tw","WM")
register_clcmd("say_team /tw","WM")
register_event("SendAudio", "Win_T", "a", "2=%!MRAD_terwin")
register_event("SendAudio", "Win_CT", "a", "2=%!MRAD_ctwin")
register_event("HLTV", "event_new_round", "a", "1=0", "2=0")
RegisterHam( Ham_Item_Deploy, "weapon_knife", "Ham_KnifeDeployPost", 1 );
//register_forward(FM_SetModel, "fw_SetModel")
}
public event_new_round() for(new id=1;id<=get_maxplayers();id++) used[id]=false
public WM(id)
{
if(!is_user_alive(id)) return
new menu = menu_create( "Choose your weapon", "menuhandler1" );
new level = PlayerLevel[id]//PlayerXp[ id ] / LEVELUPXP;
for( new i=0; i < sizeof(WeaponsFUNC); i++ )
{
/*
for(new x;x<sizeof(WLVLS);x++)
{
menu_additem( menu, WeaponsFUNC[ i ][WName], _, level>=WLVLS[x], menuCBH );
}
*/
new text[512]
if(level<WeaponsFUNC[ i ][WLevel]) formatex(text,charsmax(text),"\w[\yLOCKED\w]\r %s\w [\dAvailable on level:\r %d\w]",WeaponsFUNC[ i ][WName],WeaponsFUNC[ i ][WLevel])
menu_additem( menu, WeaponsFUNC[ i ][WName], _, _, menuCBH );
}
menu_display( id, menu, 0);
}
public menuhandler1( id, menu, item )
{
if(item == MENU_EXIT||!is_user_alive(id))
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
if(/*item == */user_has_weapon(id,WeaponsFUNC[item][WCCode]))
{
client_print(id,print_chat, "%s You already have: %s",PLUG_TAG, WeaponsFUNC[item][WName]);
menu_destroy(menu)
return PLUGIN_HANDLED
}
Set_WP( id, WeaponsFUNC[item][WTCode],WeaponsFUNC[item][WCCode],WeaponsFUNC[item][WAmmo] );
client_print(id,print_chat, "%s The weapon you chose is: %s",PLUG_TAG, WeaponsFUNC[item][WName]);
menu_destroy(menu);
return PLUGIN_HANDLED
}
public menucallback1( id, menu, item )
{
static szInfo[8], iAccess, iCallback;
menu_item_getinfo(menu, item, iAccess, szInfo, charsmax(szInfo), .callback = iCallback);
/*static iType;
iType = str_to_num(szInfo);*/
new level = PlayerLevel[ id ];
if( WeaponsFUNC[item][WLevel] > level /*/ SKINWPEVELCHANGE||item == settingH[id]*/ ) return ITEM_DISABLED;
return ITEM_ENABLED;
}
stock Set_WP(const id,const WPName[]="",WPCode,WPAmmo)
{
if(!is_user_alive(id)) return
strip_user_weapons(id)
give_item(id,"weapon_knife")
give_item(id,WPName)
cs_set_user_bpammo(id,WPCode,WPAmmo)
}
// Main Menu Level Style
public show_main_menu_level(id)
{
if ( !is_user_alive(id) )
return;
new szInfo[60], szChooseT[40], szLastG[40];
formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] );
new menu = menu_create(szInfo , "main_menu_level");
formatex(szChooseT, charsmax(szChooseT), "%L", LANG_SERVER, "CHOOSE_TEXT");
menu_additem(menu, szChooseT, "1", 0);
formatex(szLastG, charsmax(szLastG), "%L", LANG_SERVER, "LAST_GUNS");
menu_additem(menu, szLastG, "2", 0);
new szExit[15];
formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU");
menu_setprop(menu, MPROP_EXITNAME, szExit);
menu_display(id , menu , 0);
}
public main_menu_level(id , menu , item)
{
if ( !is_user_alive(id) )
{
return PLUGIN_HANDLED;
}
#if defined ZOMBIE_PLAGUE
if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T )
return PLUGIN_HANDLED;
#endif
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new item_id = str_to_num(data);
switch (item_id)
{
case 1: // show pistols
{
if(!used[id]) show_menu_level_pistol(id);
}
case 2: // last weapons
{
if ( PlayerLevel[id] > MAX_PISTOLS_MENU - 1 )
{
give_weapon_menu(id, g_remember_selection[id], 1, 1);
give_weapon_menu(id, g_remember_selection_pistol[id], 0, 0);
}
else if ( PlayerLevel[id] < MAX_PISTOLS_MENU )
{
give_weapon_menu(id, g_remember_selection_pistol[id], 1, 1);
}
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
// Menu Level Style Pistols
public show_menu_level_pistol(id)
{
if ( !is_user_alive(id) )
return;
new szInfo[60];
formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] );
new menu = menu_create(szInfo , "pistol_menu");
for (new item_id = 0; item_id < MAX_PISTOLS_MENU; item_id++)
{
new szItems[60], szTempid[32];
if ( PlayerLevel[id] >= GUN_LEVELS[item_id] )
{
formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "ACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )
num_to_str(item_id, szTempid, charsmax(szTempid) );
menu_additem(menu, szItems, szTempid, 0);
}
else
{
formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "INACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )
menu_additem(menu, szItems, "999", 0, menu_makecallback("CallbackMenu"));
}
}
new szNext[15], szBack[15], szExit[15];
formatex(szBack, charsmax(szBack), "%L", LANG_SERVER, "BACK_MENU");
formatex(szNext, charsmax(szNext), "%L", LANG_SERVER, "NEXT_MENU");
formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU");
menu_setprop(menu, MPROP_BACKNAME, szBack)
menu_setprop(menu, MPROP_NEXTNAME, szNext)
menu_setprop(menu, MPROP_EXITNAME, szExit)
menu_display(id , menu , 0);
}
public pistol_menu(id , menu , item)
{
if ( !is_user_alive(id) )
{
return PLUGIN_HANDLED;
}
#if defined ZOMBIE_PLAGUE
if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T )
return PLUGIN_HANDLED;
#endif
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new item_id = str_to_num(data);
g_remember_selection_pistol[id] = item_id;
give_weapon_menu(id, item_id, 1, 1);
if ( PlayerLevel[id] > MAX_PISTOLS_MENU - 1 )///hmmm
{
show_menu_level(id);
}
used[id]=true
menu_destroy(menu);
return PLUGIN_HANDLED;
}
// Menu Level Style Primary
public show_menu_level(id)
{
if ( !is_user_alive(id) || PlayerLevel[id] < MAX_PISTOLS_MENU )
return;
new szInfo[100];
formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] );
new menu = menu_create(szInfo , "level_menu");
for (new item_id = MAX_PISTOLS_MENU; item_id < MAXLEVEL; item_id++)
{
new szItems[512], szTempid[32];
if ( PlayerLevel[id] >= GUN_LEVELS[item_id] )
{
formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "ACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )
num_to_str(item_id, szTempid, charsmax(szTempid) );
menu_additem(menu, szItems, szTempid, 0);
}
else
{
formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "INACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] )
menu_additem(menu, szItems, "999", 0, menu_makecallback("CallbackMenu"));
}
}
new szNext[15], szBack[15], szExit[15];
formatex(szBack, charsmax(szBack), "%L", LANG_SERVER, "BACK_MENU");
formatex(szNext, charsmax(szNext), "%L", LANG_SERVER, "NEXT_MENU");
formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU");
menu_setprop(menu, MPROP_BACKNAME, szBack)
menu_setprop(menu, MPROP_NEXTNAME, szNext)
menu_setprop(menu, MPROP_EXITNAME, szExit)
menu_display(id , menu , 0);
}
public level_menu(id , menu , item)
{
if ( !is_user_alive(id) || PlayerLevel[id] < MAX_PISTOLS_MENU )
{
return PLUGIN_HANDLED;
}
#if defined ZOMBIE_PLAGUE
if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T )
return PLUGIN_HANDLED;
#endif
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new item_id = str_to_num(data);
g_remember_selection[id] = item_id;
give_weapon_menu(id, item_id, 0, 0);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public CallbackMenu(id, menu, item)
{
return ITEM_DISABLED;
}
// Selected by menu or remember selection and give item
public give_weapon_menu(id, selection, strip, givegren)
{
#if defined ZOMBIE_SWARM
if( is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && get_pcvar_num(p_Enabled) )
{
if ( strip )
{
StripPlayerWeapons(id);
}
if ( get_pcvar_num(enable_grenades) && givegren )
{
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
}
give_item(id, WEAPONCONST[selection]);
cs_set_user_bpammo(id, AMMOCONST[selection], AMMO2CONST[selection])
}
#endif
#if defined ZOMBIE_INFECTION || defined NORMAL_MOD
if(is_user_alive(id) && get_pcvar_num(p_Enabled))
{
if ( strip )
{
StripPlayerWeapons(id);
}
if ( get_pcvar_num(enable_grenades) && givegren )
{
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
}
give_item(id, WEAPONCONST[selection]);
cs_set_user_bpammo(id, AMMOCONST[selection], AMMO2CONST[selection])
}
#endif
}
public plugin_natives()
{
// Player natives //
register_native("get_user_xp", "native_get_user_xp", 1);
register_native("set_user_xp", "native_set_user_xp", 1);
register_native("get_user_level", "native_get_user_level", 1);
register_native("set_user_level", "native_set_user_level", 1);
register_native("get_user_max_level", "native_get_user_max_level", 1);
}
public plugin_precache()
{
levelspr = engfunc(EngFunc_PrecacheModel, "sprites/xfire.spr");
levelspr2 = engfunc(EngFunc_PrecacheModel, "sprites/xfire2.spr");
engfunc(EngFunc_PrecacheSound, LevelUp);
for(new i; i < sizeof(WeaponsFUNC); i++)
{
if(WeaponsFUNC[i][0])
{
precache_model(WeaponsFUNC[i][VModel])
precache_model(WeaponsFUNC[i][PModel])
precache_model(WeaponsFUNC[i][WModel])
}
}
for(new i; i < sizeof(ZmFUNC); i++)
{
precache_player_model(ZmFUNC[i][SKIN],1)
precache_player_model(ZmFUNC[i][VKnife],2)
/*precache_player_model(ZmFUNC[i][PKnife],2)
precache_player_model(ZmFUNC[i][WKnife],2)*/
}
}
precache_player_model(szModel[],mode)
{
static szFile[512]
switch(mode)
{
case 1:
{
formatex(szFile, charsmax(szFile), "models/player/%s/%s.mdl", szModel, szModel)
precache_model(szFile)
replace(szFile, charsmax(szFile), ".mdl", "T.mdl")
if(file_exists(szFile)) precache_model(szFile)
}
case 2:
{
formatex(szFile, charsmax(szFile), "models/%s/%s.mdl", szModel, szModel)
precache_model(szFile)
}
}
}
public plugin_cfg()
{
new ConfDir[32], File[192];
get_configsdir( ConfDir, charsmax( ConfDir ) );
formatex( File, charsmax( File ), "%s/gunxpmod.cfg", ConfDir );
if( !file_exists( File ) )
{
server_print( "File %s doesn't exist!", File );
write_file( File, "", -1 );
}
else
{
server_print( "%s successfully loaded.", File );
server_cmd( "exec %s", File );
}
//Open our vault and have g_Vault store the handle.
g_Vault = nvault_open( "gunxpmod" );
//Make the plugin error if vault did not successfully open
if ( g_Vault == INVALID_HANDLE )
set_fail_state( "Error opening GunXpMod nVault, file does not exist!" );
}
public plugin_end()
{
//Close the vault when the plugin ends (map change\server shutdown\restart)
nvault_close( g_Vault );
}
public client_connect(id)
{
g_remember_selection[id] = MAX_PISTOLS_MENU;
g_remember_selection_pistol[id] = 0;
LoadLevel(id)
}
public client_disconnect(id)
{
SaveLevel(id)
PlayerXp[id] = 0;
PlayerLevel[id] = 0;
remove_task( TASK_SHOW_LEVEL + id );
}
public Message_StatusIcon(iMsgId, MSG_DEST, id)
{
if( !get_pcvar_num(p_Enabled) )
return PLUGIN_HANDLED;
static szIcon[5]
get_msg_arg_string(2, szIcon, 4)
if( szIcon[0] == 'b' && szIcon[2] == 'y' && szIcon[3] == 'z' )
{
if( get_msg_arg_int(1))
{
fm_cs_set_user_nobuy(id)
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
}
public fwd_Touch(ent, id)
{
if (!is_user_alive(id) || !pev_valid( ent ) )
return FMRES_IGNORED;
static szEntModel[32];
pev( ent , pev_model , szEntModel , 31 );
for (new level_equip_id = PlayerLevel[id] + 1; level_equip_id < MAXLEVEL; level_equip_id++)
{
if ( equali( szEntModel , WEAPONMDL[level_equip_id] ) )
{
return FMRES_SUPERCEDE;
}
}
return FMRES_IGNORED;
}
/*public fw_SetModel(entity, model[])//dropped knife??for W_....
{
if(!pev_valid(entity)) return FMRES_IGNORED
for(new i; i < sizeof(ZmFUNC); i++)
{
if(!equali(model, ZmFUNC[i][WKnife])) return FMRES_IGNORED
new className[33]
pev(entity, pev_classname, className, 32)
// dropped weapons map weapons c4 + grenades
if(equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade"))
{
engfunc(EngFunc_SetModel, entity, ZmFUNC[i][WKnife])
return FMRES_SUPERCEDE
}
}
return FMRES_IGNORED
}*/
public Ham_KnifeDeployPost( iEnt )
{
new id = get_pdata_cbase( iEnt, 41,4 ); // m_pPlayer = 41 , 4 - linux offset...
if(!is_user_alive(id)) return
for(new i; i < sizeof(ZmFUNC); i++)
{
if(PlayerLevel[id]==ZmFUNC[i][LVL])
{
set_pev(id, pev_viewmodel2, ZmFUNC[i][VKnife])
//set_pev(id, pev_weaponmodel2, ZmFUNC[i][PKnife]);
break
}
}
}
public fwd_PlayerSpawn(id)
{
if( !get_pcvar_num(p_Enabled) || !is_user_alive(id) )
return;
g_kills[id] = 0
/*switch(PlayerLevel[id])
{
}*/
for(new i; i < sizeof(ZmFUNC); i++)
{
if(PlayerLevel[id]==ZmFUNC[i][LVL])
{
cs_set_user_model(id,ZmFUNC[i][SKIN])
set_user_health(id,ZmFUNC[i][HP])
break
}
}
#if defined ZOMBIE_SWARM
if ( !get_pcvar_num(level_style) && cs_get_user_team(id) == CS_TEAM_CT )
{
StripPlayerWeapons(id);
set_task(2.0, "show_main_menu_level", id)
}
#endif
#if defined NORMAL_MOD || defined ZOMBIE_INFECTION
if ( !get_pcvar_num(level_style))
{
StripPlayerWeapons(id);
set_task(2.0, "show_main_menu_level", id)
}
#endif
if( get_pcvar_num(show_level_text) )
{
remove_task( TASK_SHOW_LEVEL + id );
set_task(0.1, "task_show_level", TASK_SHOW_LEVEL + id)
}
#if defined ZOMBIE_SWARM
if ( get_pcvar_num(level_style) && cs_get_user_team(id) == CS_TEAM_CT )
{
set_task(0.3, "give_weapon", id);
}
#endif
#if defined NORMAL_MOD || defined ZOMBIE_INFECTION
if ( get_pcvar_num(level_style) )
{
set_task(0.3, "give_weapon", id);
WM(id)
}
#endif
}
#if defined ZOMBIE_PLAGUE
public zp_user_humanized_post(id, survivor)
{
if( !get_pcvar_num(p_Enabled) || !is_user_alive(id) )
return;
set_task(1.0, "show_main_menu_level", id);
}
#endif
#if defined ZOMBIE_BIOHAZARD
public event_infect(g_victim, g_attacker)
{
if( !get_pcvar_num(p_Enabled) )
return;
new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple) + get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0
new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra) + get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0
if((1 <= g_attacker <= g_maxplayers))
{
if(g_victim != g_attacker)
{
g_kills[g_attacker]++;
if(PlayerLevel[g_attacker] < MAXLEVEL-1)
{
if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA)
{
PlayerXp[g_attacker] += get_pcvar_num(admin_xp)
}
if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) )
{
PlayerXp[g_attacker] += counted_triple
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
}
else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) )
{
PlayerXp[g_attacker] += counted_ultra
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
}
else
{
PlayerXp[g_attacker] += get_pcvar_num(xp_kill)
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) )
}
check_level(g_attacker)
}
}
}
}
#endif
#if defined ZOMBIE_PLAGUE
public zp_user_infected_post(g_victim, g_attacker)
{
if( !get_pcvar_num(p_Enabled) )
return;
new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple)
new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra)
if((1 <= g_attacker <= g_maxplayers))
{
if(g_victim != g_attacker)
{
g_kills[g_attacker]++;
if(PlayerLevel[g_attacker] < MAXLEVEL-1)
{
if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA)
{
PlayerXp[g_attacker] += get_pcvar_num(admin_xp)
}
if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) )
{
PlayerXp[g_attacker] += counted_triple
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
}
else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) )
{
PlayerXp[g_attacker] += counted_ultra
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
}
else
{
PlayerXp[g_attacker] += get_pcvar_num(xp_kill)
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) )
}
check_level(g_attacker)
}
}
}
}
#endif
public event_deathmsg()
{
if( !get_pcvar_num(p_Enabled) )
return;
new g_attacker = read_data(1);
new g_victim = read_data(2);
new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple)
new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra)
if((1 <= g_attacker <= g_maxplayers))
{
if(g_victim != g_attacker)
{
g_kills[g_attacker]++;
if(PlayerLevel[g_attacker] < MAXLEVEL-1)
{
if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA)
{
PlayerXp[g_attacker] += get_pcvar_num(admin_xp)
}
if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) )
{
PlayerXp[g_attacker] += counted_triple
set_hudmessage(0, 40, 255, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
}
else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) )
{
PlayerXp[g_attacker] += counted_ultra
set_hudmessage(255, 30, 0, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0))
}
else
{
PlayerXp[g_attacker] += get_pcvar_num(xp_kill)
set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0)
show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) )
}
check_level(g_attacker)
}
}
}
}
public Event_StatusValue(id)
{
new target = read_data(2)
if(target != id && target != 0 && get_pcvar_num(p_Enabled))
{
static sName[32];
get_user_name(target, sName, 31)
set_hudmessage(255, 255, 255, 0.6, -1.0, 0, 0.0, 6.0, 0.0, 0.0, 2)
ShowSyncHudMsg(id, g_msgHudSync1, "%L", LANG_SERVER, "LEVEL_TEXT", sName, PlayerLevel[target], RANKLEVELS[PlayerLevel[target]])
}
}
public task_show_level(task)
{
new id = task - TASK_SHOW_LEVEL
if(!is_user_alive(id) || !get_pcvar_num(show_level_text) || !get_pcvar_num(p_Enabled) )
return;
set_hudmessage(255, 0, 0, 0.02, 0.33, 0, 0.0, 0.3, 0.0, 0.0)
ShowSyncHudMsg(id, g_msgHudSync1 , "%L", LANG_SERVER, "LEVEL_HUD_TEXT", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]], RANK[PlayerLevel[id]], RANKLEVELS[PlayerLevel[id]])
set_task(0.1, "task_show_level", TASK_SHOW_LEVEL + id)
}
public showlevel(id)
{
if ( !get_pcvar_num(p_Enabled) || get_pcvar_num(show_level_text) )
return PLUGIN_HANDLED;
client_printcolor(id, "%L", LANG_SERVER, "LEVEL_TEXT2", PlayerLevel[id] , PlayerXp[id], LEVELS[PlayerLevel[id]]);
client_printcolor(id, "%L", LANG_SERVER, "LEVEL_TEXT3", RANK[PlayerLevel[id]], RANKLEVELS[PlayerLevel[id]]);
return PLUGIN_HANDLED;
}
public descriptionx(id)
{
new szMotd[2048], szTitle[64], iPos = 0
format(szTitle, 63, "Info")
iPos += format(szMotd[iPos], 2047-iPos, "<html><head><style type=^"text/css^">pre{color:#FFB000;}body{background:#000000;margin-left:8px;margin-left:0px;}</style></head><pre><body>")
iPos += format(szMotd[iPos], 2047-iPos, "^n^n<b>%s</b>^n^n", szTitle)
iPos += format(szMotd[iPos], 2047-iPos, "%L^n", LANG_SERVER, "DESCRIPTION")
iPos += format(szMotd[iPos], 2047-iPos, "%L", LANG_SERVER, "DESCRIPTION2")
show_motd(id, szMotd, szTitle)
return PLUGIN_HANDLED;
}
public check_level(id)
{
if(PlayerLevel[id] < MAXLEVEL-1 && get_pcvar_num(p_Enabled))
{
while(PlayerXp[id] >= LEVELS[PlayerLevel[id]])
{
PlayerLevel[id]++;
if(is_user_alive(id))
{
if ( get_pcvar_num(level_style) )
{
give_weapon(id);
}
new p_origin[3];
get_user_origin(id, p_origin, 0);
set_sprite(p_origin, levelspr, 30)
set_sprite(p_origin, levelspr2, 30)
}
emit_sound(id, CHAN_ITEM, LevelUp, 1.0, ATTN_NORM, 0, PITCH_NORM);
static name[32] ; get_user_name(id, name, charsmax(name));
client_printcolor(0, "%L", LANG_SERVER, "LEVEL_UP", name, PlayerLevel[id]);
}
}
}
// Main Menu Info
public show_main_menu_info(id)
{
if ( !get_pcvar_num(p_Enabled) )
return;
static menu[510], len;
len = 0;
new xKeys3 = MENU_KEY_0|MENU_KEY_1;
// Title
len += formatex(menu[len], sizeof menu - 1 - len, "%L", LANG_SERVER, "TITLE_MENU_INFO")
len += formatex(menu[len], sizeof menu - 1 - len, "\r1. \w%L", id, "INFO")
if ( get_pcvar_num(show_rank) )
{
xKeys3 |= (MENU_KEY_2)
len += formatex(menu[len], sizeof menu - 1 - len, "^n\r2. \wTop 20^n")
}
else
{
len += formatex(menu[len], sizeof menu - 1 - len, "^n\d2. Top 20^n")
}
if(find_plugin_byfile("gunxpmod_shop.amxx") != INVALID_PLUGIN_ID)
{
xKeys3 |= (MENU_KEY_3)
len += formatex(menu[len], sizeof menu - 1 - len, "\r3. \w%L^n", id, "ITEM_LIST")
if ( is_user_alive(id) )
{
xKeys3 |= (MENU_KEY_4)
len += formatex(menu[len], sizeof menu - 1 - len, "\r4. \w%L^n", id, "UNLOCKS_SHOP_TEXT")
}
}
len += formatex(menu[len], sizeof menu - 1 - len, "^n^n\r0.\w %L", id, "EXIT_MENU")
show_menu(id, xKeys3, menu, -1, "Main Menu")
}
public main_menu_info(id, key)
{
switch (key)
{
case 0:
{
show_main_menu_info(id)
descriptionx(id)
}
case 1:
{
showtop20(id)
show_main_menu_info(id)
}
case 2:
{
show_main_menu_info(id)
if(callfunc_begin( "display_items","") == 1)
{
callfunc_push_int( id );
callfunc_end();
}
}
case 3:
{
if(callfunc_begin("item_upgrades","") == 1)
{
callfunc_push_int( id );
callfunc_end();
}
}
case 9:
{
return PLUGIN_HANDLED;
}
}
return PLUGIN_HANDLED;
}
public give_weapon(id)
{
#if defined ZOMBIE_SWARM
if( is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && get_pcvar_num(p_Enabled))
{
StripPlayerWeapons(id);
if ( get_pcvar_num(enable_grenades) && get_pcvar_num(level_style) )
{
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
}
give_item(id, WEAPONCONST[PlayerLevel[id]]);
cs_set_user_bpammo(id, AMMOCONST[PlayerLevel[id]], AMMO2CONST[PlayerLevel[id]])
}
#endif
#if defined ZOMBIE_INFECTION || defined NORMAL_MOD
if(is_user_alive(id) && get_pcvar_num(p_Enabled))
{
StripPlayerWeapons(id);
if ( get_pcvar_num(enable_grenades) && get_pcvar_num(level_style) )
{
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]);
give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]);
give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]);
}
give_item(id, WEAPONCONST[PlayerLevel[id]]);
cs_set_user_bpammo(id, AMMOCONST[PlayerLevel[id]], AMMO2CONST[PlayerLevel[id]])
}
#endif
}
public set_sprite(p_origin[3], sprite, radius)
{
// Explosion
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, p_origin)
write_byte(TE_EXPLOSION)
write_coord(p_origin[0])
write_coord(p_origin[1])
write_coord(p_origin[2])
write_short(sprite)
write_byte(radius)
write_byte(15)
write_byte(4)
message_end()
}
//Shows Top 20
public showtop20(id)
{
if( !get_pcvar_num(p_Enabled) && !get_pcvar_num(show_rank) )
return;
static Sort[33][2];
new players[32],num,count,index;
get_players(players,num);
for(new i = 0; i < num; i++)
{
index = players[i];
Sort[count][0] = index;
Sort[count][1] = PlayerXp[index];
count++;
}
SortCustom2D(Sort,count,"CompareXp");
new motd[1501],iLen;
iLen = formatex(motd, sizeof motd - 1,"<body bgcolor=#000000><font color=#98f5ff><pre>");
iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"%s %-22.22s %3s^n", "#", "Name", "# Experience");
new y = clamp(count,0,20);
new name[32],kindex;
for(new x = 0; x < y; x++)
{
kindex = Sort[x][0];
get_user_name(kindex,name,sizeof name - 1);
iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"%d %-22.22s %d^n", x + 1, name, Sort[x][1]);
}
iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"</body></font></pre>");
show_motd(id,motd, "GunXpMod Top 20");
}
public CompareXp(elem1[], elem2[])
{
if(elem1[1] > elem2[1])
return -1;
else if(elem1[1] < elem2[1])
return 1;
return 0;
}
// Command to set player Level
public cmd_give_level(id, level, cid)
{
if( !cmd_access(id, level, cid, 3) || !get_pcvar_num(p_Enabled) )
{
return PLUGIN_HANDLED;
}
new Arg1[64], Target
read_argv(1, Arg1, 63)
Target = cmd_target(id, Arg1, 0)
new iLevel[32], Value
read_argv(2, iLevel, 31)
Value = str_to_num(iLevel)
if(iLevel[0] == '-')
{
console_print(id, "You can't have a '-' in the value!")
return PLUGIN_HANDLED;
}
if(!Target)
{
console_print(id, "Target not found!")
return PLUGIN_HANDLED;
}
if(Value > MAXLEVEL-1)
{
console_print(id, "You can't set a more than %d!", MAXLEVEL-1)
return PLUGIN_HANDLED;
}
if(Value < 1)
{
console_print(id, "You can't set less than 1!")
return PLUGIN_HANDLED;
}
new AdminName[32]
get_user_name(id, AdminName, 31)
new TargetName[32]
get_user_name(Target, TargetName, 31)
PlayerLevel[Target] = Value - 1
PlayerXp[Target] = LEVELS[PlayerLevel[Target]]
check_level(Target)
client_printcolor(Target, "/gADMIN: /ctr%s /yhas set your level to /g%d", AdminName, Value)
return PLUGIN_HANDLED;
}
// ============================================================//
// [~ Saving datas ~] //
// ============================================================//
public MySQLx_Init()
{
if ( !get_pcvar_num(p_Enabled) || !get_pcvar_num(save_type) )
return;
new szHost[64], szUser[32], szPass[32], szDB[128];
get_pcvar_string( mysqlx_host, szHost, charsmax( szHost ) );
get_pcvar_string( mysqlx_user, szUser, charsmax( szUser ) );
get_pcvar_string( mysqlx_pass, szPass, charsmax( szPass ) );
get_pcvar_string( mysqlx_db, szDB, charsmax( szDB ) );
g_hTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDB );
for ( new i = 0; i < sizeof szTables; i++ )
{
SQL_ThreadQuery( g_hTuple, "QueryCreateTable", szTables[i])
}
}
public QueryCreateTable( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
{
if( iFailState == TQUERY_CONNECT_FAILED
|| iFailState == TQUERY_QUERY_FAILED )
{
log_amx( "%s", szError );
return;
}
}
SaveLevel(id)
{
new szAuth[33];
new szKey[64];
if ( get_pcvar_num(savexp) == 0 )
{
get_user_ip( id, szAuth , charsmax(szAuth), 1);
formatex( szKey , 63 , "%s-IP" , szAuth);
}
else if ( get_pcvar_num(savexp) == 1 )
{
get_user_authid( id , szAuth , charsmax(szAuth) );
formatex( szKey , 63 , "%s-ID" , szAuth);
}
else if ( get_pcvar_num(savexp) == 2 )
{
get_user_name( id, szAuth , charsmax(szAuth) );
formatex( szKey , 63 , "%s-NAME" , szAuth);
}
if ( !get_pcvar_num(save_type) )
{
new szData[256];
formatex( szData , 255 , "%i#%i#" , PlayerLevel[id], PlayerXp[id] );
nvault_set( g_Vault , szKey , szData );
}
else
{
static szQuery[ 128 ];
formatex( szQuery, 127, "REPLACE INTO `mytable` (`player_id`, `player_level`, `player_xp`) VALUES ('%s', '%d', '%d');", szAuth , PlayerLevel[id], PlayerXp[id] );
SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery);
}
}
LoadLevel(id)
{
new szAuth[33];
new szKey[40];
if ( get_pcvar_num(savexp) == 0 )
{
get_user_ip( id, szAuth , charsmax(szAuth), 1);
formatex( szKey , 63 , "%s-IP" , szAuth);
}
else if ( get_pcvar_num(savexp) == 1 )
{
get_user_authid( id , szAuth , charsmax(szAuth) );
formatex( szKey , 63 , "%s-ID" , szAuth);
}
else if ( get_pcvar_num(savexp) == 2 )
{
get_user_name( id, szAuth , charsmax(szAuth) );
formatex( szKey , 63 , "%s-NAME" , szAuth);
}
if ( !get_pcvar_num(save_type) )
{
new szData[256];
formatex(szData , 255, "%i#%i#", PlayerLevel[id], PlayerXp[id])
nvault_get(g_Vault, szKey, szData, 255)
replace_all(szData , 255, "#", " ")
new xp[32], level[32]
parse(szData, level, 31, xp, 31)
PlayerLevel[id] = str_to_num(level)
PlayerXp[id] = str_to_num(xp)
}
else
{
static szQuery[ 128 ], iData[ 1 ];
formatex( szQuery, 127, "SELECT `player_level`, `player_xp` FROM `mytable` WHERE ( `player_id` = '%s' );", szAuth );
iData[ 0 ] = id;
SQL_ThreadQuery( g_hTuple, "QuerySelectData", szQuery, iData, 1 );
}
}
public QuerySelectData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
{
if( iFailState == TQUERY_CONNECT_FAILED
|| iFailState == TQUERY_QUERY_FAILED )
{
log_amx( "%s", szError );
return;
}
else
{
new id = iData[ 0 ];
new ColLevel = SQL_FieldNameToNum(hQuery, "player_level")
new ColXp = SQL_FieldNameToNum(hQuery, "player_xp")
while (SQL_MoreResults(hQuery))
{
PlayerLevel[id] = SQL_ReadResult(hQuery, ColLevel);
PlayerXp[id] = SQL_ReadResult(hQuery, ColXp);
SQL_NextRow(hQuery)
}
}
}
public QuerySetData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime )
{
if( iFailState == TQUERY_CONNECT_FAILED
|| iFailState == TQUERY_QUERY_FAILED )
{
log_amx( "%s", szError );
return;
}
}
// ============================================================//
// [~ Natives ~] //
// ============================================================//
// Native: get_user_xp
public native_get_user_xp(id)
{
return PlayerXp[id];
}
// Native: set_user_xp
public native_set_user_xp(id, amount)
{
PlayerXp[id] = amount;
}
// Native: get_user_level
public native_get_user_level(id)
{
return PlayerLevel[id];
}
// Native: set_user_xp
public native_set_user_level(id, amount)
{
PlayerLevel[id] = amount;
}
// Native: Gets user level by Xp
public native_get_user_max_level(id)
{
return LEVELS[PlayerLevel[id]];
}
public Win_T()
{
new players[32], num, player;
get_players(players, num, "ch", "TERRORIST")
for(new i = 0; i < num; i++)
{
player = players[i]
if(is_user_connected(player))
{
PlayerXp[player] += T_WIN_XP
ColorChat(player,RED, "%s Ai castigat bonus %d XP pentru castigarea rundei.",PLUG_TAG,T_WIN_XP)
}
if(is_user_alive(player))
{
PlayerXp[player] += T_WIN_XP_ALIVE
ColorChat(player,RED, "%s Ai castigat bonus %d XP pentru ca ai supravietuit.",PLUG_TAG,T_WIN_XP_ALIVE)
}
}
return PLUGIN_CONTINUE
}
public Win_CT()
{
new players[32], num, player;
get_players(players, num, "ch", "CT")
for(new i = 0; i < num; i++)
{
player = players[i]
if(is_user_connected(player))
{
PlayerXp[player] += CT_WIN_XP
ColorChat(player,BLUE, "%s Ai castigat bonus %d XP pentru castigarea rundei.",PLUG_TAG,CT_WIN_XP)
}
if(is_user_alive(player))
{
PlayerXp[player] += CT_WIN_XP_ALIVE
ColorChat(player,BLUE, "%s Ai castigat bonus %d XP pentru ca ai supravietuit.",PLUG_TAG,CT_WIN_XP_ALIVE)
}
}
return PLUGIN_CONTINUE
}
// ============================================================ //
// [~ Stocks ~] //
// ============================================================ //
stock client_printcolor(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg,190,input,3);
replace_all(msg,190,"/g","^4");// green txt
replace_all(msg,190,"/y","^1");// orange txt
replace_all(msg,190,"/ctr","^3");// team txt
replace_all(msg,190,"/w","^0");// team txt
if (id) players[0] = id; else get_players(players,count,"ch");
for (new i = 0; i < count; i++)
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, SayTxT, _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
public StripPlayerWeapons(id)
{
strip_user_weapons(id)
set_pdata_int(id, OFFSET_PRIMARYWEAPON, 0)
give_item(id, "weapon_knife");
}
Nu îmi mai trimiteți PM pe forum! Nu merge să răspund
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
- King Innsane
- Membru, skill 0
- Posts: 20
- Joined: 30 Mar 2019, 15:34
- Detinator Steam: Da
- Detinator server CS: 193.203.39.156:27015
- Fond eXtream: 0
- Been thanked: 1 time
Nu este cum am explicat ... in primul rand, daca poti te rog frumos sa-mi scoti cele 2 meniuri. Primul meniu a lui dias de arme , iar al doilea meniu este cel standard din pluginul gunxp si sa-l lasi pe al tau.L E V I N wrote: ↑15 Sep 2019, 18:45nu știu ce eroare poate să-ți dea de la _p...dacă nu are _p lași "" la cazul său, sau dacă vrei să folosești ceva default pui modelul respecitv(gen p_knife)
e doar 1 meniu, în care bagi ce arme vrei...nu ai zis de primare sau secundare...Code: Select all
#include "gunxpmod.cfg" #if defined ZOMBIE_BIOHAZARD #include <biohazard> #endif #if defined ZOMBIE_PLAGUE #include <zombieplague> #endif #include <amxmodx> #include <amxmisc> #include <cstrike> #include <fakemeta> #include <fun> #include <hamsandwich> #include <sqlx> #include <nvault> #include <colorchat> #define PLUGIN "XP-Mod" #define AUTHOR "-" #define VERSION "2.5" #define OFFSET_PRIMARYWEAPON 116 #define TASK_SHOW_LEVEL 10113 #define fm_cs_set_user_nobuy(%1) set_pdata_int(%1, 235, get_pdata_int(%1, 235) & ~(1<<0) ) //no weapon buy new PlayerXp[33]; new PlayerLevel[33]; new g_Vault; new g_remember_selection[33], g_kills[33], g_remember_selection_pistol[33]; new g_maxplayers, g_msgHudSync1, SayTxT, enable_grenades; new levelspr, levelspr2, show_level_text, show_rank; new savexp, save_type, xp_kill, xp_triple, enable_triple, triple_kills, xp_ultra, ultra_kills, enable_ultra, p_Enabled, level_style; new enable_admin_xp, admin_xp; /*================================================================================ [MySQLx Vars, other] =================================================================================*/ new Handle:g_hTuple; new mysqlx_host, mysqlx_user, mysqlx_db, mysqlx_pass; new const szTables[][] = { "CREATE TABLE IF NOT EXISTS `mytable` ( `player_id` varchar(32) NOT NULL,`player_level` int(8) default NULL,`player_xp` int(16) default NULL,PRIMARY KEY (`player_id`) ) TYPE=MyISAM;" } enum _:MF { WName[32], WCCode, WTCode[32], WAmmo, WLevel, VModel[32], PModel[32], WModel[32]/*,*/ } new const WeaponsFUNC[/*MAXLEVEL*/][MF] = { //ARME PE LEVEL(meniu) // NUME ARMA MENIU COD CSW COD WEAPON AMMO ARMA LEVEL NECESAR pentru ARMA MODEL ARMA V_ MODEL ARMA P_ MODEL ARMA W_ { "GLOCK 18", CSW_GLOCK18, "weapon_glock18", 120, 1, "models/v_glock18.mdl", "models/p_glock18.mdl", "models/w_glock18.mdl" }/*,*/ }; /* #define LEVELUPXP 400 #define SKINHATSLEVELCHANGE 30 new const WLVLS[MAXLEVEL]=//LVL ARME { 0,//DEF 1, 2, 3 }*/ new menuCBH,bool:used[33] enum _:ZMF { SKIN[32], VKnife[32], /*PKnife[32], WKnife[32],*/ HP, LVL } new const ZmFUNC[][ZMF]= { {// NUME SKIN(models/players/nume_skin/nume_skin.mdl) NUME CUTIT(v) NUME CUTIT(p) NUME CUTIT(w) HP START LEVEL pentru BENEFICII "test_skin", "v_knife1", /*"p_knife1", "w_knife1",*/ 1337, 1 } } /*inutile zic*/ new const AMMOCONST[MAXLEVEL] = { 10, 16, 23, 26, 10, 16, 17, 20, 8, 19, 28 } new const WEAPONCONST[MAXLEVEL][] = {"weapon_glock18", "weapon_usp", "weapon_elite", "weapon_deagle", "weapon_tmp", "weapon_mac10", "weapon_mp5navy", "weapon_m249", "weapon_aug", "weapon_m4a1", "weapon_ak47" }; // Give Weapons new const WEAPONMDL[MAXLEVEL][] = { "models/w_glock18.mdl", "models/w_usp.mdl", "models/w_elite", "models/w_deagle.mdl", "models/w_tmp10.mdl", "models/w_mac10.mdl", "models/w_mp5.mdl", "models/w_m249.mdl", "models/w_aug.mdl", "models/w_m4a1.mdl", "models/w_ak47.mdl" }; // Blocks pick up weapon, don't change! /*================================================================================ [Plugin natives,precache,init] =================================================================================*/ public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_cvar("gxm_version", VERSION, FCVAR_SPONLY|FCVAR_SERVER) set_cvar_string("gxm_version", VERSION) register_concmd("amx_level", "cmd_give_level", ADMIN_CFG, "<Nume Joc> <NR LVL>" ); register_clcmd("say /lvl", "showlevel"); register_clcmd("say /top20","showtop20"); register_clcmd("say /menu","show_main_menu_info"); p_Enabled = register_cvar( "xp_enable", "1" ); // Plugin enabled? 1 = Yes, 0 = No. save_type = register_cvar("xp_savetype","0"); // Save Xp to : 1 = MySQL, 0 = NVault. savexp = register_cvar("xp_save","2"); // Save Xp by : 1 = SteamID, 0 = IP, 2 = Nicks xp_kill = register_cvar("xp_nivel","10"); // How much xp gain if you killed someone? show_level_text = register_cvar("xp_level_text","0"); // Show your level by : 1 = HUD message, 0 = Simple colored text message. show_rank = register_cvar("xp_show_rank","1"); // Show rank in /top20? 1 = Yes, 0 = No. level_style = register_cvar("xp_level_style","0"); // You will gain each level new gun : 1 = Yes, 0 = No,select your gun by menu. enable_grenades = register_cvar("xp_grenades","1"); // Give to player grenades? 1 = Yes, 0 = No. enable_triple = register_cvar("xp_triple","1"); // Enable Triple Kill bonus xp? 1 = Yes, 0 = No. xp_triple = register_cvar("xp_triple_xp","3"); // How much bonus xp give for Triple Kill? triple_kills = register_cvar("xp_triple_kills","3"); // How much kills needed to give bonus xp? enable_ultra = register_cvar("xp_ultra","1"); // Enable Ultra Kill bonus xp? 1 = Yes, 0 = No. xp_ultra = register_cvar("xp_ultra_xp","5"); // How much bonus xp give for Ultra Kill? ultra_kills = register_cvar("xp_ultra_kills","6"); // How much kills needed to give bonus xp? enable_admin_xp = register_cvar("xp_admin_xp","1"); // Enable Extra xp for killing? 1 = Yes, 0 = No. admin_xp = register_cvar("xp_extra_xp","10"); // How much extra xp give to admins? // SQLx cvars mysqlx_host = register_cvar ("xp_host", ""); // The host from the db mysqlx_user = register_cvar ("xp_user", ""); // The username from the db login mysqlx_pass = register_cvar ("xp_pass", ""); // The password from the db login mysqlx_db = register_cvar ("xp_dbname", ""); // The database name // Events // register_event("DeathMsg", "event_deathmsg", "a"); register_event("StatusValue", "Event_StatusValue", "bd", "1=2") // Forwards // RegisterHam(Ham_Spawn, "player", "fwd_PlayerSpawn", 1); register_forward(FM_Touch, "fwd_Touch"); // Messages // #if defined NORMAL_MOD || defined ZOMBIE_SWARM register_message(get_user_msgid("StatusIcon"), "Message_StatusIcon") #endif // Other // register_menucmd(register_menuid("Main Menu"), 1023, "main_menu_info") register_dictionary("gunxpmod.txt"); MySQLx_Init() SayTxT = get_user_msgid("SayText"); g_msgHudSync1 = CreateHudSyncObj() g_maxplayers = get_maxplayers(); menuCBH = menu_makecallback( "menucallback1" );//teste register_clcmd("say /tw","WM") register_clcmd("say_team /tw","WM") register_event("SendAudio", "Win_T", "a", "2=%!MRAD_terwin") register_event("SendAudio", "Win_CT", "a", "2=%!MRAD_ctwin") register_event("HLTV", "event_new_round", "a", "1=0", "2=0") RegisterHam( Ham_Item_Deploy, "weapon_knife", "Ham_KnifeDeployPost", 1 ); //register_forward(FM_SetModel, "fw_SetModel") } public event_new_round() for(new id=1;id<=get_maxplayers();id++) used[id]=false public WM(id) { if(!is_user_alive(id)) return new menu = menu_create( "Choose your weapon", "menuhandler1" ); new level = PlayerLevel[id]//PlayerXp[ id ] / LEVELUPXP; for( new i=0; i < sizeof(WeaponsFUNC); i++ ) { /* for(new x;x<sizeof(WLVLS);x++) { menu_additem( menu, WeaponsFUNC[ i ][WName], _, level>=WLVLS[x], menuCBH ); } */ new text[512] if(level<WeaponsFUNC[ i ][WLevel]) formatex(text,charsmax(text),"\w[\yLOCKED\w]\r %s\w [\dAvailable on level:\r %d\w]",WeaponsFUNC[ i ][WName],WeaponsFUNC[ i ][WLevel]) menu_additem( menu, WeaponsFUNC[ i ][WName], _, _, menuCBH ); } menu_display( id, menu, 0); } public menuhandler1( id, menu, item ) { if(item == MENU_EXIT||!is_user_alive(id)) { menu_destroy(menu) return PLUGIN_HANDLED } if(/*item == */user_has_weapon(id,WeaponsFUNC[item][WCCode])) { client_print(id,print_chat, "%s You already have: %s",PLUG_TAG, WeaponsFUNC[item][WName]); menu_destroy(menu) return PLUGIN_HANDLED } Set_WP( id, WeaponsFUNC[item][WTCode],WeaponsFUNC[item][WCCode],WeaponsFUNC[item][WAmmo] ); client_print(id,print_chat, "%s The weapon you chose is: %s",PLUG_TAG, WeaponsFUNC[item][WName]); menu_destroy(menu); return PLUGIN_HANDLED } public menucallback1( id, menu, item ) { static szInfo[8], iAccess, iCallback; menu_item_getinfo(menu, item, iAccess, szInfo, charsmax(szInfo), .callback = iCallback); /*static iType; iType = str_to_num(szInfo);*/ new level = PlayerLevel[ id ]; if( WeaponsFUNC[item][WLevel] > level /*/ SKINWPEVELCHANGE||item == settingH[id]*/ ) return ITEM_DISABLED; return ITEM_ENABLED; } stock Set_WP(const id,const WPName[]="",WPCode,WPAmmo) { if(!is_user_alive(id)) return strip_user_weapons(id) give_item(id,"weapon_knife") give_item(id,WPName) cs_set_user_bpammo(id,WPCode,WPAmmo) } // Main Menu Level Style public show_main_menu_level(id) { if ( !is_user_alive(id) ) return; new szInfo[60], szChooseT[40], szLastG[40]; formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] ); new menu = menu_create(szInfo , "main_menu_level"); formatex(szChooseT, charsmax(szChooseT), "%L", LANG_SERVER, "CHOOSE_TEXT"); menu_additem(menu, szChooseT, "1", 0); formatex(szLastG, charsmax(szLastG), "%L", LANG_SERVER, "LAST_GUNS"); menu_additem(menu, szLastG, "2", 0); new szExit[15]; formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU"); menu_setprop(menu, MPROP_EXITNAME, szExit); menu_display(id , menu , 0); } public main_menu_level(id , menu , item) { if ( !is_user_alive(id) ) { return PLUGIN_HANDLED; } #if defined ZOMBIE_PLAGUE if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T ) return PLUGIN_HANDLED; #endif if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[6], iName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,5, iName, 63, callback); new item_id = str_to_num(data); switch (item_id) { case 1: // show pistols { if(!used[id]) show_menu_level_pistol(id); } case 2: // last weapons { if ( PlayerLevel[id] > MAX_PISTOLS_MENU - 1 ) { give_weapon_menu(id, g_remember_selection[id], 1, 1); give_weapon_menu(id, g_remember_selection_pistol[id], 0, 0); } else if ( PlayerLevel[id] < MAX_PISTOLS_MENU ) { give_weapon_menu(id, g_remember_selection_pistol[id], 1, 1); } } } menu_destroy(menu); return PLUGIN_HANDLED; } // Menu Level Style Pistols public show_menu_level_pistol(id) { if ( !is_user_alive(id) ) return; new szInfo[60]; formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] ); new menu = menu_create(szInfo , "pistol_menu"); for (new item_id = 0; item_id < MAX_PISTOLS_MENU; item_id++) { new szItems[60], szTempid[32]; if ( PlayerLevel[id] >= GUN_LEVELS[item_id] ) { formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "ACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] ) num_to_str(item_id, szTempid, charsmax(szTempid) ); menu_additem(menu, szItems, szTempid, 0); } else { formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "INACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] ) menu_additem(menu, szItems, "999", 0, menu_makecallback("CallbackMenu")); } } new szNext[15], szBack[15], szExit[15]; formatex(szBack, charsmax(szBack), "%L", LANG_SERVER, "BACK_MENU"); formatex(szNext, charsmax(szNext), "%L", LANG_SERVER, "NEXT_MENU"); formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU"); menu_setprop(menu, MPROP_BACKNAME, szBack) menu_setprop(menu, MPROP_NEXTNAME, szNext) menu_setprop(menu, MPROP_EXITNAME, szExit) menu_display(id , menu , 0); } public pistol_menu(id , menu , item) { if ( !is_user_alive(id) ) { return PLUGIN_HANDLED; } #if defined ZOMBIE_PLAGUE if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T ) return PLUGIN_HANDLED; #endif if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[6], iName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,5, iName, 63, callback); new item_id = str_to_num(data); g_remember_selection_pistol[id] = item_id; give_weapon_menu(id, item_id, 1, 1); if ( PlayerLevel[id] > MAX_PISTOLS_MENU - 1 )///hmmm { show_menu_level(id); } used[id]=true menu_destroy(menu); return PLUGIN_HANDLED; } // Menu Level Style Primary public show_menu_level(id) { if ( !is_user_alive(id) || PlayerLevel[id] < MAX_PISTOLS_MENU ) return; new szInfo[100]; formatex(szInfo, charsmax(szInfo), "%L", LANG_SERVER, "TITLE_MENU", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]] ); new menu = menu_create(szInfo , "level_menu"); for (new item_id = MAX_PISTOLS_MENU; item_id < MAXLEVEL; item_id++) { new szItems[512], szTempid[32]; if ( PlayerLevel[id] >= GUN_LEVELS[item_id] ) { formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "ACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] ) num_to_str(item_id, szTempid, charsmax(szTempid) ); menu_additem(menu, szItems, szTempid, 0); } else { formatex(szItems, charsmax(szItems), "%L", LANG_SERVER, "INACTIVE_MENU", RANK[item_id], GUN_LEVELS[item_id] ) menu_additem(menu, szItems, "999", 0, menu_makecallback("CallbackMenu")); } } new szNext[15], szBack[15], szExit[15]; formatex(szBack, charsmax(szBack), "%L", LANG_SERVER, "BACK_MENU"); formatex(szNext, charsmax(szNext), "%L", LANG_SERVER, "NEXT_MENU"); formatex(szExit, charsmax(szExit), "%L", LANG_SERVER, "EXIT_MENU"); menu_setprop(menu, MPROP_BACKNAME, szBack) menu_setprop(menu, MPROP_NEXTNAME, szNext) menu_setprop(menu, MPROP_EXITNAME, szExit) menu_display(id , menu , 0); } public level_menu(id , menu , item) { if ( !is_user_alive(id) || PlayerLevel[id] < MAX_PISTOLS_MENU ) { return PLUGIN_HANDLED; } #if defined ZOMBIE_PLAGUE if ( zp_has_round_started() && cs_get_user_team(id) == CS_TEAM_T ) return PLUGIN_HANDLED; #endif if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[6], iName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,5, iName, 63, callback); new item_id = str_to_num(data); g_remember_selection[id] = item_id; give_weapon_menu(id, item_id, 0, 0); menu_destroy(menu); return PLUGIN_HANDLED; } public CallbackMenu(id, menu, item) { return ITEM_DISABLED; } // Selected by menu or remember selection and give item public give_weapon_menu(id, selection, strip, givegren) { #if defined ZOMBIE_SWARM if( is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && get_pcvar_num(p_Enabled) ) { if ( strip ) { StripPlayerWeapons(id); } if ( get_pcvar_num(enable_grenades) && givegren ) { give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]); give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]); give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]); give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]); } give_item(id, WEAPONCONST[selection]); cs_set_user_bpammo(id, AMMOCONST[selection], AMMO2CONST[selection]) } #endif #if defined ZOMBIE_INFECTION || defined NORMAL_MOD if(is_user_alive(id) && get_pcvar_num(p_Enabled)) { if ( strip ) { StripPlayerWeapons(id); } if ( get_pcvar_num(enable_grenades) && givegren ) { give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]); give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]); give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]); give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]); } give_item(id, WEAPONCONST[selection]); cs_set_user_bpammo(id, AMMOCONST[selection], AMMO2CONST[selection]) } #endif } public plugin_natives() { // Player natives // register_native("get_user_xp", "native_get_user_xp", 1); register_native("set_user_xp", "native_set_user_xp", 1); register_native("get_user_level", "native_get_user_level", 1); register_native("set_user_level", "native_set_user_level", 1); register_native("get_user_max_level", "native_get_user_max_level", 1); } public plugin_precache() { levelspr = engfunc(EngFunc_PrecacheModel, "sprites/xfire.spr"); levelspr2 = engfunc(EngFunc_PrecacheModel, "sprites/xfire2.spr"); engfunc(EngFunc_PrecacheSound, LevelUp); for(new i; i < sizeof(WeaponsFUNC); i++) { if(WeaponsFUNC[i][0]) { precache_model(WeaponsFUNC[i][VModel]) precache_model(WeaponsFUNC[i][PModel]) precache_model(WeaponsFUNC[i][WModel]) } } for(new i; i < sizeof(ZmFUNC); i++) { precache_player_model(ZmFUNC[i][SKIN],1) precache_player_model(ZmFUNC[i][VKnife],2) /*precache_player_model(ZmFUNC[i][PKnife],2) precache_player_model(ZmFUNC[i][WKnife],2)*/ } } precache_player_model(szModel[],mode) { static szFile[512] switch(mode) { case 1: { formatex(szFile, charsmax(szFile), "models/player/%s/%s.mdl", szModel, szModel) precache_model(szFile) replace(szFile, charsmax(szFile), ".mdl", "T.mdl") if(file_exists(szFile)) precache_model(szFile) } case 2: { formatex(szFile, charsmax(szFile), "models/%s/%s.mdl", szModel, szModel) precache_model(szFile) } } } public plugin_cfg() { new ConfDir[32], File[192]; get_configsdir( ConfDir, charsmax( ConfDir ) ); formatex( File, charsmax( File ), "%s/gunxpmod.cfg", ConfDir ); if( !file_exists( File ) ) { server_print( "File %s doesn't exist!", File ); write_file( File, "", -1 ); } else { server_print( "%s successfully loaded.", File ); server_cmd( "exec %s", File ); } //Open our vault and have g_Vault store the handle. g_Vault = nvault_open( "gunxpmod" ); //Make the plugin error if vault did not successfully open if ( g_Vault == INVALID_HANDLE ) set_fail_state( "Error opening GunXpMod nVault, file does not exist!" ); } public plugin_end() { //Close the vault when the plugin ends (map change\server shutdown\restart) nvault_close( g_Vault ); } public client_connect(id) { g_remember_selection[id] = MAX_PISTOLS_MENU; g_remember_selection_pistol[id] = 0; LoadLevel(id) } public client_disconnect(id) { SaveLevel(id) PlayerXp[id] = 0; PlayerLevel[id] = 0; remove_task( TASK_SHOW_LEVEL + id ); } public Message_StatusIcon(iMsgId, MSG_DEST, id) { if( !get_pcvar_num(p_Enabled) ) return PLUGIN_HANDLED; static szIcon[5] get_msg_arg_string(2, szIcon, 4) if( szIcon[0] == 'b' && szIcon[2] == 'y' && szIcon[3] == 'z' ) { if( get_msg_arg_int(1)) { fm_cs_set_user_nobuy(id) return PLUGIN_HANDLED; } } return PLUGIN_CONTINUE; } public fwd_Touch(ent, id) { if (!is_user_alive(id) || !pev_valid( ent ) ) return FMRES_IGNORED; static szEntModel[32]; pev( ent , pev_model , szEntModel , 31 ); for (new level_equip_id = PlayerLevel[id] + 1; level_equip_id < MAXLEVEL; level_equip_id++) { if ( equali( szEntModel , WEAPONMDL[level_equip_id] ) ) { return FMRES_SUPERCEDE; } } return FMRES_IGNORED; } /*public fw_SetModel(entity, model[])//dropped knife??for W_.... { if(!pev_valid(entity)) return FMRES_IGNORED for(new i; i < sizeof(ZmFUNC); i++) { if(!equali(model, ZmFUNC[i][WKnife])) return FMRES_IGNORED new className[33] pev(entity, pev_classname, className, 32) // dropped weapons map weapons c4 + grenades if(equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade")) { engfunc(EngFunc_SetModel, entity, ZmFUNC[i][WKnife]) return FMRES_SUPERCEDE } } return FMRES_IGNORED }*/ public Ham_KnifeDeployPost( iEnt ) { new id = get_pdata_cbase( iEnt, 41,4 ); // m_pPlayer = 41 , 4 - linux offset... if(!is_user_alive(id)) return for(new i; i < sizeof(ZmFUNC); i++) { if(PlayerLevel[id]==ZmFUNC[i][LVL]) { set_pev(id, pev_viewmodel2, ZmFUNC[i][VKnife]) //set_pev(id, pev_weaponmodel2, ZmFUNC[i][PKnife]); break } } } public fwd_PlayerSpawn(id) { if( !get_pcvar_num(p_Enabled) || !is_user_alive(id) ) return; g_kills[id] = 0 /*switch(PlayerLevel[id]) { }*/ for(new i; i < sizeof(ZmFUNC); i++) { if(PlayerLevel[id]==ZmFUNC[i][LVL]) { cs_set_user_model(id,ZmFUNC[i][SKIN]) set_user_health(id,ZmFUNC[i][HP]) break } } #if defined ZOMBIE_SWARM if ( !get_pcvar_num(level_style) && cs_get_user_team(id) == CS_TEAM_CT ) { StripPlayerWeapons(id); set_task(2.0, "show_main_menu_level", id) } #endif #if defined NORMAL_MOD || defined ZOMBIE_INFECTION if ( !get_pcvar_num(level_style)) { StripPlayerWeapons(id); set_task(2.0, "show_main_menu_level", id) } #endif if( get_pcvar_num(show_level_text) ) { remove_task( TASK_SHOW_LEVEL + id ); set_task(0.1, "task_show_level", TASK_SHOW_LEVEL + id) } #if defined ZOMBIE_SWARM if ( get_pcvar_num(level_style) && cs_get_user_team(id) == CS_TEAM_CT ) { set_task(0.3, "give_weapon", id); } #endif #if defined NORMAL_MOD || defined ZOMBIE_INFECTION if ( get_pcvar_num(level_style) ) { set_task(0.3, "give_weapon", id); WM(id) } #endif } #if defined ZOMBIE_PLAGUE public zp_user_humanized_post(id, survivor) { if( !get_pcvar_num(p_Enabled) || !is_user_alive(id) ) return; set_task(1.0, "show_main_menu_level", id); } #endif #if defined ZOMBIE_BIOHAZARD public event_infect(g_victim, g_attacker) { if( !get_pcvar_num(p_Enabled) ) return; new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple) + get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0 new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra) + get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0 if((1 <= g_attacker <= g_maxplayers)) { if(g_victim != g_attacker) { g_kills[g_attacker]++; if(PlayerLevel[g_attacker] < MAXLEVEL-1) { if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA) { PlayerXp[g_attacker] += get_pcvar_num(admin_xp) } if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) ) { PlayerXp[g_attacker] += counted_triple set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0) show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0)) } else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) ) { PlayerXp[g_attacker] += counted_ultra set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0) show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0)) } else { PlayerXp[g_attacker] += get_pcvar_num(xp_kill) set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0) show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) ) } check_level(g_attacker) } } } } #endif #if defined ZOMBIE_PLAGUE public zp_user_infected_post(g_victim, g_attacker) { if( !get_pcvar_num(p_Enabled) ) return; new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple) new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra) if((1 <= g_attacker <= g_maxplayers)) { if(g_victim != g_attacker) { g_kills[g_attacker]++; if(PlayerLevel[g_attacker] < MAXLEVEL-1) { if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA) { PlayerXp[g_attacker] += get_pcvar_num(admin_xp) } if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) ) { PlayerXp[g_attacker] += counted_triple set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0) show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0)) } else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) ) { PlayerXp[g_attacker] += counted_ultra set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0) show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0)) } else { PlayerXp[g_attacker] += get_pcvar_num(xp_kill) set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0) show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) ) } check_level(g_attacker) } } } } #endif public event_deathmsg() { if( !get_pcvar_num(p_Enabled) ) return; new g_attacker = read_data(1); new g_victim = read_data(2); new counted_triple = get_pcvar_num(xp_kill) + get_pcvar_num(xp_triple) new counted_ultra = get_pcvar_num(xp_kill) + get_pcvar_num(xp_ultra) if((1 <= g_attacker <= g_maxplayers)) { if(g_victim != g_attacker) { g_kills[g_attacker]++; if(PlayerLevel[g_attacker] < MAXLEVEL-1) { if ( get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA) { PlayerXp[g_attacker] += get_pcvar_num(admin_xp) } if ( g_kills[g_attacker] == get_pcvar_num(triple_kills) && get_pcvar_num(enable_triple) ) { PlayerXp[g_attacker] += counted_triple set_hudmessage(0, 40, 255, 0.50, 0.33, 1, 2.0, 2.0) show_hudmessage(g_attacker, "%L", LANG_SERVER, "TRIPLE_XP", counted_triple + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0)) } else if ( g_kills[g_attacker] == get_pcvar_num(ultra_kills) && get_pcvar_num(enable_ultra) ) { PlayerXp[g_attacker] += counted_ultra set_hudmessage(255, 30, 0, 0.50, 0.33, 1, 2.0, 2.0) show_hudmessage(g_attacker, "%L", LANG_SERVER, "ULTRA_XP", counted_ultra + (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0)) } else { PlayerXp[g_attacker] += get_pcvar_num(xp_kill) set_hudmessage(0, 255, 50, 0.50, 0.33, 1, 2.0, 2.0) show_hudmessage(g_attacker, "+%i", (get_pcvar_num(enable_admin_xp) && get_user_flags(g_attacker) & ADMIN_EXTRA ? get_pcvar_num(admin_xp) : 0) + get_pcvar_num(xp_kill) ) } check_level(g_attacker) } } } } public Event_StatusValue(id) { new target = read_data(2) if(target != id && target != 0 && get_pcvar_num(p_Enabled)) { static sName[32]; get_user_name(target, sName, 31) set_hudmessage(255, 255, 255, 0.6, -1.0, 0, 0.0, 6.0, 0.0, 0.0, 2) ShowSyncHudMsg(id, g_msgHudSync1, "%L", LANG_SERVER, "LEVEL_TEXT", sName, PlayerLevel[target], RANKLEVELS[PlayerLevel[target]]) } } public task_show_level(task) { new id = task - TASK_SHOW_LEVEL if(!is_user_alive(id) || !get_pcvar_num(show_level_text) || !get_pcvar_num(p_Enabled) ) return; set_hudmessage(255, 0, 0, 0.02, 0.33, 0, 0.0, 0.3, 0.0, 0.0) ShowSyncHudMsg(id, g_msgHudSync1 , "%L", LANG_SERVER, "LEVEL_HUD_TEXT", PlayerLevel[id], PlayerXp[id], LEVELS[PlayerLevel[id]], RANK[PlayerLevel[id]], RANKLEVELS[PlayerLevel[id]]) set_task(0.1, "task_show_level", TASK_SHOW_LEVEL + id) } public showlevel(id) { if ( !get_pcvar_num(p_Enabled) || get_pcvar_num(show_level_text) ) return PLUGIN_HANDLED; client_printcolor(id, "%L", LANG_SERVER, "LEVEL_TEXT2", PlayerLevel[id] , PlayerXp[id], LEVELS[PlayerLevel[id]]); client_printcolor(id, "%L", LANG_SERVER, "LEVEL_TEXT3", RANK[PlayerLevel[id]], RANKLEVELS[PlayerLevel[id]]); return PLUGIN_HANDLED; } public descriptionx(id) { new szMotd[2048], szTitle[64], iPos = 0 format(szTitle, 63, "Info") iPos += format(szMotd[iPos], 2047-iPos, "<html><head><style type=^"text/css^">pre{color:#FFB000;}body{background:#000000;margin-left:8px;margin-left:0px;}</style></head><pre><body>") iPos += format(szMotd[iPos], 2047-iPos, "^n^n<b>%s</b>^n^n", szTitle) iPos += format(szMotd[iPos], 2047-iPos, "%L^n", LANG_SERVER, "DESCRIPTION") iPos += format(szMotd[iPos], 2047-iPos, "%L", LANG_SERVER, "DESCRIPTION2") show_motd(id, szMotd, szTitle) return PLUGIN_HANDLED; } public check_level(id) { if(PlayerLevel[id] < MAXLEVEL-1 && get_pcvar_num(p_Enabled)) { while(PlayerXp[id] >= LEVELS[PlayerLevel[id]]) { PlayerLevel[id]++; if(is_user_alive(id)) { if ( get_pcvar_num(level_style) ) { give_weapon(id); } new p_origin[3]; get_user_origin(id, p_origin, 0); set_sprite(p_origin, levelspr, 30) set_sprite(p_origin, levelspr2, 30) } emit_sound(id, CHAN_ITEM, LevelUp, 1.0, ATTN_NORM, 0, PITCH_NORM); static name[32] ; get_user_name(id, name, charsmax(name)); client_printcolor(0, "%L", LANG_SERVER, "LEVEL_UP", name, PlayerLevel[id]); } } } // Main Menu Info public show_main_menu_info(id) { if ( !get_pcvar_num(p_Enabled) ) return; static menu[510], len; len = 0; new xKeys3 = MENU_KEY_0|MENU_KEY_1; // Title len += formatex(menu[len], sizeof menu - 1 - len, "%L", LANG_SERVER, "TITLE_MENU_INFO") len += formatex(menu[len], sizeof menu - 1 - len, "\r1. \w%L", id, "INFO") if ( get_pcvar_num(show_rank) ) { xKeys3 |= (MENU_KEY_2) len += formatex(menu[len], sizeof menu - 1 - len, "^n\r2. \wTop 20^n") } else { len += formatex(menu[len], sizeof menu - 1 - len, "^n\d2. Top 20^n") } if(find_plugin_byfile("gunxpmod_shop.amxx") != INVALID_PLUGIN_ID) { xKeys3 |= (MENU_KEY_3) len += formatex(menu[len], sizeof menu - 1 - len, "\r3. \w%L^n", id, "ITEM_LIST") if ( is_user_alive(id) ) { xKeys3 |= (MENU_KEY_4) len += formatex(menu[len], sizeof menu - 1 - len, "\r4. \w%L^n", id, "UNLOCKS_SHOP_TEXT") } } len += formatex(menu[len], sizeof menu - 1 - len, "^n^n\r0.\w %L", id, "EXIT_MENU") show_menu(id, xKeys3, menu, -1, "Main Menu") } public main_menu_info(id, key) { switch (key) { case 0: { show_main_menu_info(id) descriptionx(id) } case 1: { showtop20(id) show_main_menu_info(id) } case 2: { show_main_menu_info(id) if(callfunc_begin( "display_items","") == 1) { callfunc_push_int( id ); callfunc_end(); } } case 3: { if(callfunc_begin("item_upgrades","") == 1) { callfunc_push_int( id ); callfunc_end(); } } case 9: { return PLUGIN_HANDLED; } } return PLUGIN_HANDLED; } public give_weapon(id) { #if defined ZOMBIE_SWARM if( is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT && get_pcvar_num(p_Enabled)) { StripPlayerWeapons(id); if ( get_pcvar_num(enable_grenades) && get_pcvar_num(level_style) ) { give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]); give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]); give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]); give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]); } give_item(id, WEAPONCONST[PlayerLevel[id]]); cs_set_user_bpammo(id, AMMOCONST[PlayerLevel[id]], AMMO2CONST[PlayerLevel[id]]) } #endif #if defined ZOMBIE_INFECTION || defined NORMAL_MOD if(is_user_alive(id) && get_pcvar_num(p_Enabled)) { StripPlayerWeapons(id); if ( get_pcvar_num(enable_grenades) && get_pcvar_num(level_style) ) { give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]); give_item(id, FLASHBANG_LEVEL[PlayerLevel[id]]); give_item(id, HEGRENADE_LEVEL[PlayerLevel[id]]); give_item(id, SMOKEGRENADE_LEVEL[PlayerLevel[id]]); } give_item(id, WEAPONCONST[PlayerLevel[id]]); cs_set_user_bpammo(id, AMMOCONST[PlayerLevel[id]], AMMO2CONST[PlayerLevel[id]]) } #endif } public set_sprite(p_origin[3], sprite, radius) { // Explosion message_begin(MSG_BROADCAST, SVC_TEMPENTITY, p_origin) write_byte(TE_EXPLOSION) write_coord(p_origin[0]) write_coord(p_origin[1]) write_coord(p_origin[2]) write_short(sprite) write_byte(radius) write_byte(15) write_byte(4) message_end() } //Shows Top 20 public showtop20(id) { if( !get_pcvar_num(p_Enabled) && !get_pcvar_num(show_rank) ) return; static Sort[33][2]; new players[32],num,count,index; get_players(players,num); for(new i = 0; i < num; i++) { index = players[i]; Sort[count][0] = index; Sort[count][1] = PlayerXp[index]; count++; } SortCustom2D(Sort,count,"CompareXp"); new motd[1501],iLen; iLen = formatex(motd, sizeof motd - 1,"<body bgcolor=#000000><font color=#98f5ff><pre>"); iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"%s %-22.22s %3s^n", "#", "Name", "# Experience"); new y = clamp(count,0,20); new name[32],kindex; for(new x = 0; x < y; x++) { kindex = Sort[x][0]; get_user_name(kindex,name,sizeof name - 1); iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"%d %-22.22s %d^n", x + 1, name, Sort[x][1]); } iLen += formatex(motd[iLen], (sizeof motd - 1) - iLen,"</body></font></pre>"); show_motd(id,motd, "GunXpMod Top 20"); } public CompareXp(elem1[], elem2[]) { if(elem1[1] > elem2[1]) return -1; else if(elem1[1] < elem2[1]) return 1; return 0; } // Command to set player Level public cmd_give_level(id, level, cid) { if( !cmd_access(id, level, cid, 3) || !get_pcvar_num(p_Enabled) ) { return PLUGIN_HANDLED; } new Arg1[64], Target read_argv(1, Arg1, 63) Target = cmd_target(id, Arg1, 0) new iLevel[32], Value read_argv(2, iLevel, 31) Value = str_to_num(iLevel) if(iLevel[0] == '-') { console_print(id, "You can't have a '-' in the value!") return PLUGIN_HANDLED; } if(!Target) { console_print(id, "Target not found!") return PLUGIN_HANDLED; } if(Value > MAXLEVEL-1) { console_print(id, "You can't set a more than %d!", MAXLEVEL-1) return PLUGIN_HANDLED; } if(Value < 1) { console_print(id, "You can't set less than 1!") return PLUGIN_HANDLED; } new AdminName[32] get_user_name(id, AdminName, 31) new TargetName[32] get_user_name(Target, TargetName, 31) PlayerLevel[Target] = Value - 1 PlayerXp[Target] = LEVELS[PlayerLevel[Target]] check_level(Target) client_printcolor(Target, "/gADMIN: /ctr%s /yhas set your level to /g%d", AdminName, Value) return PLUGIN_HANDLED; } // ============================================================// // [~ Saving datas ~] // // ============================================================// public MySQLx_Init() { if ( !get_pcvar_num(p_Enabled) || !get_pcvar_num(save_type) ) return; new szHost[64], szUser[32], szPass[32], szDB[128]; get_pcvar_string( mysqlx_host, szHost, charsmax( szHost ) ); get_pcvar_string( mysqlx_user, szUser, charsmax( szUser ) ); get_pcvar_string( mysqlx_pass, szPass, charsmax( szPass ) ); get_pcvar_string( mysqlx_db, szDB, charsmax( szDB ) ); g_hTuple = SQL_MakeDbTuple( szHost, szUser, szPass, szDB ); for ( new i = 0; i < sizeof szTables; i++ ) { SQL_ThreadQuery( g_hTuple, "QueryCreateTable", szTables[i]) } } public QueryCreateTable( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) { if( iFailState == TQUERY_CONNECT_FAILED || iFailState == TQUERY_QUERY_FAILED ) { log_amx( "%s", szError ); return; } } SaveLevel(id) { new szAuth[33]; new szKey[64]; if ( get_pcvar_num(savexp) == 0 ) { get_user_ip( id, szAuth , charsmax(szAuth), 1); formatex( szKey , 63 , "%s-IP" , szAuth); } else if ( get_pcvar_num(savexp) == 1 ) { get_user_authid( id , szAuth , charsmax(szAuth) ); formatex( szKey , 63 , "%s-ID" , szAuth); } else if ( get_pcvar_num(savexp) == 2 ) { get_user_name( id, szAuth , charsmax(szAuth) ); formatex( szKey , 63 , "%s-NAME" , szAuth); } if ( !get_pcvar_num(save_type) ) { new szData[256]; formatex( szData , 255 , "%i#%i#" , PlayerLevel[id], PlayerXp[id] ); nvault_set( g_Vault , szKey , szData ); } else { static szQuery[ 128 ]; formatex( szQuery, 127, "REPLACE INTO `mytable` (`player_id`, `player_level`, `player_xp`) VALUES ('%s', '%d', '%d');", szAuth , PlayerLevel[id], PlayerXp[id] ); SQL_ThreadQuery( g_hTuple, "QuerySetData", szQuery); } } LoadLevel(id) { new szAuth[33]; new szKey[40]; if ( get_pcvar_num(savexp) == 0 ) { get_user_ip( id, szAuth , charsmax(szAuth), 1); formatex( szKey , 63 , "%s-IP" , szAuth); } else if ( get_pcvar_num(savexp) == 1 ) { get_user_authid( id , szAuth , charsmax(szAuth) ); formatex( szKey , 63 , "%s-ID" , szAuth); } else if ( get_pcvar_num(savexp) == 2 ) { get_user_name( id, szAuth , charsmax(szAuth) ); formatex( szKey , 63 , "%s-NAME" , szAuth); } if ( !get_pcvar_num(save_type) ) { new szData[256]; formatex(szData , 255, "%i#%i#", PlayerLevel[id], PlayerXp[id]) nvault_get(g_Vault, szKey, szData, 255) replace_all(szData , 255, "#", " ") new xp[32], level[32] parse(szData, level, 31, xp, 31) PlayerLevel[id] = str_to_num(level) PlayerXp[id] = str_to_num(xp) } else { static szQuery[ 128 ], iData[ 1 ]; formatex( szQuery, 127, "SELECT `player_level`, `player_xp` FROM `mytable` WHERE ( `player_id` = '%s' );", szAuth ); iData[ 0 ] = id; SQL_ThreadQuery( g_hTuple, "QuerySelectData", szQuery, iData, 1 ); } } public QuerySelectData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) { if( iFailState == TQUERY_CONNECT_FAILED || iFailState == TQUERY_QUERY_FAILED ) { log_amx( "%s", szError ); return; } else { new id = iData[ 0 ]; new ColLevel = SQL_FieldNameToNum(hQuery, "player_level") new ColXp = SQL_FieldNameToNum(hQuery, "player_xp") while (SQL_MoreResults(hQuery)) { PlayerLevel[id] = SQL_ReadResult(hQuery, ColLevel); PlayerXp[id] = SQL_ReadResult(hQuery, ColXp); SQL_NextRow(hQuery) } } } public QuerySetData( iFailState, Handle:hQuery, szError[ ], iError, iData[ ], iDataSize, Float:fQueueTime ) { if( iFailState == TQUERY_CONNECT_FAILED || iFailState == TQUERY_QUERY_FAILED ) { log_amx( "%s", szError ); return; } } // ============================================================// // [~ Natives ~] // // ============================================================// // Native: get_user_xp public native_get_user_xp(id) { return PlayerXp[id]; } // Native: set_user_xp public native_set_user_xp(id, amount) { PlayerXp[id] = amount; } // Native: get_user_level public native_get_user_level(id) { return PlayerLevel[id]; } // Native: set_user_xp public native_set_user_level(id, amount) { PlayerLevel[id] = amount; } // Native: Gets user level by Xp public native_get_user_max_level(id) { return LEVELS[PlayerLevel[id]]; } public Win_T() { new players[32], num, player; get_players(players, num, "ch", "TERRORIST") for(new i = 0; i < num; i++) { player = players[i] if(is_user_connected(player)) { PlayerXp[player] += T_WIN_XP ColorChat(player,RED, "%s Ai castigat bonus %d XP pentru castigarea rundei.",PLUG_TAG,T_WIN_XP) } if(is_user_alive(player)) { PlayerXp[player] += T_WIN_XP_ALIVE ColorChat(player,RED, "%s Ai castigat bonus %d XP pentru ca ai supravietuit.",PLUG_TAG,T_WIN_XP_ALIVE) } } return PLUGIN_CONTINUE } public Win_CT() { new players[32], num, player; get_players(players, num, "ch", "CT") for(new i = 0; i < num; i++) { player = players[i] if(is_user_connected(player)) { PlayerXp[player] += CT_WIN_XP ColorChat(player,BLUE, "%s Ai castigat bonus %d XP pentru castigarea rundei.",PLUG_TAG,CT_WIN_XP) } if(is_user_alive(player)) { PlayerXp[player] += CT_WIN_XP_ALIVE ColorChat(player,BLUE, "%s Ai castigat bonus %d XP pentru ca ai supravietuit.",PLUG_TAG,CT_WIN_XP_ALIVE) } } return PLUGIN_CONTINUE } // ============================================================ // // [~ Stocks ~] // // ============================================================ // stock client_printcolor(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg,190,input,3); replace_all(msg,190,"/g","^4");// green txt replace_all(msg,190,"/y","^1");// orange txt replace_all(msg,190,"/ctr","^3");// team txt replace_all(msg,190,"/w","^0");// team txt if (id) players[0] = id; else get_players(players,count,"ch"); for (new i = 0; i < count; i++) if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, SayTxT, _, players[i]); write_byte(players[i]); write_string(msg); message_end(); } } public StripPlayerWeapons(id) { strip_user_weapons(id) set_pdata_int(id, OFFSET_PRIMARYWEAPON, 0) give_item(id, "weapon_knife"); }
In al doilea rand, eu am explicat in felul urmator si s-a inteles alt ceva : poza aceasta este meniul [ https://imgur.com/a/diXjt10 ] cand ajungi de la lvl 1 la lvl 2 acolo unde este arma [ M3 ] se inclocuieste cu alta ex [ AK47 ] iar jos unde este blocata arma respectiva iti apare urmatorea arma de la urmatorul nivel.. Si armele se inlocuiesc de la un nivel la altul pastrand cele 2 meniuri.
Imagini : https://imgur.com/a/11mUljJ [ acestea sunt meniurile pe care doresc sa le scoti primul este cel standard din gun xp al doilea cel a lui dias]
Pe scurt : eu voiam de fapt un meniu inlocuitor celui standard din gunxp.Adica meniul acela din poza cu cele 2 arme.Si ti-am explicat ca, de la nivel 1 Tu pornesti cu o arma primara sa zicem m4a1[ 1 . M4a1 ] , dupa ce ti-ai ales primara secundara [ deagle ] iar jos arma pe care o deblochezi [ LOCKED ] Ak47 [ valibil lvl x ]. Acesta este tot meniul pe care il voiam , dupa ce ajungi la lvl 2 in loc de m4a1 este ak47 , iar jos urmatoarea arma , iar cand scrii /weapons dupa ce ti-ai ales arma de la nivelul curent iti apare in alt meniu TOATE armele pe care le-ai acumulat/detii.
"Am făcut lucruri pe care acum le regret. Dar dacă nu învăţ din greşeli o să le repet."