Code:
#include < amxmodx >
#include < amxmisc>
#include < nvault >
#include < cstrike >
#include < hamsandwich >
#include < fakemeta >
#include < fun >
#include < colorchat >
#include < engine >
#define PLUGIN "Upgrade Surf"
#define VERSION "1.0.5"
#define AUTHOR "KrAzZzY"
new const g_szInfoKey[ ] = "_pw";
new const g_szNoneWord[ ] = "None";
new g_szRegisterFile[ 64 ];
enum _:eRegisterInfos
{
Nick[ 32 ],
Password[ 15 ],
}
new g_max_players;
new Array:g_aData;
new g_szLoginInfo[ 33 ][ eRegisterInfos ];
new g_iRegistrations = 0;
new vip[33];
new const TITLU[] = " \y VIP's \y[\w Online \y]";
new const IESIRE[] = "\yIesire, Apasa \r0 sau \r5^n";
new const NOADMINS[] = "\y Nu sunt vip's online.";
const PEV_SPEC_TARGET = pev_iuser2;
new gVault;
new vKey[64];
new vData[64];
new DMGLV[33]; // dmg
new ARMORLV[33]; // ARMOR
new SPEEDLV[33]; // viteza
new GRAVITY[33]; // gravity
new HPLV[33]; // hp
new bool:HasSpeed[33];
new bool:HasNoClip[33];
new bool:HasDMG[33];
new bool:HasDMGBuy[33];
new bool:HasSpeedBuy[33];
new gName[32];
new const szPrefix [ ] = "[..::^1Surf^4::..] ";
// ================ Credits ===============
new eXP [ 33 ];
new KillXp, HsXp;
//======nvault==========
new knife[33]=0;
new w_knife[33]=0;
new v_knife1[66] = "models/surfxp/k1.mdl";
new v_knife2[66] = "models/surfxp/k2.mdl";
new v_knife3[66] = "models/surfxp/k3.mdl";
new v_knife4[66] = "models/surfxp/k4.mdl";
new v_knife5[66] = "models/surfxp/k5.mdl";
const KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd ( "say /menu", "Menu_P", 1 );
register_clcmd ( "say /shop", "Menu", 1 );
register_clcmd ( "say /buyup", "MenuUP", 1 );
register_clcmd ( "say /knife", "MenuKnife", 1 );
register_clcmd("say /vips", "cmdWho");
register_clcmd("say_team /vips", "cmdWho");
g_aData = ArrayCreate( eRegisterInfos );
g_max_players = get_maxplayers();
RegisterHam ( Ham_Spawn, "player", "Go", 1 );
RegisterHam(Ham_TakeDamage, "player", "ham_PlayerTakeDamage")
register_clcmd ( "say /xp", "cmdShowXp", -1 );
KillXp = register_cvar ( "x_kill", "10" );
HsXp = register_cvar ( "x_hs", "15" );
register_event ( "DeathMsg", "eDeath", "a" );
register_event ( "CurWeapon", "event_cur_weapon", "be", "1=1");
register_event ( "Damage", "SetRegeneration", "be", "2>0")
register_concmd ( "amx_give_xp", "cmdGiveXp", ADMIN_RCON, "<target / all> <amount>" );
register_menu("Menu UP", KEYSMENU, "Menu_UP")
}
public SetRegeneration(id)
{
if ( w_knife[id] == 3 )
{
if ( get_user_health(id) < 200 )
{
set_task(5.0, "Regenerate", id, _, _, "b")
}
}
if ( w_knife[id] == 2 )
{
if ( get_user_armor(id) < 200 )
{
set_task(5.0, "RegenerateAP", id, _, _, "b")
}
}
if ( w_knife[id] == 5 )
{
if ( get_user_armor(id) < 200 )
{
set_task(5.0, "RegenerateAP", id, _, _, "b")
}
if ( get_user_health(id) < 200 )
{
set_task(5.0, "Regenerate", id, _, _, "b")
}
}
}
public Regenerate(id)
{
new regen_health = get_user_health(id)
new max_health = 200 - regen_health
if ( max_health <= 25 )
{
set_user_health(id, 200 )
set_task ( 1.0, "__ShowUserDetails__",id,_,_,"b" );
return PLUGIN_CONTINUE
}
set_user_health(id, get_user_health(id) + 25 )
return PLUGIN_CONTINUE
}
public RegenerateAP(id)
{
if( is_user_alive( id ) || cs_get_user_team( id ) != CS_TEAM_SPECTATOR ) return 1;
new regen_armor = get_user_armor(id)
new max_armor = 200 - regen_armor
if ( max_armor <= 25 )
{
set_user_armor(id, 200 )
set_task ( 1.0, "__ShowUserDetails__",id,_,_,"b" );
return PLUGIN_CONTINUE
}
set_user_armor(id, get_user_armor(id) + 25 )
return PLUGIN_CONTINUE
}
public Go(id)
{
if( is_user_alive( id ) )
{
set_task ( 1.0, "__ShowUserDetails__",id,_,_,"b" );
set_user_health(id, 100);
set_user_armor(id,0);
set_user_health(id, get_user_health(id)+HPLV[id]*10);
set_user_armor(id, get_user_armor(id)+ARMORLV[id]*15);
set_user_gravity(id, 1.0 - GRAVITY[id]*0.02);
HasSpeed[id]=true;
HasDMG[id]=true;
HasDMGBuy[id]=false;
HasSpeedBuy[id]=false;
SetRegeneration(id);
}
}
public __ShowUserDetails__ (id)
{
if ( is_user_alive(id) )
{
set_hudmessage(120, 160, 30, -1.0, 0.72, 2, 2.0, 4.0, 0.1, 0.2)
show_hudmessage ( id, "[Health:%d] [Armor:%d] [XP:%d]^n[ DMG Lv:%d | AP Lv:%d | HP Lv:%d | Gravity Lv:%d | Speed Lv:%d ]",get_user_health ( id ), get_user_armor ( id ) , eXP[id], DMGLV[id], ARMORLV[id], HPLV[id], GRAVITY[id], SPEEDLV[id] )
}
else
{
new idSpec;
idSpec = pev( id, PEV_SPEC_TARGET );
set_hudmessage(120, 160, 30, -1.0, 0.72, 2, 6.0, 12.0, 0.1, 0.2)
show_hudmessage ( id, "[Health:%d] [Armor:%d] [XP:%d]^n[ DMG Lv:%d | AP Lv:%d | HP Lv:%d | Gravity Lv:%d | Speed Lv:%d ]",get_user_health ( idSpec ), get_user_armor ( idSpec ) , eXP[idSpec], DMGLV[idSpec], ARMORLV[idSpec], HPLV[idSpec], GRAVITY[idSpec], SPEEDLV[idSpec] )
}
}
public cmdShowXp ( id ) {
ColorChat ( id, GREEN, "%s^3 In acest moment detii ^4%d^3 XP", szPrefix, eXP [ id ]);
}
public plugin_precache()
{
precache_model ( v_knife1 );
precache_model ( v_knife2 );
precache_model ( v_knife3 );
precache_model ( v_knife4 );
precache_model ( v_knife5 );
}
public Menu_P ( id ) {
new menu = menu_create ( "Shop", "P_Menu" );
menu_additem ( menu, "\y[\r+\y]\w Knife", "1", 0 );
menu_additem ( menu, "\y[\r+\y]\w Upgrade", "2", 0 );
menu_additem ( menu, "\y[\r+\y]\w Shop", "3", 0 );
menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
menu_display ( id, menu, 0 );
return 1;
}
public P_Menu ( id, menu, item ) {
if( item == MENU_EXIT )
{
return 1;
}
new data [ 6 ], szName [ 64 ];
new access, callback;
menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
new key = str_to_num ( data );
switch ( key ){
case 1:
{
MenuKnife ( id );
}
case 2:
{
MenuUP ( id );
}
case 3:
{
Menu ( id );
}
}
menu_destroy ( menu );
return 1;
}
public MenuKnife ( id ) {
new menu = menu_create ( "Shop", "Give_Knife" );
menu_additem ( menu, "\yStalker Knife \w[ \rNormal Knife \w]", "1", 0 );
if ( knife[id] < 1 )
{
menu_additem ( menu, "\y[\rX\y] Ignes Knife \w[ \rRegeneration AP \w]", "2", 0 );
}
else
{
menu_additem ( menu, "\yIgnes Knife \w[ \rRegeneration AP \w]", "2", 0 );
}
if ( knife[id] < 2 )
{
menu_additem ( menu, "\y[\rX\y] Gold Knife \w[ \rRegeneration HP \w]", "3", 0 );
}
else
{
menu_additem ( menu, "\yGold Knife \w[ \rRegeneration HP \w]", "3", 0 );
}
if ( knife[id] < 3 )
{
menu_additem ( menu, "\y[\rX\y] Hunter Knife \w[ \rDouble DMG \w]", "4", 0 );
}
else
{
menu_additem ( menu, "\yHunter Knife \w[ \rDouble DMG \w]", "4", 0 );
}
if ( vip[id] )
{
menu_additem ( menu, "\yVIP Knife \w[ \rAll Powers \w]", "5", 0 );
}
else
{
menu_additem ( menu, "\y[\rX\y] VIP Knife \w[ \rAll Powers \w]", "6", 0 );
}
menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
menu_display ( id, menu, 0 );
return 1;
}
public Give_Knife ( id, menu, item ) {
if( item == MENU_EXIT )
{
return 1;
}
new data [ 6 ], szName [ 64 ];
new access, callback;
menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
new key = str_to_num ( data );
switch ( key ){
case 1:
{
w_knife[id]=1;
}
case 2:
{
if ( get_user_flags(id) & ADMIN_RCON )
{
w_knife[id] = 2;
}
else if ( knife[id] < 1 )
{
g_knife2 ( id )
}
else
{
w_knife[id] = 2;
SetRegeneration(id);
}
}
case 3:
{
if ( get_user_flags(id) & ADMIN_RCON )
{
w_knife[id] = 3;
}
else if ( knife[id] < 1 )
{
ColorChat ( id, GREEN, "%s Knife-urile trebuie deblocate pe rand.^3", szPrefix );
}
else if ( knife[id] < 2 )
{
g_knife2 ( id )
}
else
{
w_knife[id] = 3;
SetRegeneration(id);
}
}
case 4:
{
if ( get_user_flags(id) & ADMIN_RCON )
{
w_knife[id] = 4;
}
else if ( knife[id] < 2 )
{
ColorChat ( id, GREEN, "%s Knife-urile trebuie deblocate pe rand.^3", szPrefix );
}
else if ( knife[id] < 3 )
{
g_knife2 ( id )
}
else
{
w_knife[id] = 4;
}
}
case 5:
{
w_knife[id] = 5;
SetRegeneration(id);
}
case 6:
{
ColorChat ( id, GREEN, "%s Acest^4 Knife^3 este doar pentru^4 VIP^3.", szPrefix );
}
}
menu_destroy ( menu );
return 1;
}
public g_knife2 ( id ) {
new menu = menu_create ( "Doresti sa deblochezi knife-ul cu 10.000 XP ?", "knife22" )
menu_additem ( menu, "\yDa", "1" )
menu_additem ( menu, "\yNu", "2" )
menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL )
menu_display ( id, menu )
return 1;
}
public knife22 ( id, menu, item ) {
if( item == MENU_EXIT )
{
return 1;
}
new data [ 6 ], szName [ 64 ];
new access, callback;
menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
new key = str_to_num ( data );
switch ( key )
{
case 1:
{
if ( eXP[id] < 10000 )
{
ColorChat ( id, GREEN, "%s XP insuficient.^3", szPrefix );
return 1;
}
eXP[id] = eXP[id] - 10000;
knife[id]++
}
case 2:
{
return 1;
}
}
menu_destroy ( menu );
return 1;
}
public MenuUP ( id )
{
static menu[512], len;
len = 0;
len += formatex(menu[len], charsmax(menu) - len, "\yMenu Inventory Glock^n^n");
if( DMGLV [id] == 20 )
{
len += formatex(menu[len], charsmax(menu) - len, "\d1.\wLv DMG \y[\r Maxim \y]^n" );
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\d1.\wLv DMG \y[\r Price Upgrade: %d \y]^n", DMGLV[id]*50 );
}
if( ARMORLV [id] == 20 )
{
len += formatex(menu[len], charsmax(menu) - len, "\d2.\wLv Armura \y[\r Maxim \y]^n" );
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\d2.\wLv Armura \y[\r Price Upgrade: %d \y]^n", ARMORLV[id]*50 );
}
if( GRAVITY [id] == 20 )
{
len += formatex(menu[len], charsmax(menu) - len, "\d3.\wLv Gravity \y[\r Maxim \y]^n" );
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\d3.\wLv Gravity \y[\r Price Upgrade: %d \y]^n", GRAVITY[id]*50 );
}
if( HPLV [id] == 20 )
{
len += formatex(menu[len], charsmax(menu) - len, "\d4.\wLv HP \y[\r Maxim \y]^n" );
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\d4.\wLv HP \y[\r Price Upgrade: %d \y]^n", HPLV[id]*50 );
}
if( SPEEDLV [id] == 20 )
{
len += formatex(menu[len], charsmax(menu) - len, "\d5.\wLv Speed \y[\r Maxim \y]^n" );
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\d5.\wLv Speed \y[\r Price Upgrade: %d \y]^n", SPEEDLV[id]*50 );
}
len += formatex(menu[len], charsmax(menu) - len, "^n^n\d0.\r Exit", id);
show_menu(id, KEYSMENU, menu, -1, "Menu UP");
}
public Menu_UP(id, key)
{
switch (key)
{
case 0:
{
if( DMGLV[id] == 20 )
{
ColorChat(id, RED, "^x04 [..::Surf::..]^x01 Ai atins deja levelul maxim pentru acest item .");
return 1;
}
else
{
new credits = eXP[id];
if( credits < DMGLV[id]*50)
{
ColorChat ( id, GREEN, " %s^3 Nu ai destul XP", szPrefix );
return 1;
}
eXP[id] = credits - DMGLV[id]*50
DMGLV[id]++;
save_user_levels(id);
ColorChat(id, RED, "^x04 [..::Surf::..]^x01 Ai crescut levelul dmg-ului .");
save_user_levels(id);
return 1;
}
}
case 1:
{
if( ARMORLV[id] == 20 )
{
ColorChat(id, RED, "^x04 [..::Surf::..]^x01 Ai atins deja levelul maxim pentru acest item .");
return 1;
}
else
{
new credits = eXP[id];
if( credits < ARMORLV[id]*50)
{
ColorChat ( id, GREEN, " %s^3 Nu ai destul XP", szPrefix );
return 1;
}
eXP[id] = credits - ARMORLV[id]*50
ARMORLV[id]++;
save_user_levels(id);
ColorChat(id, RED, "^x04 [..::Surf::..]^x01 Ai crescut levelul armurii .");
save_user_levels(id);
return 1;
}
}
case 2:
{
if( GRAVITY[id] == 20 )
{
ColorChat(id, RED, "^x04 [..::Surf::..]^x01 Ai atins deja levelul maxim pentru acest item .");
return 1;
}
else
{
new credits = eXP[id];
if( credits < GRAVITY[id]*50)
{
ColorChat ( id, GREEN, " %s^3 Nu ai destul XP", szPrefix );
return 1;
}
eXP[id] = credits - GRAVITY[id]*50
GRAVITY[id]++;
save_user_levels(id);
ColorChat(id, RED, "^x04 [..::Surf::..]^x01 Ai crescut levelul gravitatiei .");
save_user_levels(id);
return 1;
}
}
case 3:
{
if( HPLV[id] == 20 )
{
ColorChat(id, RED, "^x04 [..::Surf::..]^x01 Ai atins deja levelul maxim pentru acest item .");
return 1;
}
else
{
new credits = eXP[id];
if( credits < HPLV[id]*50)
{
ColorChat ( id, GREEN, " %s^3 Nu ai destul XP", szPrefix );
return 1;
}
eXP[id] = credits - HPLV[id]*50
HPLV[id]++;
ColorChat(id, RED, "^x04 [..::Surf::..]^x01 Ai crescut levelul hp-ului .");
save_user_levels(id);
return 1;
}
}
case 4:
{
if( SPEEDLV[id] == 20 )
{
ColorChat(id, RED, "^x04 [..::Surf::..]^x01 Ai atins deja levelul maxim pentru acest item .");
return 1;
}
else
{
new credits = eXP[id];
if( credits < SPEEDLV[id]*50)
{
ColorChat ( id, GREEN, " %s^3 Nu ai destul XP", szPrefix );
return 1;
}
eXP[id] = credits - SPEEDLV[id]*50
SPEEDLV[id]++;
ColorChat(id, RED, "^x04 [..::Surf::..]^x01 Ai crescut levelul vitezei .");
save_user_levels(id);
return 1;
}
}
case 5:
{
return 1;
}
}
return PLUGIN_HANDLED;
}
public client_connect(id)
{
load_user_levels(id);
}
public client_disconnect(id)
{
save_user_levels(id);
}
stock save_user_levels(id)
{
gVault = nvault_open("SavedUpgrades");
if(gVault == INVALID_HANDLE)
set_fail_state("[Upgrades] nVault Open Error => Invalid Handle");
get_user_name(id, gName, 31);
formatex(vKey, charsmax(vKey), "%s", gName);
formatex(vData, charsmax(vData), "%d#%d#%d#%d#%d#%d#%d#%d#", eXP[id], DMGLV[id], ARMORLV[id], GRAVITY[id], HPLV[id], SPEEDLV[id], knife[id], w_knife[id]);
nvault_set(gVault, vKey, vData);
nvault_close(gVault);
}
stock load_user_levels(id)
{
gVault = nvault_open("SavedUpgrades");
if(gVault == INVALID_HANDLE)
set_fail_state("[Upgrades] nVault ERROR => Invalid Handle .");
get_user_name(id, gName, 31);
formatex(vKey, charsmax(vData), "%s", gName);
formatex(vData, charsmax(vData), "%d#%d#%d#%d#%d#%d#%d#%d#", eXP[id], DMGLV[id], ARMORLV[id], GRAVITY[id], HPLV[id], SPEEDLV[id], knife[id], w_knife[id]);
nvault_get(gVault, vKey, vData, charsmax(vData));
replace_all(vData, charsmax(vData), "#", " ");
new cexp[32], weaplevel[32], armorlevel[32], necklevel[32], HPlevel[32], SPEEDlevel[32], cknife[32], cw_knife[32];
parse(vData, cexp, 31, weaplevel, 31, armorlevel, 31, necklevel, 31, HPlevel, 31, SPEEDlevel, 31, cknife, 31, cw_knife, 31);
eXP[id] = str_to_num(cexp);
DMGLV[id] = str_to_num(weaplevel);
ARMORLV[id] = str_to_num(armorlevel);
GRAVITY[id] = str_to_num(necklevel)
HPLV[id] = str_to_num(HPlevel)
SPEEDLV[id] = str_to_num(SPEEDlevel)
knife[id] = str_to_num(cknife)
w_knife[id] = str_to_num(cw_knife)
nvault_close(gVault);
}
public cmdGiveXp( id )
{
if( !( get_user_flags( id ) & ADMIN_CFG ) )
{
client_cmd( id, "echo NU ai acces la aceasta comanda!" );
return PLUGIN_HANDLED;
}
new szFirstArg[ 32 ], szSecondArg[ 10 ];
read_argv( 1, szFirstArg, sizeof ( szFirstArg ) -1 );
read_argv( 2, szSecondArg, sizeof ( szSecondArg ) -1 );
if( equal( szFirstArg, "" ) || equal( szSecondArg, "" ) )
{
client_cmd( id, "echo amx_give_credits < nume/ @ALL/ @T/ @CT > < xp >" );
return PLUGIN_HANDLED;
}
new iPlayers[ 32 ];
new iPlayersNum;
new iCredits = str_to_num( szSecondArg );
if( iCredits <= 0 )
{
client_cmd( id, "echo Valoare xp-ului trebuie sa fie mai mare decat 0!" );
return PLUGIN_HANDLED;
}
if( szFirstArg[ 0 ] == '@' )
{
switch ( szFirstArg[ 1 ] )
{
case 'A':
{
if( equal( szFirstArg, "@ALL" ) )
{
get_players( iPlayers, iPlayersNum, "ch" );
for( new i = 0; i < iPlayersNum ; i++ )
eXP[ iPlayers[ i ] ] += iCredits;
new szName[ 32 ];
get_user_name( id, szName, sizeof ( szName ) -1 );
ColorChat( 0, RED, "^x04^%s^x01 Adminul^x03 %s^x01 le-a dat^x03 %i^x01 XP tuturor jucatorilor!", szPrefix, szName, iCredits );
return PLUGIN_HANDLED;
}
}
case 'T':
{
if( equal( szFirstArg, "@T" ) )
{
get_players( iPlayers, iPlayersNum, "ceh", "TERRORIST" );
if( iPlayersNum == 0 )
{
client_cmd( id, "echo NU se afla niciun jucator in aceasta echipa!" );
return PLUGIN_HANDLED;
}
for( new i = 0; i < iPlayersNum ; i++ )
eXP[ iPlayers[ i ] ] += iCredits;
new szName[ 32 ];
get_user_name( id, szName, sizeof ( szName ) -1 );
ColorChat( 0, RED, "^x04^%s^x01 Adminul^x03 %s^x01 le-a dat^x03 %i^x01 XP jucatorilor de la^x03 TERO^x01!", szPrefix, szName, iCredits );
return PLUGIN_HANDLED;
}
}
case 'C':
{
if( equal( szFirstArg, "@CT" ) )
{
get_players( iPlayers, iPlayersNum, "ceh", "CT" );
if( iPlayersNum == 0 )
{
client_cmd( id, "echo NU se afla niciun jucator in aceasta echipa!" );
return PLUGIN_HANDLED;
}
for( new i = 0; i < iPlayersNum ; i++ )
eXP[ iPlayers[ i ] ] += iCredits;
new szName[ 32 ];
get_user_name( id, szName, sizeof ( szName ) -1 );
ColorChat( 0, RED, "^x04^%s^x01 Adminul^x03 %s^x01 le-a dat^x03 %i^x01 XP jucatorilor de la^x03 CT^x01!", szPrefix, szName, iCredits );
return PLUGIN_HANDLED;
}
}
}
}
new iPlayer = cmd_target( id, szFirstArg, 8 );
if( !iPlayer )
{
client_cmd( id, "echo Jucatorul %s nu a fost gasit!", szFirstArg );
return PLUGIN_HANDLED;
}
eXP[ iPlayer ] += iCredits;
new szName[ 32 ];
get_user_name( id, szName, sizeof ( szName ) -1 );
ColorChat( iPlayer, RED, "^x04%s^x01 Adminul^x03 %s^x01 ti-a dat^x03 %i^x01 XP.", szPrefix, szName, iCredits );
return PLUGIN_HANDLED;
}
public eDeath ( )
{
new iKiller = read_data ( 1 );
new iVictim = read_data ( 2 );
new Headshot = read_data ( 3 );
new weapon [ 32 ];
read_data ( 4, weapon, sizeof ( weapon ) -1 );
if( 1 <= iKiller <= g_max_players )
{
if ( iKiller == iVictim )
{
ColorChat ( iKiller, GREEN, "%s Te-ai^4 sinucis^3", szPrefix );
return 1;
}
if ( Headshot )
{
eXP [ iKiller ] = eXP [ iKiller ] + get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp );
ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ HeadShot ]^3", szPrefix, get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) );
}
else if ( Headshot && vip[iKiller] )
{
eXP [ iKiller ] = eXP [ iKiller ] + get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) + 5;
ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ HeadShot ]^3", szPrefix, get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) + 5 );
}
else if ( Headshot && get_user_weapon ( iKiller ) == CSW_KNIFE && vip[iKiller] )
{
eXP [ iKiller ] = eXP [ iKiller ] + get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) + 15;
ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ Knife HeadShot ]^3", szPrefix, get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) + 15);
}
else if ( Headshot && get_user_weapon ( iKiller ) == CSW_KNIFE )
{
eXP [ iKiller ] = eXP [ iKiller ] + get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) + 10;
ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ Knife HeadShot ]^3", szPrefix, get_pcvar_num ( HsXp ) + get_pcvar_num ( KillXp ) + 10 );
}
else if ( get_user_weapon ( iKiller ) == CSW_KNIFE && vip[iKiller] )
{
eXP [ iKiller ] = eXP [ iKiller ] + get_pcvar_num ( KillXp ) + 10;
ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ Knife ]^3", szPrefix, get_pcvar_num ( KillXp ) + 10 );
}
else if ( get_user_weapon ( iKiller ) == CSW_KNIFE )
{
eXP [ iKiller ] = eXP [ iKiller ] + get_pcvar_num ( KillXp ) + 5;
ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ Knife ]^3", szPrefix, get_pcvar_num ( KillXp ) + 5 );
}
else
{
eXP [ iKiller ] = eXP [ iKiller ] + get_pcvar_num ( KillXp );
ColorChat ( iKiller, GREEN, "%s Ai primit^4 %i^3 XP^4 [ Kill ]^3", szPrefix, get_pcvar_num ( KillXp ) );
}
if ( !is_user_alive ( iVictim ) && get_user_team ( iVictim ) == 1 ) {
new gMsgScreenFade = get_user_msgid ( "ScreenFade" );
message_begin ( MSG_ONE_UNRELIABLE , gMsgScreenFade , {0,0,0} , iVictim );
write_short ( (6<<10) ); // duration
write_short ( (5<<10) ); // hold time
write_short ( (1<<12) ); // fade type
write_byte ( 255 );
write_byte ( 0 );
write_byte ( 0 );
write_byte ( 170 );
message_end ( );
}
else if ( !is_user_alive ( iVictim ) && get_user_team ( iVictim ) == 2 ) {
new gMsgScreenFade = get_user_msgid ( "ScreenFade" );
message_begin ( MSG_ONE_UNRELIABLE , gMsgScreenFade , {0,0,0} , iVictim );
write_short ( (6<<10) ); // duration
write_short ( (5<<10) ); // hold time
write_short ( (1<<12) ); // fade type
write_byte ( 0 );
write_byte ( 0 );
write_byte ( 255 );
write_byte ( 170 );
message_end ( );
}
return 1;
}
return 1;
}
public event_cur_weapon(id)
{
if ( get_user_weapon(id) == CSW_KNIFE )
{
if ( w_knife[id] == 1 )
{
set_pev (id, pev_viewmodel2, v_knife1 );
}
else if ( w_knife[id] == 2)
{
set_pev (id, pev_viewmodel2, v_knife2 );
}
else if ( w_knife[id] == 3)
{
set_pev (id, pev_viewmodel2, v_knife3 );
}
else if ( w_knife[id] == 4)
{
set_pev (id, pev_viewmodel2, v_knife4 );
}
else if ( w_knife[id] == 5 )
{
set_pev (id, pev_viewmodel2, v_knife5 );
}
else
{
set_pev (id, pev_viewmodel2, v_knife1 );
}
}
if(HasSpeed[id])
{
set_user_maxspeed(id, get_user_maxspeed(id) + SPEEDLV[id]*7 );
}
if(HasSpeedBuy[id])
{
set_user_maxspeed(id, get_user_maxspeed(id) + 300 );
}
}
public Menu ( id ) {
new menu = menu_create ( "Shop", "Give_Items" );
menu_additem ( menu, "\y100 HP \w- \r50 \wXP", "1", 0 );
menu_additem ( menu, "\y100 AP \w- \r25 \wXP", "2", 0 );
menu_additem ( menu, "\ySpeed \w- \r100 \wXP", "3", 0 );
menu_additem ( menu, "\yGravity \w- \r100 \wXP", "4", 0 );
menu_additem ( menu, "\yInvizibilitate \w- \r150 \wXP", "5", 0 );
menu_additem ( menu, "\yCameleon \w- \r150 \wXP", "6", 0 );
menu_additem ( menu, "\y2xDMG \w- \r200 \wXP", "7", 0 );
menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
menu_display ( id, menu, 0 );
return 1;
}
public Give_Items ( id, menu, item ) {
if( item == MENU_EXIT )
{
return 1;
}
new data [ 6 ], szName [ 64 ];
new access, callback;
menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
new key = str_to_num ( data );
switch ( key ){
case 1:
{
new bani = eXP[id];
if(bani < 50 )
{
ColorChat ( id, GREEN, " %s^3 Nu ai destul XP", szPrefix );
return 1;
}
if( get_user_health(id) >= 400 )
{
ColorChat ( id, GREEN, " %s^3 Ai atins limita de HP", szPrefix );
return 1;
}
ColorChat ( id, GREEN, " %s^3 Ai cumparat^4 100 HP.", szPrefix );
if( get_user_health(id) <= 300 )
{
set_user_health ( id, get_user_health ( id ) + 100 );
}
else
{
set_user_health ( id, 400 );
}
eXP[id] = bani - 50
return 1;
}
case 2:
{
new bani = eXP[id];
if(bani < 25)
{
ColorChat ( id, GREEN, " %s^3 Nu ai destul XP", szPrefix );
return 1;
}
ColorChat ( id, GREEN, " %s^3 Ai cumparat^4 100 AP.", szPrefix );
set_user_armor ( id, get_user_armor ( id ) + 100 );
eXP[id] = bani - 25
return 1;
}
case 3:
{
new bani = eXP[id];
if(bani < 100)
{
ColorChat ( id, GREEN, " %s^3 Nu ai destul XP", szPrefix );
return 1;
}
ColorChat ( id, GREEN, " %s^3 Ai cumparat^4 Speed.", szPrefix );
HasSpeedBuy[id]=true;
HasSpeed[id]=false;
eXP[id] = bani - 100
return 1;
}
case 4:
{
new bani = eXP[id];
if(bani < 100)
{
ColorChat ( id, GREEN, " %s^3 Nu ai destul XP", szPrefix );
return 1;
}
ColorChat ( id, GREEN, " %s^3 Ai cumparat^4 Gravity.", szPrefix );
set_user_gravity ( id, 0.6 );
eXP[id] = bani - 100
return 1;
}
case 5:
{
new bani = eXP[id];
if(bani < 150)
{
ColorChat ( id, GREEN, " %s^3 Nu ai destul XP", szPrefix );
return 1;
}
ColorChat ( id, GREEN, " %s^3 Ai cumparat^4 Invizibilitate.", szPrefix );
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 100);
eXP[id] = bani - 150
return 1;
}
case 6:
{
new bani = eXP[id];
if(bani < 150)
{
ColorChat ( id, GREEN, " %s^3 Nu ai destul XP", szPrefix );
return 1;
}
ColorChat ( id, GREEN, " %s^3 Ai cumparat^4 Cameleon.", szPrefix );
ColorChat ( id, GREEN, " %s^3 Momentan acest beneficiu nu este gata.", szPrefix );
eXP[id] = bani - 150
return 1;
}
case 7:
{
new bani = eXP[id];
if(bani < 200)
{
ColorChat ( id, GREEN, " %s^3 Nu ai destul XP", szPrefix );
return 1;
}
ColorChat ( id, GREEN, " %s^3 Ai cumparat^4 2xDMG.", szPrefix );
HasDMGBuy[id]=true;
eXP[id] = bani - 200
return 1;
}
}
menu_destroy ( menu );
return 1;
}
public ham_PlayerTakeDamage( iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits )
{
if( w_knife[iAttacker] == 4 && w_knife[iAttacker] == 5 )
{
new Float:gDamage = fDamage * 2.0;
SetHamParamFloat(4, gDamage);
}
if( HasDMG[iAttacker] && DMGLV[iAttacker] >= 1)
{
new Float:gDamage = fDamage * (1 + DMGLV[iAttacker] * 0.1);
SetHamParamFloat(4, gDamage);
}
if( HasDMGBuy[iAttacker] )
{
new Float:gDamage = fDamage * 2.0;
SetHamParamFloat(4, gDamage);
}
if( HasNoClip[iVictim] )
{
HasNoClip[iVictim] = false;
}
return HAM_IGNORED;
}
public plugin_cfg( ) LoadRegistrations( );
public client_authorized( id )
{
static szNick[ 32 ];
get_user_name( id, szNick, sizeof ( szNick ) -1 );
if( CheckRegistration( id, szNick ) )
{
static szPassword[ 15 ], szIp[ 22 ];
get_user_info( id, g_szInfoKey, szPassword, sizeof ( szPassword ) -1 );
get_user_ip( id, szIp, sizeof ( szIp ) -1, 1 );
if( equal( szPassword, g_szLoginInfo[ id ][ Password ] ) )
{
client_print( id, print_console, "Ai fost logat cu succes!^nNick: %s^nParola: %s",
g_szLoginInfo[ id ][ Nick ], g_szLoginInfo[ id ][ Password ] );
log_to_file( "NickRegistrations.log", "--| %s ( %s ) s-a logat cu succes( Parola: %s )",
szNick, szIp, g_szLoginInfo[ id ][ Password ] );
ColorChat ( 0, GREEN, "%s VIP-ul^4 %s^3 s-a connectat la server.", szPrefix, szNick );
return PLUGIN_HANDLED;
}
else
{
server_cmd( "kick #%i ^"Nick rezervat! Model de introducere a parolei: setinfo %s parola^"",
get_user_userid( id ), g_szInfoKey );
log_to_file( "NickRegistrations.log", "--| %s ( %s ) Parola gresita! ( %s, Parola corecta: %s )",
szNick, szIp, szPassword, g_szLoginInfo[ id ][ Password ] );
}
}
return PLUGIN_CONTINUE;
}
CheckRegistration( id, const szNick[ ] )
{
new bool:bRegistered = false;
new eData[ eRegisterInfos ];
for( new i; i < g_iRegistrations; i++ )
{
ArrayGetArray( g_aData, i, eData );
if( equal( szNick, eData[ Nick ] ) )
{
copy( g_szLoginInfo[ id ][ Nick ], sizeof ( g_szLoginInfo[ ][ Nick ] ) -1, eData[ Nick ] );
copy( g_szLoginInfo[ id ][ Password ], sizeof ( g_szLoginInfo[ ][ Password ] ) -1, eData[ Password ] );
bRegistered = true;
vip[id] = true;
break;
}
}
if( !bRegistered )
{
copy( g_szLoginInfo[ id ][ Nick ], sizeof ( g_szLoginInfo[ ][ Nick ] ) -1, g_szNoneWord );
copy( g_szLoginInfo[ id ][ Password ], sizeof ( g_szLoginInfo[ ][ Password ] ) -11, g_szNoneWord );
}
return bRegistered;
}
LoadRegistrations( )
{
get_localinfo( "amxx_datadir", g_szRegisterFile, sizeof ( g_szRegisterFile ) -1 );
format( g_szRegisterFile, sizeof ( g_szRegisterFile ) -1, "addons/amxmodx/configs/vips.ini", g_szRegisterFile );
if( g_iRegistrations )
{
ArrayClear( g_aData );
g_iRegistrations = 0;
}
if( file_exists( g_szRegisterFile ) )
{
new iFile = fopen( g_szRegisterFile, "rt" );
new szNick[ 32 ], szPassword[ 15 ];
new szFileData[ 128 ], eData[ eRegisterInfos ];
while( !feof( iFile ) )
{
fgets( iFile, szFileData, sizeof ( szFileData ) - 1);
if( !szFileData[ 0 ] || szFileData[ 0 ] == ';'
|| ( szFileData[ 0 ] == '/' && szFileData[ 1 ] == '/' ) )
continue;
parse( szFileData, szNick, sizeof ( szNick ) -1,
szPassword, sizeof ( szPassword ) -1)
copy( eData[ Nick ], sizeof ( eData[ Nick ] ) -1, szNick );
copy( eData[ Password ], sizeof ( eData[ Password ] ) -1, szPassword );
ArrayPushArray( g_aData, eData );
g_iRegistrations++;
}
fclose( iFile );
}
log_to_file( "NickRegistrations.log", "Am incarcat cu succes %i nick-uri inregistrate!", g_iRegistrations );
}
public plugin_end( )
{
ArrayDestroy( g_aData );
}
stock zName( id ) {
new name[ 32 ];
get_user_name( id, name, sizeof ( name ) -1 );
return name;
}
public cmdWho( id, page ) {
new MenuName[ 64 ], MenuExitKey[ 32 ];
formatex( MenuName, sizeof ( MenuName ) -1, "%s", TITLU );
formatex( MenuExitKey, sizeof ( MenuExitKey ) -1, "%s", IESIRE );
new menu = menu_create(MenuName, "InchidereMeniu");
if( AdminiON( ) )
{
AdaugareA( id, menu, 1 );
}
else
{
menu_additem( menu, NOADMINS , "1", 0 );
}
menu_setprop(menu, MPROP_EXITNAME, MenuExitKey );
menu_display(id, menu, page);
}
public InchidereMeniu(id, menu, item) {
if(item == MENU_EXIT)
{
menu_destroy( menu );
return 1;
}
new data[6], iName[64];
new iaccess, callback;
menu_item_getinfo(menu, item, iaccess, data,5, iName, 63, callback);
new key = str_to_num(data);
switch(key)
{
case 1,2,3,4,5,6,7:
{
menu_destroy( menu );
return 1;
}
}
return 0;
}
public AdaugareA( const id, const menu, const group ) {
new AdminMenuMessage[ 32 ][ 64 ],AdminMenuKey[ 32 ][ 32 ], MenuKey = 1;
static Players[ 32 ], Num, Player;
get_players( Players, Num, "ch" );
for( new x = 0 ; x < Num ; x++ )
{
Player = Players[ x ];
if( vip[Player] )
{
formatex( AdminMenuMessage[ MenuKey ], sizeof ( AdminMenuMessage[ ] ) -1, "\y[*]\w %s", zName( Player ) );
formatex( AdminMenuKey[ MenuKey ], sizeof ( AdminMenuKey[ ] ) -1, "%d", MenuKey );
MenuKey++;
}
}
for( new z = 1 ; z < MenuKey ; z++ )
{
menu_additem( menu, AdminMenuMessage[ z ], AdminMenuKey[ z ], 0 );
}
}
stock bool:AdminiON( ) {
new bool:AGasiti = false;
static Players[ 32 ], Num, Player;
get_players( Players, Num, "ch" );
for( new x = 0 ; x < Num ; x++ )
{
Player = Players[ x ];
if( AGasiti ) break;
if( vip[Player] )
{
AGasiti = true;
}
}
return AGasiti ? true : false;
}