Descriere : Acest plugin face ca cel care se connecteaza pe server sa ii apara un meniu care il intreaba daca Cunoaste Regulamentul . Pluginul are 3 variante : 1. Nu il cunosc [Apare un motd] 2. Il cunosc deja [Te lasa sa joci] 3. Nu vreau sa il citesc [Kick cu reason]
Autor : sPuF? ak Askhanar
Sma :
Reguli Info
Cod: Selectaţi tot
#include <amxmodx>
#pragma semicolon 1
#define PLUGIN "Plugin nou"
#define VERSION "1.0"
#define TASK_TIME 15.0
new const MENU_NAME[ ] = "\y Cunosti regulamentul serverului \r?";
new const KICK_REASON[ ] = "Ai face bine sa citesti regulile , altfel nu ai ce cauta pe server !";
new const MOTD_FILE[ ] = "addons/amxmodx/configs/reguli.txt";
public plugin_init( ) register_plugin( PLUGIN, VERSION, "Askhanar" );
public client_connect( id )
{
if( is_user_bot( id ) || is_user_hltv( id ) ) return 1;
set_task( TASK_TIME, "AdvertizePlayer", id + 112233 );
return 0;
}
public client_disconnect( id )
{
if( is_user_bot( id ) || is_user_hltv( id ) ) return 1;
remove_task( id + 112233 );
return 0;
}
public AdvertizePlayer( id )
{
id -= 112233;
if( !is_user_connected( id ) ) return 1;
ShowAdvertizeMenu( id , 0 );
return 0;
}
public ShowAdvertizeMenu( id, page )
{
new menu = menu_create( MENU_NAME, "ShowAdvertizeMenuHandler" );
menu_additem( menu, "Nu , nu cunosc regulile", "1", 0 );
menu_additem( menu, "Da , cunosc deja regulile", "2", 0 );
menu_additem( menu, "Nu vreau sa le citesc", "3", 0 );
menu_setprop( menu, MPROP_EXITNAME, "" );
menu_display( id, menu, page );
}
public ShowAdvertizeMenuHandler( id, menu, item )
{
if( item == MENU_EXIT )
{
ShowAdvertizeMenu( id, 0 );
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: show_motd( id, MOTD_FILE );
case 2: return 1;
case 3: server_cmd( "kick #%i ^"%s^"", get_user_userid( id ), KICK_REASON );
}
return 0;
}
Clase Zombie
Descriere :[/b] : Acest plugin este unul cu rase pentru Zombie : 1. Schelete 2. Asistenta Zombie 3. Moartea 4. Caine Extraterestru 5. Razboinic de Gheata 6. Dragon [Admin] 7. Zombie Distrugator [Vip]
Autor :[/color] : Tirant + DanTe's update
Sma :
Rase Zombie
Cod: Selectaţi tot
#include <amxmodx>
#include <basebuilder>
#include <hamsandwich>
#include <fun>
#include <cstrike>
/*================================================================================
[Plugin Customization]
=================================================================================*/
// Classic Zombie Attributes
new const zclass1_name[] = { "Scheleton" }
new const zclass1_info[] = { "=Echilibrat=" }
new const zclass1_model[] = { "v_schelete" }
new const zclass1_clawmodel[] = { "v_m_schelete" }
const zclass1_health = 9000
const zclass1_speed = 260
const Float:zclass1_gravity = 1.0
const zclass1_adminflags = ADMIN_ALL
// Fast Zombie Attributes
new const zclass2_name[] = { "Asistenta Zombie" }
new const zclass2_info[] = { "HP-- SP++" }
new const zclass2_model[] = { "nurse" }
new const zclass2_clawmodel[] = { "nurse_knife" }
const zclass2_health = 6500
const zclass2_speed = 328
const Float:zclass2_gravity = 1.0
const zclass2_adminflags = ADMIN_ALL
// Jumper Zombie Attributes
new const zclass3_name[] = { "Moartea" }
new const zclass3_info[] = { "HP- GR+" }
new const zclass3_model[] = { "v_sat" }
new const zclass3_clawmodel[] = { "v_m_sat" }
const zclass3_health = 7200
const zclass3_speed = 285
const Float:zclass3_gravity = 0.5
const zclass3_adminflags = ADMIN_ALL
// Alien Dog Zombie Attributes
new const zclass4_name[] = { "Caine Extraterestru" }
new const zclass4_info[] = { "HP-- GR++ SP++" }
new const zclass4_model[] = { "dog" }
new const zclass4_clawmodel[] = { "dogg" }
const zclass4_health = 4200
const zclass4_speed = 390
const Float:zclass4_gravity = 0.3
const zclass4_adminflags = ADMIN_ALL
// Tanker Zombie Attributes
new const zclass5_name[] = { "Razboinic de Gheata" }
new const zclass5_info[] = { "HP++ SP-" }
new const zclass5_model[] = { "v_frost" }
new const zclass5_clawmodel[] = { "v_m_frost" }
const zclass5_health = 11500
const zclass5_speed = 210
const Float:zclass5_gravity = 1.0
const zclass5_adminflags = ADMIN_ALL
#define TANK_ARMOR 200
// Cioara Zombie Attributes
new const zclass6_name[] = { "Dragon Zburator" }
new const zclass6_info[] = { "HP--- SP+ GR +++" }
new const zclass6_model[] = { "v_dragon" }
new const zclass6_clawmodel[] = { "v_m_dragon" }
const zclass6_health = 3000
const zclass6_speed = 390
const Float:zclass6_gravity = 0.155
const zclass6_adminflags = ADMIN_MAP
// Vip Zombie Attributes
new const zclass7_name[] = { "Zombie Distrugator" }
new const zclass7_info[] = { "HP+++ SP++ GR+" }
new const zclass7_model[] = { "new_viaipi" }
new const zclass7_clawmodel[] = { "n_m_vip" }
const zclass7_health = 13000
const zclass7_speed = 328
const Float:zclass7_gravity = 0.4
const zclass7_adminflags = ADMIN_IMMUNITY
/*============================================================================*/
new g_zclass_tanker
// Zombie Classes MUST be registered on plugin_precache
public plugin_precache()
{
register_plugin("[BB] Clase Zombalai", "Basebuilder v6.9", "Tirant + DanTe's update")
// Register all classes
bb_register_zombie_class(zclass1_name, zclass1_info, zclass1_model, zclass1_clawmodel, zclass1_health, zclass1_speed, zclass1_gravity, 0.0, zclass1_adminflags)
bb_register_zombie_class(zclass2_name, zclass2_info, zclass2_model, zclass2_clawmodel, zclass2_health, zclass2_speed, zclass2_gravity, 0.0, zclass2_adminflags)
bb_register_zombie_class(zclass3_name, zclass3_info, zclass3_model, zclass3_clawmodel, zclass3_health, zclass3_speed, zclass3_gravity, 0.0, zclass3_adminflags)
bb_register_zombie_class(zclass4_name, zclass4_info, zclass4_model, zclass4_clawmodel, zclass4_health, zclass4_speed, zclass4_gravity, 0.0, zclass4_adminflags)
g_zclass_tanker = bb_register_zombie_class(zclass5_name, zclass5_info, zclass5_model, zclass5_clawmodel, zclass5_health, zclass5_speed, zclass5_gravity, 0.0, zclass5_adminflags)
bb_register_zombie_class(zclass6_name, zclass6_info, zclass6_model, zclass6_clawmodel, zclass6_health, zclass6_speed, zclass6_gravity, 0.0, zclass6_adminflags)
bb_register_zombie_class(zclass7_name, zclass7_info, zclass7_model, zclass7_clawmodel, zclass7_health, zclass7_speed, zclass7_gravity, 0.0, zclass7_adminflags)
}
#if defined TANK_ARMOR
public plugin_init()
{
RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post", 1)
}
public ham_PlayerSpawn_Post(id)
{
if (!is_user_alive(id))
return ;
if (bb_is_user_zombie(id) && bb_get_user_zombie_class(id) == g_zclass_tanker)
{
give_item(id, "item_assaultsuit");
cs_set_user_armor(id, TANK_ARMOR, CS_ARMOR_VESTHELM);
}
}
#endif
Meniu Vip
Descriere :[/b] : Acest plugin face ca atunci cand scri /vmenu sa iti apara un meniu cu diferite arme / puteri / arme cu puteri care poti sa iti alegi odata pe runda
Autor :[/color] : anti-talent
Sma :
Cod: Selectaţi tot
#pragma semicolon 1
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#include <fun>
#include <hamsandwich>
#include <fakemeta>
#include <vault>
#define ADMIN_BBVIP ADMIN_IMMUNITY
// Define the Plugin Version
new const VERSION[] = { "1.0" };
// PREFIX
new const PREFIX[] = { "!g[ BB.NumeServer.Ro ]!n" };
new const g_szKnifeBModel[] = "models/cutit_nebun.mdl";
new const g_szKnifeWModel[] = "models/cutit_nebun2.mdl";
new const g_szAk47Model[] = "models/dragonu_ak_47.mdl";
new const g_szDeagleModel[] = "models/deagleu.mdl";
new VipUsed[33];
new HasSpeed;
new bool:g_bHasKnifeB[33];
new bool:g_bHasKnifeW[33];
new bool:g_bHasAk47[33];
new bool:g_bHasDeagle[33];
new Float:fast_speed = 400.0;
new Float:normal_speed = 250.0;
//new g_pVisiblity;
new mpd,/* mkb,*/ mhb;
new maxplayers;
public plugin_init()
{
register_plugin("BaseBuilder: VIP Menu", VERSION, "anti-talent");
RegisterHam(Ham_Spawn, "player", "FwdHamSpawn_Post", 1);
RegisterHam(Ham_Item_PreFrame, "player", "FwdPreFrame_Post", 1);
RegisterHam(Ham_TakeDamage, "player", "FwdPlayerDamage");
//RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1);
register_event("CurWeapon","event_curweapon","be","1=1");
register_clcmd("say vmenu", "cmdVmenu");
register_clcmd("say /vmenu", "cmdVmenu");
register_clcmd("say_team vmenu", "cmdVmenu");
register_clcmd("say_team /vmenu", "cmdVmenu");
register_clcmd("say /sagasgasf", "cmdBuyvip");
register_clcmd("say sagasgas", "cmdBuyvip");
register_clcmd("say_team sagasgafs", "cmdBuyvip");
register_clcmd("say_team /sagasfgsa", "cmdBuyvip");
register_clcmd("say /safasgas", "cmdPreturi");
register_clcmd("say_team /gassae", "cmdPreturi");
//g_pVisiblity = register_cvar( "km_invis", "200" ); // 255 = clearly visible
set_task(480.0, "kmodmsg", 0, _, _, "b");
mpd = register_cvar("money_per_damage","3");
//mkb = register_cvar("money_kill_bonus","200");
mhb = register_cvar("money_hs_bonus","500");
register_event("Damage","Damage","b");
maxplayers = get_maxplayers();
// Ham TakeDamage
register_forward( FM_CmdStart, "fw_CmdStart" );
//RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1);
}
public Damage(id)
{
new weapon, hitpoint, attacker = get_user_attacker(id,weapon,hitpoint);
if(attacker<=maxplayers && is_user_alive(attacker) && attacker!=id)
if (get_user_flags(attacker) & ADMIN_IMMUNITY)
{
new money = read_data(2) * get_pcvar_num(mpd);
if(hitpoint==1) money += get_pcvar_num(mhb);
cs_set_user_money(attacker,cs_get_user_money(attacker) + money);
}
}
public FwdPlayerDamage(victim, inflictor, attacker, Float:damage, damagebits)
{
if(inflictor == attacker
&& attacker != victim
&& g_bHasKnifeB[ attacker ]
&& is_user_alive(attacker)
&& get_user_weapon(attacker) == CSW_KNIFE )
{
SetHamParamFloat(4, damage * 3.0);
}
if(inflictor == attacker
&& attacker != victim
&& g_bHasAk47[ attacker ]
&& is_user_alive(attacker)
&& get_user_weapon(attacker) == CSW_AK47 )
{
SetHamParamFloat(4, damage * 3.0);
}
if(inflictor == attacker
&& attacker != victim
&& g_bHasDeagle[ attacker ]
&& is_user_alive(attacker)
&& get_user_weapon(attacker) == CSW_DEAGLE )
{
SetHamParamFloat(4, damage * 4.0);
}
}
public plugin_precache()
{
precache_model(g_szKnifeBModel);
precache_model(g_szAk47Model);
precache_model(g_szKnifeWModel);
precache_model(g_szDeagleModel);
}
public event_curweapon(id)
{
if(g_bHasKnifeB[id] && read_data(2) == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, g_szKnifeBModel);
set_user_gravity(id, 0.5);
}
if(g_bHasAk47[id] && read_data(2) == CSW_AK47)
{
set_pev(id, pev_viewmodel2, g_szAk47Model);
}
if(g_bHasDeagle[id] && read_data(2) == CSW_DEAGLE)
{
set_pev(id, pev_viewmodel2, g_szDeagleModel);
}
}
public FwdPreFrame_Post(id)
{
if(!is_user_alive(id))
{
return PLUGIN_HANDLED;
}
if(!HasSpeed)
{
return PLUGIN_HANDLED;
}
else if(HasSpeed)
{
set_user_maxspeed(id, fast_speed);
}
return PLUGIN_HANDLED;
}
public FwdHamSpawn_Post(id)
{
if (!is_user_alive(id))
return PLUGIN_CONTINUE;
HasSpeed = false;
VipUsed[id] = false;
g_bHasKnifeB[id] = false;
g_bHasKnifeW[id] = false;
g_bHasAk47[id] = false;
g_bHasDeagle[id] = false;
set_user_maxspeed(id, normal_speed);
set_user_rendering( id, _, 0, 0, 0, _, 0 );
return PLUGIN_CONTINUE;
}
public cmdVmenu(id)
{
if(!(get_user_flags(id) & ADMIN_BBVIP))
{
client_printc(id, "%s Doar !gVIPurile !tau acces la !gMeniul de vip", PREFIX);
return PLUGIN_HANDLED;
}
if(VipUsed[id])
{
client_printc(id, "%s Ti-ai luat deja ceva din !gMeniul de VIP!n in aceasta runda. !tAsteapta pana runda viitoare sa iti mai iei inca un item", PREFIX);
return PLUGIN_HANDLED;
}
switch(cs_get_user_team(id))
{
case CS_TEAM_T:
VipTMenu(id);
case CS_TEAM_CT:
VipCTMenu(id);
}
return PLUGIN_HANDLED;
}
public VipCTMenu(id)
{
new menu = menu_create("\yMeniu De ViP:^n\r", "VipCTMenu_handler");
menu_additem(menu, "\w+150HP si +100Armor", "1", 0);
menu_additem(menu, "\wViteza", "2", 0);
menu_additem(menu, "\wM249 si Deagle", "3", 0);
menu_additem(menu, "\wRevive", "4", 0);
menu_additem(menu, "\wSG550", "5", 0);
menu_additem(menu, "\wG3SG1", "6", 0);
menu_additem(menu, "\wAK 47 Auriu", "7", 0);
menu_additem(menu, "\wDeagle Nebun", "8", 0);
menu_additem(menu, "\wAWP cu 600 dmg", "9", 0);
menu_display(id, menu);
}
public VipCTMenu_handler(id, menu, item)
{
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 key = str_to_num(data);
switch(key)
{
case 1:
{
set_user_health(id, get_user_health(id) + 150);
set_user_armor(id, get_user_armor(id) + 100);
VipUsed[id] = true;
client_printc(id, "%s Tocmai ai primit !g150HP!n si !g100Armor!n", PREFIX);
}
case 2:
{
VipUsed[id] = true;
HasSpeed = true;
set_user_maxspeed(id, fast_speed);
client_printc(id, "%s Tocmai ai primit !gViteza", PREFIX);
}
case 3:
{
give_item(id, "weapon_m249");
give_item(id, "weapon_deagle");
cs_set_user_bpammo(id, CSW_M249, 200);
cs_set_user_bpammo(id, CSW_DEAGLE, 100);
VipUsed[id] = true;
client_printc(id, "%s Tocmai ai primit un !gM249!n si un !gDeagle!n", PREFIX);
}
case 4:
{
ExecuteHamB(Ham_CS_RoundRespawn, id);
VipUsed[id] = true;
client_printc(id, "%s Ai fost !gReinviat", PREFIX);
}
case 5:
{
give_item(id, "weapon_sg550");
cs_set_user_bpammo(id, CSW_SG550, 200);
VipUsed[id] = true;
client_printc(id, "%s Tocmai ai primit un !gSG550", PREFIX);
}
case 6:
{
give_item(id, "weapon_g3sg1");
cs_set_user_bpammo(id, CSW_G3SG1, 200);
VipUsed[id] = true;
client_printc(id, "%s Tocmai ai primit un !gG3SG1", PREFIX);
}
case 7:
{
give_item(id, "weapon_ak47");
cs_set_user_bpammo(id, CSW_AK47, 200);
set_pev(id, pev_viewmodel2, "models/dragonu_ak_47.mdl");
g_bHasAk47[id] = true;
VipUsed[id] = true;
client_printc(id, "%s Tocmai ai primit un !gAK-47 Auriu", PREFIX);
}
case 8:
{
give_item(id, "weapon_deagle");
cs_set_user_bpammo(id, CSW_DEAGLE, 200);
set_pev(id, pev_viewmodel2, "models/deagleu.mdl");
g_bHasDeagle[id] = true;
VipUsed[id] = true;
client_printc(id, "%s Tocmai ai primit un !gDeagle Nebun", PREFIX);
}
case 9:
{
give_item(id, "weapon_awp");
cs_set_user_bpammo(id, CSW_AWP, 200);
VipUsed[id] = true;
client_printc(id, "%s Tocmai ai primit un !gAWP", PREFIX);
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public VipTMenu(id)
{
new menu = menu_create("\yMeniu De ViP:^n\r", "VipTMenu_handler");
menu_additem(menu, "\wViteza", "1", 0);
menu_additem(menu, "\w+5000Hp si +5000Armor", "2", 0);
menu_additem(menu, "\wCutit Nebun 1", "3", 0);
menu_additem(menu, "\wCutit Nebun 2", "4", 0);
menu_display(id, menu);
}
public VipTMenu_handler(id, menu, item)
{
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 key = str_to_num(data);
switch(key)
{
case 1:
{
VipUsed[id] = true;
HasSpeed = true;
set_user_maxspeed(id, fast_speed);
client_printc(id, "%s Tocmai ai primit !gViteza", PREFIX);
}
case 2:
{
set_user_health(id, get_user_health(id) + 5000);
set_user_armor(id, get_user_armor(id) + 5000);
VipUsed[id] = true;
client_printc(id, "%s Tocmai ai primit !g5000 HP!n si !g5000 Armura!n", PREFIX);
}
case 3:
{
set_user_health(id, get_user_health(id) + 2000);
set_user_armor(id, get_user_armor(id) + 2000);
set_user_maxspeed(id, fast_speed);
HasSpeed = true;
set_pev(id, pev_viewmodel2, "models/cutit_nebun.mdl");
g_bHasKnifeB[id] = true;
VipUsed[id] = true;
client_printc(id, "%s Tocmai ai primit !tViata !nsi un !gCutit Nebun", PREFIX);
}
case 4:
{
set_user_health(id, get_user_health(id) + 2500);
set_user_armor(id, get_user_armor(id) + 2500);
set_user_maxspeed(id, fast_speed);
HasSpeed = true;
set_pev(id, pev_viewmodel2, "models/cutit_nebun2.mdl");
g_bHasKnifeW[id] = true;
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 125);
VipUsed[id] = true;
client_printc(id, "%s Tocmai ai primit !tViata !nsi un !gCutit Nebun", PREFIX);
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public cmdBuyvip(id)
{
show_motd(id, "vip.txt", "VIP");
}
public PrintText(id)
{
client_print(id, print_chat, "!t[BB.GoDpLaY.Ro] !gPentru a cumpara !tVIP !gadauga id-ul !gKinderbueno_cs .");
}
public cmdPreturi(id)
{
show_motd(id, "preturi.txt", "PRETURI");
client_printc(id, "!t[BB.GoDpLaY.Ro] !tPentru a vedea beneficiile !gVIP-ului !ntasteaza in chat !t/privilegii .");
}
// Colour Chat
stock client_printc(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^x04"); // Green Color
replace_all(msg, 190, "!n", "^x01"); // Default Color
replace_all(msg, 190, "!t", "^x03"); // Team Color
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, get_user_msgid("SayText"), _, players);
write_byte(players);
write_string(msg);
message_end();
}
}
}
Health Bar
Descriere :[/b] : Acest plugin arata tutoror jucatoriilor deasupra capului o bara care arata cat de multa viata au / mai au
Autor :[/color] : Bboy Grun
Sma :
Cod: Selectaţi tot
#include < amxmodx >
#include < cstrike >
#include < fakemeta >
#include < hamsandwich >
#define VERSION "3.0"
new const HEALTH_BAR_MODEL[ ] = "sprites/barenoize.spr";
new g_playerBar[ 33 ], g_isAlive[ 33 ], CsTeams: g_playerTeam[ 33 ], g_playerBot[ 33 ], g_playerMaxHealth[ 33 ], g_showHB[ 33 ];
new pcvarBotSupport, pcvarShowMode, pcvarSpec, cvarSpec, cvarShowMode, cvarBotSupport;
new g_maxPlayers, fwShowMode, botRegistered, msg_SayText;
new g_botQuotaPointer;
public plugin_init( )
{
register_plugin( "Health Bar", VERSION, "Bboy Grun" );
register_cvar( "Health_Bars", VERSION, FCVAR_SERVER | FCVAR_SPONLY );
set_cvar_string( "Health_Bars", VERSION );
register_event( "HLTV", "evNewRound", "a", "1=0", "2=0" );
register_event( "DeathMsg", "evDeathMsg", "a" );
register_event( "Health", "evHealth", "be" );
RegisterHam( Ham_Spawn, "player", "fwHamSpawn", true );
register_clcmd( "say hb", "hbHandle" );
register_clcmd( "say /hb", "hbHandle" );
pcvarShowMode = register_cvar( "health_ShowMode", "2" );
pcvarBotSupport = register_cvar( "health_BotSupport", "1" );
pcvarSpec = register_cvar( "health_ShowToSpectators", "1" );
g_maxPlayers = get_maxplayers( );
msg_SayText = get_user_msgid( "SayText" );
g_botQuotaPointer = get_cvar_pointer( "bot_quota" );
new playerBar, allocString = engfunc( EngFunc_AllocString, "env_sprite" );
for( new id = 1; id <= g_maxPlayers; id ++ )
{
g_playerBar[ id ] = engfunc( EngFunc_CreateNamedEntity, allocString );
playerBar = g_playerBar[ id ];
if( pev_valid( playerBar ) )
{
set_pev( playerBar, pev_scale, 0.1 );
engfunc( EngFunc_SetModel, playerBar, HEALTH_BAR_MODEL );
}
}
evNewRound( );
}
public plugin_init_bots( id )
{
RegisterHamFromEntity( Ham_Spawn, id, "fwHamSpawn", 1 );
fwHamSpawn( id );
}
public plugin_precache( )
{
precache_model( HEALTH_BAR_MODEL );
}
public client_putinserver( id )
{
g_isAlive[ id ] = 0;
g_playerTeam[ id ] = CS_TEAM_SPECTATOR;
g_playerBot[ id ] = is_user_bot( id );
g_playerMaxHealth[ id ] = 0;
g_showHB[ id ] = true;
if( cvarBotSupport && !botRegistered && g_playerBot[ id ] && g_botQuotaPointer )
{
set_task( 0.4, "plugin_init_bots", id );
botRegistered = 1;
}
}
public client_disconnect( id )
{
g_isAlive[ id ] = 0;
g_playerTeam[ id ] = CS_TEAM_UNASSIGNED;
g_playerBot[ id ] = 0;
g_playerMaxHealth[ id ] = 0;
g_showHB[ id ] = false;
}
public hbHandle( id ) // [ ^4 = GREEN ] [ ^3 = Team Color ] [ ^1 = client con_color value ]
{
g_showHB[ id ] = !g_showHB[ id ];
message_begin( MSG_ONE_UNRELIABLE, msg_SayText, .player = id );
write_byte( id );
write_string
(
g_showHB[ id ] ?
"^4[ HEALTH BARS ]^3 Enabled for you^1 ! Write /hb to^4 disable^1 it"
:
"^4[ HEALTH BARS ]^3 Disabled for you^1 ! Write /hb to^4 enable^1 it"
);
message_end( );
}
public fwAddToFullPack( es, e, ent, host, host_flags, player, p_set )
{
if( !player && !g_playerBot[ host ] && ( g_isAlive[ host ] || cvarSpec ) && g_showHB[ host ] )
{
new user;
for( user = g_maxPlayers; user > 0; -- user )
{
if( g_playerBar[ user ] == ent )
{
if( user != host && g_isAlive[ user ] && ( !g_playerBot[ user ] || cvarBotSupport )
&& ( cvarShowMode == 2 || g_playerTeam[ host ] == g_playerTeam[ user ] ) )
{
new Float: playerOrigin[ 3 ];
pev( user, pev_origin, playerOrigin );
playerOrigin[ 2 ] += 30.0;
set_es( es, ES_Origin, playerOrigin );
}
else
{
set_es( es, ES_Effects, EF_NODRAW );
}
break;
}
}
}
}
public fwHamSpawn( id )
{
if( cvarShowMode && is_user_alive( id ) )
{
new Float: playerOrigin[ 3 ];
pev( id, pev_origin, playerOrigin );
g_isAlive[ id ] = 1;
g_playerTeam[ id ] = cs_get_user_team( id );
engfunc( EngFunc_SetOrigin, g_playerBar[ id ], playerOrigin );
evHealth( id );
}
}
public evDeathMsg( )
{
new id = read_data( 2 );
g_isAlive[ id ] = 0;
g_playerTeam[ id ] = cs_get_user_team( id );
g_playerMaxHealth[ id ] = 0;
}
public evHealth( id )
{
new hp = get_user_health( id );
if( g_playerMaxHealth[ id ] < hp )
{
g_playerMaxHealth[ id ] = hp;
set_pev( g_playerBar[ id ], pev_frame, 99.0 );
}
else
{
set_pev( g_playerBar[ id ], pev_frame, 0.0 + ( ( ( hp - 1 ) * 100 ) / g_playerMaxHealth[ id ] ) );
}
}
public evNewRound( )
{
cvarShowMode = get_pcvar_num( pcvarShowMode );
cvarSpec = get_pcvar_num( pcvarSpec );
new valueBotSupport = get_pcvar_num( pcvarBotSupport );
if( cvarShowMode > 0 )
{
if( !fwShowMode )
{
fwShowMode = register_forward( FM_AddToFullPack, "fwAddToFullPack", true );
for( new id = 1; id <= g_maxPlayers; set_pev( g_playerBar[ id ++ ], pev_effects, 0 ) ) { }
}
}
else
{
if( fwShowMode )
{
unregister_forward( FM_AddToFullPack, fwShowMode, true );
fwShowMode = 0;
for( new id = 1; id <= g_maxPlayers; set_pev( g_playerBar[ id ++ ], pev_effects, EF_NODRAW ) ) { }
}
}
if( valueBotSupport && !botRegistered )
{
for( new id = 1; id <= g_maxPlayers; id ++ )
{
if( g_playerBot[ id ] )
{
plugin_init_bots( id );
botRegistered = 1;
break;
}
}
}
cvarBotSupport = valueBotSupport;
}
Parasuta + Aripi
Descriere :[/b] : Acest plugin este cel de parasuta , dar imbunatatit , anume , modelul este schimbat , in loc de parasuta sunt aripi , iar daca ati observat atunci cand folosesti parasuta normala si ai gravity , acesta revine la normal [800] acest plugin face sa ai aceeasi gravitatie
Autor :[/color] : xxx + e t n a d (dar nu prea mult)
Sma :
Cod: Selectaţi tot
/********************************************************************************/
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>
#include <fun>
#define PLUGIN "AMX Parachute"
#define VERSION "1.5"
#define AUTHOR "xxx"
#define PARACHUTE_LEVEL ADMIN_KICK
/********************************************************************************/
new bool:has_parachute[33]
new para_ent[33]
new gCStrike = 0
new pDetach
new pFallSpeed
new pEnabled
new pCost
new pPayback
/********************************************************************************/
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
pEnabled = register_cvar("sv_parachute", "1" )
pFallSpeed = register_cvar("parachute_fallspeed", "100")
pDetach = register_cvar("parachute_detach", "1")
if (cstrike_running()) gCStrike = true
if (gCStrike) {
pCost = register_cvar("parachute_cost", "0")
pPayback = register_cvar("parachute_payback", "75")
register_concmd("parachute", "admin_give_parachute", PARACHUTE_LEVEL, "<nick, #userid or @team>" )
}
register_clcmd("say", "HandleSay")
register_clcmd("say_team", "HandleSay")
register_clcmd("", "HandleSay")
register_event("ResetHUD", "newSpawn", "be")
register_event("DeathMsg", "death_event", "a")
new cvarString[256], shortName[16]
copy(shortName,15,"chute")
register_cvar("jtp10181","",FCVAR_SERVER|FCVAR_SPONLY)
get_cvar_string("jtp10181",cvarString,255)
if (strlen(cvarString) == 0) {
formatex(cvarString,255,shortName)
set_cvar_string("jtp10181",cvarString)
}
else if (contain(cvarString,shortName) == -1) {
format(cvarString,255,"%s,%s",cvarString, shortName)
set_cvar_string("jtp10181",cvarString)
}
}
/********************************************************************************/
public plugin_natives()
{
set_module_filter("module_filter")
set_native_filter("native_filter")
}
/********************************************************************************/
public module_filter(const module[])
{
if (!cstrike_running() && equali(module, "cstrike")) {
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
/********************************************************************************/
public native_filter(const name[], index, trap)
{
if (!trap) return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
/********************************************************************************/
public plugin_precache()
{
precache_model("models/param.mdl")
}
/********************************************************************************/
public client_connect(id)
{
parachute_reset(id)
}
/********************************************************************************/
public client_disconnect(id)
{
parachute_reset(id)
}
/********************************************************************************/
public death_event()
{
new id = read_data(2)
parachute_reset(id)
}
/********************************************************************************/
parachute_reset(id)
{
if(para_ent[id] > 0) {
if (is_valid_ent(para_ent[id])) {
remove_entity(para_ent[id])
}
}
}
/********************************************************************************/
public newSpawn(id)
{
if(para_ent[id] > 0) {
remove_entity(para_ent[id])
para_ent[id] = 0
}
if (!gCStrike || access(id,PARACHUTE_LEVEL) || get_pcvar_num(pCost) <= 0) {
has_parachute[id] = true
}
}
/********************************************************************************/
public HandleSay(id)
{
if(!is_user_connected(id)) return PLUGIN_CONTINUE
new args[128]
read_args(args, 127)
remove_quotes(args)
if (gCStrike) {
if (equali(args, "buy_parachute")) {
buy_parachute(id)
return PLUGIN_HANDLED
}
else if (equali(args, "sell_parachute")) {
sell_parachute(id)
return PLUGIN_HANDLED
}
else if (containi(args, "give_parachute") == 0) {
give_parachute(id,args[15])
return PLUGIN_HANDLED
}
}
if (containi(args, "parachute") != -1) {
if (gCStrike) client_print(id, print_chat, "[AMXX] Parachute commands: buy_parachute, sell_parachute, give_parachute")
}
return PLUGIN_CONTINUE
}
/********************************************************************************/
public buy_parachute(id)
{
if (!gCStrike) return PLUGIN_CONTINUE
if (!is_user_connected(id)) return PLUGIN_CONTINUE
if (!get_pcvar_num(pEnabled)) {
return PLUGIN_HANDLED
}
if (has_parachute[id]) {
return PLUGIN_HANDLED
}
new money = cs_get_user_money(id)
new cost = get_pcvar_num(pCost)
if (money < cost) {
return PLUGIN_HANDLED
}
cs_set_user_money(id, money - cost)
has_parachute[id] = true
return PLUGIN_HANDLED
}
/********************************************************************************/
public sell_parachute(id)
{
if (!gCStrike) return PLUGIN_CONTINUE
if (!is_user_connected(id)) return PLUGIN_CONTINUE
if (!get_pcvar_num(pEnabled)) {
return PLUGIN_HANDLED
}
if (!has_parachute[id]) {
return PLUGIN_HANDLED
}
if (access(id,PARACHUTE_LEVEL)) {
return PLUGIN_HANDLED
}
parachute_reset(id)
new money = cs_get_user_money(id)
new cost = get_pcvar_num(pCost)
new sellamt = floatround(cost * (get_pcvar_num(pPayback) / 100.0))
cs_set_user_money(id, money + sellamt)
return PLUGIN_CONTINUE
}
/********************************************************************************/
public give_parachute(id,args[])
{
if (!gCStrike) return PLUGIN_CONTINUE
if (!is_user_connected(id)) return PLUGIN_CONTINUE
if (!get_pcvar_num(pEnabled)) {
return PLUGIN_HANDLED
}
if (!has_parachute[id]) {
return PLUGIN_HANDLED
}
new player = cmd_target(id, args, 4)
if (!player) return PLUGIN_HANDLED
new id_name[32], pl_name[32]
get_user_name(id, id_name, 31)
get_user_name(player, pl_name, 31)
if(has_parachute[player]) {
return PLUGIN_HANDLED
}
parachute_reset(id)
has_parachute[player] = true
return PLUGIN_HANDLED
}
/********************************************************************************/
public admin_give_parachute(id, level, cid) {
if (!gCStrike) return PLUGIN_CONTINUE
if(!cmd_access(id,level,cid,2)) return PLUGIN_HANDLED
if (!get_pcvar_num(pEnabled)) {
client_print(id, print_chat, "[AMXX] Parachute plugin is disabled")
return PLUGIN_HANDLED
}
new arg[32], name[32], name2[32], authid[35], authid2[35]
read_argv(1,arg,31)
get_user_name(id,name,31)
get_user_authid(id,authid,34)
if (arg[0]=='@'){
new players[32], inum
if (equali("T",arg[1])) copy(arg[1],31,"TERRORIST")
if (equali("ALL",arg[1])) get_players(players,inum)
else get_players(players,inum,"e",arg[1])
if (inum == 0) {
console_print(id,"No clients in such team")
return PLUGIN_HANDLED
}
for(new a = 0; a < inum; a++) {
has_parachute[players[a]] = true
}
switch(get_cvar_num("amx_show_activity")) {
case 2: client_print(0,print_chat,"ADMIN %s: gave a parachute to ^"%s^" players",name,arg[1])
case 1: client_print(0,print_chat,"ADMIN: gave a parachute to ^"%s^" players",arg[1])
}
console_print(id,"[AMXX] You gave a parachute to ^"%s^" players",arg[1])
log_amx("^"%s<%d><%s><>^" gave a parachute to ^"%s^"", name,get_user_userid(id),authid,arg[1])
}
else {
new player = cmd_target(id,arg,6)
if (!player) return PLUGIN_HANDLED
has_parachute[player] = true
get_user_name(player,name2,31)
get_user_authid(player,authid2,34)
switch(get_cvar_num("amx_show_activity")) {
case 2: client_print(0,print_chat,"ADMIN %s: gave a parachute to ^"%s^"",name,name2)
case 1: client_print(0,print_chat,"ADMIN: gave a parachute to ^"%s^"",name2)
}
console_print(id,"[AMXX] You gave a parachute to ^"%s^"", name2)
log_amx("^"%s<%d><%s><>^" gave a parachute to ^"%s<%d><%s><>^"", name,get_user_userid(id),authid,name2,get_user_userid(player),authid2)
}
return PLUGIN_HANDLED
}
/********************************************************************************/
public client_PreThink(id)
{
if (!get_pcvar_num(pEnabled)) return
if (!is_user_alive(id) || !has_parachute[id]) return
new Float:fallspeed = get_pcvar_float(pFallSpeed) * -1.0
new Float:frame
new button = get_user_button(id)
new oldbutton = get_user_oldbutton(id)
new flags = get_entity_flags(id)
if (para_ent[id] > 0 && (flags & FL_ONGROUND)) {
if (get_pcvar_num(pDetach)) {
if (entity_get_int(para_ent[id],EV_INT_sequence) != 2) {
entity_set_int(para_ent[id], EV_INT_sequence, 2)
entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
entity_set_float(para_ent[id], EV_FL_framerate, 0.0)
return
}
frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 2.0
entity_set_float(para_ent[id],EV_FL_fuser1,frame)
entity_set_float(para_ent[id],EV_FL_frame,frame)
if (frame > 254.0) {
remove_entity(para_ent[id])
para_ent[id] = 0
}
}
else {
remove_entity(para_ent[id])
para_ent[id] = 0
}
return
}
if (button & IN_USE) {
new Float:velocity[3]
entity_get_vector(id, EV_VEC_velocity, velocity)
if (velocity[2] < 0.0) {
if(para_ent[id] <= 0) {
para_ent[id] = create_entity("info_target")
if(para_ent[id] > 0) {
entity_set_string(para_ent[id],EV_SZ_classname,"parachute")
entity_set_edict(para_ent[id], EV_ENT_aiment, id)
entity_set_edict(para_ent[id], EV_ENT_owner, id)
entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
entity_set_model(para_ent[id], "models/param.mdl")
entity_set_int(para_ent[id], EV_INT_sequence, 0)
entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
}
}
if (para_ent[id] > 0) {
entity_set_int(id, EV_INT_sequence, 3)
entity_set_int(id, EV_INT_gaitsequence, 1)
entity_set_float(id, EV_FL_frame, 1.0)
entity_set_float(id, EV_FL_framerate, 1.0)
velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed
entity_set_vector(id, EV_VEC_velocity, velocity)
if (entity_get_int(para_ent[id],EV_INT_sequence) == 0) {
frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 1.0
entity_set_float(para_ent[id],EV_FL_fuser1,frame)
entity_set_float(para_ent[id],EV_FL_frame,frame)
if (frame > 100.0) {
entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
entity_set_float(para_ent[id], EV_FL_framerate, 0.4)
entity_set_int(para_ent[id], EV_INT_sequence, 1)
entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
}
}
}
}
else if (para_ent[id] > 0) {
remove_entity(para_ent[id])
para_ent[id] = 0
}
}
else if ((oldbutton & IN_USE) && para_ent[id] > 0 ) {
remove_entity(para_ent[id])
para_ent[id] = 0
}
}
Clase Zombie Noi !
Descriere :[/b] : Acest plugin adauga rase noi , cam ca cele din ZP cu sunete , modele , puteri noi !
Eu va spun doar puterile : 1 . Zm cu drujba , se aude sunetul de drujba + dmg mai mare 2. Putere semi-clip (trece prin coechipieri) + invizibilitate 3. Copac (cam ca cel din warcraft) Hp + charge 4. Wolf , gravity + speed 5. Zm pentru ViP , regenerare hp , gravity , speed , hp 6. Knockback
Autor :[/color] : Tirant + e t n a d (dar nu prea mult)
Cod: Selectaţi tot
/*================================================================================
-----------------------------------
-*- [BB] New Classes -*-
-----------------------------------
~~~~~~~~~~~~~~~
- Description -
~~~~~~~~~~~~~~~
This plugin adds the bonus zombie classes into Base Builder.
All classes have been balanced, but feel free to edit them if
you are not satisfied.
================================================================================*/
#include <amxmodx>
#include <fakemeta>
#include <basebuilder>
#include <hamsandwich>
#include <fun>
#include <xs>
/*================================================================================
[Plugin Customization]
=================================================================================*/
// Chainsaw Attributes
new const zclass3_name[] = { "Chainsaw Maniac" }
new const zclass3_info[] = { "HP+ DMG+" }
new const zclass3_model[] = { "bb_chainsaw" }
new const zclass3_clawmodel[] = { "v_sawww" }
const zclass3_health = 5000
const zclass3_speed = 260
const Float:zclass3_gravity = 0.85
const zclass3_admin = ADMIN_ALL
const zclass3_credits = 0
#define CHAINSAW_DAMAGE 2.5
// Banshee Attributes
new const zclass4_name[] = { "Predator" }
new const zclass4_info[] = { "Semiclip + Invizibilitate" }
new const zclass4_model[] = { "zmhelladmn" }
new const zclass4_clawmodel[] = { "v_predator123" }
const zclass4_health = 3500
const zclass4_speed = 280
const Float:zclass4_gravity = 0.85
const zclass4_admin = ADMIN_ALL
const zclass4_credits = 0
#define BANSHEE_RENDERAMT 90
// Charger Attributes
new const zclass5_name[] = { "Alive Tree" }
new const zclass5_info[] = { "HP++ Speed- Charge" }
new const zclass5_model[] = { "treee" }
new const zclass5_clawmodel[] = { "v_tree_h" }
const zclass5_health = 6500
const zclass5_speed = 210
const Float:zclass5_gravity = 0.9
const zclass5_admin = ADMIN_ALL
const zclass5_credits = 0
// Lycan Attributes
new const zclass6_name[] = { "Wolf Zombie" }
new const zclass6_info[] = { "Gravity + Speed + Hp -" }
new const zclass6_model[] = { "bb_woolf" }
new const zclass6_clawmodel[] = { "v_woolf" }
const zclass6_health = 3500
const zclass6_speed = 370
const Float:zclass6_gravity = 0.5
const zclass6_admin = ADMIN_ALL
const zclass6_credits = 0
// Regenerator Attributes
new const zclass7_name[] = { "Ultimate Zombie" }
new const zclass7_info[] = { "Regeneration + Speed + Hp + Gravity" }
new const zclass7_model[] = { "bb_regennn" }
new const zclass7_clawmodel[] = { "v_regennn" }
const zclass7_health = 10000
const zclass7_speed = 360
const Float:zclass7_gravity = 0.4
const zclass7_admin = ADMIN_IMMUNITY
const zclass7_credits = 0
//Every 2 seconds, regenerates 2.5% max health
#define REGENERATION_DELAY 2.5
#define HEAL_ALGORITHM (get_user_health(id) + (zclass7_health * 0.025))
// Knockback Attributes
new const zclass8_name[] = { "Assasin Assistent" }
new const zclass8_info[] = { "Knockback + Speed" }
new const zclass8_model[] = { "bb_knoc" }
new const zclass8_clawmodel[] = { "v_knoc" }
const zclass8_health = 4300
const zclass8_speed = 310
const Float:zclass8_gravity = 0.75
const zclass8_admin = ADMIN_ALL
const zclass8_credits = 0
/*============================================================================*/
new bool:g_isSolid[33]
new bool:g_isSemiClip[33]
new g_iPlayers[32], g_iNum, g_iPlayer
new g_zclass_saw
new g_zclass_banshee
new g_zclass_charger
new g_zclass_lycan
new g_zclass_regenerator
new g_zclass_knockback
#define SOUND_DELAY 3.0
new Float: g_fSoundDelay[33]
new Float: g_fRegenDelay[33]
#define PAINSHOCK 108
#define IP_SERVER_LICENTIAT "93.114.82.56"
#define g_ChainsawRev "basebuilder/zombie/chainsaw_rev2.wav"
#define g_BansheeScream "basebuilder/zombie/banshee_scream3.wav"
#define g_ChargerRoar "basebuilder/zombie/charger_roar2.wav"
#define g_LycanAttack "basebuilder/zombie/wolf_attack1.wav"
#define g_LycanHowl "basebuilder/zombie/wolf_spawn1.wav"
// Zombie Classes MUST be registered on plugin_precache
#define VERSION "6.8"
public plugin_precache()
{
register_plugin("BB Classes", VERSION, "Tirant + e t n a d")
register_cvar("bb_credit_classes", VERSION, FCVAR_SPONLY|FCVAR_SERVER)
set_cvar_string("bb_credit_classes", VERSION)
precache_sound(g_ChainsawRev)
precache_sound(g_BansheeScream)
precache_sound(g_ChargerRoar)
precache_sound(g_LycanAttack)
precache_sound(g_LycanHowl)
// Register all classes
g_zclass_saw = bb_register_zombie_class(zclass3_name, zclass3_info, zclass3_model, zclass3_clawmodel, zclass3_health, zclass3_speed, zclass3_gravity, 0.0, zclass3_admin, zclass3_credits)
g_zclass_banshee = bb_register_zombie_class(zclass4_name, zclass4_info, zclass4_model, zclass4_clawmodel, zclass4_health, zclass4_speed, zclass4_gravity, 0.0, zclass4_admin, zclass4_credits)
g_zclass_charger = bb_register_zombie_class(zclass5_name, zclass5_info, zclass5_model, zclass5_clawmodel, zclass5_health, zclass5_speed, zclass5_gravity, 0.0, zclass5_admin, zclass5_credits)
g_zclass_lycan = bb_register_zombie_class(zclass6_name, zclass6_info, zclass6_model, zclass6_clawmodel, zclass6_health, zclass6_speed, zclass6_gravity, 0.0, zclass6_admin, zclass6_credits)
g_zclass_regenerator = bb_register_zombie_class(zclass7_name, zclass7_info, zclass7_model, zclass7_clawmodel, zclass7_health, zclass7_speed, zclass7_gravity, 0.0, zclass7_admin, zclass7_credits)
g_zclass_knockback = bb_register_zombie_class(zclass8_name, zclass8_info, zclass8_model, zclass8_clawmodel, zclass8_health, zclass8_speed, zclass8_gravity, 0.0, zclass8_admin, zclass8_credits)
}
public plugin_init()
{
RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage")
RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage_Post", 1)
RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post", 1)
register_forward(FM_PlayerPreThink, "fw_PlayerPreThink");
register_forward(FM_PlayerPostThink, "fw_PlayerPostThink");
register_forward(FM_AddToFullPack, "fw_addToFullPack", 1)
register_forward(FM_EmitSound, "fw_EmitSound")
}
public ham_TakeDamage(victim, inflictor, attacker, Float:damage, damagebits)
{
if (!pev_valid(victim) || !is_user_connected(attacker))
return HAM_IGNORED
if (zp_get_user_zombie_class(attacker) == g_zclass_saw)
damage*=CHAINSAW_DAMAGE
SetHamParamFloat(4, damage)
return HAM_HANDLED
}
public ham_PlayerSpawn_Post(id)
{
if (!is_user_alive(id))
return ;
if (bb_is_user_zombie(id) && zp_get_user_zombie_class(id) == g_zclass_banshee)
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransTexture, BANSHEE_RENDERAMT)
else
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 90)
}
public fw_PlayerPreThink(id)
{
if (!is_user_alive(id) || !is_user_connected(id))
return FMRES_IGNORED
if (zp_get_user_zombie_class(id) == g_zclass_regenerator && bb_is_user_zombie(id))
{
static Float: fGameTime;
fGameTime = get_gametime();
if (g_fRegenDelay[id] < fGameTime)
{
g_fRegenDelay[id] = fGameTime + REGENERATION_DELAY;
new iHealth = floatround(HEAL_ALGORITHM);
iHealth = clamp(iHealth, 0, zclass7_health);
set_user_health(id, iHealth);
}
}
get_players(g_iPlayers, g_iNum, "a")
static i
for (i = 0; i < g_iNum; i++)
{
g_iPlayer = g_iPlayers
if (!g_isSemiClip[g_iPlayer])
g_isSolid[g_iPlayer] = true
else
g_isSolid[g_iPlayer] = false
}
if (g_isSolid[id])
for (i = 0; i < g_iNum; i++)
{
g_iPlayer = g_iPlayers
if (!g_isSolid[g_iPlayer] || g_iPlayer == id || !bb_is_user_zombie(id) || zp_get_user_zombie_class(id) != g_zclass_banshee)
continue
if (get_user_team(g_iPlayer) != get_user_team(id))
continue
set_pev(g_iPlayer, pev_solid, SOLID_NOT)
g_isSemiClip[g_iPlayer] = true
}
return FMRES_IGNORED
}
public fw_PlayerPostThink(id)
{
if (!is_user_alive(id))
return FMRES_IGNORED
get_players(g_iPlayers, g_iNum, "a")
static i
for (i = 0; i < g_iNum; i++)
{
g_iPlayer = g_iPlayers
if (g_isSemiClip[g_iPlayer])
{
set_pev(g_iPlayer, pev_solid, SOLID_SLIDEBOX)
g_isSemiClip[g_iPlayer] = false
}
}
return FMRES_IGNORED
}
public fw_addToFullPack(es, e, ent, host, hostflags, player, pSet)
{
if ( !player )
return FMRES_SUPERCEDE;
if(player)
{
if (!is_user_alive(host) || !g_isSolid[host])
return FMRES_IGNORED
if (get_user_team(ent) != get_user_team(host))
return FMRES_IGNORED
set_es(es, ES_Solid, SOLID_NOT)
}
return FMRES_IGNORED
}
public fw_EmitSound(id,channel,const sample[],Float:volume,Float:attn,flags,pitch)
{
if (!is_user_connected(id) || !bb_is_user_zombie(id) || bb_is_build_phase() || bb_is_prep_phase())
return FMRES_IGNORED;
if ((g_fSoundDelay[id] + SOUND_DELAY) < get_gametime())
{
if (equal(sample[8], "kni", 3))
{
if (equal(sample[14], "sla", 3) || equal(sample[14], "hit", 3) || equal(sample[14], "sta", 3)) // slash
{
if (zp_get_user_zombie_class(id) == g_zclass_saw)
{
emit_sound(id,CHAN_ITEM,g_ChainsawRev,volume,attn,flags,pitch)
g_fSoundDelay[id] = get_gametime()
return FMRES_SUPERCEDE;
}
else if (zp_get_user_zombie_class(id) == g_zclass_banshee)
{
emit_sound(id,CHAN_ITEM,g_BansheeScream,volume,attn,flags,pitch)
g_fSoundDelay[id] = get_gametime()
return FMRES_SUPERCEDE;
}
else if (zp_get_user_zombie_class(id) == g_zclass_charger)
{
emit_sound(id,CHAN_ITEM,g_ChargerRoar,volume,attn,flags,pitch)
g_fSoundDelay[id] = get_gametime()
static Float: velocity[3];
velocity_by_aim(id, 400, velocity);
set_pev(id, pev_velocity, velocity);
return FMRES_SUPERCEDE;
}
else if (zp_get_user_zombie_class(id) == g_zclass_lycan)
{
emit_sound(id,CHAN_ITEM,g_LycanAttack,volume,attn,flags,pitch)
g_fSoundDelay[id] = get_gametime()
return FMRES_SUPERCEDE;
}
}
}
}
//else
//g_fSoundDelay[id] = get_gametime()
return FMRES_IGNORED
}
public bb_zombie_class_set(id, class)
{
if (!is_user_alive(id))
return ;
if (class == g_zclass_lycan && !bb_is_build_phase())
emit_sound(id,CHAN_STATIC,g_LycanHowl,VOL_NORM,ATTN_NORM,0,PITCH_NORM)
return ;
}
public ham_TakeDamage_Post(victim, inflictor, attacker, Float:damage, bits)
{
if(bb_get_user_zombie_class(victim) == g_zclass_knockback && bb_is_user_zombie(victim))
{
set_pdata_float(victim, PAINSHOCK, 1.0, 5)
}
}
Plugin XP
Descriere :[/b] : Acest plugin original de la polonezi ... dar l-am tradus eu ... cu greu , dar am reusit , e un plugin foarte interesant , pe fiecare frag faci xp , cu pct de xp cumperi puteri , acestea sunt salvate , in chat apare rangul in format [Rang] cu verde iar din 1000 in 1000 pct de experienta faci level up
Autor :[/color] : Nu mai stiu exact ... un polonez oricum :-?? + e t n a d translate
Sma :
Cod: Selectaţi tot
/* Script generated by Pawn Studio */
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <cstrike>
#include <colorchat>
#include <engine>
#include <hamsandwich>
#include <fun>
#include <fakemeta>
#define PLUGIN "BB Skill Mod"
#define AUTHOR "nu mai stiu exact"
#define VERSION "0.1"
new player_xp[33];
new player_xp_all[33];
new level[33];
new rangi[][256]={
"IncepatoR",
"JucatoR",
"TragatoR",
"ConstructoR",
"KiLLeR",
"AddicteD",
"MasteR",
"MancatoR de ZombiE",
"ConstructoR SeF",
"AimeR",
"Base DefendeR",
"Building HERO",
"BaseBuilder ADDICTED",
"I OWN BASEBUILDER",
"B0$$ DE B0$$"
}
new exp[]={
1000,
2000,
3000,
4000,
5000,
6000,
7000,
8000,
9000,
10000,
12000,
14000,
16000,
18000,
20000,
22000,
24000,
28000,
9999999999
}
new zapis;
new msgtext;
new pcvar_exp_round,pcvar_exp_kill_ct,pcvar_exp_kill_tt,pcvar_exp_level,pcvar_exp_hs,pcvar_hud;
new dmg_level[33];
new gravitacja[33];
new health[33];
new shot_time_level[33],Weapons[33][2];
new bieganie_level[33];
new widocznosc[33];
new autobh[33];
new magazynek[33];
new ile_dodac_magazynek[33]
new stare_id_broni[33]
new krytyk[33]
new wampiryzm[33];
new stare_ammo[33];
new const Float:gfCSSpeeds[]={
000.0,
250.0, 000.0, 260.0, 250.0, 240.0,
250.0, 250.0, 240.0, 250.0, 250.0,
250.0, 250.0, 210.0, 240.0, 240.0,
250.0, 250.0, 210.0, 250.0, 220.0,
230.0, 230.0, 250.0, 210.0, 250.0,
250.0, 235.0, 221.0, 250.0, 245.0
};
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_logevent("Koniec_Rundy", 2, "1=Round_End")
register_concmd("add_exp","addexp",ADMIN_IMMUNITY,"<nume> <puncte de experienta>")
register_event("DeathMsg", "DeathMsg", "a")
pcvar_exp_round = register_cvar("bb_exp_round","50");
pcvar_exp_kill_ct = register_cvar("bb_exp_kill_ct","25");
pcvar_exp_kill_tt = register_cvar("bb_exp_kill_tt","15");
pcvar_exp_level = register_cvar("bb_exp_level","40");
pcvar_exp_hs = register_cvar("bb_exp_hs","5");
pcvar_hud = register_cvar("bb_hud","0");
zapis = nvault_open("exp")
register_event("ResetHUD","ShowHUD", "b");
register_event("CurWeapon","Event_CurWeapon", "b")
msgtext = get_user_msgid("StatusText");
register_clcmd("lastinv","skille_menu");
register_clcmd("say /stat","staty");
register_clcmd("say /reset","reset");
RegisterHam(Ham_TakeDamage, "player", "fwTakeDamage", 0);
RegisterHam(Ham_Spawn,"player","spawned",1)
register_event("CurWeapon","CurWeapon","be", "1=1")
register_clcmd("say","sayhandle");
set_task(120.0,"pomoc",40)
}
public plugin_precache(){
precache_sound("dante/bb/level.wav");
}
public plugin_end(){
nvault_close(zapis);
}
public sayhandle(id){
new text[192]
read_argv(1,text,191)
if(equal(text,"")){
return PLUGIN_HANDLED;
}
new name[128];
get_user_name(id,name,127)
ColorChat(0,GREEN,"[%s] ^x03%s^x01: %s",rangi[level[id]],name,text)
return PLUGIN_HANDLED;
}
public CurWeapon(id)
{
new wid = read_data(2) // Id broni
if(wid == CSW_XM1014 || wid == CSW_C4 || wid == CSW_FLASHBANG || wid == CSW_HEGRENADE || wid == CSW_KNIFE || wid == CSW_SMOKEGRENADE){
return PLUGIN_CONTINUE;
}
if(wid != stare_id_broni[id]){
ile_dodac_magazynek[id] = magazynek[id]/2;
stare_id_broni[id] = wid;
return PLUGIN_CONTINUE;
}
new ammo = read_data(3) // liczba naboi w magazynku
if(ammo > stare_ammo[id]){
ile_dodac_magazynek[id] = magazynek[id]/2;
stare_ammo[id] = ammo;
return PLUGIN_CONTINUE;
}
if(ile_dodac_magazynek[id] == 0){
return PLUGIN_CONTINUE;
}
new ent = fm_get_user_weapon_entity(id);
if(ent){
cs_set_weapon_ammo(ent, ammo+1);
ile_dodac_magazynek[id]--;
}
return PLUGIN_CONTINUE;
}
public skille_menu(id){
new menu = menu_create("Meniu Skilluri (By DanTe)","skille_menu_handle");
new formats[128];
format(formats,charsmax(formats),"Damage mai mare [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(dmg_level[id]+1),dmg_level[id])
menu_additem(menu,formats)
format(formats,charsmax(formats),"Gravitatie [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(gravitacja[id]+1),gravitacja[id])
menu_additem(menu,formats)
format(formats,charsmax(formats),"Viata mai multa [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(health[id]+1),health[id])
menu_additem(menu,formats)
format(formats,charsmax(formats),"FPS Mai mare [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(shot_time_level[id]+1),shot_time_level[id])
menu_additem(menu,formats)
format(formats,charsmax(formats),"Viteza [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(bieganie_level[id]+1),bieganie_level[id])
menu_additem(menu,formats)
format(formats,charsmax(formats),"Invizibilitate [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(widocznosc[id]+1),widocznosc[id])
menu_additem(menu,formats)
format(formats,charsmax(formats),"Bunny Hop [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(autobh[id]+1),autobh[id])
menu_additem(menu,formats)
format(formats,charsmax(formats),"Experienta mai mare [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(magazynek[id]+1),magazynek[id])
menu_additem(menu,formats)
format(formats,charsmax(formats),"Lovituri Critice [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(krytyk[id]+1),krytyk[id])
menu_additem(menu,formats)
//format(formats,charsmax(formats),"Mniejszy recoil [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(recoil[id]+1),recoil[id])
//menu_additem(menu,formats)
format(formats,charsmax(formats),"Vampirism [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(wampiryzm[id]+1),wampiryzm[id])
menu_additem(menu,formats)
//format(formats,charsmax(formats),"Natychmiastowy reload [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(natychmiastowy[id]+1),natychmiastowy[id])
//menu_additem(menu,formats)
menu_setprop(menu,MPROP_EXIT,MEXIT_ALL);
menu_setprop(menu,MPROP_NUMBER_COLOR,"\r");
menu_display(id, menu,0);
return PLUGIN_HANDLED;
}
skille_menu2(id,page=0){
new menu = menu_create("Meniu Skilluri (By DanTe)","skille_menu_handle2");
new formats[128];
format(formats,charsmax(formats),"Damage mai mare [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(dmg_level[id]+1),dmg_level[id])
menu_additem(menu,formats)
format(formats,charsmax(formats),"Gravitatie [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(gravitacja[id]+1),gravitacja[id])
menu_additem(menu,formats)
format(formats,charsmax(formats),"Viata mai multa [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(health[id]+1),health[id])
menu_additem(menu,formats)
format(formats,charsmax(formats),"FPS Mai mare [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(shot_time_level[id]+1),shot_time_level[id])
menu_additem(menu,formats)
format(formats,charsmax(formats),"Viteza [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(bieganie_level[id]+1),bieganie_level[id])
menu_additem(menu,formats)
format(formats,charsmax(formats),"Invizibilitate [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(widocznosc[id]+1),widocznosc[id])
menu_additem(menu,formats)
format(formats,charsmax(formats),"Bunny Hop [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(autobh[id]+1),autobh[id])
menu_additem(menu,formats)
format(formats,charsmax(formats),"Experienta mai mare [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(magazynek[id]+1),magazynek[id])
menu_additem(menu,formats)
format(formats,charsmax(formats),"Lovituri Critice [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(krytyk[id]+1),krytyk[id])
menu_additem(menu,formats)
//format(formats,charsmax(formats),"Mniejszy recoil [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(recoil[id]+1),recoil[id])
//menu_additem(menu,formats)
format(formats,charsmax(formats),"Vampirism [%d Exp] Level: \r%d",get_pcvar_num(pcvar_exp_level)*(wampiryzm[id]+1),wampiryzm[id])
menu_additem(menu,formats)
//format(formats,charsmax(formats),"Natychmiastowy reload [%d Exp] Aktualny level: \r%d",get_pcvar_num(pcvar_exp_level)*(natychmiastowy[id]+1),natychmiastowy[id])
//menu_additem(menu,formats)
menu_setprop(menu,MPROP_EXIT,MEXIT_ALL);
menu_setprop(menu,MPROP_NUMBER_COLOR,"\r");
menu_display(id, menu,page);
return PLUGIN_HANDLED;
}
public skille_menu_handle(id, menu, item){
if(item == MENU_EXIT){
menu_destroy(menu);
return PLUGIN_HANDLED;
}
item++;
switch(item){
case 1:{
if((get_pcvar_num(pcvar_exp_level)*(dmg_level[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(dmg_level[id]+1);
dmg_level[id]++;
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 2:{
if((get_pcvar_num(pcvar_exp_level)*(gravitacja[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(gravitacja[id]+1);
gravitacja[id]++;
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 3:{
if((get_pcvar_num(pcvar_exp_level)*(health[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(health[id]+1);
health[id]++;
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 4:
{
if((get_pcvar_num(pcvar_exp_level)*(shot_time_level[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(shot_time_level[id]+1);
shot_time_level[id]++;
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 5:
{
if((get_pcvar_num(pcvar_exp_level)*(bieganie_level[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(bieganie_level[id]+1);
bieganie_level[id]++;
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 6:
{
if((get_pcvar_num(pcvar_exp_level)*(widocznosc[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(widocznosc[id]+1);
widocznosc[id]++;
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 7:
{
if((get_pcvar_num(pcvar_exp_level)*(autobh[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(autobh[id]+1);
autobh[id]++;
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 8:
{
if((get_pcvar_num(pcvar_exp_level)*(magazynek[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
ile_dodac_magazynek[id] = magazynek[id]/2
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(magazynek[id]+1);
magazynek[id]++;
skille_menu2(id,1);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 9:
{
if((get_pcvar_num(pcvar_exp_level)*(krytyk[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(krytyk[id]+1);
krytyk[id]++;
skille_menu2(id,1);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 10:
{
if((get_pcvar_num(pcvar_exp_level)*(wampiryzm[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(wampiryzm[id]+1);
wampiryzm[id]++;
skille_menu2(id,1);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public skille_menu_handle2(id, menu, item){
if(item == MENU_EXIT){
menu_destroy(menu);
return PLUGIN_HANDLED;
}
item++;
switch(item){
case 1:{
if((get_pcvar_num(pcvar_exp_level)*(dmg_level[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(dmg_level[id]+1);
dmg_level[id]++;
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 2:{
if((get_pcvar_num(pcvar_exp_level)*(gravitacja[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(gravitacja[id]+1);
gravitacja[id]++;
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 3:{
if((get_pcvar_num(pcvar_exp_level)*(health[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(health[id]+1);
health[id]++;
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 4:
{
if((get_pcvar_num(pcvar_exp_level)*(shot_time_level[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(shot_time_level[id]+1);
shot_time_level[id]++;
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 5:
{
if((get_pcvar_num(pcvar_exp_level)*(bieganie_level[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(bieganie_level[id]+1);
bieganie_level[id]++;
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 6:
{
if((get_pcvar_num(pcvar_exp_level)*(widocznosc[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(widocznosc[id]+1);
widocznosc[id]++;
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 7:
{
if((get_pcvar_num(pcvar_exp_level)*(autobh[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(autobh[id]+1);
autobh[id]++;
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 8:
{
if((get_pcvar_num(pcvar_exp_level)*(magazynek[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
ile_dodac_magazynek[id] = magazynek[id]/2
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(magazynek[id]+1);
magazynek[id]++;
skille_menu2(id,1);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 9:
{
if((get_pcvar_num(pcvar_exp_level)*(krytyk[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(krytyk[id]+1);
krytyk[id]++;
skille_menu2(id,1);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 10:
{
if((get_pcvar_num(pcvar_exp_level)*(wampiryzm[id]+1)) > player_xp[id]){
skille_menu2(id);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
player_xp[id]-=get_pcvar_num(pcvar_exp_level)*(wampiryzm[id]+1);
wampiryzm[id]++;
skille_menu2(id,1);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public reset(id){
new exp = 0;
new exp2 =get_pcvar_num(pcvar_exp_level);
for(new i =1;i<=dmg_level[id];i++){
exp+=exp2*i
}
dmg_level[id] = 0;
for(new i =1;i<=gravitacja[id];i++){
exp+=exp2*i
}
gravitacja[id] = 0;
for(new i =1;i<=health[id];i++){
exp+=exp2*i
}
health[id] = 0;
for(new i =1;i<=shot_time_level[id];i++){
exp+=exp2*i
}
shot_time_level[id] = 0;
for(new i =1;i<=bieganie_level[id];i++){
exp+=exp2*i
}
bieganie_level[id] = 0;
for(new i =1;i<=widocznosc[id];i++){
exp+=exp2*i
}
widocznosc[id] = 0;
for(new i =1;i<=autobh[id];i++){
exp+=exp2*i
}
autobh[id] = 0;
for(new i =1;i<=magazynek[id];i++){
exp+=exp2*i
}
magazynek[id] = 0;
for(new i =1;i<=krytyk[id];i++){
exp+=exp2*i
}
krytyk[id] = 0;
for(new i =1;i<=wampiryzm[id];i++){
exp+=exp2*i
}
wampiryzm[id] = 0;
player_xp[id] += exp;
skille_menu(id);
}
public staty(id){
new path_to_file[128]
new amxbasedir[64]
get_basedir(amxbasedir,63)
format(path_to_file,127,"%s/base/stats.txt",amxbasedir)
if(file_exists(path_to_file)){
delete_file(path_to_file)
}
new Data[1025];
format(Data,1024,"<html><head><title>Informatii despre Skilluri</title></head>")
write_file(path_to_file,Data,-1)
format(Data,1024,"<body text=white bgcolor=black></body>")
write_file(path_to_file,Data,-1)
format(Data,1024,"<b>Rang: %s</b><br />",rangi[level[id]])
write_file(path_to_file,Data,-1)
format(Data,1024,"<b>Exp: %d | Intreaga exp: %d</b><br />",player_xp[id],player_xp_all[id])
write_file(path_to_file,Data,-1)
if(level[id]== sizeof(rangi)-1){
format(Data,1024,"<b>Rang : %s | Urmatorul Rang : Ultima limita e cerul</b><br />",rangi[level[id]])
write_file(path_to_file,Data,-1)
}
else
{
format(Data,1024,"<b>Rang : %s | Urmatorul Rang : %s (%d)</b><br />",rangi[level[id]],rangi[level[id]+1],exp[level[id]])
write_file(path_to_file,Data,-1)
}
format(Data,1024,"<b>Razboinic %d %%</b><br />",dmg_level[id])
write_file(path_to_file,Data,-1)
format(Data,1024,"<b>Spiderman %d %%</b><br />",gravitacja[id])
write_file(path_to_file,Data,-1)
format(Data,1024,"<b>Medic , Plus %d Hp</b><br />",health[id]*4)
write_file(path_to_file,Data,-1)
format(Data,1024,"<b>Soim %d %%</b><br />",shot_time_level[id])
write_file(path_to_file,Data,-1)
format(Data,1024,"<b>Flash %d %%</b><br />",bieganie_level[id]*2)
write_file(path_to_file,Data,-1)
format(Data,1024,"<b>Nightcrowler %d</b><br />",widocznosc[id]*3)
write_file(path_to_file,Data,-1)
format(Data,1024,"<b>Bugs Bunny %d %%</b><br />",autobh[id]/2)
write_file(path_to_file,Data,-1)
format(Data,1024,"<b>Ranger %d %%</b><br />",magazynek[id]/2)
write_file(path_to_file,Data,-1)
format(Data,1024,"<b>Batman %d %%</b><br />",krytyk[id]/2)
write_file(path_to_file,Data,-1)
//format(Data,1024,"<b>Recoil mniejszy o %d %%</b><br />",recoil[id]*2)
//write_file(path_to_file,Data,-1)
format(Data,1024,"<b>Wolverine , Killul adauga %d hp</b><br />",wampiryzm[id]*2)
write_file(path_to_file,Data,-1)
//format(Data,1024,"<b>Masz %d %% na natychmiastowy reload</b><br />",natychmiastowy[id]/2)
//write_file(path_to_file,Data,-1)
format(Data,1024,"</html>")
write_file(path_to_file,Data,-1)
show_motd(id, path_to_file, "Informatii Skilluri")
return PLUGIN_HANDLED
}
public pomoc(){
ColorChat(0,GREEN,"Pentru a-ti alege abilitati pentru jucator scrie in chat /skilluri");
set_task(120.0,"pomoc2",36)
}
public pomoc2(){
ColorChat(0,GREEN,"Multumuri speciale lui^x03 Simeria Ionut^x04 si lui^x03 Askhanar a.k.a sPuf ?");
set_task(200.0,"pomoc3",37)
}
public pomoc3(){
ColorChat(0,GREEN,"Pentru a-ti reseta levelele skillurilor scrie in chat /reset");
set_task(120.0,"pomoc",35)
}
public Koniec_Rundy(){
for(new i = 1;i<33;i++){
if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_CT){
DajExp(i,get_pcvar_num(pcvar_exp_round));
ColorChat(i,GREEN,"^x03 Ai primit %d puncte de experienta pentru ca ai supravietuit rundei",get_pcvar_num(pcvar_exp_round));
set_hudmessage(random_num(0,255), random_num(0,255),random_num(0,255), -1.0, -1.0, 0, 6.0, 5.0, 0.0, 0.0, -1)
show_hudmessage(i,"Ai primit %d puncte de experienta pentru ca ai supravietuit rundei",get_pcvar_num(pcvar_exp_round));
}
}
}
public addexp(id, level, cid){
if(!cmd_access(id, level, cid, 3)){
return PLUGIN_HANDLED;
}
new arg1[33];
new arg2[10];
read_argv(1,arg1,32);
read_argv(2,arg2,9);
new player = cmd_target(id, arg1, 0);
remove_quotes(arg2);
new exp = str_to_num(arg2);
if(exp != 0 && exp < 0 ){
OdejmijExp(player,exp);
}
else if(exp != 0 && exp > 0 ){
DajExp(player,exp);
}
return PLUGIN_HANDLED;
}
public OdejmijExp(id,ile){
player_xp[id]-=ile;
player_xp_all[id]-=ile;
level[id]=0;
while(true){
if(player_xp_all[id] >= exp[level[id]]){
level[id]++;
//set_hudmessage(random_num(0,255), random_num(0,255),random_num(0,255), -1.0, -1.0, 0, 6.0, 5.0, 0.0, 0.0, -1)
//show_hudmessage(id,"Awansowales na kolejny level (%s)",rangi[level[id]]);
//ColorChat(0,GREEN,"^x03 Awansowal do rangi ^x01 %s gratki :D",rangi[level[id]]);
}
else
{
break;
}
}
}
public DajExp(id,ile){
player_xp[id]+=ile;
player_xp_all[id]+=ile;
new name[64];
get_user_name(id,name,63);
while(true){
if(player_xp_all[id] >= exp[level[id]] && sizeof(rangi) > level[id]){
level[id]++;
set_hudmessage(random_num(0,255), random_num(0,255),random_num(0,255), -1.0, -1.0, 0, 6.0, 5.0, 0.0, 0.0, -1)
show_hudmessage(id,"Ai fost promovat la urmatorul rang (%s)",rangi[level[id]]);
ColorChat(0,GREEN,"^x03%s a fost promovat la rangul de ^x04 %s ",name,rangi[level[id]]);
emit_sound(id,CHAN_VOICE,"dante/bb/level.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
else
{
break;
}
}
}
public client_connect(id){
health[id] = 0;
gravitacja[id] = 0;
dmg_level[id] = 0;
level[id] = 0;
player_xp[id] = 0;
player_xp_all[id] = 0;
shot_time_level[id] = 0;
bieganie_level[id] = 0;
widocznosc[id] = 0;
autobh[id] = 0;
magazynek[id] = 0;
stare_id_broni[id] = 0;
ile_dodac_magazynek[id] = 0;
krytyk[id] = 0;
wampiryzm[id] = 0;
wczytaj_exp(id);
}
public client_disconnect(id){
zapisz_exp(id);
}
public wczytaj_exp(id){
new vaultkey[64],vaultdata[512];
new authid[64];
get_user_authid(id,authid,63);
format(vaultkey,63,"%s",authid);
nvault_get(zapis,vaultkey,vaultdata,511);
replace_all(vaultdata,256,"#"," ");
new jeden[100],dwa[100],trzy[100],cztery[100],piec[100],szesc[100],siedem[100],osiem[100],dziew[100],dzies[100],jedenascie[100],dwanascie[100]
parse(vaultdata,jeden,99,dwa,99,trzy,99,cztery,99,piec,99,szesc,99,siedem,99,osiem,99,dziew,99,dzies,99,jedenascie,99,dwanascie,99)
player_xp[id] = str_to_num(jeden);
player_xp_all[id] = str_to_num(dwa);
dmg_level[id] = str_to_num(trzy);
gravitacja[id] = str_to_num(cztery);
health[id] = str_to_num(piec);
shot_time_level[id] = str_to_num(szesc);
bieganie_level[id] = str_to_num(siedem)
widocznosc[id] = str_to_num(osiem);
autobh[id] = str_to_num(dziew);
magazynek[id] = str_to_num(dzies)
krytyk[id] = str_to_num(jedenascie)
wampiryzm[id] = str_to_num(dwanascie);
while(true){
if(player_xp_all[id] >= exp[level[id]] && sizeof(rangi) > level[id]){
level[id]++;
}
else
{
break;
}
}
}
public zapisz_exp(id){
new vaultkey[64],vaultdata[512];
new authid[64];
get_user_authid(id,authid,63);
format(vaultkey,63,"%s",authid);
format(vaultdata,511,"%d#%d#%d#%d#%d#%d#%d#%d#%d#%d#%d#%d",player_xp[id],player_xp_all[id],dmg_level[id],gravitacja[id],health[id],shot_time_level[id],bieganie_level[id],widocznosc[id],autobh[id],magazynek[id],krytyk[id],wampiryzm[id]);
nvault_set(zapis,vaultkey,vaultdata)
}
public ShowHUD(id) {
if(is_user_alive(id)){
new HUD[128];
format(HUD, 127,"[%s] Experienta : %d | Experienta totala: %d",rangi[level[id]],player_xp[id],player_xp_all[id]);
if(get_pcvar_num(pcvar_hud) == 0 ){
message_begin(MSG_ONE, msgtext, {0,0,0}, id);
write_byte(0);
write_string(HUD);
message_end();
return PLUGIN_CONTINUE;
}
else
{
set_hudmessage(255, 0, 0, 0.02, 0.63, 0, 6.0, 15.0)
show_hudmessage(id, "%s",HUD)
}
}
return PLUGIN_CONTINUE;
}
public client_PreThink(id){
if(!is_user_alive(id)){
return PLUGIN_CONTINUE;
}
if(is_user_alive(id) && !is_user_bot(id)){
new asd,aim
get_user_aiming(id,aim,asd);
if(is_user_alive(aim)){
ShowHUD(id);
}
}
if(random_num(1,200) <= autobh[id]){
new oldbuttons = get_user_oldbutton(id)
oldbuttons &= ~IN_JUMP
entity_set_int(id, EV_INT_oldbuttons, oldbuttons)
}
return PLUGIN_CONTINUE;
}
public DeathMsg()
{
new kid = read_data(1) //zabojca
new vid = read_data(2) // ofiara
new hs = read_data(3) // ofiara
if(cs_get_user_team(kid)==CS_TEAM_CT && cs_get_user_team(vid)==CS_TEAM_T){
DajExp(kid,get_pcvar_num(pcvar_exp_kill_tt));
set_user_health(kid,get_user_health(kid)+(wampiryzm[kid]*2));
new name[64];
get_user_name(vid,name,charsmax(name));
ColorChat(kid,TEAM_COLOR,"Ai primit %d experienta pentru uciderea lui %s",get_pcvar_num(pcvar_exp_kill_tt),name)
if(hs == 1){
DajExp(kid,get_pcvar_num(pcvar_exp_hs));
ColorChat(kid,TEAM_COLOR,"Ai primit %d experienta pentru ca ai dat un HeadShot",get_pcvar_num(pcvar_exp_hs))
}
}
else if(cs_get_user_team(kid)==CS_TEAM_T && cs_get_user_team(vid)==CS_TEAM_CT){
DajExp(kid,get_pcvar_num(pcvar_exp_kill_ct));
set_user_health(kid,get_user_health(kid)+(wampiryzm[kid]*2));
new name[64];
get_user_name(vid,name,charsmax(name));
ColorChat(kid,TEAM_COLOR,"Ai primit %d experienta pentru ca l-ai omorat pe %s",get_pcvar_num(pcvar_exp_kill_ct),name)
if(hs == 1){
DajExp(kid,get_pcvar_num(pcvar_exp_hs));
ColorChat(kid,TEAM_COLOR,"Ai primit %d experienta pentru ca ai dat un HeadShot",get_pcvar_num(pcvar_exp_hs))
}
}
}
public fwTakeDamage(this, idinflictor, idattacker,Float:damage, damagebits){
SetHamParamFloat(4,damage+(damage*(dmg_level[idattacker]*0.01)));
if(random_num(1,100) <= krytyk[idattacker]/2){
SetHamParamFloat(4,damage*2);
}
return HAM_HANDLED;
}
public spawned(id){
if(is_user_alive(id)){
set_user_health(id,get_user_health(id)+(health[id]*4))
set_user_gravity(id,1.0 - (gravitacja[id]*0.01));
if(widocznosc[id]*3 >= 255 ){
set_user_rendering(id,kRenderFxNone,255,255,255,kRenderTransAlpha,1)
}
else
{
set_user_rendering(id,kRenderFxNone,255,255,255,kRenderTransAlpha,255-(widocznosc[id]*3))
}
}
}
public Event_CurWeapon(id)
{
if(!is_user_alive(id)){
return PLUGIN_CONTINUE
}
new bron=read_data(2)
set_user_maxspeed(id,gfCSSpeeds[bron]+(gfCSSpeeds[bron]*(bieganie_level[id]*0.02)));
ShowHUD(id);
new Gun = read_data(2)
if(Gun==0 || Gun==6 || Gun==29 || Gun>30)
return PLUGIN_CONTINUE
new Ammo = read_data(3)
if(Weapons[id][0] == Gun && Weapons[id][1] <= Ammo)
{
Weapons[id][1] = Ammo
return PLUGIN_CONTINUE
}
Weapons[id][0] = Gun
Weapons[id][1] = Ammo
new weapon[32]
get_weaponname(Gun,weapon,31)
new Ent = fm_find_ent_by_owner(-1,weapon,id)
if(Ent)
{
new Float:Delay = get_pdata_float( Ent, 46, 4) * (1.0-(shot_time_level[id]*0.01));
if (Delay > 0.0){
set_pdata_float( Ent, 46, Delay, 4)
}
else
{
set_pdata_float( Ent, 46, 0.01, 4)
}
}
return PLUGIN_CONTINUE
}
//Frome Fakemeta utility
stock fm_find_ent_by_owner(index, const classname[], owner, jghgtype = 0)
{
new strtype[11] = "classname", ent = index
switch (jghgtype)
{
case 1: strtype = "target"
case 2: strtype = "targetname"
}
while ((ent = engfunc(EngFunc_FindEntityByString, ent, strtype, classname)) && pev(ent, pev_owner) != owner) {}
return ent
}
stock fm_get_user_weapon_entity(id, wid = 0) {
new weap = wid, clip, ammo
if (!weap && !(weap = get_user_weapon(id, clip, ammo)))
return 0
new class[32]
get_weaponname(weap, class, sizeof class - 1)
return fm_find_ent_by_owner(-1, class, id)
}
Trivia Bot for Alive People
Descriere :[/b] : Acesta este un plugin care pune intrebari iar daca castigi vei fi recompensat cu cate un frag ! Merge si la oamenii in viata !
Autor :[/color] : Alka
Cod: Selectaţi tot
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <colorchat>
#include <nvault>
#include <fun>
#define PLUGIN "Trivia Bot Custom"
#define VERSION "1.1"
#define AUTHOR "Alka"
#define CharsMax(%1) sizeof %1 - 1
#define MAX_LINES 512
#define MAX_LEN 256
#define QUESTION_INTERVAL 30.0
#define QUESTION_INTERVAL_NUM 30
new List[2][MAX_LINES][MAX_LEN];
new Amount;
new Timer = QUESTION_INTERVAL_NUM;
new CurrentAnswer[128];
new bool:TriviaOnOff[33];
new TriviaPoints[33];
new const PluginTag[] = "[Serverul Tau]";
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say", "HookSay");
register_clcmd("say !top10", "ShowTriviaTop");
register_clcmd("say !triviatop10", "ShowTriviaTop");
register_clcmd("say !triviatop", "ShowTriviaTop");
register_clcmd("say !triviapoints", "ShowTriviaPoints");
register_clcmd("say !points", "ShowTriviaPoints");
set_task(1.0, "TimeRemainingCounter", 1111, "", 0, "b", 0);
TeamInfo = get_user_msgid("TeamInfo");
SayText = get_user_msgid("SayText");
}
public plugin_cfg()
{
new ConfigsDir[64], File[64];
new TriviaDir[64];
get_configsdir(ConfigsDir, CharsMax(ConfigsDir));
formatex(TriviaDir, CharsMax(TriviaDir), "%s/Trivia Bot", ConfigsDir);
formatex(File, CharsMax(File), "%s/trivia_list.ini", TriviaDir);
if(!dir_exists(TriviaDir))
mkdir(TriviaDir);
if(!file_exists(File))
write_file(File, "", -1);
new FilePointer = fopen(File, "rt");
new Buffer[512];
while(!feof(FilePointer))
{
fgets(FilePointer, Buffer, CharsMax(Buffer));
if(!Buffer[0] || Buffer[0] == ';' || strlen(Buffer) < 3)
continue;
trim(Buffer);
strtok(Buffer, List[0][Amount], sizeof List[][] - 1, List[1][Amount], sizeof List[][] - 1, ';', 0);
Amount++;
}
fclose(FilePointer);
server_print("%s Successfuly loaded %d lines from %s.", PluginTag, Amount, File);
ShowQuestion();
}
public ShowQuestion()
{
if(task_exists(2222))
remove_task(2222);
new RndNum = random(Amount);
formatex(CurrentAnswer, CharsMax(CurrentAnswer), List[1][RndNum]);
static Players[32], Num, Player;
get_players(Players, Num, "h");
for(new i = 0 ; i < Num ; i++)
{
Player = Players;
if(!is_user_connected(Player))
continue;
if(!TriviaOnOff[Player])
continue;
ColorChat(Player, RED, "%s^x01%s", PluginTag, List[0][RndNum]);
}
Timer = QUESTION_INTERVAL_NUM - 1;
set_task(QUESTION_INTERVAL, "ShowQuestion", 2222, "", 0, "", 0);
}
public TimeRemainingCounter()
{
if(Timer < 0)
return;
static Players[32], Num, Player;
get_players(Players, Num, "bh");
for(new i = 0 ; i < Num ; i++)
{
Player = Players;
if(!is_user_connected(Player))
continue;
if(!TriviaOnOff[Player])
continue;
set_hudmessage(0, 255, 0, -1.0, 0.7, 0, 1.0, 0.8, 1.0, 1.0, 4);
show_hudmessage(Player, "%s Timp ramas pana la urmatoarea intrebare : %d", PluginTag, Timer);
}
Timer--;
}
public HookSay(id)
{
new Args[256];
read_args(Args, CharsMax(Args));
if(containi(Args, CurrentAnswer) != -1 && TriviaOnOff[id])
{
TriviaPoints[id] += 1;
new RndNum = random(2);
if( RndNum )
{
ColorChat(id, RED, "%s^x01 Raspunsul tau a fost corect. Felicitari, ai castigat %d frag", PluginTag, RndNum);
if(is_user_connected(id))
// cs_set_user_money(id, cs_get_user_money(id) + RndNum, 0);
set_user_frags(id, get_user_frags(id) + RndNum);
}
else
{
ColorChat(id, RED, "%s^x01 Raspunsul tau a fost corect.", PluginTag);
}
ShowQuestion();
return 1;
}
else if(equali(Args, "^"/trivia^"", 9))
{
if(!TriviaOnOff[id])
{
ColorChat(id, RED, "%s^x04 Acum joci Trivia !^x03 Raspunde intrebariilor si castiga^x04 Fraguri^x03 !", PluginTag);
TriviaOnOff[id] = true;
}
else
{
ColorChat(id, RED, "%s^x04 Ai parasit Trivia, nu mai poti juca!^x03 Scrie /trivia pentru a intra iarasi in joc.", PluginTag);
TriviaOnOff[id] = false;
}
}
return 0;
}
public client_disconnect(id)
{
TriviaOnOff[id] = false;
if(TriviaPoints[id] != 1)
SavePoints(id);
}
public client_putinserver(id)
{
set_task(15.0, "ShowAdvMessage", id + 3333);
LoadPoints(id);
}
public ShowAdvMessage(index)
{
index -= 3333;
ColorChat(index, RED, "%s^x01 Te-ai saturat sa stai degeaba cand esti Zombie ? Tasteaza ^x04/trivia ^x01 in chat si casiga^x04 FRAGURI.", PluginTag);
}
public SavePoints(index)
{
new Vault = nvault_open("trivia_points");
new Key[64], Value[64], Name[32];
get_user_name(index, Name, sizeof Name - 1);
formatex(Key, sizeof Key - 1, "%s-trivia_points:", Name);
formatex(Value, sizeof Value - 1, "%d", TriviaPoints[index]);
nvault_set(Vault, Key, Value);
nvault_close(Vault);
}
public LoadPoints(index)
{
new Vault = nvault_open("trivia_points");
new Key[64], Value[64], Name[32];
get_user_name(index, Name, sizeof Name - 1);
formatex(Key, sizeof Key - 1, "%s-trivia_points:", Name);
nvault_get(Vault, Key, Value, sizeof Value - 1);
nvault_close(Vault);
TriviaPoints[index] = str_to_num(Value);
}
public ShowTriviaTop(id)
{
static Sort[33][2];
new Count;
new Players[32], Num, Player;
get_players(Players, Num);
for(new i = 0 ; i < Num ; i++)
{
Player = Players;
Sort[Count][0] = Player;
Sort[Count][1] = TriviaPoints[Player];
Count++;
}
SortCustom2D(Sort, Count, "points_compare");
new Motd[1024], Len;
Len = format(Motd, sizeof Motd - 1,"<body bgcolor=#000000><font color=#98f5ff><pre>");
Len += format(Motd[Len], (sizeof Motd - 1) - Len,"%s %-22.22s %3s^n", "#", "Name", "Trivia Points");
new b = clamp(Count, 0, 10);
new Name[32], User;
for(new a = 0; a < b; a++)
{
User = Sort[a][0];
get_user_name(User, Name, sizeof Name - 1);
Len += format(Motd[Len], (sizeof Motd - 1) - Len,"%d %-22.22s %d^n", a + 1, Name, Sort[a][1]);
}
Len += format(Motd[Len], (sizeof Motd - 1) - Len,"</body></font></pre>");
show_motd(id, Motd, "Trivia Top 10");
}
public points_compare(elem1[], elem2[])
{
if(elem1[1] > elem2[1])
return -1;
else if(elem1[1] < elem2[1])
return 1;
return 0;
}
public ShowTriviaPoints(id)
ColorChat(id, RED, "%s^x04 Ai %d puncte trivia%s.", PluginTag, TriviaPoints[id], TriviaPoints[id] > 1 ? "s" : "");
BaseBuilder + Claim
Descriere :[/b] : Acesta este pluginul de baza al BaseBuilder-ului doar ca are CLAIM pentru toti jucatorii . Posibil sa mai aibe cateva modificari gen meniul sa nu mai fie alb ci galben , in orice caz legate de aspect , subtitrare + imbunatatire
Autor :[/color] : Tirant + e t n a d (modificari minore , adica claimul ... fix pix )
SMA :
Cod: Selectaţi tot
/*
Base Builder Zombie Mod
Tirant
Version 6.5 Pub
*/
#include <amxmodx>
#include <amxmisc>
#include <credits>
#include <cstrike>
#include <fun>
#include <hamsandwich>
#include <fakemeta>
#include <engine>
#include <csx>
//Enable this only if you have bought the credits plugin
//#define BB_CREDITS
#define FLAGS_BUILD ADMIN_KICK
#define FLAGS_LOCK ADMIN_ALL
#define FLAGS_BUILDBAN ADMIN_KICK
#define FLAGS_SWAP ADMIN_KICK
#define FLAGS_REVIVE ADMIN_KICK
#define FLAGS_GUNS ADMIN_LEVEL_A
#define FLAGS_RELEASE ADMIN_BAN
#define FLAGS_OVERRIDE ADMIN_BAN
#define VERSION "6.6"
#define MODNAME "^x01 [^x04 BaseBuilder^x01 ]"
#define LockBlock(%1,%2) ( entity_set_int( %1, EV_INT_iuser1, %2 ) )
#define UnlockBlock(%1) ( entity_set_int( %1, EV_INT_iuser1, 0 ) )
#define BlockLocker(%1) ( entity_get_int( %1, EV_INT_iuser1 ) )
#define MovingEnt(%1) ( entity_set_int( %1, EV_INT_iuser2, 1 ) )
#define UnmovingEnt(%1) ( entity_set_int( %1, EV_INT_iuser2, 0 ) )
#define IsMovingEnt(%1) ( entity_get_int( %1, EV_INT_iuser2 ) == 1 )
#define SetEntMover(%1,%2) ( entity_set_int( %1, EV_INT_iuser3, %2 ) )
#define UnsetEntMover(%1) ( entity_set_int( %1, EV_INT_iuser3, 0 ) )
#define GetEntMover(%1) ( entity_get_int( %1, EV_INT_iuser3 ) )
#define SetLastMover(%1,%2) ( entity_set_int( %1, EV_INT_iuser4, %2 ) )
#define UnsetLastMover(%1) ( entity_set_int( %1, EV_INT_iuser4, 0 ) )
#define GetLastMover(%1) ( entity_get_int( %1, EV_INT_iuser4 ) )
#define MAXPLAYERS 32
#define MAXENTS 1024
#define AMMO_SLOT 376
#define MODELCHANGE_DELAY 0.5
#define AUTO_TEAM_JOIN_DELAY 0.1
#define TEAM_SELECT_VGUI_MENU_ID 2
#define OBJECT_PUSHPULLRATE 4.0
#define HUD_FRIEND_HEIGHT 0.30
#define BARRIER_COLOR 0.0, 0.0, 255.0
#define BARRIER_RENDERAMT 150.0
#define BLOCK_RENDERAMT 150.0
#define LOCKED_COLOR 125.0, 0.0, 0.0
#define LOCKED_RENDERAMT 225.0
const ZOMBIE_ALLOWED_WEAPONS_BITSUM = (1<<CSW_KNIFE)
#define OFFSET_WPN_WIN 41
#define OFFSET_WPN_LINUX 4
#define OFFSET_ACTIVE_ITEM 373
#define OFFSET_LINUX 5
#if cellbits == 32
#define OFFSET_BUYZONE 235
#else
#define OFFSET_BUYZONE 268
#endif
new g_iMaxPlayers
new g_msgSayText, g_msgStatusText
new g_HudSync
new g_isConnected[MAXPLAYERS+1]
new g_isAlive[MAXPLAYERS+1]
new g_isZombie[MAXPLAYERS+1]
new g_isBuildBan[MAXPLAYERS+1]
new g_isCustomModel[MAXPLAYERS+1]
enum (+= 5000)
{
TASK_BUILD = 10000,
TASK_PREPTIME,
TASK_MODELSET,
TASK_RESPAWN,
TASK_HEALTH,
TASK_IDLESOUND
}
//Custom Sounds
new g_szRoundStart[][] =
{
"basebuilder/round_start.wav",
"basebuilder/round_start2.wav"
}
#define WIN_ZOMBIES "basebuilder/win_zombies2.wav"
#define WIN_BUILDERS "basebuilder/win_builders2.wav"
#define PHASE_PREP "basebuilder/phase_prep3.wav"
#define PHASE_BUILD "basebuilder/phase_build3.wav"
#define LOCK_OBJECT "buttons/lightswitch2.wav"
#define LOCK_FAIL "buttons/button10.wav"
#define GRAB_START "basebuilder/block_grab.wav"
#define GRAB_STOP "basebuilder/block_drop.wav"
#define INFECTION "basebuilder/zombie_kill1.wav"
new const g_szZombiePain[][] =
{
"basebuilder/zombie/pain/pain1.wav",
"basebuilder/zombie/pain/pain2.wav",
"basebuilder/zombie/pain/pain3.wav"
}
new const g_szZombieDie[][] =
{
"basebuilder/zombie/death/death1.wav",
"basebuilder/zombie/death/death2.wav",
"basebuilder/zombie/death/death3.wav"
}
new const g_szZombieIdle[][] =
{
"basebuilder/zombie/idle/idle1.wav",
"basebuilder/zombie/idle/idle2.wav",
"basebuilder/zombie/idle/idle3.wav"
}
new const g_szZombieHit[][] =
{
"basebuilder/zombie/hit/hit1.wav",
"basebuilder/zombie/hit/hit1.wav",
"basebuilder/zombie/hit/hit1.wav"
}
new const g_szZombieMiss[][] =
{
"basebuilder/zombie/miss/miss1.wav",
"basebuilder/zombie/miss/miss2.wav",
"basebuilder/zombie/miss/miss3.wav"
}
//Custom Player Models
new Float:g_fModelsTargetTime, Float:g_fRoundStartTime
new g_szPlayerModel[MAXPLAYERS+1][32]
//Game Name
new g_szModName[32]
new g_iCountDown, g_iEntBarrier
new bool:g_boolCanBuild, bool:g_boolPrepTime, bool:g_boolRoundEnded
new g_iFriend[MAXPLAYERS+1]
new CsTeams:g_iTeam[MAXPLAYERS+1], CsTeams:g_iCurTeam[MAXPLAYERS+1]
new bool:g_boolFirstTeam[MAXPLAYERS+1]
//Building Stores
new Float:g_fOffset1[MAXPLAYERS+1], Float:g_fOffset2[MAXPLAYERS+1], Float:g_fOffset3[MAXPLAYERS+1]
new g_iOwnedEnt[MAXPLAYERS+1], g_iOwnedEntities[MAXPLAYERS+1]
new Float:g_fEntDist[MAXPLAYERS+1]
static const g_szWpnEntNames[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
"weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
"weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
"weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
"weapon_ak47", "weapon_knife", "weapon_p90" }
//Weapon Names (For Guns Menu)
static const szWeaponNames[24][23] = { "Arc", "XM1014 M4", "Ingram MAC-10", "AuG", "UMP 45", "Auto-Sniper 1",
"GaLiL", "FaMaS", "PoLaR [AwP]", "MP5", "Ciuruitoare", "ShoTguN", "M4A1",
"Schmidt TMP", "Auto-Sniper 2", "SG-552 Commando", "Ak-47", "ES P90", "P228 Compact",
"Pistoale Duble", "Fiveseven", "UsP", "Glock", "DeagLe" }
#define MAX_COLORS 24
new const Float:g_fColor[MAX_COLORS][3] =
{
{200.0, 000.0, 000.0},
{255.0, 083.0, 073.0},
{255.0, 117.0, 056.0},
{255.0, 174.0, 066.0},
{255.0, 207.0, 171.0},
{252.0, 232.0, 131.0},
{254.0, 254.0, 034.0},
{059.0, 176.0, 143.0},
{197.0, 227.0, 132.0},
{000.0, 150.0, 000.0},
{120.0, 219.0, 226.0},
{135.0, 206.0, 235.0},
{128.0, 218.0, 235.0},
{000.0, 000.0, 255.0},
{146.0, 110.0, 174.0},
{255.0, 105.0, 180.0},
{246.0, 100.0, 175.0},
{205.0, 074.0, 076.0},
{250.0, 167.0, 108.0},
{234.0, 126.0, 093.0},
{180.0, 103.0, 077.0},
{149.0, 145.0, 140.0},
{000.0, 000.0, 000.0},
{255.0, 255.0, 255.0}
}
new const Float:g_fRenderAmt[MAX_COLORS] =
{
100.0, //Red
135.0, //Red Orange
140.0, //Orange
120.0, //Yellow Orange
140.0, //Peach
125.0, //Yellow
100.0, //Lemon Yellow
125.0, //Jungle Green
135.0, //Yellow Green
100.0, //Green
125.0, //Aquamarine
150.0, //Baby Blue
090.0, //Sky Blue
075.0, //Blue
175.0, //Violet
150.0, //Hot Pink
175.0, //Magenta
140.0, //Mahogany
140.0, //Tan
140.0, //Light Brown
165.0, //Brown
175.0, //Gray
125.0, //Black
125.0 //White
}
new const g_szColorName[MAX_COLORS][] =
{
"Rosu",
"Portocaliu Inchis",
"Portocaliu",
"Galben Inchis",
"Portocaliu Deschis",
"Galben",
"Galben Aprins",
"Verde Albastrui",
"Verde Deschis",
"Verde",
"Albastrul Apei",
"Albastru Deschis",
"Albastrul Cerului",
"Albastru",
"Violet",
"Roz",
"Roz Deschis",
"Rosu Deschis",
"Maro Deschis",
"Maro Aprins",
"Maro",
"Gry",
"Negru",
"Alb"
}
enum
{
COLOR_RED = 0, //200, 000, 000
COLOR_REDORANGE, //255, 083, 073
COLOR_ORANGE, //255, 117, 056
COLOR_YELLOWORANGE, //255, 174, 066
COLOR_PEACH, //255, 207, 171
COLOR_YELLOW, //252, 232, 131
COLOR_LEMONYELLOW, //254, 254, 034
COLOR_JUNGLEGREEN, //059, 176, 143
COLOR_YELLOWGREEN, //197, 227, 132
COLOR_GREEN, //000, 200, 000
COLOR_AQUAMARINE, //120, 219, 226
COLOR_BABYBLUE, //135, 206, 235
COLOR_SKYBLUE, //128, 218, 235
COLOR_BLUE, //000, 000, 200
COLOR_VIOLET, //146, 110, 174
COLOR_PINK, //255, 105, 180
COLOR_MAGENTA, //246, 100, 175
COLOR_MAHOGANY, //205, 074, 076
COLOR_TAN, //250, 167, 108
COLOR_LIGHTBROWN, //234, 126, 093
COLOR_BROWN, //180, 103, 077
COLOR_GRAY, //149, 145, 140
COLOR_BLACK, //000, 000, 000
COLOR_WHITE //255, 255, 255
}
new g_iColor[MAXPLAYERS+1]
new g_iColorOwner[MAX_COLORS]
//Color Menu
new g_iMenuOffset[MAXPLAYERS+1], g_iMenuOptions[MAXPLAYERS+1][8], g_iWeaponPicked[2][MAXPLAYERS+1],
g_iPrimaryWeapon[MAXPLAYERS+1]
new bool:g_boolFirstTime[MAXPLAYERS+1], bool:g_boolRepick[MAXPLAYERS+1]
new Float:g_fBuildDelay[MAXPLAYERS+1]
#define BUILD_DELAY 0.75
#define KEYS_GENERIC (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9)
enum
{
ATT_HEALTH = 0,
ATT_SPEED,
ATT_GRAVITY
}
//Zombie Classes
new g_iZClasses
new g_iZombieClass[MAXPLAYERS+1]
new bool:g_boolFirstSpawn[MAXPLAYERS+1]
new g_szPlayerClass[MAXPLAYERS+1][32]
new g_iNextClass[MAXPLAYERS+1]
new Float:g_fPlayerSpeed[MAXPLAYERS+1]
new bool:g_boolArraysCreated
new Array:g_zclass_name
new Array:g_zclass_info
new Array:g_zclass_modelsstart // start position in models array
new Array:g_zclass_modelsend // end position in models array
new Array:g_zclass_playermodel // player models array
new Array:g_zclass_modelindex // model indices array
new Array:g_zclass_clawmodel
new Array:g_zclass_hp
new Array:g_zclass_spd
new Array:g_zclass_grav
new Array:g_zclass_admin
new Array:g_zclass_credits
//new Float:g_fClassMultiplier[MAXPLAYERS+1][3]
new Array:g_zclass2_realname, Array:g_zclass2_name, Array:g_zclass2_info,
Array:g_zclass2_modelsstart, Array:g_zclass2_modelsend, Array:g_zclass2_playermodel,
Array:g_zclass2_clawmodel, Array:g_zclass2_hp, Array:g_zclass2_spd,
Array:g_zclass2_grav, Array:g_zclass2_admin, Array:g_zclass2_credits, Array:g_zclass_new
//Forwards
new g_fwRoundStart, g_fwPrepStarted, g_fwBuildStarted, g_fwClassPicked, g_fwClassSet,
g_fwPushPull, g_fwGrabEnt_Pre, g_fwGrabEnt_Post, g_fwDropEnt_Pre,
g_fwDropEnt_Post, g_fwNewColor, g_fwLockEnt_Pre, g_fwLockEnt_Post, g_fwDummyResult
//Cvars
new g_pcvar_buildtime, g_iBuildTime,
g_pcvar_preptime, g_iPrepTime,
g_pcvar_givenades, g_iGrenadeHE, g_iGrenadeFLASH, g_iGrenadeSMOKE,
g_pcvar_entmindist, Float: g_fEntMinDist,
g_pcvar_entsetdist, Float: g_fEntSetDist,
g_pcvar_entmaxdist, Float: g_fEntMaxDist,
g_pcvar_resetent, g_iResetEnt,
g_pcvar_showmovers, g_iShowMovers,
g_pcvar_lockblocks, g_iLockBlocks,
g_pcvar_lockmax, g_iLockMax,
g_pcvar_colormode, g_iColorMode,
g_pcvar_zombietime, g_iZombieTime,
g_pcvar_infecttime, g_iInfectTime,
g_pcvar_supercut, g_iSupercut,
g_pcvar_gunsmenu, g_iGunsMenu,
g_pcvar_enabled,
g_pcvar_allowedweps
public plugin_precache()
{
server_cmd("bb_credits_active 0")
register_plugin("Base Builder", VERSION, "Tirant + e t n a d update")
register_cvar("base_builder", VERSION, FCVAR_SPONLY|FCVAR_SERVER)
set_cvar_string("base_builder", VERSION)
g_pcvar_enabled = register_cvar("bb_enabled", "1")
if (!get_pcvar_num(g_pcvar_enabled))
return;
new szCache[64], i;
g_pcvar_buildtime = register_cvar("bb_buildtime", "180") //Build Time
g_iBuildTime = clamp(get_pcvar_num(g_pcvar_buildtime), 30, 300)
g_pcvar_preptime = register_cvar("bb_preptime", "30") //Prep Time
g_iPrepTime = clamp(get_pcvar_num(g_pcvar_preptime), 0, 60)
g_pcvar_zombietime = register_cvar("bb_zombie_respawn_delay", "3") //Zombie Respawn Delay
g_iZombieTime = clamp(get_pcvar_num(g_pcvar_zombietime), 1, 30)
g_pcvar_infecttime = register_cvar("bb_infection_respawn", "0") //Survivor Respawn Infection Delay
g_iInfectTime = clamp(get_pcvar_num(g_pcvar_infecttime), 0, 30)
g_pcvar_showmovers = register_cvar("bb_showmovers", "1") //Show Movers
g_iShowMovers = clamp(get_pcvar_num(g_pcvar_showmovers), 0, 1)
g_pcvar_lockblocks = register_cvar("bb_lockblocks", "1") //Lock blocks
g_iLockBlocks = clamp(get_pcvar_num(g_pcvar_lockblocks), 0, 1)
g_pcvar_lockmax = register_cvar("bb_lockmax", "15") //Lock max
g_iLockMax = clamp(get_pcvar_num(g_pcvar_lockmax), 0, 50)
g_pcvar_colormode = register_cvar("bb_colormode", "1") //Color mode <0/1/2> Menu, one color per player, random
g_iColorMode = clamp(get_pcvar_num(g_pcvar_colormode), 0, 2)
g_pcvar_entmaxdist = register_cvar("bb_max_move_dist", "768") //Push ceiling
g_fEntMaxDist = get_pcvar_float(g_pcvar_entmaxdist)
g_pcvar_entmindist = register_cvar("bb_min_move_dist", "32") //Pull floor
g_fEntMinDist = get_pcvar_float(g_pcvar_entmindist)
g_pcvar_entsetdist = register_cvar("bb_min_dist_set", "64") //Grab set
g_fEntSetDist = get_pcvar_float(g_pcvar_entsetdist)
g_pcvar_resetent = register_cvar("bb_resetblocks", "1") //Reset blocks on new round
g_iResetEnt = clamp(get_pcvar_num(g_pcvar_resetent), 0, 1)
g_pcvar_supercut = register_cvar("bb_zombie_supercut", "0") //One hit kill for zombies
g_iSupercut = clamp(get_pcvar_num(g_pcvar_supercut), 0, 1)
g_pcvar_gunsmenu = register_cvar("bb_gunsmenu", "1") //Use the internal guns menu
g_iGunsMenu = clamp(get_pcvar_num(g_pcvar_gunsmenu), 0, 1)
g_pcvar_givenades = register_cvar("bb_roundnades","hsf") //Grenades
g_pcvar_allowedweps = register_cvar("bb_weapons","adghijmqtvx")
get_pcvar_string(g_pcvar_givenades, szCache, sizeof szCache - 1)
for (i=0; i<strlen(szCache);i++)
{
switch(szCache)
{
case 'h': g_iGrenadeHE++
case 'f': g_iGrenadeFLASH++
case 's': g_iGrenadeSMOKE++
}
}
for (i=0; i<sizeof g_szRoundStart; i++) precache_sound(g_szRoundStart[i])
for (i=0; i<sizeof g_szZombiePain;i++) precache_sound(g_szZombiePain[i])
for (i=0; i<sizeof g_szZombieDie;i++) precache_sound(g_szZombieDie[i])
for (i=0; i<sizeof g_szZombieIdle;i++) precache_sound(g_szZombieIdle[i])
for (i=0; i<sizeof g_szZombieHit;i++) precache_sound(g_szZombieHit[i])
for (i=0; i<sizeof g_szZombieMiss;i++) precache_sound(g_szZombieMiss[i])
precache_sound(WIN_ZOMBIES)
precache_sound(WIN_BUILDERS)
precache_sound(PHASE_BUILD)
precache_sound(PHASE_PREP)
precache_sound(LOCK_OBJECT)
precache_sound(LOCK_FAIL)
precache_sound(GRAB_START)
precache_sound(GRAB_STOP)
if (g_iInfectTime)
precache_sound(INFECTION)
i = create_entity("info_bomb_target");
entity_set_origin(i, Float:{8192.0,8192.0,8192.0})
i = create_entity("info_map_parameters");
DispatchKeyValue(i, "buying", "3");
DispatchKeyValue(i, "bombradius", "1");
DispatchSpawn(i);
g_zclass_name = ArrayCreate(32, 1)
g_zclass_info = ArrayCreate(32, 1)
g_zclass_modelsstart = ArrayCreate(1, 1)
g_zclass_modelsend = ArrayCreate(1, 1)
g_zclass_playermodel = ArrayCreate(32, 1)
g_zclass_modelindex = ArrayCreate(1, 1)
g_zclass_clawmodel = ArrayCreate(32, 1)
g_zclass_hp = ArrayCreate(1, 1)
g_zclass_spd = ArrayCreate(1, 1)
g_zclass_grav = ArrayCreate(1, 1)
g_zclass_admin = ArrayCreate(1, 1)
g_zclass_credits = ArrayCreate(1, 1)
g_zclass2_realname = ArrayCreate(32, 1)
g_zclass2_name = ArrayCreate(32, 1)
g_zclass2_info = ArrayCreate(32, 1)
g_zclass2_modelsstart = ArrayCreate(1, 1)
g_zclass2_modelsend = ArrayCreate(1, 1)
g_zclass2_playermodel = ArrayCreate(32, 1)
g_zclass2_clawmodel = ArrayCreate(32, 1)
g_zclass2_hp = ArrayCreate(1, 1)
g_zclass2_spd = ArrayCreate(1, 1)
g_zclass2_grav = ArrayCreate(1, 1)
g_zclass2_admin = ArrayCreate(1, 1)
g_zclass2_credits = ArrayCreate(1, 1)
g_zclass_new = ArrayCreate(1, 1)
g_boolArraysCreated = true
return;
}
public plugin_cfg()
{
g_boolArraysCreated = false
}
public plugin_init()
{
if (!get_pcvar_num(g_pcvar_enabled))
return;
formatex(g_szModName, charsmax(g_szModName), "Base Builder %s", VERSION)
register_clcmd("say", "cmdSay");
register_clcmd("say_team", "cmdSay");
//Added for old users
register_clcmd("+grab", "cmdGrabEnt");
register_clcmd("-grab", "cmdStopEnt");
register_clcmd("bb_lock", "cmdLockBlock",0, " - Aim at a block to lock it");
register_clcmd("bb_claim", "cmdLockBlock",0, " - Aim at a block to lock it");
register_clcmd("bb_buildban", "cmdBuildBan",0, " <player>");
register_clcmd("bb_unbuildban", "cmdBuildBan",0, " <player>");
register_clcmd("bb_bban", "cmdBuildBan",0, " <player>");
register_clcmd("bb_swap", "cmdSwap",0, " <player>");
register_clcmd("bb_revive", "cmdRevive",0, " <player>");
if (g_iGunsMenu) register_clcmd("bb_guns", "cmdGuns",0, " <player>");
register_clcmd("bb_startround", "cmdStartRound",0, " - Starts the round");
register_logevent("logevent_round_start",2, "1=Round_Start")
register_logevent("logevent_round_end", 2, "1=Round_End")
register_message(get_user_msgid("TextMsg"), "msgRoundEnd")
register_message(get_user_msgid("TextMsg"), "msgSendAudio")
register_message(get_user_msgid("StatusIcon"), "msgStatusIcon");
register_message(get_user_msgid("Health"), "msgHealth");
register_message(get_user_msgid("StatusValue"), "msgStatusValue")
register_message(get_user_msgid("TeamInfo"), "msgTeamInfo");
register_menucmd(register_menuid("ColorsSelect"),KEYS_GENERIC,"colors_pushed")
register_menucmd(register_menuid("ZClassSelect"),KEYS_GENERIC,"zclass_pushed")
if (g_iGunsMenu)
{
register_menucmd(register_menuid("WeaponMethodMenu"),(1<<0)|(1<<1)|(1<<2),"weapon_method_pushed")
register_menucmd(register_menuid("PrimaryWeaponSelect"),KEYS_GENERIC,"prim_weapons_pushed")
register_menucmd(register_menuid("SecWeaponSelect"),KEYS_GENERIC,"sec_weapons_pushed")
}
register_event("HLTV", "ev_RoundStart", "a", "1=0", "2=0")
register_event("AmmoX", "ev_AmmoX", "be", "1=1", "1=2", "1=3", "1=4", "1=5", "1=6", "1=7", "1=8", "1=9", "1=10")
register_event("Health", "ev_Health", "be", "1>0");
register_event("StatusValue", "ev_SetTeam", "be", "1=1");
register_event("StatusValue", "ev_ShowStatus", "be", "1=2", "2!0");
register_event("StatusValue", "ev_HideStatus", "be", "1=1", "2=0");
RegisterHam(Ham_Touch, "weapon_shield","ham_WeaponCleaner_Post", 1)
RegisterHam(Ham_Touch, "weaponbox", "ham_WeaponCleaner_Post", 1)
RegisterHam(Ham_Spawn, "player", "ham_PlayerSpawn_Post", 1)
RegisterHam(Ham_TakeDamage, "player", "ham_TakeDamage")
for (new i = 1; i < sizeof g_szWpnEntNames; i++)
if (g_szWpnEntNames[i][0]) RegisterHam(Ham_Item_Deploy, g_szWpnEntNames[i], "ham_ItemDeploy_Post", 1)
register_forward(FM_GetGameDescription, "fw_GetGameDescription")
register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue")
register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged")
register_forward(FM_CmdStart, "fw_CmdStart");
register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
register_forward(FM_EmitSound, "fw_EmitSound")
register_forward(FM_ClientKill, "fw_Suicide")
if (g_iShowMovers)
register_forward(FM_TraceLine, "fw_Traceline")
register_clcmd("drop", "clcmd_drop")
register_clcmd("buy", "clcmd_buy")
//Team Handlers
register_clcmd("chooseteam", "clcmd_changeteam")
register_clcmd("jointeam", "clcmd_changeteam")
register_message(get_user_msgid("ShowMenu"), "message_show_menu")
register_message(get_user_msgid("VGUIMenu"), "message_vgui_menu")
set_msg_block(get_user_msgid("ClCorpse"), BLOCK_SET)
g_iMaxPlayers = get_maxplayers()
g_HudSync = CreateHudSyncObj();
g_msgSayText = get_user_msgid("SayText")
g_msgStatusText = get_user_msgid("StatusText");
g_iEntBarrier = find_ent_by_tname( -1, "barrier" );
//Custom Forwards
g_fwRoundStart = CreateMultiForward("bb_round_started", ET_IGNORE)
g_fwPrepStarted = CreateMultiForward("bb_prepphase_started", ET_IGNORE)
g_fwBuildStarted = CreateMultiForward("bb_buildphase_started", ET_IGNORE)
g_fwClassPicked = CreateMultiForward("bb_zombie_class_picked", ET_IGNORE, FP_CELL, FP_CELL)
g_fwClassSet = CreateMultiForward("bb_zombie_class_set", ET_IGNORE, FP_CELL, FP_CELL)
g_fwPushPull = CreateMultiForward("bb_block_pushpull", ET_IGNORE, FP_CELL, FP_CELL, FP_CELL)
g_fwGrabEnt_Pre = CreateMultiForward("bb_grab_pre", ET_IGNORE, FP_CELL, FP_CELL)
g_fwGrabEnt_Post = CreateMultiForward("bb_grab_post", ET_IGNORE, FP_CELL, FP_CELL)
g_fwDropEnt_Pre = CreateMultiForward("bb_drop_pre", ET_IGNORE, FP_CELL, FP_CELL)
g_fwDropEnt_Post = CreateMultiForward("bb_drop_post", ET_IGNORE, FP_CELL, FP_CELL)
g_fwNewColor = CreateMultiForward("bb_new_color", ET_IGNORE, FP_CELL, FP_CELL)
g_fwLockEnt_Pre = CreateMultiForward("bb_lock_pre", ET_IGNORE, FP_CELL, FP_CELL)
g_fwLockEnt_Post = CreateMultiForward("bb_lock_post", ET_IGNORE, FP_CELL, FP_CELL)
register_dictionary("basebuilder.txt");
}
public plugin_natives()
{
register_native("bb_register_zombie_class","native_register_zombie_class", 1)
register_native("bb_get_class_cost","native_get_class_cost", 1)
register_native("bb_get_user_zombie_class","native_get_user_zombie_class", 1)
register_native("bb_get_user_next_class","native_get_user_next_class", 1)
register_native("bb_set_user_zombie_class","native_set_user_zombie_class", 1)
register_native("bb_is_user_zombie","native_is_user_zombie", 1)
register_native("bb_is_user_banned","native_is_user_banned", 1)
register_native("bb_is_build_phase","native_bool_buildphase", 1)
register_native("bb_is_prep_phase","native_bool_prepphase", 1)
register_native("bb_get_build_time","native_get_build_time", 1)
register_native("bb_set_build_time","native_set_build_time", 1)
register_native("bb_get_user_color","native_get_user_color", 1)
register_native("bb_set_user_color","native_set_user_color", 1)
register_native("bb_drop_user_block","native_drop_user_block", 1)
register_native("bb_get_user_block","native_get_user_block", 1)
register_native("bb_set_user_block","native_set_user_block", 1)
register_native("bb_is_locked_block","native_is_locked_block", 1)
register_native("bb_lock_block","native_lock_block", 1)
register_native("bb_unlock_block","native_unlock_block", 1)
register_native("bb_release_zombies","native_release_zombies", 1)
register_native("bb_set_user_primary","native_set_user_primary", 1)
register_native("bb_get_user_primary","native_get_user_primary", 1)
register_native("bb_get_flags_build","native_get_flags_build", 1)
register_native("bb_get_flags_lock","native_get_flags_lock", 1)
register_native("bb_get_flags_buildban","native_get_flags_buildban", 1)
register_native("bb_get_flags_swap","native_get_flags_swap", 1)
register_native("bb_get_flags_revive","native_get_flags_revive", 1)
register_native("bb_get_flags_guns","native_get_flags_guns", 1)
register_native("bb_get_flags_release","native_get_flags_release", 1)
register_native("bb_get_flags_override","native_get_flags_override", 1)
//register_native("bb_set_user_mult","native_set_user_mult", 1)
//ZP Natives Converted
register_native("zp_register_zombie_class","native_register_zombie_class", 1)
register_native("zp_get_user_zombie_class","native_get_user_zombie_class", 1)
register_native("zp_get_user_next_class","native_get_user_next_class", 1)
register_native("zp_set_user_zombie_class","native_set_user_zombie_class", 1)
register_native("zp_get_user_zombie","native_is_user_zombie", 1)
}
public fw_GetGameDescription()
{
forward_return(FMV_STRING, g_szModName)
return FMRES_SUPERCEDE;
}
public client_putinserver(id)
{
if (!is_user_connected(id))
return PLUGIN_HANDLED;
g_isConnected[id] = true
g_isAlive[id] = false
g_isZombie[id] = false
g_isBuildBan[id] = false
g_isCustomModel[id] = false
g_boolFirstSpawn[id] = true
g_boolFirstTeam[id] = false
g_boolFirstTime[id] = true
g_boolRepick[id] = true
g_iZombieClass[id] = 0
g_iNextClass[id] = g_iZombieClass[id]
//for (new i = 0; i < 3; i++) g_fClassMultiplier[id][i] = 1.0
set_task(7.0,"Respawn_Player",id+TASK_RESPAWN);
return PLUGIN_CONTINUE;
}
public client_disconnect(id)
{
if (g_iOwnedEnt[id])
cmdStopEnt(id)
g_isConnected[id] = false
g_isAlive[id] = false
g_isZombie[id] = false
g_isBuildBan[id] = false
g_isCustomModel[id] = false
g_boolFirstSpawn[id] = false
g_boolFirstTeam[id] = false
g_boolFirstTime[id] = false
g_boolRepick[id] = false
g_iZombieClass[id] = 0
g_iNextClass[id] = 0
//for (new i = 0; i < 3; i++) g_fClassMultiplier[id][i] = 1.0
g_iOwnedEntities[id] = 0
remove_task(id+TASK_RESPAWN)
remove_task(id+TASK_HEALTH)
remove_task(id+TASK_IDLESOUND)
for (new iEnt = g_iMaxPlayers+1; iEnt < MAXENTS; iEnt++)
{
if (is_valid_ent(iEnt) && g_iLockBlocks && BlockLocker(iEnt) == id)
{
UnlockBlock(iEnt)
set_pev(iEnt,pev_rendermode,kRenderNormal)
UnsetLastMover(iEnt);
UnsetEntMover(iEnt);
}
}
}
public ev_RoundStart()
{
remove_task(TASK_BUILD)
remove_task(TASK_PREPTIME)
arrayset(g_iOwnedEntities, 0, MAXPLAYERS+1)
arrayset(g_iColor, 0, MAXPLAYERS+1)
arrayset(g_iColorOwner, 0, MAX_COLORS)
arrayset(g_boolRepick, true, MAXPLAYERS+1)
g_boolRoundEnded = false
g_boolCanBuild = true
g_fRoundStartTime = get_gametime()
if (g_iResetEnt)
{
new szClass[10], szTarget[7];
for (new iEnt = g_iMaxPlayers+1; iEnt < MAXENTS; iEnt++)
{
if (is_valid_ent(iEnt))
{
entity_get_string(iEnt, EV_SZ_classname, szClass, 9);
entity_get_string(iEnt, EV_SZ_targetname, szTarget, 6);
if (!BlockLocker(iEnt) && iEnt != g_iEntBarrier && equal(szClass, "func_wall") && !equal(szTarget, "ignore"))
{
set_pev(iEnt,pev_rendermode,kRenderNormal)
engfunc( EngFunc_SetOrigin, iEnt, Float:{ 0.0, 0.0, 0.0 } );
UnsetLastMover(iEnt);
UnsetEntMover(iEnt);
}
else if (g_iLockBlocks && BlockLocker(iEnt))
{
UnlockBlock(iEnt)
set_pev(iEnt,pev_rendermode,kRenderNormal)
engfunc( EngFunc_SetOrigin, iEnt, Float:{ 0.0, 0.0, 0.0 } );
UnsetLastMover(iEnt);
UnsetEntMover(iEnt);
}
}
}
}
}
public ev_AmmoX(id)
set_pdata_int(id, AMMO_SLOT + read_data(1), 200, 5)
public ev_Health(taskid)
{
if (taskid>g_iMaxPlayers)
taskid-=TASK_HEALTH
if (is_user_alive(taskid))
{
new szGoal[32]
//if (is_credits_active())
#if defined BB_CREDITS
format(szGoal, 31, "^n%L: %d", LANG_SERVER, "HUD_GOAL", credits_get_user_goal(taskid))
#endif
set_hudmessage(255, 255, 255, -1.0, 0.9, 0, 12.0, 12.0, 0.1, 0.2, 4);
if (g_isZombie[taskid])
{
static szCache1[32]
ArrayGetString(g_zclass_name, g_iZombieClass[taskid], szCache1, charsmax(szCache1))
show_hudmessage(taskid, "%L: %d^n%L: %s%s", LANG_SERVER, "HUD_HEALTH", pev(taskid, pev_health), LANG_SERVER, "HUD_CLASS", szCache1, szGoal);
}
else
{
show_hudmessage(taskid, "%L: %d%s", LANG_SERVER, "HUD_HEALTH", pev(taskid, pev_health), szGoal);
}
set_task(11.9, "ev_Health", taskid+TASK_HEALTH);
}
}
public msgStatusIcon(const iMsgId, const iMsgDest, const iPlayer)
{
if(g_isAlive[iPlayer] && g_isConnected[iPlayer])
{
static szMsg[8]
get_msg_arg_string(2, szMsg, 7)
if(equal(szMsg, "buyzone"))
{
set_pdata_int(iPlayer, OFFSET_BUYZONE, get_pdata_int(iPlayer, OFFSET_BUYZONE) & ~(1<<0))
return PLUGIN_HANDLED
}
}
return PLUGIN_CONTINUE
}
public msgHealth(msgid, dest, id)
{
if(!g_isAlive[id])
return PLUGIN_CONTINUE;
static hp;
hp = get_msg_arg_int(1);
if(hp > 255 && (hp % 256) == 0)
set_msg_arg_int(1, ARG_BYTE, ++hp);
return PLUGIN_CONTINUE;
}
public msgRoundEnd(const MsgId, const MsgDest, const MsgEntity)
{
static Message[192]
get_msg_arg_string(2, Message, 191)
if (equal(Message, "#Terrorists_Win"))
{
g_boolRoundEnded = true
set_hudmessage(255, 0, 0, -1.0, 0.40, 0, 6.0, 6.0, 0.1, 0.2, 1)
show_hudmessage(0, "%L", LANG_SERVER, "WIN_ZOMBIE")
set_msg_arg_string(2, "")
client_cmd(0, "spk %s", WIN_ZOMBIES)
return PLUGIN_HANDLED
}
else if (equal(Message, "#Target_Saved") || equal(Message, "#CTs_Win"))
{
g_boolRoundEnded = true
set_hudmessage(0, 0, 255, -1.0, 0.40, 0, 6.0, 6.0, 0.1, 0.2, 1)
show_hudmessage(0, "%L", LANG_SERVER, "WIN_BUILDER")
set_msg_arg_string(2, "")
client_cmd(0, "spk %s", WIN_BUILDERS)
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
public msgSendAudio(const MsgId, const MsgDest, const MsgEntity)
{
static szSound[17]
get_msg_arg_string(2,szSound,16)
if(equal(szSound[7], "terwin") || equal(szSound[7], "ctwin") || equal(szSound[7], "rounddraw")) return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public ham_WeaponCleaner_Post(iEnt)
{
call_think(iEnt)
}
public ham_TakeDamage(victim, inflictor, attacker, Float:damage, damagebits)
{
if (!is_valid_ent(victim) || !g_isAlive[victim] || !is_user_connected(attacker))
return HAM_IGNORED
if(g_boolCanBuild || g_boolRoundEnded || g_boolPrepTime)
return HAM_SUPERCEDE;
if (victim == attacker)
return HAM_SUPERCEDE;
if (g_iSupercut)
{
damage*=99.0
}
SetHamParamFloat(4, damage)
return HAM_HANDLED
}
public ham_ItemDeploy_Post(weapon_ent)
{
static owner
owner = get_pdata_cbase(weapon_ent, OFFSET_WPN_WIN, OFFSET_WPN_LINUX);
static weaponid
weaponid = cs_get_weapon_id(weapon_ent)
if (g_isZombie[owner] && weaponid == CSW_KNIFE)
{
static szClawModel[100]
ArrayGetString(g_zclass_clawmodel, g_iZombieClass[owner], szClawModel, charsmax(szClawModel))
format(szClawModel, charsmax(szClawModel), "models/%s.mdl", szClawModel)
entity_set_string( owner , EV_SZ_viewmodel , szClawModel )
entity_set_string( owner , EV_SZ_weaponmodel , "" )
}
if (g_isZombie[owner] && !((1<<weaponid) & ZOMBIE_ALLOWED_WEAPONS_BITSUM))
{
engclient_cmd(owner, "weapon_knife")
}
else if (g_boolCanBuild)
{
engclient_cmd(owner, "weapon_knife")
client_print(owner, print_center, "%L", LANG_SERVER, "FAIL_KNIFE");
}
}
public logevent_round_start()
{
set_pev(g_iEntBarrier,pev_solid,SOLID_BSP)
set_pev(g_iEntBarrier,pev_rendermode,kRenderTransColor)
set_pev(g_iEntBarrier,pev_rendercolor, Float:{ BARRIER_COLOR })
set_pev(g_iEntBarrier,pev_renderamt, Float:{ BARRIER_RENDERAMT })
print_color(0, "^x04 ---[ Base Builder %s ]---", VERSION);
print_color(0, "^x03 %L", LANG_SERVER, "ROUND_MESSAGE");
client_cmd(0, "spk %s", PHASE_BUILD)
remove_task(TASK_BUILD)
set_task(1.0, "task_CountDown", TASK_BUILD,_, _, "a", g_iBuildTime);
g_iCountDown = (g_iBuildTime-1);
ExecuteForward(g_fwBuildStarted, g_fwDummyResult);
}
public task_CountDown()
{
g_iCountDown--
new mins = g_iCountDown/60, secs = g_iCountDown%60
if (g_iCountDown>=0)
client_print(0, print_center, "%L - %d:%s%d", LANG_SERVER, "BUILD_TIMER", mins, (secs < 10 ? "0" : ""), secs)
else
{
if (g_iPrepTime)
{
g_boolCanBuild = false
g_boolPrepTime = true
g_iCountDown = g_iPrepTime+1
set_task(1.0, "task_PrepTime", TASK_PREPTIME,_, _, "a", g_iCountDown);
set_hudmessage(255, 255, 255, -1.0, 0.45, 0, 1.0, 10.0, 0.1, 0.2, 1)
show_hudmessage(0, "%L", LANG_SERVER, "PREP_ANNOUNCE");
new players[32], num
get_players(players, num)
for (new i = 0; i < num; i++)
{
if (g_isAlive[players[i]] && !g_isZombie[players[i]])
{
ExecuteHamB(Ham_CS_RoundRespawn, players[i])
if (g_iOwnedEnt[players[i]])
cmdStopEnt(players[i])
}
}
print_color(0, "%s^x04 %L", MODNAME, LANG_SERVER, "PREP_ANNOUNCE")
client_cmd(0, "spk %s", PHASE_PREP)
ExecuteForward(g_fwPrepStarted, g_fwDummyResult);
}
else
Release_Zombies()
remove_task(TASK_BUILD);
return PLUGIN_HANDLED;
}
new szTimer[32]
if (g_iCountDown>10)
{
if (mins && !secs) num_to_word(mins, szTimer, 31)
else if (!mins && secs == 30) num_to_word(secs, szTimer, 31)
else return PLUGIN_HANDLED;
client_cmd(0, "spk ^"fvox/%s %s remaining^"", szTimer, (mins ? "minutes" : "seconds"))
}
else
{
num_to_word(g_iCountDown, szTimer, 31)
client_cmd(0, "spk ^"fvox/%s^"", szTimer)
}
return PLUGIN_CONTINUE;
}
public task_PrepTime()
{
g_iCountDown--
if (g_iCountDown>=0)
client_print(0, print_center, "%L - 0:%s%d", LANG_SERVER, "PREP_TIMER", (g_iCountDown < 10 ? "0" : ""), g_iCountDown)
if (0<g_iCountDown<11)
{
new szTimer[32]
num_to_word(g_iCountDown, szTimer, 31)
client_cmd(0, "spk ^"fvox/%s^"", szTimer)
}
else if (g_iCountDown == 0)
{
Release_Zombies()
remove_task(TASK_PREPTIME);
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE;
}
public logevent_round_end()
{
if (g_boolRoundEnded)
{
new players[32], num, player
get_players(players, num)
for (new i = 0; i < num; i++)
{
player = players[i]
if (g_iCurTeam[player] == g_iTeam[player] )
cs_set_user_team(player, (g_iTeam[player] = (g_iTeam[player] == CS_TEAM_T ? CS_TEAM_CT : CS_TEAM_T)))
else
g_iTeam[player] = g_iTeam[player] == CS_TEAM_T ? CS_TEAM_CT : CS_TEAM_T
}
print_color(0, "%s^x04 %L", MODNAME, LANG_SERVER, "SWAP_ANNOUNCE")
}
remove_task(TASK_BUILD)
return PLUGIN_HANDLED
}
public client_death(g_attacker, g_victim, wpnindex, hitplace, TK)
{
if (is_user_alive(g_victim))
return PLUGIN_HANDLED;
remove_task(g_victim+TASK_IDLESOUND)
g_isAlive[g_victim] = false;
if (TK == 0 && g_attacker != g_victim && g_isZombie[g_attacker])
{
client_cmd(0, "spk %s", INFECTION)
new szPlayerName[32]
get_user_name(g_victim, szPlayerName, 31)
set_hudmessage(255, 0, 255, -1.0, 0.45, 0, 1.0, 5.0, 0.1, 0.2, 1)
show_hudmessage(0, "%L", LANG_SERVER, "INFECT_ANNOUNCE", szPlayerName);
}
set_hudmessage(255, 0, 255, -1.0, 0.45, 0, 1.0, 10.0, 0.1, 0.2, 1)
if (g_isZombie[g_victim])
{
show_hudmessage(g_victim, "%L", LANG_SERVER, "DEATH_ZOMBIE", g_iZombieTime);
set_task(float(g_iZombieTime), "Respawn_Player", g_victim+TASK_RESPAWN)
}
else if (g_iInfectTime)
{
show_hudmessage(g_victim, "%L", LANG_SERVER, "DEATH_HUMAN", g_iInfectTime);
cs_set_user_team(g_victim, CS_TEAM_T)
g_isZombie[g_victim] = true
set_task(float(g_iInfectTime), "Respawn_Player", g_victim+TASK_RESPAWN)
}
return PLUGIN_CONTINUE;
}
public Respawn_Player(id)
{
id-=TASK_RESPAWN
if (!is_user_connected(id))
return PLUGIN_HANDLED
if (((g_boolCanBuild || g_boolPrepTime) && cs_get_user_team(id) == CS_TEAM_CT) || cs_get_user_team(id) == CS_TEAM_T)
{
ExecuteHamB(Ham_CS_RoundRespawn, id)
//Loop the task until they have successfully spawned
if (!g_isAlive[id])
set_task(3.0,"Respawn_Human",id+TASK_RESPAWN)
}
return PLUGIN_HANDLED
}
public ham_PlayerSpawn_Post(id)
{
if (is_user_alive(id))
{
g_isAlive[id] = true;
g_isZombie[id] = (cs_get_user_team(id) == CS_TEAM_T ? true : false)
remove_task(id + TASK_RESPAWN)
remove_task(id + TASK_MODELSET)
remove_task(id + TASK_IDLESOUND)
if (g_isZombie[id])
{
if (g_boolFirstSpawn[id])
{
show_zclass_menu(id, 0)
g_boolFirstSpawn[id] = false
}
if (g_iNextClass[id] != g_iZombieClass[id])
g_iZombieClass[id] = g_iNextClass[id]
set_pev(id, pev_health, float(ArrayGetCell(g_zclass_hp, g_iZombieClass[id]))/**g_fClassMultiplier[id][ATT_HEALTH]*/)
set_pev(id, pev_gravity, Float:ArrayGetCell(g_zclass_grav, g_iZombieClass[id])/**g_fClassMultiplier[id][ATT_GRAVITY]*/)
g_fPlayerSpeed[id] = float(ArrayGetCell(g_zclass_spd, g_iZombieClass[id]))/**g_fClassMultiplier[id][ATT_SPEED]*/
//Handles the knife and claw model
strip_user_weapons(id)
give_item(id, "weapon_knife")
static szClawModel[100]
ArrayGetString(g_zclass_clawmodel, g_iZombieClass[id], szClawModel, charsmax(szClawModel))
format(szClawModel, charsmax(szClawModel), "models/%s.mdl", szClawModel)
entity_set_string( id , EV_SZ_viewmodel , szClawModel )
entity_set_string( id , EV_SZ_weaponmodel , "" )
ArrayGetString(g_zclass_name, g_iZombieClass[id], g_szPlayerClass[id], charsmax(g_szPlayerClass[]))
set_task(random_float(60.0, 360.0), "task_ZombieIdle", id+TASK_IDLESOUND, _, _, "b")
ArrayGetString(g_zclass_playermodel, g_iZombieClass[id], g_szPlayerModel[id], charsmax(g_szPlayerModel[]))
new szCurrentModel[32]
fm_get_user_model(id, szCurrentModel, charsmax(szCurrentModel))
if (!equal(szCurrentModel, g_szPlayerModel[id]))
{
if (get_gametime() - g_fRoundStartTime < 5.0)
set_task(5.0 * MODELCHANGE_DELAY, "fm_user_model_update", id + TASK_MODELSET)
else
fm_user_model_update(id + TASK_MODELSET)
}
ExecuteForward(g_fwClassSet, g_fwDummyResult, id, g_iZombieClass[id]);
}
else if (g_isCustomModel[id])
{
fm_reset_user_model(id)
}
if (!g_isZombie[id])
{
entity_set_string( id , EV_SZ_viewmodel , "models/v_knife.mdl" )
if (((/*g_boolPrepTime && */g_iPrepTime && !g_boolCanBuild) || (g_boolCanBuild && !g_iPrepTime)) && g_iGunsMenu)
{
//if (is_credits_active())
#if defined BB_CREDITS
credits_show_gunsmenu(id)
#else
show_method_menu(id)
#endif
}
if (!g_iColor[id])
{
new i = random(MAX_COLORS)
if (g_iColorMode)
{
while (g_iColorOwner[i])
{
i = random(MAX_COLORS)
}
}
print_color(id, "%s^x04 %L:^x01 %s", MODNAME, LANG_SERVER, "COLOR_PICKED", g_szColorName[i]);
g_iColor[id] = i
g_iColorOwner[i] = id
if (g_iOwnedEnt[id])
{
set_pev(g_iOwnedEnt[id],pev_rendercolor, g_fColor[g_iColor[id]] )
set_pev(g_iOwnedEnt[id],pev_renderamt, g_fRenderAmt[g_iColor[id]] )
}
}
}
ev_Health(id)
}
}
public task_ZombieIdle(taskid)
{
taskid-=TASK_IDLESOUND
if (g_isAlive[taskid] && g_isConnected[taskid] && !g_isZombie[taskid])
emit_sound(taskid, CHAN_VOICE, g_szZombieIdle[random(sizeof g_szZombieIdle - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM)
}
public fw_SetClientKeyValue(id, const infobuffer[], const key[])
{
if (g_isCustomModel[id] && equal(key, "model"))
return FMRES_SUPERCEDE
return FMRES_IGNORED
}
public fw_ClientUserInfoChanged(id)
{
if (!g_isCustomModel[id])
return FMRES_IGNORED
static szCurrentModel[32]
fm_get_user_model(id, szCurrentModel, charsmax(szCurrentModel))
if (!equal(szCurrentModel, g_szPlayerModel[id]) && !task_exists(id + TASK_MODELSET))
fm_set_user_model(id + TASK_MODELSET)
return FMRES_IGNORED
}
public fm_user_model_update(taskid)
{
static Float:fCurTime
fCurTime = get_gametime()
if (fCurTime - g_fModelsTargetTime >= MODELCHANGE_DELAY)
{
fm_set_user_model(taskid)
g_fModelsTargetTime = fCurTime
}
else
{
set_task((g_fModelsTargetTime + MODELCHANGE_DELAY) - fCurTime, "fm_set_user_model", taskid)
g_fModelsTargetTime += MODELCHANGE_DELAY
}
}
public fm_set_user_model(player)
{
player -= TASK_MODELSET
engfunc(EngFunc_SetClientKeyValue, player, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", g_szPlayerModel[player])
g_isCustomModel[player] = true
}
stock fm_get_user_model(player, model[], len)
{
engfunc(EngFunc_InfoKeyValue, engfunc(EngFunc_GetInfoKeyBuffer, player), "model", model, len)
}
stock fm_reset_user_model(player)
{
g_isCustomModel[player] = false
dllfunc(DLLFunc_ClientUserInfoChanged, player, engfunc(EngFunc_GetInfoKeyBuffer, player))
}
public message_show_menu(msgid, dest, id)
{
if (!(!get_user_team(id) && !is_user_bot(id) && !access(id, ADMIN_IMMUNITY)))
return PLUGIN_CONTINUE
static team_select[] = "#Team_Select"
static menu_text_code[sizeof team_select]
get_msg_arg_string(4, menu_text_code, sizeof menu_text_code - 1)
if (!equal(menu_text_code, team_select))
return PLUGIN_CONTINUE
static param_menu_msgid[2]
param_menu_msgid[0] = msgid
set_task(AUTO_TEAM_JOIN_DELAY, "task_force_team_join", id, param_menu_msgid, sizeof param_menu_msgid)
return PLUGIN_HANDLED
}
public message_vgui_menu(msgid, dest, id)
{
if (get_msg_arg_int(1) != TEAM_SELECT_VGUI_MENU_ID || !(!get_user_team(id) && !is_user_bot(id) && !access(id, ADMIN_IMMUNITY)))//
return PLUGIN_CONTINUE
static param_menu_msgid[2]
param_menu_msgid[0] = msgid
set_task(AUTO_TEAM_JOIN_DELAY, "task_force_team_join", id, param_menu_msgid, sizeof param_menu_msgid)
return PLUGIN_HANDLED
}
public task_force_team_join(menu_msgid[], id)
{
if (get_user_team(id))
return
static msg_block
msg_block = get_msg_block(menu_msgid[0])
set_msg_block(menu_msgid[0], BLOCK_SET)
engclient_cmd(id, "jointeam", "5")
engclient_cmd(id, "joinclass", "5")
set_msg_block(menu_msgid[0], msg_block)
}
public msgTeamInfo(msgid, dest)
{
if (dest != MSG_ALL && dest != MSG_BROADCAST)
return;
static id, team[2]
id = get_msg_arg_int(1)
get_msg_arg_string(2, team, charsmax(team))
switch (team[0])
{
case 'T' : // TERRORIST
{
g_iCurTeam[id] = CS_TEAM_T;
}
case 'C' : // CT
{
g_iCurTeam[id] = CS_TEAM_CT;
}
case 'S' : // SPECTATOR
{
g_iCurTeam[id] = CS_TEAM_SPECTATOR;
}
default : g_iCurTeam[id] = CS_TEAM_UNASSIGNED;
}
if (!g_boolFirstTeam[id])
{
g_boolFirstTeam[id] = true
g_iTeam[id] = g_iCurTeam[id]
}
}
public clcmd_changeteam(id)
{
static CsTeams:team
team = cs_get_user_team(id)
if (team == CS_TEAM_SPECTATOR || team == CS_TEAM_UNASSIGNED)
return PLUGIN_CONTINUE;
show_zclass_menu(id, 0)
return PLUGIN_HANDLED;
}
public clcmd_drop(id)
{
client_print (id, print_center, "%L", LANG_SERVER, "FAIL_DROP")
return PLUGIN_HANDLED
}
public clcmd_buy(id)
{
client_print (id, print_center, "%L", LANG_SERVER, "FAIL_BUY")
return PLUGIN_HANDLED
}
public msgStatusValue()
set_msg_block(g_msgStatusText, BLOCK_SET);
public ev_SetTeam(id)
g_iFriend[id] = read_data(2)
public ev_ShowStatus(id) //called when id looks at someone
{
new szName[32], pid = read_data(2);
get_user_name(pid, szName, 31);
if (g_iFriend[id] == 1) // friend
{
new clip, ammo, wpnid = get_user_weapon(pid, clip, ammo), szWpnName[32];
if (wpnid)
xmod_get_wpnname(wpnid, szWpnName, 31);
set_hudmessage(0, 225, 0, -1.0, HUD_FRIEND_HEIGHT, 1, 0.01, 3.0, 0.01, 0.01);
new nLen, szStatus[512]
if (!g_isZombie[pid])
nLen += format( szStatus[nLen], 511-nLen, "%s^nViata: %d | Arma: %s^nCuloare: %s", szName, pev(pid, pev_health), szWpnName, g_szColorName[g_iColor[pid]]);
else
{
nLen += format( szStatus[nLen], 511-nLen, "%s^nRasa: %s^nViata: %d", szName, g_szPlayerClass[pid], pev(pid, pev_health));
/*if (is_credits_active())
{
nLen += format( szStatus[nLen], 511-nLen, "^n^nClass Multipliers:", szName, g_szPlayerClass[pid], pev(pid, pev_health));
nLen += format( szStatus[nLen], 511-nLen, "^nHealth: %f", g_fClassMultiplier[pid][ATT_HEALTH]);
nLen += format( szStatus[nLen], 511-nLen, "^nSpeed: %f", g_fClassMultiplier[pid][ATT_SPEED]);
nLen += format( szStatus[nLen], 511-nLen, "^nGravity: %f", g_fClassMultiplier[pid][ATT_GRAVITY]);
}*/
}
ShowSyncHudMsg(id, g_HudSync, szStatus);
}
if (g_iFriend[id] != 1) //enemy
{
set_hudmessage(225, 0, 0, -1.0, HUD_FRIEND_HEIGHT, 1, 0.01, 3.0, 0.01, 0.01);
if (g_isZombie[pid])
ShowSyncHudMsg(id, g_HudSync, "%s", szName);
else
ShowSyncHudMsg(id, g_HudSync, "%s^nCuloare: %s", szName, g_szColorName[g_iColor[pid]]);
}
}
public ev_HideStatus(id)
ClearSyncHud(id, g_HudSync);
public cmdSay(id)
{
if (!g_isConnected[id])
return PLUGIN_HANDLED;
new szMessage[32]
read_args(szMessage, charsmax(szMessage));
remove_quotes(szMessage);
if(szMessage[0] == '/')
{
if (equali(szMessage, "/commands") == 1 || equali(szMessage, "/cmd") == 1 )
{
print_color(id, "%s /class, /respawn, /random, /mycolor, /guns%s%s%s", MODNAME, (g_iColorMode ? ", /aleg <color>": ""), (g_iColorMode != 2 ? ", /colors":""), (access(id, FLAGS_LOCK) ? ", /lock":"") );
}
else if (equali(szMessage, "/class") == 1)
{
show_zclass_menu(id, 0)
}
else if (equali(szMessage, "/respawn") == 1 || equali(szMessage, "/revive") == 1 || equali(szMessage, "/fixspawn") == 1)
{
if (g_boolCanBuild && !g_isZombie[id])
ExecuteHamB(Ham_CS_RoundRespawn, id)
else if (g_isZombie[id])
{
if (pev(id, pev_health) == float(ArrayGetCell(g_zclass_hp, g_iZombieClass[id])) || !is_user_alive(id))
ExecuteHamB(Ham_CS_RoundRespawn, id)
else
client_print(id, print_center, "%L", LANG_SERVER, "FAIL_SPAWN");
}
}
else if (equali(szMessage, "/lock") == 1 || equali(szMessage, "/claim") == 1 && g_isAlive[id])
{
if (access(id, FLAGS_LOCK))
cmdLockBlock(id)
else
client_print(id, print_center, "%L", LANG_SERVER, "FAIL_ACCESS");
return PLUGIN_HANDLED;
}
else if (equal(szMessage, "/whois",6) && g_iColorMode)
{
for ( new i=0; i<MAX_COLORS; i++)
{
if (equali(szMessage[7], g_szColorName[i]) == 1)
{
if (g_iColorOwner[i])
{
new szPlayerName[32]
get_user_name(g_iColorOwner[i], szPlayerName, 31)
print_color(id, "%s^x04 %s^x01's color is^x04 %s", MODNAME, szPlayerName, g_szColorName[i]);
}
else
print_color(id, "%s %L^x04 %s", MODNAME, LANG_SERVER, "COLOR_NONE", g_szColorName[i]);
break;
}
}
}
else if (equali(szMessage, "/colors") == 1 && !g_isZombie[id] && g_boolCanBuild && g_iColorMode != 2)
{
show_colors_menu(id, 0)
}
else if (equali(szMessage, "/mycolor") == 1 && !g_isZombie[id])
{
print_color(id, "%s^x04 %L:^x01 %s", MODNAME, LANG_SERVER, "COLOR_YOURS", g_szColorName[g_iColor[id]]);
return PLUGIN_HANDLED
}
else if (equali(szMessage, "/random") == 1 && !g_isZombie[id] && g_boolCanBuild)
{
new i = random(MAX_COLORS)
if (g_iColorMode)
{
while (g_iColorOwner[i])
{
i = random(MAX_COLORS)
}
}
print_color(id, "%s^x04 %L:^x01 %s", MODNAME, LANG_SERVER, "COLOR_RANDOM", g_szColorName[i]);
g_iColorOwner[g_iColor[id]] = 0
g_iColor[id] = i
g_iColorOwner[i] = id
for (new iEnt = g_iMaxPlayers+1; iEnt < MAXENTS; iEnt++)
{
if (is_valid_ent(iEnt) && g_iLockBlocks && BlockLocker(iEnt) == id)
set_pev(iEnt,pev_rendercolor,g_fColor[g_iColor[id]])
}
ExecuteForward(g_fwNewColor, g_fwDummyResult, id, g_iColor[id]);
}
else if (equali(szMessage, "/guns", 5) && g_iGunsMenu)
{
if(!g_isAlive[id] || g_isZombie[id])
return PLUGIN_HANDLED
if (access(id, FLAGS_GUNS))
{
new player = cmd_target(id, szMessage[6], 0)
if (!player)
{
//if (is_credits_active())
#if defined BB_CREDITS
credits_show_gunsmenu(id)
#else
show_method_menu(id)
#endif
return PLUGIN_CONTINUE
}
cmdGuns(id, player)
return PLUGIN_HANDLED;
}
else
{
if(!g_boolCanBuild || !g_boolRepick[id])
return PLUGIN_HANDLED
//if (is_credits_active())
#if defined BB_CREDITS
credits_show_gunsmenu(id)
#else
show_method_menu(id)
#endif
return PLUGIN_HANDLED
}
}
else if (equal(szMessage, "/swap",5) && access(id, FLAGS_SWAP))
{
new player = cmd_target(id, szMessage[6], 0)
if (!player)
{
print_color(id, "%s Jucatorul^x04 %s^x03 nu este pe server , sau poate ai gresit numele", MODNAME, szMessage[6])
return PLUGIN_CONTINUE
}
cmdSwap(id, player)
}
else if (equal(szMessage, "/revive",7) && access(id, FLAGS_REVIVE))
{
new player = cmd_target(id, szMessage[8], 0)
if (!player)
{
print_color(id, "%s Jucatorul^x04 %s^x03 nu este pe server , sau poate ai gresit numele", MODNAME, szMessage[6])
return PLUGIN_CONTINUE
}
cmdRevive(id, player)
}
else if (equal(szMessage, "/ban",4) && access(id, FLAGS_BUILDBAN))
{
new player = cmd_target(id, szMessage[5], 0)
if (!player)
{
print_color(id, "%s Jucatorul^x04 %s^x03 nu este pe server , sau poate ai gresit numele", MODNAME, szMessage[6])
return PLUGIN_CONTINUE
}
cmdBuildBan(id, player)
}
else if (equal(szMessage, "/releasezombies",5) && access(id, FLAGS_RELEASE))
{
cmdStartRound(id)
}
}
return PLUGIN_CONTINUE
}
public cmdSwap(id, target)
{
if (access(id, FLAGS_SWAP))
{
new player
if (target) player = target
else
{
new arg[32]
read_argv(1, arg, 31)
player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF)
}
if (!player || !is_user_connected(player))
return client_print(id, print_console, "[BaseBuilder] %L", LANG_SERVER, "FAIL_NAME");
cs_set_user_team(player,( g_iTeam[player] = g_iTeam[player] == CS_TEAM_T ? CS_TEAM_CT : CS_TEAM_T))
if (is_user_alive(player))
ExecuteHamB(Ham_CS_RoundRespawn, player)
new szAdminAuthid[32],szAdminName[32],szPlayerName[32],szPlayerID[32]
get_user_name(id,szAdminName,31)
get_user_authid (id,szAdminAuthid,31)
get_user_name(player, szPlayerName, 31)
get_user_authid (player,szPlayerID,31)
client_print(id, print_console, "[BaseBuilder] Jucatorul %s a fost schimbat de la echipa %s la echipa %s ", szPlayerName, g_iTeam[player] == CS_TEAM_CT ? "zombie":"builder", g_iTeam[player] == CS_TEAM_CT ? "builder":"zombie")
Log("[SWAP] Admin: %s || SteamID: %s swapped Player: %s || SteamID: %s", szAdminName, szAdminAuthid, szPlayerName, szPlayerID)
set_hudmessage(255,0, 0, -1.0, 0.45, 0, 1.0, 10.0, 0.1, 0.2, 1)
show_hudmessage(player, "%L", LANG_SERVER, "ADMIN_SWAP");
print_color(0, "%s Jucatorul^x04 %s^x01 a fost^x04 schimbat^x01 la echipa^x04 %s", MODNAME, szPlayerName, g_iTeam[player] == CS_TEAM_CT ? "builder":"zombie")
}
return PLUGIN_HANDLED
}
public cmdRevive(id, target)
{
if (access(id, FLAGS_REVIVE))
{
new player
if (target) player = target
else
{
new arg[32]
read_argv(1, arg, 31)
player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF)
}
if (!player || !is_user_connected(player))
return client_print(id, print_console, "[BaseBuilder] %L", LANG_SERVER, "FAIL_NAME");
ExecuteHamB(Ham_CS_RoundRespawn, player)
new szAdminAuthid[32],szAdminName[32],szPlayerName[32],szPlayerID[32]
get_user_name(id,szAdminName,31)
get_user_authid (id,szAdminAuthid,31)
get_user_name(player, szPlayerName, 31)
get_user_authid (player,szPlayerID,31)
client_print(id, print_console, "[BaseBuilder] Jucatorul %s a fost^x04 reinviat", szPlayerName)
Log("[REVIVE] Admin: %s || SteamID: %s revived Player: %s || SteamID: %s", szAdminName, szAdminAuthid, szPlayerName, szPlayerID)
set_hudmessage(255,0, 0, -1.0, 0.45, 0, 1.0, 10.0, 0.1, 0.2, 1)
show_hudmessage(player, "%L", LANG_SERVER, "ADMIN_REVIVE");
print_color(0, "%s Jucatorul^x04 %s^x01 a fost^x04 reinviat", MODNAME, szPlayerName)
}
return PLUGIN_HANDLED
}
public cmdGuns(id, target)
{
if (access(id, FLAGS_GUNS))
{
new player
if (target) player = target
else
{
new arg[32]
read_argv(1, arg, 31)
player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF)
}
if (!player || !is_user_connected(player))
{
client_print(id, print_console, "[BaseBuilder] %L", LANG_SERVER, "FAIL_NAME");
return PLUGIN_HANDLED;
}
if (g_isZombie[player])
{
return PLUGIN_HANDLED;
}
if (!g_isAlive[player])
{
client_print(id, print_console, "[BaseBuilder] %L", LANG_SERVER, "FAIL_DEAD");
return PLUGIN_HANDLED;
}
//if (is_credits_active())
#if defined BB_CREDITS
credits_show_gunsmenu(player)
#else
show_method_menu(player)
#endif
new szAdminAuthid[32],szAdminName[32],szPlayerName[32],szPlayerID[32]
get_user_name(id,szAdminName,31)
get_user_authid (id,szAdminAuthid,31)
get_user_name(player, szPlayerName, 31)
get_user_authid (player,szPlayerID,31)
client_print(id, print_console, "[BaseBuilder] Jucatorului %s i s-a deschis meniul de arme", szPlayerName);
Log("[GUNS] Admin: %s || SteamID: %s opened the guns menu for Player: %s || SteamID: %s", szAdminName, szAdminAuthid, szPlayerName, szPlayerID);
set_hudmessage(255,0, 0, -1.0, 0.45, 0, 1.0, 10.0, 0.1, 0.2, 1)
show_hudmessage(player, "%L", LANG_SERVER, "ADMIN_GUNS");
print_color(0, "%s Jucatorului^x04 %s^x03 i s-a deschis meniul de^x04 arme", MODNAME, szPlayerName)
}
return PLUGIN_HANDLED
}
public cmdStartRound(id)
{
if (access(id, FLAGS_RELEASE))
{
native_release_zombies()
}
}
public Release_Zombies()
{
g_boolCanBuild = false
remove_task(TASK_BUILD);
g_boolPrepTime = false
remove_task(TASK_PREPTIME);
new players[32], num, player, szWeapon[32]
get_players(players, num, "a")
for(new i = 0; i < num; i++)
{
player = players[i]
if (!g_isZombie[player])
{
if (g_iOwnedEnt[player])
cmdStopEnt(player)
if(g_iGrenadeHE ) give_item(player,"weapon_hegrenade" ), cs_set_user_bpammo(player,CSW_HEGRENADE, g_iGrenadeHE)
if(g_iGrenadeFLASH ) give_item(player,"weapon_flashbang" ), cs_set_user_bpammo(player,CSW_FLASHBANG, g_iGrenadeFLASH)
if(g_iGrenadeSMOKE ) give_item(player,"weapon_smokegrenade" ), cs_set_user_bpammo(player,CSW_SMOKEGRENADE, g_iGrenadeSMOKE)
if (g_iPrimaryWeapon[player])
{
get_weaponname(g_iPrimaryWeapon[player],szWeapon,sizeof szWeapon - 1)
engclient_cmd(player, szWeapon);
}
}
}
set_pev(g_iEntBarrier,pev_solid,SOLID_NOT)
set_pev(g_iEntBarrier,pev_renderamt,Float:{ 0.0 })
set_hudmessage(255, 255, 255, -1.0, 0.45, 0, 1.0, 10.0, 0.1, 0.2, 1)
show_hudmessage(0, "%L", LANG_SERVER, "RELEASE_ANNOUNCE");
client_cmd(0, "spk %s", g_szRoundStart[ random( sizeof g_szRoundStart ) ] )
ExecuteForward(g_fwRoundStart, g_fwDummyResult);
}
public fw_CmdStart( id, uc_handle, randseed )
{
if (!g_isConnected[id] || !g_isAlive[id])
return FMRES_IGNORED
//new button = pev(id, pev_button)
new button = get_uc( uc_handle , UC_Buttons );
new oldbutton = pev(id, pev_oldbuttons)
if( button & IN_USE && !(oldbutton & IN_USE) && !g_iOwnedEnt[id])
cmdGrabEnt(id)
else if( oldbutton & IN_USE && !(button & IN_USE) && g_iOwnedEnt[id])
cmdStopEnt(id)
return FMRES_IGNORED;
}
public cmdGrabEnt(id)
{
if (g_fBuildDelay[id] + BUILD_DELAY > get_gametime())
{
g_fBuildDelay[id] = get_gametime()
client_print (id, print_center, "%L", LANG_SERVER, "BUILD_SPAM")
return PLUGIN_HANDLED
}
else
g_fBuildDelay[id] = get_gametime()
if (g_isBuildBan[id])
{
client_print (id, print_center, "%L", LANG_SERVER, "BUILD_BANNED")
client_cmd(id, "spk %s", LOCK_FAIL);
return PLUGIN_HANDLED;
}
if (g_isZombie[id] && !access(id, FLAGS_OVERRIDE))
return PLUGIN_HANDLED
if (!g_boolCanBuild && !access(id, FLAGS_BUILD) && !access(id, FLAGS_OVERRIDE))
{
client_print (id, print_center, "%L", LANG_SERVER, "BUILD_NOTIME")
return PLUGIN_HANDLED
}
if (g_iOwnedEnt[id] && is_valid_ent(g_iOwnedEnt[id]))
cmdStopEnt(id)
new ent, bodypart
get_user_aiming (id,ent,bodypart)
if (!is_valid_ent(ent) || ent == g_iEntBarrier || is_user_alive(ent) || IsMovingEnt(ent))
return PLUGIN_HANDLED;
if ((BlockLocker(ent) && BlockLocker(ent) != id) || (BlockLocker(ent) && !access(id, FLAGS_OVERRIDE)))
return PLUGIN_HANDLED;
new szClass[10], szTarget[7];
entity_get_string(ent, EV_SZ_classname, szClass, 9);
entity_get_string(ent, EV_SZ_targetname, szTarget, 6);
if (!equal(szClass, "func_wall") || equal(szTarget, "ignore"))
return PLUGIN_HANDLED;
ExecuteForward(g_fwGrabEnt_Pre, g_fwDummyResult, id, ent);
new Float:fOrigin[3], iAiming[3], Float:fAiming[3]
get_user_origin(id, iAiming, 3);
IVecFVec(iAiming, fAiming);
entity_get_vector(ent, EV_VEC_origin, fOrigin);
g_fOffset1[id] = fOrigin[0] - fAiming[0];
g_fOffset2[id] = fOrigin[1] - fAiming[1];
g_fOffset3[id] = fOrigin[2] - fAiming[2];
g_fEntDist[id] = get_user_aiming(id, ent, bodypart);
if (g_fEntMinDist)
{
if (g_fEntDist[id] < g_fEntMinDist)
g_fEntDist[id] = g_fEntSetDist;
}
else if (g_fEntMaxDist)
{
if (g_fEntDist[id] > g_fEntMaxDist)
return PLUGIN_HANDLED
}
set_pev(ent,pev_rendermode,kRenderTransColor)
set_pev(ent,pev_rendercolor, g_fColor[g_iColor[id]] )
set_pev(ent,pev_renderamt, g_fRenderAmt[g_iColor[id]] )
MovingEnt(ent);
SetEntMover(ent, id);
g_iOwnedEnt[id] = ent
//Checked after object is successfully grabbed
if (!g_boolCanBuild && (access(id, FLAGS_BUILD) || access(id, FLAGS_OVERRIDE)))
{
new adminauthid[32],adminname[32]
get_user_authid (id,adminauthid,31)
get_user_name(id,adminname,31)
Log("[MOVE] Admin: %s || SteamID: %s moved an entity", adminname, adminauthid)
}
client_cmd(id, "spk %s", GRAB_START);
ExecuteForward(g_fwGrabEnt_Post, g_fwDummyResult, id, ent);
return PLUGIN_HANDLED
}
public cmdStopEnt(id)
{
if (!g_iOwnedEnt[id])
return PLUGIN_HANDLED;
new ent = g_iOwnedEnt[id]
ExecuteForward(g_fwDropEnt_Pre, g_fwDummyResult, id, ent);
if (BlockLocker(ent))
{
switch(g_iLockBlocks)
{
case 0:
{
set_pev(ent,pev_rendermode,kRenderTransColor)
set_pev(ent,pev_rendercolor, Float:{ LOCKED_COLOR })
set_pev(ent,pev_renderamt,Float:{ LOCKED_RENDERAMT })
}
case 1:
{
set_pev(ent,pev_rendermode,kRenderTransColor)
set_pev(ent,pev_rendercolor, g_fColor[g_iColor[id]])
set_pev(ent,pev_renderamt,Float:{ LOCKED_RENDERAMT })
}
}
}
else
set_pev(ent,pev_rendermode,kRenderNormal)
UnsetEntMover(ent);
SetLastMover(ent,id);
g_iOwnedEnt[id] = 0;
UnmovingEnt(ent);
client_cmd(id, "spk %s", GRAB_STOP);
ExecuteForward(g_fwDropEnt_Post, g_fwDummyResult, id, ent);
return PLUGIN_HANDLED;
}
public cmdLockBlock(id)
{
if (!g_boolCanBuild && g_iLockBlocks)
{
client_print(id, print_center, "%L", LANG_SERVER, "FAIL_LOCK");
return PLUGIN_HANDLED;
}
if (!access(id, FLAGS_LOCK) || (g_isZombie[id] && !access(id, FLAGS_OVERRIDE)))
return PLUGIN_HANDLED;
new ent, bodypart
get_user_aiming (id,ent,bodypart)
new szTarget[7], szClass[10];
entity_get_string(ent, EV_SZ_targetname, szTarget, 6);
entity_get_string(ent, EV_SZ_classname, szClass, 9);
if (!ent || !is_valid_ent(ent) || is_user_alive(ent) || ent == g_iEntBarrier || !equal(szClass, "func_wall") || equal(szTarget, "ignore"))
return PLUGIN_HANDLED;
ExecuteForward(g_fwLockEnt_Pre, g_fwDummyResult, id, ent);
switch (g_iLockBlocks)
{
case 0:
{
if (!BlockLocker(ent) && !IsMovingEnt(ent))
{
LockBlock(ent, id);
set_pev(ent,pev_rendermode,kRenderTransColor)
set_pev(ent,pev_rendercolor,Float:{LOCKED_COLOR})
set_pev(ent,pev_renderamt,Float:{LOCKED_RENDERAMT})
client_cmd(id, "spk %s", LOCK_OBJECT);
}
else if (BlockLocker(ent))
{
UnlockBlock(ent)
set_pev(ent,pev_rendermode,kRenderNormal)
client_cmd(id, "spk %s", LOCK_OBJECT);
}
}
case 1:
{
if (!BlockLocker(ent) && !IsMovingEnt(ent))
{
if (g_iOwnedEntities[id]<g_iLockMax || !g_iLockMax)
{
LockBlock(ent, id)
g_iOwnedEntities[id]++
set_pev(ent,pev_rendermode,kRenderTransColor)
set_pev(ent,pev_rendercolor,g_fColor[g_iColor[id]])
set_pev(ent,pev_renderamt,Float:{LOCKED_RENDERAMT})
client_print(id, print_center, "%L [ %d / %d ]", LANG_SERVER, "BUILD_CLAIM_NEW", g_iOwnedEntities[id], g_iLockMax)
client_cmd(id, "spk %s", LOCK_OBJECT);
}
else if (g_iOwnedEntities[id]>=g_iLockMax)
{
client_print(id, print_center, "%L", LANG_SERVER, "BUILD_CLAIM_MAX", g_iLockMax)
client_cmd(id, "spk %s", LOCK_FAIL);
}
}
else if (BlockLocker(ent))
{
if (BlockLocker(ent) == id || access(id, FLAGS_OVERRIDE))
{
g_iOwnedEntities[BlockLocker(ent)]--
set_pev(ent,pev_rendermode,kRenderNormal)
client_print(BlockLocker(ent), print_center, "%L [ %d / %d ]", LANG_SERVER, "BUILD_CLAIM_LOST", g_iOwnedEntities[BlockLocker(ent)], g_iLockMax)
UnlockBlock(ent)
client_cmd(id, "spk %s", LOCK_OBJECT);
}
else
{
client_print(id, print_center, "%L", LANG_SERVER, "BUILD_CLAIM_FAIL")
client_cmd(id, "spk %s", LOCK_FAIL);
}
}
}
}
ExecuteForward(g_fwLockEnt_Post, g_fwDummyResult, id, ent);
return PLUGIN_HANDLED
}
public cmdBuildBan(id, target)
{
if (access(id, FLAGS_BUILDBAN))
{
new player
if (target) player = target
else
{
new arg[32]
read_argv(1, arg, 31)
player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY)
}
if (!player)
return client_print(id, print_console, "[BaseBuilder] %L", LANG_SERVER, "FAIL_NAME");
new szAdminAuthid[32],szAdminName[32],szPlayerName[32],szPlayerID[32]
get_user_name(id,szAdminName,31)
get_user_authid (id,szAdminAuthid,31)
get_user_name(player, szPlayerName, 31)
get_user_authid (player,szPlayerID,31)
g_isBuildBan[player] = g_isBuildBan[player] ? false : true
if (g_isBuildBan[player] && g_iOwnedEnt[player])
cmdStopEnt(player)
client_print(id, print_console, "[BaseBuilder] Jucatorul %s a fost %s de la construire", szPlayerName, g_isBuildBan[player] ? "banned":"unbanned")
Log("[MOVE] Admin: %s || SteamID: %s banned Player: %s || SteamID: %s from building", szAdminName, szAdminAuthid, szPlayerName, szPlayerID)
set_hudmessage(255,0, 0, -1.0, 0.45, 0, 1.0, 10.0, 0.1, 0.2, 1)
show_hudmessage(player, "%L", LANG_SERVER, "ADMIN_BUILDBAN", g_isBuildBan[player] ? "disabled":"re-enabled");
print_color(0, "%s Player^x04 %s^x01 has been^x04 %s^x01 from building", MODNAME, szPlayerName, g_isBuildBan[player] ? "banned":"unbanned")
}
return PLUGIN_HANDLED;
}
public fw_PlayerPreThink(id)
{
if (!is_user_connected(id))
{
cmdStopEnt(id)
return PLUGIN_HANDLED
}
if (g_isZombie[id])
set_pev(id, pev_maxspeed, g_fPlayerSpeed[id])
if (!g_iOwnedEnt[id] || !is_valid_ent(g_iOwnedEnt[id]))
return FMRES_HANDLED
new buttons = pev(id, pev_button)
if (buttons & IN_ATTACK)
{
g_fEntDist[id] += OBJECT_PUSHPULLRATE;
if (g_fEntDist[id] > g_fEntMaxDist)
{
g_fEntDist[id] = g_fEntMaxDist
client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_MAX")
}
else
client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_PUSH")
ExecuteForward(g_fwPushPull, g_fwDummyResult, id, g_iOwnedEnt[id], 1);
}
else if (buttons & IN_ATTACK2)
{
g_fEntDist[id] -= OBJECT_PUSHPULLRATE;
if (g_fEntDist[id] < g_fEntSetDist)
{
g_fEntDist[id] = g_fEntSetDist
client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_MIN")
}
else
client_print(id, print_center, "%L", LANG_SERVER, "OBJECT_PULL")
ExecuteForward(g_fwPushPull, g_fwDummyResult, id, g_iOwnedEnt[id], 2);
}
new iOrigin[3], iLook[3], Float:fOrigin[3], Float:fLook[3], Float:vMoveTo[3], Float:fLength
get_user_origin(id, iOrigin, 1);
IVecFVec(iOrigin, fOrigin);
get_user_origin(id, iLook, 3);
IVecFVec(iLook, fLook);
fLength = get_distance_f(fLook, fOrigin);
if (fLength == 0.0) fLength = 1.0;
vMoveTo[0] = (fOrigin[0] + (fLook[0] - fOrigin[0]) * g_fEntDist[id] / fLength) + g_fOffset1[id];
vMoveTo[1] = (fOrigin[1] + (fLook[1] - fOrigin[1]) * g_fEntDist[id] / fLength) + g_fOffset2[id];
vMoveTo[2] = (fOrigin[2] + (fLook[2] - fOrigin[2]) * g_fEntDist[id] / fLength) + g_fOffset3[id];
vMoveTo[2] = float(floatround(vMoveTo[2], floatround_floor));
entity_set_origin(g_iOwnedEnt[id], vMoveTo);
return FMRES_HANDLED
}
public fw_Traceline(Float:start[3], Float:end[3], conditions, id, trace)
{
if (!is_user_alive(id))
return PLUGIN_HANDLED
new ent = get_tr2(trace, TR_pHit)
if (is_valid_ent(ent))
{
new ent,body
get_user_aiming(id,ent,body)
new szClass[10], szTarget[7];
entity_get_string(ent, EV_SZ_classname, szClass, 9);
entity_get_string(ent, EV_SZ_targetname, szTarget, 6);
if (equal(szClass, "func_wall") && !equal(szTarget, "ignore") && ent != g_iEntBarrier && g_iShowMovers == 1)
{
if (g_boolCanBuild || access(id, ADMIN_SLAY))
{
set_hudmessage(0, 50, 255, -1.0, 0.55, 1, 0.01, 3.0, 0.01, 0.01);
if (!BlockLocker(ent))
{
new szCurMover[32], szLastMover[32]
if (GetEntMover(ent))
{
get_user_name(GetEntMover(ent),szCurMover,31)
if (!GetLastMover(ent))
ShowSyncHudMsg(id, g_HudSync, "Posesorul piesei este : %s", szCurMover);
}
if (GetLastMover(ent))
{
get_user_name(GetLastMover(ent),szLastMover,31)
if (!GetEntMover(ent))
ShowSyncHudMsg(id, g_HudSync, "Posesorul piesei este : %s", szLastMover);
}
if (GetEntMover(ent) && GetLastMover(ent))
ShowSyncHudMsg(id, g_HudSync, "Posesorul piesei este : %s", szCurMover, szLastMover);
else if (!GetEntMover(ent) && !GetLastMover(ent))
ShowSyncHudMsg(id, g_HudSync, "Aceasta piesa este libera , o puteti lua");
}
else
{
new szEntOwner[32]
get_user_name(BlockLocker(ent),szEntOwner,31)
ShowSyncHudMsg(id, g_HudSync, "Piesa blocata de catre : %s", szEntOwner);
}
}
}
}
else ClearSyncHud(id, g_HudSync);
return PLUGIN_HANDLED
}
public fw_EmitSound(id,channel,const sample[],Float:volume,Float:attn,flags,pitch)
{
if (!is_user_connected(id) || !g_isZombie[id] || g_boolCanBuild || g_boolPrepTime || g_boolRoundEnded)
return FMRES_IGNORED;
if(equal(sample[7], "die", 3) || equal(sample[7], "dea", 3))
{
emit_sound(id,channel,g_szZombieDie[random(sizeof g_szZombieDie - 1)],volume,attn,flags,pitch)
return FMRES_SUPERCEDE
}
if(equal(sample[7], "bhit", 4))
{
emit_sound(id,channel,g_szZombiePain[random(sizeof g_szZombiePain - 1)],volume,attn,flags,pitch)
return FMRES_SUPERCEDE
}
// Zombie attacks with knife
if (equal(sample[8], "kni", 3))
{
if (equal(sample[14], "sla", 3)) // slash
{
emit_sound(id,channel,g_szZombieMiss[random(sizeof g_szZombieMiss - 1)],volume,attn,flags,pitch)
return FMRES_SUPERCEDE;
}
if (equal(sample[14], "hit", 3)) // hit
{
if (sample[17] == 'w') // wall
{
emit_sound(id,channel,g_szZombieHit[random(sizeof g_szZombieHit - 1)],volume,attn,flags,pitch)
return FMRES_SUPERCEDE;
}
else
{
emit_sound(id,channel,g_szZombieHit[random(sizeof g_szZombieHit - 1)],volume,attn,flags,pitch)
return FMRES_SUPERCEDE;
}
}
if (equal(sample[14], "sta", 3)) // stab
{
emit_sound(id,channel,g_szZombieMiss[random(sizeof g_szZombieMiss - 1)],volume,attn,flags,pitch)
return FMRES_SUPERCEDE;
}
}
return FMRES_IGNORED
}
public fw_Suicide(id) return FMRES_SUPERCEDE
public show_colors_menu(id,offset)
{
if(offset<0) offset = 0
new keys, curnum, menu[2048]
for(new i=offset;i<MAX_COLORS;i++)
{
if (g_iColorMode == 0 || (g_iColorMode == 1 && !g_iColorOwner[i]))
{
g_iMenuOptions[id][curnum] = i
keys += (1<<curnum)
curnum++
format(menu,2047,"%s^n%d. %s", menu, curnum, g_szColorName[i])
if(curnum==8)
break;
}
}
format(menu,2047,"\yAlege-ti Culoarea:^nCuloarea Curenta: \r%s\w^n^n%s^n", g_szColorName[g_iColor[id]], menu)
if(curnum==8 && offset<12)
{
keys += (1<<8)
format(menu,2047,"%s^n9. Inainte",menu)
}
if(offset)
{
keys += (1<<9)
format(menu,2047,"%s^n0. Inapoi",menu)
}
show_menu(id,keys,menu,-1,"ColorsSelect")
}
public colors_pushed(id,key)
{
if(key<8)
{
g_iColorOwner[g_iMenuOptions[id][key]] = id
g_iColorOwner[g_iColor[id]] = 0
g_iColor[id] = g_iMenuOptions[id][key]
print_color(id, "%s Ti-a ales^x04 %s^x01 ca culoare", MODNAME, g_szColorName[g_iColor[id]])
g_iMenuOffset[id] = 0
ExecuteForward(g_fwNewColor, g_fwDummyResult, id, g_iColor[id]);
}
else
{
if(key==8)
g_iMenuOffset[id] += 8
if(key==9)
g_iMenuOffset[id] -= 8
show_colors_menu(id,g_iMenuOffset[id])
}
return ;
}
public show_zclass_menu(id,offset)
{
if(offset<0) offset = 0
new keys, curnum, menu[512], szCache1[32], szCache2[32], iCache3
for(new i=offset;i<g_iZClasses;i++)
{
ArrayGetString(g_zclass_name, i, szCache1, charsmax(szCache1))
ArrayGetString(g_zclass_info, i, szCache2, charsmax(szCache2))
iCache3 = ArrayGetCell(g_zclass_admin, i)
// Add to menu
if (i == g_iZombieClass[id])
format(menu,511,"%s^n\d%d. %s %s \r%s", menu, curnum+1, szCache1, szCache2, iCache3 == ADMIN_ALL ? "" : "(Doar pentru ViP)")
else
format(menu,511,"%s^n\w%d. %s \y%s \r%s", menu, curnum+1, szCache1, szCache2, iCache3 == ADMIN_ALL ? "" : "(Doar pentru ViP)")
g_iMenuOptions[id][curnum] = i
keys += (1<<curnum)
curnum++
if(curnum==8)
break;
}
format(menu,511,"\yAlege-ti Rasa:^n\w%s^n", menu)
if(curnum==8 && offset<12)
{
keys += (1<<8)
format(menu,511,"%s^n\w9. Inainte",menu)
}
if(offset)
{
keys += (1<<9)
format(menu,511,"%s^n\w0. Inapoi",menu)
}
show_menu(id,keys,menu,-1,"ZClassSelect")
}
public zclass_pushed(id,key)
{
if(key<8)
{
if (g_iMenuOptions[id][key] == g_iZombieClass[id])
{
client_cmd(id, "spk %s", LOCK_FAIL);
print_color(id, "%s %L", MODNAME, LANG_SERVER, "CLASS_CURRENT")
show_zclass_menu(id,g_iMenuOffset[id])
return ;
}
new iCache3 = ArrayGetCell(g_zclass_admin, g_iMenuOptions[id][key])
if ((iCache3 != ADMIN_ALL || !iCache3) && !access(id, iCache3))
{
print_color(id, "%s %L", MODNAME, LANG_SERVER, "CLASS_NO_ACCESS")
show_zclass_menu(id,g_iMenuOffset[id])
return ;
}
g_iNextClass[id] = g_iMenuOptions[id][key]
new szCache1[32]
ArrayGetString(g_zclass_name, g_iMenuOptions[id][key], szCache1, charsmax(szCache1))
if (!g_isZombie[id] || (g_isZombie[id] && (g_boolCanBuild || g_boolPrepTime)))
print_color(id, "%s Ti-ai ales^x04 %s^x01 ca rasa de Zombie", MODNAME, szCache1)
if (!g_isAlive[id])
print_color(id, "%s %L", MODNAME, LANG_SERVER, "CLASS_RESPAWN")
g_iMenuOffset[id] = 0
if (g_isZombie[id] && (g_boolCanBuild || g_boolPrepTime))
ExecuteHamB(Ham_CS_RoundRespawn, id)
ExecuteForward(g_fwClassPicked, g_fwDummyResult, id, g_iZombieClass[id]);
}
else
{
if(key==8)
g_iMenuOffset[id] += 8
if(key==9)
g_iMenuOffset[id] -= 8
show_zclass_menu(id,g_iMenuOffset[id])
}
return ;
}
/*------------------------------------------------------------------------------------------------*/
public show_method_menu(id)
{
if(g_boolFirstTime[id])
{
g_boolFirstTime[id] = false
show_primary_menu(id,0)
}
else
{
g_iMenuOffset[id] = 0
show_menu(id,(1<<0)|(1<<1),"\yAlege-ti \rArmele^n^n\w1. \rArme Noi^n\w2. \yUltimele Arme",-1,"WeaponMethodMenu")
}
}
public weapon_method_pushed(id,key)
{
switch(key)
{
case 0: show_primary_menu(id,0)
case 1: give_weapons(id)
}
return ;
}
public show_primary_menu(id,offset)
{
if(offset<0) offset = 0
new cvar_value[32]
get_pcvar_string(g_pcvar_allowedweps,cvar_value,31)
new flags = read_flags(cvar_value)
new keys, curnum, menu[2048]
for(new i=offset;i<19;i++)
{
if(flags & power(2,i))
{
g_iMenuOptions[id][curnum] = i
keys += (1<<curnum)
curnum++
format(menu,2047,"%s^n%d. %s",menu,curnum,szWeaponNames[i])
if(curnum==8)
break;
}
}
format(menu,2047,"\yArme Automate:\y^n%s^n",menu)
if(curnum==8 && offset<12)
{
keys += (1<<8)
format(menu,2047,"%s^n9. Inainte",menu)
}
if(offset)
{
keys += (1<<9)
format(menu,2047,"%s^n0. Inapoi",menu)
}
show_menu(id,keys,menu,-1,"PrimaryWeaponSelect")
}
public prim_weapons_pushed(id,key)
{
if(key<8)
{
g_iWeaponPicked[0][id] = g_iMenuOptions[id][key]
g_iMenuOffset[id] = 0
show_secondary_menu(id,0)
}
else
{
if(key==8)
g_iMenuOffset[id] += 8
if(key==9)
g_iMenuOffset[id] -= 8
show_primary_menu(id,g_iMenuOffset[id])
}
return ;
}
public show_secondary_menu(id,offset)
{
if(offset<0) offset = 0
new cvar_value[32]
get_pcvar_string(g_pcvar_allowedweps,cvar_value,31)
new flags = read_flags(cvar_value)
new keys, curnum, menu[2048]
for(new i=18;i<24;i++)
{
if(flags & power(2,i))
{
g_iMenuOptions[id][curnum] = i
keys += (1<<curnum)
curnum++
format(menu,2047,"%s^n%d. %s",menu,curnum,szWeaponNames[i])
}
}
format(menu,2047,"\rPistoale:\y^n%s",menu)
show_menu(id,keys,menu,-1,"SecWeaponSelect")
}
public sec_weapons_pushed(id,key)
{
if(key<8)
{
g_iWeaponPicked[1][id] = g_iMenuOptions[id][key]
}
give_weapons(id)
return ;
}
public give_weapons(id)
{
strip_user_weapons(id)
give_item(id,"weapon_knife")
new szWeapon[32], csw
csw = csw_contant(g_iWeaponPicked[0][id])
get_weaponname(csw,szWeapon,31)
give_item(id,szWeapon)
cs_set_user_bpammo(id,csw,999)
g_iPrimaryWeapon[id] = csw
csw = csw_contant(g_iWeaponPicked[1][id])
get_weaponname(csw,szWeapon,31)
give_item(id,szWeapon)
cs_set_user_bpammo(id,csw,999)
g_boolRepick[id] = false
}
stock csw_contant(weapon)
{
new num = 29
switch(weapon)
{
case 0: num = 3
case 1: num = 5
case 2: num = 7
case 3: num = 8
case 4: num = 12
case 5: num = 13
case 6: num = 14
case 7: num = 15
case 8: num = 18
case 9: num = 19
case 10: num = 20
case 11: num = 21
case 12: num = 22
case 13: num = 23
case 14: num = 24
case 15: num = 27
case 16: num = 28
case 17: num = 30
case 18: num = 1
case 19: num = 10
case 20: num = 11
case 21: num = 16
case 22: num = 17
case 23: num = 26
case 24:
{
new s_weapon[32]
get_pcvar_string(g_pcvar_allowedweps,s_weapon,31)
new flags = read_flags(s_weapon)
do
{
num = random_num(0,18)
if(!(num & flags))
{
num = -1
}
}
while(num==-1)
num = csw_contant(num)
}
case 25:
{
new s_weapon[32]
get_pcvar_string(g_pcvar_allowedweps,s_weapon,31)
new flags = read_flags(s_weapon)
do
{
num = random_num(18,23)
if(!(num & flags))
{
num = -1
}
}
while(num==-1)
num = csw_contant(num)
}
}
return num;
}
/*------------------------------------------------------------------------------------------------*/
Log(const message_fmt[], any:...)
{
static message[256];
vformat(message, sizeof(message) - 1, message_fmt, 2);
static filename[96];
static dir[64];
if( !dir[0] )
{
get_basedir(dir, sizeof(dir) - 1);
add(dir, sizeof(dir) - 1, "/logs");
}
format_time(filename, sizeof(filename) - 1, "%m-%d-%Y");
format(filename, sizeof(filename) - 1, "%s/BaseBuilder_%s.log", dir, filename);
log_to_file(filename, "%s", message);
}
print_color(target, const message[], any:...)
{
static buffer[512], i, argscount
argscount = numargs()
// Send to everyone
if (!target)
{
static player
for (player = 1; player <= g_iMaxPlayers; player++)
{
// Not connected
if (!g_isConnected[player])
continue;
// Remember changed arguments
static changed[5], changedcount // [5] = max LANG_PLAYER occurencies
changedcount = 0
// Replace LANG_PLAYER with player id
for (i = 2; i < argscount; i++)
{
if (getarg(i) == LANG_PLAYER)
{
setarg(i, 0, player)
changed[changedcount] = i
changedcount++
}
}
// Format message for player
vformat(buffer, charsmax(buffer), message, 3)
// Send it
message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, player)
write_byte(player)
write_string(buffer)
message_end()
// Replace back player id's with LANG_PLAYER
for (i = 0; i < changedcount; i++)
setarg(changed[i], 0, LANG_PLAYER)
}
}
// Send to specific target
else
{
// Format message for player
vformat(buffer, charsmax(buffer), message, 3)
// Send it
message_begin(MSG_ONE, g_msgSayText, _, target)
write_byte(target)
write_string(buffer)
message_end()
}
}
stock fm_cs_get_current_weapon_ent(id)
return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX);
public native_register_zombie_class(const name[], const info[], const model[], const clawmodel[], hp, speed, Float:gravity, Float:knockback, adminflags, credits)
{
if (!g_boolArraysCreated)
return 0;
// Strings passed byref
param_convert(1)
param_convert(2)
param_convert(3)
param_convert(4)
// Add the class
ArrayPushString(g_zclass_name, name)
ArrayPushString(g_zclass_info, info)
ArrayPushCell(g_zclass_modelsstart, ArraySize(g_zclass_playermodel))
ArrayPushString(g_zclass_playermodel, model)
ArrayPushCell(g_zclass_modelsend, ArraySize(g_zclass_playermodel))
ArrayPushCell(g_zclass_modelindex, -1)
ArrayPushString(g_zclass_clawmodel, clawmodel)
ArrayPushCell(g_zclass_hp, hp)
ArrayPushCell(g_zclass_spd, speed)
ArrayPushCell(g_zclass_grav, gravity)
ArrayPushCell(g_zclass_admin, adminflags)
ArrayPushCell(g_zclass_credits, credits)
// Set temporary new class flag
ArrayPushCell(g_zclass_new, 1)
// Override zombie classes data with our customizations
new i, k, buffer[32], Float:buffer2, nummodels_custom, nummodels_default, prec_mdl[100], size = ArraySize(g_zclass2_realname)
for (i = 0; i < size; i++)
{
ArrayGetString(g_zclass2_realname, i, buffer, charsmax(buffer))
// Check if this is the intended class to override
if (!equal(name, buffer))
continue;
// Remove new class flag
ArraySetCell(g_zclass_new, g_iZClasses, 0)
// Replace caption
ArrayGetString(g_zclass2_name, i, buffer, charsmax(buffer))
ArraySetString(g_zclass_name, g_iZClasses, buffer)
// Replace info
ArrayGetString(g_zclass2_info, i, buffer, charsmax(buffer))
ArraySetString(g_zclass_info, g_iZClasses, buffer)
nummodels_custom = ArrayGetCell(g_zclass2_modelsend, i) - ArrayGetCell(g_zclass2_modelsstart, i)
nummodels_default = ArrayGetCell(g_zclass_modelsend, g_iZClasses) - ArrayGetCell(g_zclass_modelsstart, g_iZClasses)
// Replace each player model and model index
for (k = 0; k < min(nummodels_custom, nummodels_default); k++)
{
ArrayGetString(g_zclass2_playermodel, ArrayGetCell(g_zclass2_modelsstart, i) + k, buffer, charsmax(buffer))
ArraySetString(g_zclass_playermodel, ArrayGetCell(g_zclass_modelsstart, g_iZClasses) + k, buffer)
// Precache player model and replace its modelindex with the real one
formatex(prec_mdl, charsmax(prec_mdl), "models/player/%s/%s.mdl", buffer, buffer)
ArraySetCell(g_zclass_modelindex, ArrayGetCell(g_zclass_modelsstart, g_iZClasses) + k, engfunc(EngFunc_PrecacheModel, prec_mdl))
}
// We have more custom models than what we can accommodate,
// Let's make some space...
if (nummodels_custom > nummodels_default)
{
for (k = nummodels_default; k < nummodels_custom; k++)
{
ArrayGetString(g_zclass2_playermodel, ArrayGetCell(g_zclass2_modelsstart, i) + k, buffer, charsmax(buffer))
ArrayInsertStringAfter(g_zclass_playermodel, ArrayGetCell(g_zclass_modelsstart, g_iZClasses) + k - 1, buffer)
// Precache player model and retrieve its modelindex
formatex(prec_mdl, charsmax(prec_mdl), "models/player/%s/%s.mdl", buffer, buffer)
ArrayInsertCellAfter(g_zclass_modelindex, ArrayGetCell(g_zclass_modelsstart, g_iZClasses) + k - 1, engfunc(EngFunc_PrecacheModel, prec_mdl))
}
// Fix models end index for this class
ArraySetCell(g_zclass_modelsend, g_iZClasses, ArrayGetCell(g_zclass_modelsend, g_iZClasses) + (nummodels_custom - nummodels_default))
}
// Replace clawmodel
ArrayGetString(g_zclass2_clawmodel, i, buffer, charsmax(buffer))
ArraySetString(g_zclass_clawmodel, g_iZClasses, buffer)
// Precache clawmodel
formatex(prec_mdl, charsmax(prec_mdl), "models/%s.mdl", buffer)
engfunc(EngFunc_PrecacheModel, prec_mdl)
// Replace health
buffer[0] = ArrayGetCell(g_zclass2_hp, i)
ArraySetCell(g_zclass_hp, g_iZClasses, buffer[0])
// Replace speed
buffer[0] = ArrayGetCell(g_zclass2_spd, i)
ArraySetCell(g_zclass_spd, g_iZClasses, buffer[0])
// Replace gravity
buffer2 = Float:ArrayGetCell(g_zclass2_grav, i)
ArraySetCell(g_zclass_grav, g_iZClasses, buffer2)
// Replace admin flags
buffer2 = ArrayGetCell(g_zclass2_admin, i)
ArraySetCell(g_zclass_admin, g_iZClasses, buffer2)
// Replace credits
buffer2 = ArrayGetCell(g_zclass2_credits, i)
ArraySetCell(g_zclass_credits, g_iZClasses, buffer2)
}
// If class was not overriden with customization data
if (ArrayGetCell(g_zclass_new, g_iZClasses))
{
// Precache default class model and replace modelindex with the real one
formatex(prec_mdl, charsmax(prec_mdl), "models/player/%s/%s.mdl", model, model)
ArraySetCell(g_zclass_modelindex, ArrayGetCell(g_zclass_modelsstart, g_iZClasses), engfunc(EngFunc_PrecacheModel, prec_mdl))
// Precache default clawmodel
formatex(prec_mdl, charsmax(prec_mdl), "models/%s.mdl", clawmodel)
engfunc(EngFunc_PrecacheModel, prec_mdl)
}
g_iZClasses++
return g_iZClasses-1
}
public native_get_class_cost(classid)
{
if (classid < 0 || classid >= g_iZClasses)
return -1;
return ArrayGetCell(g_zclass_credits, classid)
}
public native_get_user_zombie_class(id) return g_iZombieClass[id];
public native_get_user_next_class(id) return g_iNextClass[id];
public native_set_user_zombie_class(id, classid)
{
if (classid < 0 || classid >= g_iZClasses)
return 0;
g_iNextClass[id] = classid
return 1;
}
public native_is_user_zombie(id) return g_isZombie[id]
public native_is_user_banned(id) return g_isBuildBan[id]
public native_bool_buildphase() return g_boolCanBuild
public native_bool_prepphase() return g_boolPrepTime
public native_get_build_time()
{
if (g_boolCanBuild)
return g_iCountDown
return 0;
}
public native_set_build_time(time)
{
if (g_boolCanBuild)
{
g_iCountDown = time
return 1
}
return 0;
}
public native_get_user_color(id) return g_iColor[id]
public native_set_user_color(id, color)
{
g_iColor[id] = color
}
public native_drop_user_block(id)
{
cmdStopEnt(id)
}
public native_get_user_block(id)
{
if (g_iOwnedEnt[id])
return g_iOwnedEnt[id]
return 0;
}
public native_set_user_block(id, entity)
{
if (is_valid_ent(entity) && !is_user_alive(entity) && !MovingEnt(entity))
g_iOwnedEnt[id] = entity
}
public native_is_locked_block(entity)
{
if (is_valid_ent(entity) && !is_user_alive(entity))
return BlockLocker(entity) ? true : false
return -1;
}
public native_lock_block(entity)
{
if (is_valid_ent(entity) && !is_user_alive(entity) && !BlockLocker(entity))
{
LockBlock(entity, 33);
set_pev(entity,pev_rendermode,kRenderTransColor)
set_pev(entity,pev_rendercolor,Float:{LOCKED_COLOR})
set_pev(entity,pev_renderamt,Float:{LOCKED_RENDERAMT})
}
}
public native_unlock_block(entity)
{
if (is_valid_ent(entity) && !is_user_alive(entity) && BlockLocker(entity))
{
UnlockBlock(entity)
set_pev(entity,pev_rendermode,kRenderNormal)
}
}
public native_release_zombies()
{
if (g_boolCanBuild || g_boolPrepTime)
{
Release_Zombies()
return 1;
}
return 0;
}
public native_set_user_primary(id, csw_primary)
{
if (CSW_P228<=csw_primary<=CSW_P90)
{
g_iPrimaryWeapon[id] = csw_primary
return g_iPrimaryWeapon[id];
}
return -1;
}
public native_get_user_primary(id) return g_iPrimaryWeapon[id]
public native_get_flags_build() return FLAGS_BUILD
public native_get_flags_lock() return FLAGS_LOCK
public native_get_flags_buildban() return FLAGS_BUILDBAN
public native_get_flags_swap() return FLAGS_SWAP
public native_get_flags_revive() return FLAGS_REVIVE
public native_get_flags_guns() return FLAGS_GUNS
public native_get_flags_release() return FLAGS_RELEASE
public native_get_flags_override() return FLAGS_OVERRIDE
/*public native_set_user_mult(id, attribute, Float: amount)
{
if (attribute < ATT_HEALTH || attribute > ATT_GRAVITY)
return 0;
if (amount < 1.0)
amount = 1.0
g_fClassMultiplier[id][attribute] = amount
return 1;
}*/
Lasermine + model schimbat
Descriere :[/b] : Acesta e pluginul de laser cu model schimbat
Autor :[/color] : ARUKARI
SMA :
Cod: Selectaţi tot
/* Plugin generated by AMXX-Studio */
//#define BIOHAZARD_SUPPORT
//#define UL_MONEY_SUPPORT
#include <amxmodx>
#include <fakemeta>
#include <xs>
#if defined BIOHAZARD_SUPPORT
#include <biohazard>
#endif
#if defined UL_MONEY_SUPPORT
#include <money_ul>
#endif
#if AMXX_VERSION_NUM < 180
#assert AMX Mod X v1.8.0 or greater library required!
#endif
#if defined BIOHAZARD_SUPPORT
#define PLUGIN "LTM for BIOHAZARD"
#define VERSION "+1.4"
#else
#define PLUGIN "Laser/Tripmine Entity"
#define VERSION "2.3"
#endif
#define AUTHOR "SandStriker"
#define RemoveEntity(%1) engfunc(EngFunc_RemoveEntity,%1)
//#define ACCESSLEVEL ADMIN_LEVEL_H
#define TASK_PLANT 15100
#define TASK_RESET 15500
#define TASK_RELEASE 15900
#define LASERMINE_TEAM pev_iuser1//EV_INT_iuser1
#define LASERMINE_OWNER pev_iuser2 //EV_INT_iuser3
#define LASERMINE_STEP pev_iuser3
#define LASERMINE_HITING pev_iuser4
#define LASERMINE_COUNT pev_fuser1
#define LASERMINE_POWERUP pev_fuser2
#define LASERMINE_BEAMTHINK pev_fuser3
#define LASERMINE_BEAMENDPOINT pev_vuser1
#define MAX_MINES 10
#define MODE_LASERMINE 0
#define OFFSET_TEAM 114
#define OFFSET_MONEY 115
#define OFFSET_DEATH 444
#define cs_get_user_team(%1) CsTeams:get_offset_value(%1,OFFSET_TEAM)
#define cs_get_user_deaths(%1) get_offset_value(%1,OFFSET_DEATH)
#define cs_get_user_money(%1) get_offset_value(%1,OFFSET_MONEY)
#define cs_set_user_money(%1,%2) set_offset_value(%1,OFFSET_MONEY,%2)
enum CsTeams {
CS_TEAM_UNASSIGNED = 0,
CS_TEAM_T = 1,
CS_TEAM_CT = 2,
CS_TEAM_SPECTATOR = 3
};
enum tripmine_e {
TRIPMINE_IDLE1 = 0,
TRIPMINE_IDLE2,
TRIPMINE_ARM1,
TRIPMINE_ARM2,
TRIPMINE_FIDGET,
TRIPMINE_HOLSTER,
TRIPMINE_DRAW,
TRIPMINE_WORLD,
TRIPMINE_GROUND,
};
enum
{
POWERUP_THINK,
BEAMBREAK_THINK,
EXPLOSE_THINK
};
enum
{
POWERUP_SOUND,
ACTIVATE_SOUND,
STOP_SOUND
};
new const
ENT_MODELS[] = "models/v_laser_dante.mdl",
ENT_SOUND1[] = "weapons/mine_deploy.wav",
ENT_SOUND2[] = "weapons/mine_charge.wav",
ENT_SOUND3[] = "weapons/mine_activate.wav",
ENT_SOUND4[] = "debris/beamstart9.wav",
ENT_SOUND5[] = "items/gunpickup2.wav",
ENT_SOUND6[] = "debris/bustglass1.wav",
ENT_SOUND7[] = "debris/bustglass2.wav",
ENT_SPRITE1[] = "sprites/laserbeam.spr",
ENT_SPRITE2[] = "sprites/zerogxplode.spr";
new const
ENT_CLASS_NAME[] = "lasermine",
//ENT_CLASS_NAME2[] = "info_target",
ENT_CLASS_NAME3[] = "func_breakable";
new const
#if defined BIOHAZARD_SUPPORT
CHATTAG[] = "[BioLaser]",
#else
CHATTAG[] = "[BB.BaDCoRe.Ro]",
#endif
//STR_MINEDETNATED[] = "Your mine has detonated.",
//STR_MINEDETNATED2[] = "detonated your mine.",
STR_NOTACTIVE[] = "Lasermines are not currently active.",
STR_DONTHAVEMINE[] = "You don't have lasermine.",
//STR_CANTDEPLOY[] = "Your team can't deploying lasermine!",
STR_MAXDEPLOY[] = "Maximum mines have been deployed.",
STR_MANYPPL[] = "Too many ppl on your team...",
STR_PLANTWALL[] = "You must plant the lasermine on a wall!",
STR_REF[] = "Refer to a lasermine rule with this server. say 'lasermine'",
#if defined BIOHAZARD_SUPPORT
STR_CBT[] = "Your Zombie! Can't buy and deploying lasermine!",
#else
STR_CBT[] = "Your Team Can't buy and deploying lasermine!",
#endif
STR_CANTBUY[] = "Can't buying this server.",
STR_HAVEMAX[] = "You have a maximum lasermine.",
STR_NOMONEY[] = "You don't have enough money to buy a lasermine! ($",
STR_NEEDED[] = "needed)",
STR_DELAY[] = "You can buying and deploying lasermine in after",
STR_SECONDS[] = "seconds.",
STR_BOUGHT[] = "You have successfully bought a lasermine.",
STR_STATE[] = "LaserMines Ammo:",
STR_NOACCESS[] = "You can't access, this command.";
new g_EntMine;
new beam, boom
new
g_LENABLE,g_LFMONEY,g_LAMMO,g_LDMG,
g_LTMAX,g_LCOST,g_LHEALTH,g_LMODE,g_LRADIUS,g_LRDMG,g_LFF,g_LCBT;
new
g_LDELAY,/*g_LTHINK,*/g_LVISIBLE,
g_LSTAMMO,g_LACCESS,g_LGLOW,g_LDMGMODE,g_LCLMODE,g_LCBRIGHT,g_LDSEC,g_LCMDMODE,g_LBUYMODE;
new g_dcount[33],g_nowtime,g_MaxPL
new bool:g_settinglaser[33]
new g_msgDeathMsg,g_msgScoreInfo,g_msgDamage,g_msgStatusText,g_msgMoney;
new Float:plspeed[33]
new plsetting[33]
new g_havemine[33];
new g_deployed[33];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
// Add your code here...
register_clcmd("+setlaser","CreateLaserMine_Progress_b");
register_clcmd("-setlaser","StopCreateLaserMine");
register_clcmd("+dellaser","ReturnLaserMine_Progress");
register_clcmd("-dellaser","StopReturnLaserMine");
register_clcmd("say","say_lasermine");
register_clcmd("buy_lasermine","BuyLasermine");
#if defined BIOHAZARD_SUPPORT
g_LENABLE = register_cvar("bio_ltm","1");
g_LACCESS = register_cvar("bio_ltm_acs","0"); //0 all, 1 admin
g_LMODE = register_cvar("bio_ltm_mode","0"); //0 lasermine, 1 tripmine
g_LAMMO = register_cvar("bio_ltm_ammo","2");
g_LDMG = register_cvar("bio_ltm_dmg","60"); //laser hit dmg
g_LCOST = register_cvar("bio_ltm_cost","2500");
g_LFMONEY = register_cvar("bio_ltm_fragmoney","300");
g_LHEALTH = register_cvar("bio_ltm_health","500");
g_LTMAX = register_cvar("bio_ltm_teammax","10");
g_LRADIUS = register_cvar("bio_ltm_radius","320.0");
g_LRDMG = register_cvar("bio_ltm_rdmg","100"); //radius damage
g_LFF = register_cvar("bio_ltm_ff","0");
g_LCBT = register_cvar("bio_ltm_cbt","ALL");
g_LBUYMODE = register_cvar("bio_ltm_buymode","1");
g_LDELAY = register_cvar("bio_ltm_delay","15");
//g_LTHINK = register_cvar("bio_ltm_think","0.01");
g_LVISIBLE = register_cvar("bio_ltm_line","1");
g_LGLOW = register_cvar("bio_ltm_glow","0");
g_LCBRIGHT = register_cvar("bio_ltm_bright","255"); //laser line brightness.
g_LCLMODE = register_cvar("bio_ltm_color","0"); //0 is team color,1 is green
g_LDMGMODE = register_cvar("bio_ltm_ldmgmode","0"); //0 - frame dmg, 1 - once dmg, 2 - 1 second dmg
g_LDSEC = register_cvar("bio_ltm_ldmgseconds","1"); //mode 2 only, damage / seconds. default 1 (sec)
g_LSTAMMO = register_cvar("bio_ltm_startammo","1");
g_LCMDMODE = register_cvar("bio_ltm_cmdmode","0"); //0 is +USE key, 1 is bind, 2 is each.
#else
g_LENABLE = register_cvar("amx_ltm","1");
g_LACCESS = register_cvar("amx_ltm_acs","0"); //0 all, 1 admin
g_LMODE = register_cvar("amx_ltm_mode","0"); //0 lasermine, 1 tripmine
g_LAMMO = register_cvar("amx_ltm_ammo","2");
g_LDMG = register_cvar("amx_ltm_dmg","60"); //laser hit dmg
g_LCOST = register_cvar("amx_ltm_cost","2500");
g_LFMONEY = register_cvar("amx_ltm_fragmoney","300");
g_LHEALTH = register_cvar("amx_ltm_health","500");
g_LTMAX = register_cvar("amx_ltm_teammax","10");
g_LRADIUS = register_cvar("amx_ltm_radius","320.0");
g_LRDMG = register_cvar("amx_ltm_rdmg","100"); //radius damage
g_LFF = register_cvar("amx_ltm_ff","0");
g_LCBT = register_cvar("amx_ltm_cbt","ALL");
g_LBUYMODE = register_cvar("amx_ltm_buymode","1");
g_LDELAY = register_cvar("amx_ltm_delay","15");
//g_LTHINK = register_cvar("amx_ltm_think","0.01")
g_LVISIBLE = register_cvar("amx_ltm_line","1");
g_LGLOW = register_cvar("amx_ltm_glow","0");
g_LCBRIGHT = register_cvar("amx_ltm_bright","255"); //laser line brightness.
g_LCLMODE = register_cvar("amx_ltm_color","0"); //0 is team color,1 is green
g_LDMGMODE = register_cvar("amx_ltm_ldmgmode","0"); //0 - frame dmg, 1 - once dmg, 2 - 1 second dmg
g_LDSEC = register_cvar("amx_ltm_ldmgseconds","1"); //mode 2 only, damage / seconds. default 1 (sec)
g_LSTAMMO = register_cvar("amx_ltm_startammo","1");
g_LCMDMODE = register_cvar("amx_ltm_cmdmode","0"); //0 is +USE key, 1 is bind, 2 is each.
#endif
register_event("DeathMsg", "DeathEvent", "a");
register_event("CurWeapon", "standing", "be", "1=1");
register_event("ResetHUD", "delaycount", "a");
register_event("ResetHUD", "newround", "b");
register_event("Damage","CutDeploy_onDamage","b");
g_msgDeathMsg = get_user_msgid("DeathMsg");
g_msgScoreInfo = get_user_msgid("ScoreInfo");
g_msgDamage = get_user_msgid("Damage");
g_msgStatusText = get_user_msgid("StatusText");
g_msgMoney = get_user_msgid("Money");
// -- Forward.
register_forward(FM_Think, "ltm_Think" );
register_forward(FM_PlayerPostThink, "ltm_PostThink" );
register_forward(FM_PlayerPreThink, "ltm_PreThink");
}
public plugin_precache()
{
precache_sound(ENT_SOUND1);
precache_sound(ENT_SOUND2);
precache_sound(ENT_SOUND3);
precache_sound(ENT_SOUND4);
precache_sound(ENT_SOUND5);
precache_sound(ENT_SOUND6);
precache_sound(ENT_SOUND7);
precache_model(ENT_MODELS);
beam = precache_model(ENT_SPRITE1);
boom = precache_model(ENT_SPRITE2);
return PLUGIN_CONTINUE;
}
public plugin_modules()
{
require_module("fakemeta");
require_module("cstrike");
//require_module("fun")
}
public plugin_cfg()
{
g_EntMine = engfunc(EngFunc_AllocString,ENT_CLASS_NAME3);
arrayset(g_havemine,0,sizeof(g_havemine));
arrayset(g_deployed,0,sizeof(g_deployed));
g_MaxPL = get_maxplayers();
new file[64]; get_localinfo("amxx_configsdir",file,63);
#if defined BIOHAZARD_SUPPORT
format(file, 63, "%s/bhltm_cvars.cfg", file);
#else
format(file, 63, "%s/ltm_cvars.cfg", file);
#endif
if(file_exists(file)) server_cmd("exec %s", file), server_exec();
}
public delaycount(id)
{
g_dcount[id] = floatround(get_gametime());
}
bool:CheckTime(id)
{
g_nowtime = floatround(get_gametime()) - g_dcount[id];
if(g_nowtime >= get_pcvar_num(g_LDELAY))
return true;
return false;
}
public CreateLaserMine_Progress_b(id)
{
if(get_pcvar_num(g_LCMDMODE) != 0)
CreateLaserMine_Progress(id);
return PLUGIN_HANDLED;
}
public CreateLaserMine_Progress(id)
{
if (!CreateCheck(id))
return PLUGIN_HANDLED;
g_settinglaser[id] = true;
message_begin( MSG_ONE, 108, {0,0,0}, id );
write_byte(1);
write_byte(0);
message_end();
set_task(1.2, "Spawn", (TASK_PLANT + id));
return PLUGIN_HANDLED;
}
public ReturnLaserMine_Progress(id)
{
if (!ReturnCheck(id))
return PLUGIN_HANDLED;
g_settinglaser[id] = true;
message_begin( MSG_ONE, 108, {0,0,0}, id );
write_byte(1);
write_byte(0);
message_end();
set_task(1.2, "ReturnMine", (TASK_RELEASE + id));
return PLUGIN_HANDLED;
}
public StopCreateLaserMine(id)
{
DeleteTask(id);
message_begin(MSG_ONE, 108, {0,0,0}, id);
write_byte(0);
write_byte(0);
message_end();
return PLUGIN_HANDLED;
}
public StopReturnLaserMine(id)
{
DeleteTask(id);
message_begin(MSG_ONE, 108, {0,0,0}, id);
write_byte(0);
write_byte(0);
message_end();
return PLUGIN_HANDLED;
}
public ReturnMine(id)
{
id -= TASK_RELEASE;
new tgt,body,Float:vo[3],Float:to[3];
get_user_aiming(id,tgt,body);
if(!pev_valid(tgt)) return;
pev(id,pev_origin,vo);
pev(tgt,pev_origin,to);
if(get_distance_f(vo,to) > 70.0) return;
new EntityName[32];
pev(tgt, pev_classname, EntityName, 31);
if(!equal(EntityName, ENT_CLASS_NAME)) return;
if(pev(tgt,LASERMINE_OWNER) != id) return;
RemoveEntity(tgt);
g_havemine[id] ++;
g_deployed[id] --;
emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
ShowAmmo(id)
return;
}
public Spawn( id )
{
id -= TASK_PLANT
// motor
new i_Ent = engfunc(EngFunc_CreateNamedEntity,g_EntMine);
if(!i_Ent)
{
client_print(id,print_chat,"[Laesrmine Debug] Can't Create Entity");
return PLUGIN_HANDLED_MAIN;
}
set_pev(i_Ent,pev_classname,ENT_CLASS_NAME);
engfunc(EngFunc_SetModel,i_Ent,ENT_MODELS);
set_pev(i_Ent,pev_solid,SOLID_NOT);
set_pev(i_Ent,pev_movetype,MOVETYPE_FLY);
set_pev(i_Ent,pev_frame,0);
set_pev(i_Ent,pev_body,3);
set_pev(i_Ent,pev_sequence,TRIPMINE_WORLD);
set_pev(i_Ent,pev_framerate,0);
set_pev(i_Ent,pev_takedamage,DAMAGE_YES);
set_pev(i_Ent,pev_dmg,100.0);
set_user_health(i_Ent,get_pcvar_num(g_LHEALTH));
new Float:vOrigin[3];
new Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3],
Float:vTraceEnd[3],Float:vEntAngles[3];
pev( id, pev_origin, vOrigin );
velocity_by_aim( id, 128, vTraceDirection );
xs_vec_add( vTraceDirection, vOrigin, vTraceEnd );
engfunc( EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0 );
new Float:fFraction;
get_tr2( 0, TR_flFraction, fFraction );
// -- We hit something!
if ( fFraction < 1.0 )
{
// -- Save results to be used later.
get_tr2( 0, TR_vecEndPos, vTraceEnd );
get_tr2( 0, TR_vecPlaneNormal, vNormal );
}
xs_vec_mul_scalar( vNormal, 8.0, vNormal );
xs_vec_add( vTraceEnd, vNormal, vNewOrigin );
engfunc(EngFunc_SetSize, i_Ent, Float:{ -4.0, -4.0, -4.0 }, Float:{ 4.0, 4.0, 4.0 } );
engfunc(EngFunc_SetOrigin, i_Ent, vNewOrigin );
// -- Rotate tripmine.
vector_to_angle(vNormal,vEntAngles );
set_pev(i_Ent,pev_angles,vEntAngles );
// -- Calculate laser end origin.
new Float:vBeamEnd[3], Float:vTracedBeamEnd[3];
xs_vec_mul_scalar(vNormal, 8192.0, vNormal );
xs_vec_add( vNewOrigin, vNormal, vBeamEnd );
engfunc( EngFunc_TraceLine, vNewOrigin, vBeamEnd, IGNORE_MONSTERS, -1, 0 );
get_tr2( 0, TR_vecPlaneNormal, vNormal );
get_tr2( 0, TR_vecEndPos, vTracedBeamEnd );
// -- Save results to be used later.
set_pev(i_Ent, LASERMINE_OWNER, id );
set_pev(i_Ent,LASERMINE_BEAMENDPOINT,vTracedBeamEnd);
set_pev(i_Ent,LASERMINE_TEAM,int:cs_get_user_team(id));
new Float:fCurrTime = get_gametime();
set_pev(i_Ent,LASERMINE_POWERUP, fCurrTime + 2.5 );
set_pev(i_Ent,LASERMINE_STEP,POWERUP_THINK);
set_pev(i_Ent,pev_nextthink, fCurrTime + 0.2 );
PlaySound(i_Ent,POWERUP_SOUND );
g_deployed[id]++;
g_havemine[id]--;
DeleteTask(id);
ShowAmmo(id);
return 1;
}
stock TeamDeployedCount(id)
{
//new tid[32];
static i;
static CsTeams:t;t = cs_get_user_team(id);
static cnt;cnt=0;
for(i = 1;i <= g_MaxPL;i++)
{
if(is_user_connected(i))
if(t == cs_get_user_team(i))
cnt += g_deployed[i];
}
return cnt;
}
bool:CheckCanTeam(id)
{
new arg[5],CsTeam:num;
get_pcvar_string(g_LCBT,arg,3);
if(equali(arg,"T"))
{
num = CsTeam:CS_TEAM_T;
}
else if(equali(arg,"CT"))
{
num = CsTeam:CS_TEAM_CT;
}
else if(equali(arg,"ALL"))
{
num = CsTeam:CS_TEAM_UNASSIGNED;
}
else
{
num = CsTeam:CS_TEAM_UNASSIGNED;
}
if(num != CsTeam:CS_TEAM_UNASSIGNED && num != CsTeam:cs_get_user_team(id))
return false;
return true;
}
bool:CanCheck(id,mode)
{
if( !get_pcvar_num( g_LENABLE ) )
{
client_print(id, print_chat, "%s %s",CHATTAG,STR_NOTACTIVE);
return false;
}
if( get_pcvar_num(g_LACCESS) != 0)
if(!(get_user_flags(id) & ADMIN_IMMUNITY))
{
client_print(id, print_chat, "%s %s",CHATTAG,STR_NOACCESS);
return false;
}
if(!pev_user_alive(id)) return false;
#if defined BIOHAZARD_SUPPORT
if(is_user_zombie(id))
{
client_print(id, print_chat, "%s %s",CHATTAG,STR_CBT);
return false;
}
#endif
if (!CheckCanTeam(id))
{
client_print(id, print_chat, "%s %s",CHATTAG,STR_CBT);
return false;
}
if( mode == 0)
{
if(g_havemine[id] <= 0)
{
client_print(id, print_chat, "%s %s",CHATTAG,STR_DONTHAVEMINE);
return false;
}
}
if (mode == 1)
{
if (get_pcvar_num(g_LBUYMODE) == 0)
{
client_print(id, print_chat, "%s %s",CHATTAG,STR_CANTBUY);
return false;
}
if (g_havemine[id] >= get_pcvar_num(g_LAMMO))
{
client_print(id, print_chat, "%s %s",CHATTAG,STR_HAVEMAX);
return false;
}
if (cs_get_user_money(id) < get_pcvar_num(g_LCOST))
{
client_print(id, print_chat, "%s %s%d %s",CHATTAG, STR_NOMONEY,get_pcvar_num(g_LCOST),STR_NEEDED);
return false;
}
}
if(!CheckTime(id))
{
client_print(id,print_chat, "%s %s %d %s",CHATTAG,STR_DELAY,get_pcvar_num(g_LDELAY)-g_nowtime,STR_SECONDS);
return false;
}
return true;
}
bool:ReturnCheck( id )
{
if(!CanCheck(id,-1)) return false;
if(g_havemine[id] + 1 > get_pcvar_num(g_LAMMO)) return false;
new tgt,body,Float:vo[3],Float:to[3];
get_user_aiming(id,tgt,body);
if(!pev_valid(tgt)) return false;
pev(id,pev_origin,vo);
pev(tgt,pev_origin,to);
if(get_distance_f(vo,to) > 70.0) return false;
new EntityName[32];
pev(tgt, pev_classname, EntityName, 31);
if(!equal(EntityName, ENT_CLASS_NAME)) return false;
if(pev(tgt,LASERMINE_OWNER) != id) return false;
return true;
}
bool:CreateCheck( id )
{
if (!CanCheck(id,0)) return false;
if (g_deployed[id] >= get_pcvar_num(g_LAMMO))
{
client_print(id, print_chat, "%s %s",CHATTAG,STR_MAXDEPLOY);
return false;
}
//client_print(id,print_chat,"[Lasermine] your team deployed %d",TeamDeployedCount(id))
if(TeamDeployedCount(id) >= get_pcvar_num(g_LTMAX))
{
client_print(id, print_chat, "%s %s",CHATTAG,STR_MANYPPL);
return false;
}
new Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vOrigin[3];
pev( id, pev_origin, vOrigin );
velocity_by_aim( id, 128, vTraceDirection );
xs_vec_add( vTraceDirection, vOrigin, vTraceEnd );
engfunc( EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0 );
new Float:fFraction,Float:vTraceNormal[3];
get_tr2( 0, TR_flFraction, fFraction );
// -- We hit something!
if ( fFraction < 1.0 )
{
// -- Save results to be used later.
get_tr2( 0, TR_vecEndPos, vTraceEnd );
get_tr2( 0, TR_vecPlaneNormal, vTraceNormal );
//get_tr2( 0, TR_pHit );
return true;
}
client_print(id, print_chat, "%s %s",CHATTAG,STR_PLANTWALL)
DeleteTask(id);
// -- Did not touched something. (not solid)
return false;
}
public ltm_Think( i_Ent )
{
if ( !pev_valid( i_Ent ) )
return FMRES_IGNORED;
new EntityName[32];
pev( i_Ent, pev_classname, EntityName, 31);
if(!get_pcvar_num(g_LENABLE)) return FMRES_IGNORED;
// -- Entity is not a tripmine, ignoring the next...
if ( !equal( EntityName, ENT_CLASS_NAME ) )
return FMRES_IGNORED;
static Float:fCurrTime;
fCurrTime = get_gametime();
switch( pev( i_Ent, LASERMINE_STEP ) )
{
case POWERUP_THINK :
{
new Float:fPowerupTime;
pev( i_Ent, LASERMINE_POWERUP, fPowerupTime );
if( fCurrTime > fPowerupTime )
{
set_pev( i_Ent, pev_solid, SOLID_BBOX );
set_pev( i_Ent, LASERMINE_STEP, BEAMBREAK_THINK );
PlaySound( i_Ent, ACTIVATE_SOUND );
}
if(get_pcvar_num(g_LGLOW)!=0)
{
if(get_pcvar_num(g_LCLMODE)==0)
{
switch (pev(i_Ent,LASERMINE_TEAM))
{
case CS_TEAM_T: set_rendering(i_Ent,kRenderFxGlowShell,255,0,0,kRenderNormal,5);
case CS_TEAM_CT:set_rendering(i_Ent,kRenderFxGlowShell,0,0,255,kRenderNormal,5);
}
}else
{
set_rendering(i_Ent,kRenderFxGlowShell,0,255,0,kRenderNormal,5);
}
}
set_pev( i_Ent, pev_nextthink, fCurrTime + 0.1 );
}
case BEAMBREAK_THINK :
{
static Float:vEnd[3],Float:vOrigin[3];
pev( i_Ent, pev_origin, vOrigin );
pev( i_Ent, LASERMINE_BEAMENDPOINT, vEnd );
static iHit, Float:fFraction;
engfunc( EngFunc_TraceLine, vOrigin, vEnd, DONT_IGNORE_MONSTERS, i_Ent, 0 );
get_tr2( 0, TR_flFraction, fFraction );
iHit = get_tr2( 0, TR_pHit );
// -- Something has passed the laser.
if ( fFraction < 1.0 )
{
// -- Ignoring others tripmines entity.
if(pev_valid(iHit))
{
pev( iHit, pev_classname, EntityName, 31 );
if( !equal( EntityName, ENT_CLASS_NAME ) )
{
set_pev( i_Ent, pev_enemy, iHit );
if(get_pcvar_num(g_LMODE) == MODE_LASERMINE)
CreateLaserDamage(i_Ent,iHit);
else
if(get_pcvar_num(g_LFF) || CsTeams:pev(i_Ent,LASERMINE_TEAM) != cs_get_user_team(iHit))
set_pev( i_Ent, LASERMINE_STEP, EXPLOSE_THINK );
set_pev( i_Ent, pev_nextthink, fCurrTime + random_float( 0.1, 0.3 ) );
}
}
}
if(get_pcvar_num(g_LDMGMODE)!=0)
if(pev(i_Ent,LASERMINE_HITING) != iHit)
set_pev(i_Ent,LASERMINE_HITING,iHit);
// -- Tripmine is still there.
if ( pev_valid( i_Ent ))
{
static Float:fHealth;
pev( i_Ent, pev_health, fHealth );
if( fHealth <= 0.0 || (pev(i_Ent,pev_flags) & FL_KILLME))
{
set_pev( i_Ent, LASERMINE_STEP, EXPLOSE_THINK );
set_pev( i_Ent, pev_nextthink, fCurrTime + random_float( 0.1, 0.3 ) );
}
static Float:fBeamthink;
pev( i_Ent, LASERMINE_BEAMTHINK, fBeamthink );
if( fBeamthink < fCurrTime && get_pcvar_num(g_LVISIBLE))
{
DrawLaser(i_Ent, vOrigin, vEnd );
set_pev( i_Ent, LASERMINE_BEAMTHINK, fCurrTime + 0.1 );
}
set_pev( i_Ent, pev_nextthink, fCurrTime + 0.01 );
}
}
case EXPLOSE_THINK :
{
// -- Stopping entity to think
set_pev( i_Ent, pev_nextthink, 0.0 );
PlaySound( i_Ent, STOP_SOUND );
g_deployed[pev(i_Ent,LASERMINE_OWNER)]--;
CreateExplosion( i_Ent );
CreateDamage(i_Ent,get_pcvar_float(g_LRDMG),get_pcvar_float(g_LRADIUS))
RemoveEntity ( i_Ent );
}
}
return FMRES_IGNORED;
}
PlaySound( i_Ent, i_SoundType )
{
switch ( i_SoundType )
{
case POWERUP_SOUND :
{
emit_sound( i_Ent, CHAN_VOICE, ENT_SOUND1, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
emit_sound( i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, 0, PITCH_NORM );
}
case ACTIVATE_SOUND :
{
emit_sound( i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, 1, 75 );
}
case STOP_SOUND :
{
emit_sound( i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, SND_STOP, PITCH_NORM );
emit_sound( i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, SND_STOP, 75 );
}
}
}
DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3] )
{
new tcolor[3];
new teamid = pev(i_Ent, LASERMINE_TEAM);
if(get_pcvar_num(g_LCLMODE) == 0)
{
switch(teamid){
case 1:{
tcolor[0] = 255;
tcolor[1] = 0;
tcolor[2] = 0;
}
case 2:{
tcolor[0] = 0;
tcolor[1] = 0;
tcolor[2] = 255;
}
}
}else
{
tcolor[0] = 0;
tcolor[1] = 255;
tcolor[2] = 0;
}
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(TE_BEAMPOINTS);
engfunc(EngFunc_WriteCoord,v_Origin[0]);
engfunc(EngFunc_WriteCoord,v_Origin[1]);
engfunc(EngFunc_WriteCoord,v_Origin[2]);
engfunc(EngFunc_WriteCoord,v_EndOrigin[0]); //Random
engfunc(EngFunc_WriteCoord,v_EndOrigin[1]); //Random
engfunc(EngFunc_WriteCoord,v_EndOrigin[2]); //Random
write_short(beam);
write_byte(0);
write_byte(0);
write_byte(1); //Life
write_byte(5); //Width
write_byte(0); //wave
write_byte(tcolor[0]); // r
write_byte(tcolor[1]); // g
write_byte(tcolor[2]); // b
write_byte(get_pcvar_num(g_LCBRIGHT));
write_byte(255);
message_end();
}
/*
CreateDamage(iCurrent,DmgMAX,Float:Radius)
{
new AtkID = pev(iCurrent,LASERMINE_OWNER)// entity_get_int(iCurrent,LASERMINE_OWNER)
new TeamID= pev(iCurrent,LASERMINE_TEAM) //entity_get_int(iCurrent,LASERMINE_INT_TEAM)
new Player = -1;
new Float:distance,dmg;
new Float:tOrigin[3];
new Float:vOrigin[3];
new iHitHP,iHitTeam;
pev(iCurrent,pev_origin,vOrigin);
while((Player = engfunc(EngFunc_FindEntityInSphere, Player, vOrigin, Radius)) != 0)
{
if(is_user_alive(Player))
{
pev(Player,pev_origin,tOrigin)
distance = get_distance_f(vOrigin, tOrigin)
dmg = floatround(DmgMAX - ((DmgMAX / Radius) * distance))
iHitHP = pev_user_health(Player) - dmg
iHitTeam = int:bio_get_user_team(Player)
if(iHitHP <= 0)
{
if(iHitTeam != TeamID)
{
cs_set_user_money(AtkID,cs_get_user_money(AtkID) + get_pcvar_num(g_LFMONEY))
set_score(AtkID,Player,1,iHitHP)
}else
{
if(get_pcvar_num(g_LFF))
{
cs_set_user_money(AtkID,cs_get_user_money(AtkID) - get_pcvar_num(g_LFMONEY))
set_score(AtkID,Player,-1,iHitHP)
}
}
}else
{
if(iHitTeam != TeamID || get_pcvar_num(g_LFF))
{
//set_pev(Player,pev_health,iHitHP)
set_user_health(Player, iHitHP)
message_begin(MSG_ONE_UNRELIABLE, g_msgDamage, {0,0,0}, Player)
write_byte(dmg)
write_byte(dmg)
write_long(DMG_BULLET)
engfunc(EngFunc_WriteCoord,vOrigin[0])
engfunc(EngFunc_WriteCoord,vOrigin[1])
engfunc(EngFunc_WriteCoord,vOrigin[2])
message_end()
}
}
}
Player = engfunc(EngFunc_FindEntityInSphere,Player,vOrigin,Radius)
}
return PLUGIN_CONTINUE
}
*/
CreateDamage(iCurrent,Float:DmgMAX,Float:Radius)
{
// Get given parameters
new Float:vecSrc[3];
pev(iCurrent, pev_origin, vecSrc);
new AtkID =pev(iCurrent,LASERMINE_OWNER);
new TeamID=pev(iCurrent,LASERMINE_TEAM);
new ent = -1;
new Float:tmpdmg = DmgMAX;
new Float:kickback = 0.0;
// Needed for doing some nice calculations :P
new Float:Tabsmin[3], Float:Tabsmax[3];
new Float:vecSpot[3];
new Float:Aabsmin[3], Float:Aabsmax[3];
new Float:vecSee[3];
new trRes;
new Float:flFraction;
new Float:vecEndPos[3];
new Float:distance;
new Float:origin[3], Float:vecPush[3];
new Float:invlen;
new Float:velocity[3];
new iHitHP,iHitTeam;
// Calculate falloff
new Float:falloff;
if (Radius > 0.0)
{
falloff = DmgMAX / Radius;
} else {
falloff = 1.0;
}
// Find monsters and players inside a specifiec radius
while((ent = engfunc(EngFunc_FindEntityInSphere, ent, vecSrc, Radius)) != 0)
{
if(!pev_valid(ent)) continue;
if(!(pev(ent, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER)))
{
// Entity is not a player or monster, ignore it
continue;
}
if(!pev_user_alive(ent)) continue;
// Reset data
kickback = 1.0;
tmpdmg = DmgMAX;
// The following calculations are provided by Orangutanz, THANKS!
// We use absmin and absmax for the most accurate information
pev(ent, pev_absmin, Tabsmin);
pev(ent, pev_absmax, Tabsmax);
xs_vec_add(Tabsmin,Tabsmax,Tabsmin);
xs_vec_mul_scalar(Tabsmin,0.5,vecSpot);
pev(iCurrent, pev_absmin, Aabsmin);
pev(iCurrent, pev_absmax, Aabsmax);
xs_vec_add(Aabsmin,Aabsmax,Aabsmin);
xs_vec_mul_scalar(Aabsmin,0.5,vecSee);
engfunc(EngFunc_TraceLine, vecSee, vecSpot, 0, iCurrent, trRes);
get_tr2(trRes, TR_flFraction, flFraction);
// Explosion can 'see' this entity, so hurt them! (or impact through objects has been enabled xD)
if (flFraction >= 0.9 || get_tr2(trRes, TR_pHit) == ent)
{
// Work out the distance between impact and entity
get_tr2(trRes, TR_vecEndPos, vecEndPos);
distance = get_distance_f(vecSrc, vecEndPos) * falloff;
tmpdmg -= distance;
if(tmpdmg < 0.0)
tmpdmg = 0.0;
// Kickback Effect
if(kickback != 0.0)
{
xs_vec_sub(vecSpot,vecSee,origin);
invlen = 1.0/get_distance_f(vecSpot, vecSee);
xs_vec_mul_scalar(origin,invlen,vecPush);
pev(ent, pev_velocity, velocity)
xs_vec_mul_scalar(vecPush,tmpdmg,vecPush);
xs_vec_mul_scalar(vecPush,kickback,vecPush);
xs_vec_add(velocity,vecPush,velocity);
if(tmpdmg < 60.0)
{
xs_vec_mul_scalar(velocity,12.0,velocity);
} else {
xs_vec_mul_scalar(velocity,4.0,velocity);
}
if(velocity[0] != 0.0 || velocity[1] != 0.0 || velocity[2] != 0.0)
{
// There's some movement todo :)
set_pev(ent, pev_velocity, velocity)
}
}
iHitHP = pev_user_health(ent) - floatround(tmpdmg)
iHitTeam = int:cs_get_user_team(ent)
if(iHitHP <= 0)
{
if(iHitTeam != TeamID)
{
cs_set_user_money(AtkID,cs_get_user_money(AtkID) + get_pcvar_num(g_LFMONEY))
set_score(AtkID,ent,1,iHitHP)
}else
{
if(get_pcvar_num(g_LFF))
{
cs_set_user_money(AtkID,cs_get_user_money(AtkID) - get_pcvar_num(g_LFMONEY))
set_score(AtkID,ent,-1,iHitHP)
}
}
}else
{
if(iHitTeam != TeamID || get_pcvar_num(g_LFF))
{
//set_pev(Player,pev_health,iHitHP)
set_user_health(ent, iHitHP)
engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},ent);
write_byte(floatround(tmpdmg))
write_byte(floatround(tmpdmg))
write_long(DMG_BULLET)
engfunc(EngFunc_WriteCoord,vecSrc[0])
engfunc(EngFunc_WriteCoord,vecSrc[1])
engfunc(EngFunc_WriteCoord,vecSrc[2])
message_end()
}
}
}
}
return
}
bool:pev_user_alive(ent)
{
new deadflag = pev(ent,pev_deadflag);
if(deadflag != DEAD_NO)
return false;
return true;
}
CreateExplosion(iCurrent)
{
new Float:vOrigin[3];
pev(iCurrent,pev_origin,vOrigin);
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(99); //99 = KillBeam
write_short(iCurrent);
message_end();
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0);
write_byte(TE_EXPLOSION);
engfunc(EngFunc_WriteCoord,vOrigin[0]);
engfunc(EngFunc_WriteCoord,vOrigin[1]);
engfunc(EngFunc_WriteCoord,vOrigin[2]);
write_short(boom);
write_byte(30);
write_byte(15);
write_byte(0);
message_end();
}
CreateLaserDamage(iCurrent,isHit)
{
if(isHit < 0 ) return PLUGIN_CONTINUE
switch(get_pcvar_num(g_LDMGMODE))
{
case 1:
{
if(pev(iCurrent,LASERMINE_HITING) == isHit)
return PLUGIN_CONTINUE
}
case 2:
{
if(pev(iCurrent,LASERMINE_HITING) == isHit)
{
static Float:cnt
static now,htime;now = floatround(get_gametime())
pev(iCurrent,LASERMINE_COUNT,cnt)
htime = floatround(cnt)
if(now - htime < get_pcvar_num(g_LDSEC))
{
return PLUGIN_CONTINUE;
}else{
set_pev(iCurrent,LASERMINE_COUNT,get_gametime())
}
}else
{
set_pev(iCurrent,LASERMINE_COUNT,get_gametime())
}
}
}
new Float:vOrigin[3],Float:vEnd[3]
pev(iCurrent,pev_origin,vOrigin)
pev(iCurrent,pev_vuser1,vEnd)
new teamid = pev(iCurrent, LASERMINE_TEAM)
new szClassName[32]
new Alive,God
new iHitTeam,iHitHP,id
new hitscore
szClassName[0] = '^0'
pev(isHit,pev_classname,szClassName,32)
if((pev(isHit, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER)))
{
Alive = pev_user_alive(isHit)
God = get_user_godmode(isHit)
if(!Alive || God) return PLUGIN_CONTINUE
iHitTeam = int:cs_get_user_team(isHit)
iHitHP = pev_user_health(isHit) - get_pcvar_num(g_LDMG)
id = pev(iCurrent,LASERMINE_OWNER)//, szNetName[32]
if(iHitHP <= 0)
{
if(iHitTeam != teamid)
{
emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM )
hitscore = 1
cs_set_user_money(id,cs_get_user_money(id) + get_pcvar_num(g_LFMONEY))
set_score(id,isHit,hitscore,iHitHP)
}else
{
if(get_pcvar_num(g_LFF))
{
emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM )
hitscore = -1
cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(g_LFMONEY))
set_score(id,isHit,hitscore,iHitHP)
}
}
}else if(iHitTeam != teamid || get_pcvar_num(g_LFF))
{
emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM )
set_user_health(isHit,iHitHP)
set_pev(iCurrent,LASERMINE_HITING,isHit);
engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},isHit);
write_byte(get_pcvar_num(g_LDMG))
write_byte(get_pcvar_num(g_LDMG))
write_long(DMG_BULLET)
engfunc(EngFunc_WriteCoord,vOrigin[0])
engfunc(EngFunc_WriteCoord,vOrigin[1])
engfunc(EngFunc_WriteCoord,vOrigin[2])
message_end()
}
}else if(equal(szClassName, ENT_CLASS_NAME3))
{
new hl;
hl = pev_user_health(isHit);
set_user_health(isHit,hl-get_pcvar_num(g_LDMG));
}
return PLUGIN_CONTINUE
}
stock pev_user_health(id)
{
new Float:health
pev(id,pev_health,health)
return floatround(health)
}
stock set_user_health(id,health)
{
health > 0 ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id);
}
stock get_user_godmode(index) {
new Float:val
pev(index, pev_takedamage, val)
return (val == DAMAGE_NO)
}
stock set_user_frags(index, frags)
{
set_pev(index, pev_frags, float(frags))
return 1
}
stock pev_user_frags(index)
{
new Float:frags;
pev(index,pev_frags,frags);
return floatround(frags);
}
set_score(id,target,hitscore,HP){
new idfrags = pev_user_frags(id) + hitscore// get_user_frags(id) + hitscore
set_user_frags(id,idfrags)
//set_user_frags(id, idfrags)
//entity_set_float(id, EV_FL_frags, float(idfrags))
new tarfrags = pev_user_frags(target) + 1 //get_user_frags(target) + 1
set_user_frags(target,tarfrags)
//set_user_frags(target,tarfrags)
//entity_set_float(target, EV_FL_frags, float(tarfrags))
new idteam = int:cs_get_user_team(id)
new iddeaths = cs_get_user_deaths(id)
message_begin(MSG_ALL, g_msgDeathMsg, {0, 0, 0} ,0)
write_byte(id)
write_byte(target)
write_byte(0)
write_string(ENT_CLASS_NAME)
message_end()
message_begin(MSG_ALL, g_msgScoreInfo)
write_byte(id)
write_short(idfrags)
write_short(iddeaths)
write_short(0)
write_short(idteam)
message_end()
set_msg_block(g_msgDeathMsg, BLOCK_ONCE)
//entity_set_float(target, EV_FL_health,float(HP))
set_user_health(target, HP)
//set_pev(target,pev_health,HP)
}
public BuyLasermine(id)
{
if( !CanCheck(id,1) ) return PLUGIN_CONTINUE
cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(g_LCOST))
g_havemine[id]++;
client_print(id, print_chat, "%s %s",CHATTAG,STR_BOUGHT)
emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
ShowAmmo(id)
return PLUGIN_HANDLED
}
ShowAmmo(id)
{
new ammo[51]
formatex(ammo, 50, "%s %i/%i",STR_STATE, g_havemine[id],get_pcvar_num(g_LAMMO))
message_begin(MSG_ONE, g_msgStatusText, {0,0,0}, id)
write_byte(0)
write_string(ammo)
message_end()
}
public showInfo(id)
{
client_print(id, print_chat, STR_REF)
}
public say_lasermine(id){
new said[32]
read_argv(1,said,31);
if( !get_pcvar_num( g_LENABLE ) ){
// client_print(id, print_chat, "%s Lasermines are not currently active.",CHATTAG)
return PLUGIN_CONTINUE
}
if (equali(said,"/buy lasermine")||equali(said,"/lm")){
BuyLasermine(id)
}else if (equali(said, "lasermine") || equali(said, "/lasermine")){
const SIZE = 1024
new msg[SIZE+1],len = 0;
len += formatex(msg[len], SIZE - len, "<html><body>")
len += formatex(msg[len], SIZE - len, "<p><b>LaserMine</b></p><br/><br/>")
len += formatex(msg[len], SIZE - len, "<p>You can be setting the mine on the wall.</p><br/>")
len += formatex(msg[len], SIZE - len, "<p>That laser will give what touched it damage.</p><br/><br/>")
len += formatex(msg[len], SIZE - len, "<p><b>LaserMine Commands</b></p><br/><br/>")
len += formatex(msg[len], SIZE - len, "<p><b>Say /buy lasermine</b> or <b>Say /lm</b> //buying lasermine<br/>")
len += formatex(msg[len], SIZE - len, "<b>buy_lasermine</b> //bind ^"F2^" buy_lasermine : using F2 buying lasermine<br/>")
len += formatex(msg[len], SIZE - len, "<b>+setlaser</b> //bind mouse3 +setlaser : using mouse3 set lasermine on wall<br/>")
len += formatex(msg[len], SIZE - len, "</body></html>")
show_motd(id, msg, "Lasermine Entity help")
return PLUGIN_CONTINUE
}
else if (containi(said, "laser") != -1) {
showInfo(id)
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public standing(id)
{
if (!g_settinglaser[id])
return PLUGIN_CONTINUE
set_pev(id, pev_maxspeed, 1.0)
// ShowAmmo(id)
return PLUGIN_CONTINUE
}
public ltm_PostThink(id)
{
if (!g_settinglaser[id] && plsetting[id]){
resetspeed(id)
}
else if (g_settinglaser[id] && !plsetting[id]) {
pev(id, pev_maxspeed,plspeed[id])
set_pev(id, pev_maxspeed, 1.0)
}
plsetting[id] = g_settinglaser[id]
return FMRES_IGNORED
}
public ltm_PreThink(id)
{
if (!pev_user_alive(id) || g_settinglaser[id] == true || is_user_bot(id) || get_pcvar_num(g_LCMDMODE) == 1)
return FMRES_IGNORED;
if(pev(id, pev_button ) & IN_USE && !(pev(id, pev_oldbuttons ) & IN_USE ))
//client_print(id,print_chat,"test");
CreateLaserMine_Progress(id)
return FMRES_IGNORED;
}
resetspeed(id)
{
set_pev(id, pev_maxspeed, plspeed[id])
}
public client_putinserver(id){
g_deployed[id] = 0;
g_havemine[id] = 0;
DeleteTask(id);
return PLUGIN_CONTINUE
}
public client_disconnect(id){
if(!get_pcvar_num( g_LENABLE ))
return PLUGIN_CONTINUE
DeleteTask(id);
RemoveAllTripmines(id);
return PLUGIN_CONTINUE
}
public newround(id){
if(!get_pcvar_num( g_LENABLE ))
return PLUGIN_CONTINUE
pev(id, pev_maxspeed,plspeed[id])
DeleteTask(id);
RemoveAllTripmines(id);
delaycount(id);
SetStartAmmo(id);
return PLUGIN_CONTINUE
}
public DeathEvent(){
if(!get_pcvar_num( g_LENABLE ))
return PLUGIN_CONTINUE
new id = read_data(2)
if(is_user_connected(id)) DeleteTask(id);
return PLUGIN_CONTINUE
}
public RemoveAllTripmines( i_Owner )
{
new iEnt = g_MaxPL + 1;
new clsname[32];
while( ( iEnt = engfunc( EngFunc_FindEntityByString, iEnt, "classname", ENT_CLASS_NAME ) ) )
{
if ( i_Owner )
{
if( pev( iEnt, LASERMINE_OWNER ) != i_Owner )
continue;
clsname[0] = '^0'
pev( iEnt, pev_classname, clsname, sizeof(clsname)-1 );
if ( equali( clsname, ENT_CLASS_NAME ) )
{
PlaySound( iEnt, STOP_SOUND );
RemoveEntity( iEnt );
}
}
else
set_pev( iEnt, pev_flags, FL_KILLME );
}
g_deployed[i_Owner]=0;
}
SetStartAmmo(id)
{
new stammo = get_pcvar_num(g_LSTAMMO);
if(stammo <= 0) return PLUGIN_CONTINUE;
g_havemine[id] = (g_havemine[id] <= stammo) ? stammo : g_havemine[id];
return PLUGIN_CONTINUE;
}
public CutDeploy_onDamage(id)
{
if(get_user_health(id) < 1)
DeleteTask(id);
}
#if defined BIOHAZARD_SUPPORT
public event_infect2(id)
{
DeleteTask(id);
return PLUGIN_CONTINUE
}
#endif
DeleteTask(id)
{
if (task_exists((TASK_PLANT + id)))
{
remove_task((TASK_PLANT + id))
}
if (task_exists((TASK_RELEASE + id)))
{
remove_task((TASK_RELEASE + id))
}
g_settinglaser[id] = false
return PLUGIN_CONTINUE;
}
stock set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
{
static Float:RenderColor[3];
RenderColor[0] = float(r);
RenderColor[1] = float(g);
RenderColor[2] = float(b);
set_pev(entity, pev_renderfx, fx);
set_pev(entity, pev_rendercolor, RenderColor);
set_pev(entity, pev_rendermode, render);
set_pev(entity, pev_renderamt, float(amount));
return 1
}
// Gets offset data
get_offset_value(id, type)
{
new key = -1;
switch(type)
{
case OFFSET_TEAM: key = OFFSET_TEAM;
case OFFSET_MONEY:
{
#if defined UL_MONEY_SUPPORT
return cs_get_user_money_ul(id);
#else
key = OFFSET_MONEY;
#endif
}
case OFFSET_DEATH: key = OFFSET_DEATH;
}
if(key != -1)
{
if(is_amd64_server()) key += 25;
return get_pdata_int(id, key);
}
return -1;
}
// Sets offset data
set_offset_value(id, type, value)
{
new key = -1;
switch(type)
{
case OFFSET_TEAM: key = OFFSET_TEAM;
case OFFSET_MONEY:
{
#if defined UL_MONEY_SUPPORT
return cs_set_user_money_ul(id, value);
#else
key = OFFSET_MONEY;
// Send Money message to update player's HUD
message_begin(MSG_ONE_UNRELIABLE, g_msgMoney, {0,0,0}, id);
write_long(value);
write_byte(1); // Flash (difference between new and old money)
message_end();
#endif
}
case OFFSET_DEATH: key = OFFSET_DEATH;
}
if(key != -1)
{
if(is_amd64_server()) key += 25;
set_pdata_int(id, key, value);
}
return PLUGIN_CONTINUE;
}
Rase Human New
Descriere :[/b] : Acest plugin este unul de rase pentru Human , anume 5 rase cu skinuri diferite , si cu skinuri de maini diferite , dar nu in ultimul rand si puteri diferite (gravity , speed , damage , invizibility , vip cu toate atributiile)
Autor : : sPuF? aka Askhanar
Cod: Selectaţi tot
#include <amxmodx>
#include <cstrike>
#include <engine>
#include <fun>
#include <hamsandwich>
#pragma semicolon 1
#define FLASH_SPEED 350.0 // viteza care o are Flash
#define HULK_GRAVITY 0.75 // gravitatea setata lui hulk ( 1.0 = 800 )
#define PREDATOR_MULTIPLY 1.8 // damage facut inmultit cu 1.5 sau cat pui.
#define ELF_INVISIBILITY 76 // ( 0 - 255 ) 2.55 este aproximativ 1% deci 76 vine cam 30% vizibil
#define PLUGIN "Plugin Nou"
#define VERSION "1.0"
new const Models[ 6 ][ ] =
{
"", //Null
"kaili", //Flash
"grafff", //Hulk
"termi", //Predator
"elfzoor", //Elf
"vip_skin_aaa" //Vip
};
new const kModels[ 6 ][ ] =
{
"", //Null
"models/v_flasher.mdl", //Flash
"models/v_grafff.mdl", //Hulk
"models/v_termiii.mdl", //Predator
"models/v_elfwow.mdl", //Elf
"models/v_viaiiipi.mdl" //Vip
};
new const MenuName[ ] = " \wRase \rHuman^n";
new const NumeSite[ ] = "\yRase Human";
new bool:UserIsFlash[ 33 ];
new bool:UserIsHulk[ 33 ];
new bool:UserIsPredator[ 33 ];
new bool:UserIsElf[ 33 ];
new bool:UserIsVIp[ 33 ];
new bool:UserChoosed[ 33 ];
public plugin_precache( )
{
new ModelPath[ 64 ];
for( new i = 1; i < 6; i++ )
{
formatex( ModelPath, sizeof ( ModelPath ) -1, "models/player/%s/%s.mdl", Models[ i ], Models[ i ] );
precache_model( ModelPath );
}
for( new i = 1; i < 6; i++ )
{
precache_model( kModels[ i ] );
}
}
public plugin_cfg( ) set_cvar_float( "sv_maxspeed", FLASH_SPEED );
public plugin_init( )
{
register_plugin( PLUGIN, VERSION, "Askhanar" );
register_clcmd( "say /race", "sayRace" );
RegisterHam( Ham_Spawn, "player", "Ham_PlayerSpawnPost", true );
RegisterHam( Ham_TakeDamage, "player", "Ham_PlayerTakeDamage", false );
register_event( "CurWeapon", "evCurWeapon", "be", "1=1" );
register_event( "HLTV", "evHookRoundStart", "a", "1=0", "2=0" );
}
public client_connect(id)
{
SetCl_Settings( id , 0 );
UserIsFlash[ id ] = false;
UserIsHulk[ id ] = false;
UserIsPredator[ id ] = false;
UserIsElf[ id ] = false;
UserIsVIp[ id ] = false;
UserChoosed[ id ] = false;
}
public client_disconnect(id)
{
SetCl_Settings( id, 0 );
UserIsFlash[ id ] = false;
UserIsHulk[ id ] = false;
UserIsPredator[ id ] = false;
UserIsElf[ id ] = false;
UserIsVIp[ id ] = false;
UserChoosed[ id ] = false;
}
public sayRace( id )
{
if( UserChoosed[ id ] )
{
client_print( id, print_chat, "* Ti-ai ales deja rasa runda aceasta !" );
return 1;
}
if( cs_get_user_team( id ) == CS_TEAM_CT ) MainMenu( id );
return 0;
}
public Ham_PlayerSpawnPost( id )
{
if( !is_user_alive( id ) || UserChoosed[ id ] ) return HAM_IGNORED;
if( UserChoosed[ id ] )
{
client_print( id, print_chat, "* Ti-ai ales deja rasa runda aceasta !" );
return HAM_IGNORED;
}
ResetUserSettings( id );
if( cs_get_user_team( id ) == CS_TEAM_CT ) MainMenu( id );
cs_reset_user_model( id );
return HAM_IGNORED;
}
public Ham_PlayerTakeDamage( id, iInflictor, iAttacker, Float:flDamage, bitsDamageType )
{
if( !iAttacker || id == iAttacker || !is_user_connected( iAttacker ) || !is_user_connected( id )
|| get_user_team( id ) == get_user_team( iAttacker )
|| !UserIsPredator[ iAttacker ] || !UserIsVIp[ id ] ) return HAM_IGNORED;
SetHamParamFloat( 4, flDamage * PREDATOR_MULTIPLY );
return HAM_IGNORED;
}
public evCurWeapon( id )
{
if( is_user_alive( id ) )
{
if( cs_get_user_team( id ) == CS_TEAM_CT )
{
new clip, ammo, wpnid = get_user_weapon( id, clip, ammo );
if( wpnid == CSW_KNIFE )
{
if( UserIsFlash[ id ] )
{
entity_set_string( id, EV_SZ_viewmodel, kModels[ 1 ] );
}
else if( UserIsHulk[ id ] )
{
entity_set_string( id, EV_SZ_viewmodel, kModels[ 2 ] );
}
else if( UserIsPredator[ id ] )
{
entity_set_string( id, EV_SZ_viewmodel, kModels[ 3 ] );
}
else if( UserIsElf[ id ] )
{
entity_set_string( id, EV_SZ_viewmodel, kModels[ 4 ] );
}
else if( UserIsVIp[ id ] )
{
entity_set_string( id, EV_SZ_viewmodel, kModels[ 5 ] );
}
}
}
}
return 0;
}
public evHookRoundStart( )
{
new iPlayers[ 32 ];
new iPlayersNum;
get_players( iPlayers, iPlayersNum, "ch" );
for( new i = 0 ; i < iPlayersNum ; i++ )
{
UserChoosed[ iPlayers[ i ] ] = false;
}
}
public client_PreThink( id )
{
if( is_user_alive( id ) && is_user_connected( id ) && cs_get_user_team( id ) == CS_TEAM_CT )
{
if( UserIsFlash[ id ] || UserIsVIp[ id ] )
{
set_user_maxspeed( id, FLASH_SPEED );
}
}
}
public MainMenu( id )
{
new menu = menu_create( MenuName, "MainMenuHandler" );
menu_additem( menu, "SpeeD QueeN \r[\yViteza Mare \w+ \yM4a1 \w+ \yDeagle\r]", "1", 0 );
menu_additem( menu, "GraFFeR Boy \r[\yGravitatie \w+ \yAk47 \w+ \yDeagle\r]", "2", 0 );
menu_additem( menu, "TerminaToR \r[\yDamage Ridicat \w+ \yM249 \w+ \yUsp\r]", "3", 0 );
menu_additem( menu, "ELF \r[\yInvizibilitate \w+ \yM4a1 \w+ \yUsp\r]^n", "4", 0 );
menu_additem( menu, "\rV\wi\rp \w[\rGravitatie \y+ \rViteza \y+ \rInvizibilitate \y+ \rDamage Dublu \y+ \rALL WEAPONS\w]", "5", 0 );
menu_setprop( menu, MPROP_EXITNAME, NumeSite );
menu_display( id, menu, 0 );
}
/*=======================================================================================s=P=u=f=?*/
public MainMenuHandler( id, menu, item )
{
if( item == MENU_EXIT )
{
set_task( 0.1, "MainMenu", id );
return 1;
}
if( cs_get_user_team( id ) != CS_TEAM_CT ) return 1;
new data[ 6 ], iName[ 64 ];
new iaccess, callback;
menu_item_getinfo( menu, item, iaccess, data, 5, iName, sizeof ( iName ) -1, callback );
new key = str_to_num( data );
switch( key )
{
case 1:
{
UserChoosed[ id ] = true;
ResetUserSettings( id );
GiveUserPower( id, 1 );
cs_set_user_model( id, Models[ 1 ] );
give_item(id, "weapon_m4a1");
cs_set_user_bpammo ( id, CSW_M4A1, 999);
give_item(id, "weapon_deagle");
cs_set_user_bpammo ( id, CSW_DEAGLE, 999);
engclient_cmd( id, "weapon_knife" );
return 1;
}
case 2:
{
UserChoosed[ id ] = true;
ResetUserSettings( id );
GiveUserPower( id, 2 );
cs_set_user_model( id, Models[ 2 ] );
give_item(id, "weapon_ak47");
cs_set_user_bpammo ( id, CSW_AK47, 999);
give_item(id, "weapon_deagle");
cs_set_user_bpammo ( id, CSW_DEAGLE, 999);
engclient_cmd( id, "weapon_knife" );
return 1;
}
case 3:
{
UserChoosed[ id ] = true;
ResetUserSettings( id );
GiveUserPower( id, 3 );
cs_set_user_model( id, Models[ 3 ] );
give_item(id, "weapon_m249");
cs_set_user_bpammo ( id, CSW_M249, 999);
give_item(id, "weapon_usp");
cs_set_user_bpammo ( id, CSW_USP, 999);
engclient_cmd( id, "weapon_knife" );
return 1;
}
case 4:
{
UserChoosed[ id ] = true;
ResetUserSettings( id );
GiveUserPower( id, 4 );
cs_set_user_model( id, Models[ 4 ] );
give_item(id, "weapon_m4a1");
cs_set_user_bpammo ( id, CSW_M4A1, 999);
give_item(id, "weapon_usp");
cs_set_user_bpammo ( id, CSW_USP, 999);
engclient_cmd( id, "weapon_knife" );
return 1;
}
case 5:
{
if( UserIsVip( id ) )
{
UserChoosed[ id ] = true;
ResetUserSettings( id );
GiveUserPower( id, 5 );
cs_set_user_model( id, Models[ 5 ] );
give_item(id, "weapon_ak47");
cs_set_user_bpammo ( id, CSW_AK47, 999);
give_item(id, "weapon_deagle");
cs_set_user_bpammo ( id, CSW_DEAGLE, 999);
give_item(id, "weapon_m249");
cs_set_user_bpammo ( id, CSW_M249, 999);
give_item(id, "weapon_m4a1");
cs_set_user_bpammo ( id, CSW_M4A1, 999);
give_item(id, "weapon_usp");
cs_set_user_bpammo ( id, CSW_USP, 999);
engclient_cmd( id, "weapon_knife" );
return 1;
}
else
{
MainMenu( id );
return 1;
}
}
}
return 0;
}
public GiveUserPower( id, const Class )
{
switch( Class )
{
case 1:
{
//slow hacking ?:O
SetCl_Settings( id, 1 );
set_user_maxspeed( id, FLASH_SPEED );
UserIsFlash[ id ] = true;
return 1;
}
case 2:
{
set_user_gravity( id, HULK_GRAVITY );
UserIsHulk[ id ] = true;
return 1;
}
case 3:
{
UserIsPredator[ id ] = true;
return 1;
}
case 4:
{
set_user_rendering( id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, ELF_INVISIBILITY );
UserIsElf[ id ] = true;
return 1;
}
case 5:
{
//Il facem Flash
SetCl_Settings( id, 1 );
set_user_maxspeed( id, FLASH_SPEED );
//Il facem Hulk
set_user_gravity( id, HULK_GRAVITY );
//Il facem Predator
//Il facem Elf
set_user_rendering( id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, ELF_INVISIBILITY );
UserIsVIp[ id ] = true;
return 1;
}
}
return 0;
}
public ResetUserSettings( id )
{
if( UserIsFlash[ id ] ) set_user_maxspeed( id, 255.0 );
if( UserIsHulk[ id ] ) set_user_gravity( id, 1.0 );
if( UserIsElf[ id ] ) set_user_rendering( id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0 );
if( UserIsVIp[ id ] )
{
set_user_maxspeed( id, 255.0 );
set_user_gravity( id, 1.0 );
set_user_rendering( id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0 );
}
SetCl_Settings( id, 0 );
UserIsFlash[ id ] = false;
UserIsHulk[ id ] = false;
UserIsPredator[ id ] = false;
UserIsElf[ id ] = false;
UserIsVIp[ id ] = false;
}
public SetCl_Settings( id, const OnOff )
{
if( OnOff > 0 )
{
client_cmd( id, "cl_backspeed %.1f", FLASH_SPEED );
client_cmd( id, "cl_forwardspeed %.1f", FLASH_SPEED );
client_cmd( id, "cl_sidespeed %.1f", FLASH_SPEED );
return 1;
}
client_cmd( id, "cl_backspeed 400" );
client_cmd( id, "cl_forwardspeed 400" );
client_cmd( id, "cl_sidespeed 400" );
return 0;
}
stock bool:UserIsVip( id )
{
if( get_user_flags( id ) & read_flags( "a" ) )
return true;
return false;
}
Credite
Descriere :[/b] : Acest plugin este un fel de shop cu credite , anume are multe iteme gen catarare pe pereti , hp , etc , care le cumperi cu credite , un credit il primesti la un interval de timp prestabilit , iar itemele stau pe tine toata harta !
Autor : : atambo + e t n a d ( editare , rezolvare bug gravity + traducere )
Sma :
Cod: Selectaţi tot
#define VER "1.0.4"
//Amount of credits new players get
#define numnewcredits 4
//Time Per Credit (in seconds)
#define credittime 600
//How much the passive upgrades cost
#define armorcost 1
#define hpcost 999
#define speedcost 1
//#define gravitycost 2
#define stealthcost 1
#define multijumpcost 2
//How much the passive upgrades adds
#define armorperbuy 10
#define hpperbuy 10
#define speedperbuy 20
//eg. 0.05 it will take off 5% of the users gravity
//#define gravityperbuy 0.1
//eg. (stealthperbuy = 60) times (stealthmaxlvl = 3) = 180 // the value must be lower than the defaultstealth
#define defaultstealth 200
#define stealthperbuy 20
//How much the passive upgrades Max Level
#define armormaxlvl 5
#define hpmaxlvl 1
#define speedmaxlvl 5
//#define gravitymaxlvl 5
#define stealthmaxlvl 10
#define multijumpmaxlvl 3
//Item Upgrades
//max items
#define maxitems 6
//max credits spent per map
#define maxcredits 15
//First Aid Regeneration
#define regenerationrate 4.5
// health regeneration points
#define hpregenp 5
// armor regeneration points
#define apregenp 8
// First Aid cost
#define regenerationcost 1
//Battle Aura cost
#define hpscost 1
//Weapon Training cost
#define weapontrainingcost 2
//Jump Module cost
#define jumpmodulecost 1
//Climb Gear cost
#define climbgearcost 1
//Promotion cost
#define promocost 1
//Unlimited Ammo cost
#define unlacost 1
//Stealth Shoe cost
#define sshoecost 1
//C4 Wired Explosives
#define BOMBKILL_RANGE 350
#define wiredc4ecost 15
//E.S.P cost
#define espcost 2
//Laser Pointer
#define lasercost 1
//Super Grenade cost
#define sgrencost 1
//Crowbar cost
#define crowbarcost 1
//Flash Protection
#define flashcost 1
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <cstrike>
#include <fun>
#include <vault>
#define BOMB_TASK 1234
new connecttime[33]
new lastplaytime[33]
new creditsspent[33]
new Armor[33]
new Health[33]
new Speed[33]
//new Gravity[33]
new Stealth[33]
new hpstlr[33]
new regeneration[33]
new weapontraining[33]
new jumpmodule[33]
new climb[33]
new promotion[33]
new gHasuammo[33]
new sshoe[33]
new wired[33]
new esp[33]
new laser[33]
new sgrenade[33]
new crowbar[33]
new flash[33]
new multijump[33]
new jumpnum[33]
new itemcap[33]
new bool:dojump[33] = false
new bool:speed = true
new hudmsg[512]
new smoke, white, fire
public plugin_init()
{
register_plugin("Credit Mod", VER, "atambo")
register_cvar("amx_upgrades", "1")
register_menu("Main Upgrades Menu", 1023, "MainMenuCommand")
register_menu("Passive Upgrade Menu", 1023, "actionMenu")
register_menu("Item Upgrade Menu", 1023, "EUAMenu")
register_menu("Item 2 Upgrade Menu", 1023, "EUA2Menu")
register_clcmd("say", "handlesay")
register_clcmd("say_team", "handlesay")
register_clcmd("upgrade", "MainUpgradesMenu")
register_concmd("amx_querycredits","queryall",ADMIN_CVAR," -displays <name> <credits>")
register_concmd("amx_givecredits","givecredit",ADMIN_BAN," <name or #userid> <credits>")
register_concmd("amx_removecredits","removecredit",ADMIN_BAN," <name or #userid> <credits>")
register_event("ResetHUD","newRound","be")
register_event("StatusValue","show_status","bd","1=2")
register_event("DeathMsg", "death_event", "a")
register_event("CurWeapon","update","be","1=1")
register_event("Damage", "Event_Damage", "be", "2!0")
register_event("ScreenFade","flashcheck","be","4=255","5=255","6=255","7>199")
server_cmd("sv_maxspeed 1500")
}
public client_connected_msg(id)
{
client_print(id, print_chat, "[Credite] Acest server foloseste CREDITE , configurat de e t n a d .", VER)
client_print(id, print_chat, "Pentru a cumpara apasa pe B sau scrie /buy in chat.", VER)
}
public client_putinserver(id)
{
if(get_cvar_num("amx_upgrades") == 1)
set_task(20.0, "client_connected_msg", id)
}
public flashcheck(id)
{
if(flash[id] > 0)
{
message_begin(MSG_ONE,get_user_msgid("ScreenFade"),{0,0,0},id)
write_short(~0)
write_short(~0)
write_short(1<<12)
write_byte(0)
write_byte(0)
write_byte(0)
write_byte(0)
message_end()
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public newRound(id)
{
if(get_cvar_num("amx_upgrades") == 0)
{
itemcap[id] = 0
Armor[id] = 0
Health[id] = 0
Speed[id] = 0
//Gravity[id] = 0
Stealth[id] = 0
hpstlr[id] = 0
regeneration[id] = 0
weapontraining[id] = 0
jumpmodule[id] = 0
climb[id] = 0
promotion[id] = 0
gHasuammo[id] = 0
sshoe[id] = 0
wired[id] = 0
esp[id] = 0
laser[id] = 0
sgrenade[id] = 0
crowbar[id] = 0
creditsspent[id] = 0
flash[id] = 0
jumpnum[id] = 0
multijump[id] = 0
set_user_footsteps(id, 0)
set_user_rendering(id,kRenderFxNone,0,0,0,kRenderNormal,0)
return PLUGIN_CONTINUE
}
else
{
if(is_user_alive(id))
{
if(Armor[id] > 0)
{
new iap = (Armor[id] * armorperbuy)
set_user_armor(id, 100 + iap)
}
if(Health[id] > 0)
{
new ihp = (Health[id] * hpperbuy)
set_user_health(id, 100 + ihp)
}
if(promotion[id] > 0)
cs_set_user_money(id, cs_get_user_money(id) * 2, 1)
if(esp[id] > 0)
set_task(3.0, "esploop", id, "", 0, "b")
if(climb[id] > 0)
set_task(0.1, "cwall", id, "", 0, "b")
if(regeneration[id] > 0)
firstaid(id)
if(sgrenade[id] > 0)
{
sgrenade[id] = 0
itemcap[id]--
}
if(wired[id] > 0)
{
wired[id] = 0
itemcap[id]--
}
}
show_all_upgrades(id)
speed = false
set_task(get_cvar_float("mp_freezetime"), "allow_speed", 0)
}
return PLUGIN_CONTINUE
}
public show_status(id)
{
if(get_cvar_num("amx_upgrades") != 1)
return PLUGIN_CONTINUE
new target = read_data(2)
if(target != id && target != 0)
{
new name[32]
get_user_name(target, name,31)
new len = format(hudmsg, 511, "%s's^nPassive Upgrades:^n", name)
len += format(hudmsg[len], 511-len, "*Armor %d/%d^n*Health %d/%d^n*Speed %d/%d^n*Stealth %d/%d^n*MultiJump %d/%d^n", Armor[target], armormaxlvl, Health[target], hpmaxlvl, Speed[target], speedmaxlvl, Stealth[target], stealthmaxlvl, multijump[target], multijumpmaxlvl)
len += format(hudmsg[len], 511-len, "^nItem Upgrades:^n")
if(hpstlr[target] > 0) len += format(hudmsg[len], 511-len, "Battle Aura^n")
if(regeneration[target] > 0) len += format(hudmsg[len], 511-len, "First Aid^n")
if(weapontraining[target] > 0) len += format(hudmsg[len], 511-len, "Weapon Training^n")
if(jumpmodule[target] > 0) len += format(hudmsg[len], 511-len, "Jump Module^n")
if(climb[target] > 0) len += format(hudmsg[len], 511-len, "Climbing Gear^n")
if(promotion[target] > 0) len += format(hudmsg[len], 511-len, "Promotion^n")
if(gHasuammo[target] > 0) len += format(hudmsg[len], 511-len, "Unlimited Ammo^n")
if(sshoe[target] > 0) len += format(hudmsg[len], 511-len, "Stealth Shoes^n")
if(wired[target] > 0) len += format(hudmsg[len], 511-len, "Wired C4 Explosive^n")
if(esp[target] > 0) len += format(hudmsg[len], 511-len, "E.S.P^n")
if(laser[target] > 0) len += format(hudmsg[len], 511-len, "Laser Pointer^n")
if(sgrenade[target] > 0) len += format(hudmsg[len], 511-len, "Super Grenade^n")
if(crowbar[target] > 0) len += format(hudmsg[len], 511-len, "Crowbar^n")
if(flash[target] > 0) len += format(hudmsg[len], 511-len, "Flash Protection^n")
len += format(hudmsg[len], 511-len, "^nCredits: %i",connecttime[target]/credittime)
set_hudmessage(255, 0, 255, 0.0, 0.2, 0, 6.0, 6.0, 0.5, 0.15, 1)
show_hudmessage(id, hudmsg)
}
return PLUGIN_CONTINUE
}
public show_all_upgrades(id)
{
new len = format(hudmsg, 511, "Passive Upgrades:^n")
len += format(hudmsg[len], 511-len, "*Armor %d/%d^n*Health %d/%d^n*Speed %d/%d^n*Stealth %d/%d^n*MultiJump %d/%d^n", Armor[id], armormaxlvl, Health[id], hpmaxlvl, Speed[id], speedmaxlvl, Stealth[id], stealthmaxlvl, multijump[id], multijumpmaxlvl)
len += format(hudmsg[len], 511-len, "^nItem Upgrades:^n")
if(hpstlr[id] > 0) len += format(hudmsg[len], 511-len, "Battle Aura^n")
if(regeneration[id] > 0) len += format(hudmsg[len], 511-len, "First Aid^n")
if(weapontraining[id] > 0) len += format(hudmsg[len], 511-len, "Weapon Training^n")
if(jumpmodule[id] > 0) len += format(hudmsg[len], 511-len, "Jump Module^n")
if(climb[id] > 0) len += format(hudmsg[len], 511-len, "Climbing Gear^n")
if(promotion[id] > 0) len += format(hudmsg[len], 511-len, "Promotion^n")
if(gHasuammo[id] > 0) len += format(hudmsg[len], 511-len, "Unlimited Ammo^n")
if(sshoe[id] > 0) len += format(hudmsg[len], 511-len, "Stealth Shoes^n")
if(wired[id] > 0) len += format(hudmsg[len], 511-len, "Wired C4 Explosive^n")
if(esp[id] > 0) len += format(hudmsg[len], 511-len, "E.S.P^n")
if(laser[id] > 0) len += format(hudmsg[len], 511-len, "Laser Pointer^n")
if(sgrenade[id] > 0) len += format(hudmsg[len], 511-len, "Super Grenade^n")
if(crowbar[id] > 0) len += format(hudmsg[len], 511-len, "Crowbar^n")
if(flash[id] > 0) len += format(hudmsg[len], 511-len, "Flash Protection^n")
len += format(hudmsg[len], 511-len, "^nCredits: %i",connecttime[id]/credittime)
set_hudmessage(255, 0, 255, 0.0, 0.1, 0, 6.0, 6.0, 0.5, 0.15, 1)
show_hudmessage(id, hudmsg)
}
public show_upgrades(id)
{
new len = format(hudmsg, 511, "Passive Upgrades:^n")
len += format(hudmsg[len], 511-len, "*Armor %d/%d^n*Health %d/%d^n*Speed %d/%d^n*Stealth %d/%d^n*MultiJump %d/%d", Armor[id], armormaxlvl, Health[id], hpmaxlvl, Speed[id], speedmaxlvl, Stealth[id], stealthmaxlvl, multijump[id], multijumpmaxlvl)
set_hudmessage(255, 0, 255, 0.0, 0.1, 0, 6.0, 6.0, 0.5, 0.15, 1)
show_hudmessage(id, hudmsg)
}
public show_iupgrades(id)
{
new len = format(hudmsg, 511, "Item Upgrades:^n")
if(hpstlr[id] > 0) len += format(hudmsg[len], 511-len, "Battle Aura^n")
if(regeneration[id] > 0) len += format(hudmsg[len], 511-len, "First Aid^n")
if(weapontraining[id] > 0) len += format(hudmsg[len], 511-len, "Weapon Training^n")
if(jumpmodule[id] > 0) len += format(hudmsg[len], 511-len, "Jump Module^n")
if(climb[id] > 0) len += format(hudmsg[len], 511-len, "Climbing Gear^n")
if(promotion[id] > 0) len += format(hudmsg[len], 511-len, "Promotion^n")
if(gHasuammo[id] > 0) len += format(hudmsg[len], 511-len, "Unlimited Ammo^n")
if(sshoe[id] > 0) len += format(hudmsg[len], 511-len, "Stealth Shoes^n")
if(wired[id] > 0) len += format(hudmsg[len], 511-len, "Wired C4 Explosive^n")
if(esp[id] > 0) len += format(hudmsg[len], 511-len, "E.S.P^n")
if(laser[id] > 0) len += format(hudmsg[len], 511-len, "Laser Pointer^n")
if(sgrenade[id] > 0) len += format(hudmsg[len], 511-len, "Super Grenade^n")
if(crowbar[id] > 0) len += format(hudmsg[len], 511-len, "Crowbar^n")
if(flash[id] > 0) len += format(hudmsg[len], 511-len, "Flash Protection^n")
set_hudmessage(255, 0, 255, 0.0, 0.1, 0, 6.0, 6.0, 0.5, 0.15, 1)
show_hudmessage(id, hudmsg)
}
public allow_speed()
{
speed = true
return PLUGIN_HANDLED
}
public death_event()
{
new id = read_data(2)
new enemy = read_data(1)
remove_task(id)
if(wired[id] > 0)
{
wired[id] = 0
itemcap[id]--
}
if(sgrenade[enemy] > 0)
{
sgrenade[enemy] = 0
itemcap[enemy]--
}
if(task_exists(BOMB_TASK + id))
remove_task(BOMB_TASK + id)
if(promotion[enemy] > 0)
cs_set_user_money(enemy, cs_get_user_money(enemy) + 300, 1)
return PLUGIN_CONTINUE
}
public client_disconnect(id)
{
Armor[id] = 0
Health[id] = 0
Speed[id] = 0
//Gravity[id] = 0
Stealth[id] = 0
hpstlr[id] = 0
regeneration[id] = 0
weapontraining[id] = 0
jumpmodule[id] = 0
climb[id] = 0
promotion[id] = 0
gHasuammo[id] = 0
sshoe[id] = 0
wired[id] = 0
esp[id] = 0
laser[id] = 0
sgrenade[id] = 0
crowbar[id] = 0
itemcap[id] = 0
creditsspent[id] = 0
lastplaytime[id] = 0
flash[id] = 0
jumpnum[id] = 0
multijump[id] = 0
remove_task(id)
new authid[32]
new playtime = (get_user_time(id) - lastplaytime[id])
get_user_authid(id,authid,31)
new tmp_vault_time,vault_time[21]
get_vaultdata(authid,vault_time,20)
tmp_vault_time = str_to_num(vault_time)
tmp_vault_time += playtime
num_to_str(tmp_vault_time,vault_time,20)
set_vaultdata(authid,vault_time)
return PLUGIN_CONTINUE
}
public handlesay(id)
{
new arg[64], arg1[32], arg2[32]
read_args(arg,63)
remove_quotes(arg)
strtok(arg,arg1,255,arg2,255,' ',1)
trim(arg2)
if(arg1[0] == '/')
{
if(equali(arg1, "/buy") == 1 || equali(arg1, "/shop") == 1 || equali(arg1, "/upgrade") == 1)
{
MainUpgradesMenu(id)
return PLUGIN_CONTINUE
}
if(equali(arg1, "/credite") == 1 || equali(arg1, "/credit") == 1)
{
new authid[32]
new playtime = (get_user_time(id) - lastplaytime[id])
lastplaytime[id] = get_user_time(id)
get_user_authid(id,authid,31)
new tmp_vault_time,vault_time[21]
get_vaultdata(authid,vault_time,20)
tmp_vault_time = str_to_num(vault_time)
tmp_vault_time += playtime
connecttime[id] = tmp_vault_time
num_to_str(tmp_vault_time,vault_time,20)
set_vaultdata(authid,vault_time)
new tmp_minutes = floatround(float(connecttime[id]/60),floatround_floor)
new minutes = tmp_minutes % (credittime/60)
client_print(id,print_chat,"Ai %i credite (in %i minute o sa primesti inca un credit)",connecttime[id]/credittime,(credittime/60)-minutes)
return PLUGIN_CONTINUE
}
if(equali(arg1,"/donate") == 1 || equali(arg1,"/givecredit") == 1)
{
new authid[32]
new playtime = (get_user_time(id) - lastplaytime[id])
lastplaytime[id] = get_user_time(id)
get_user_authid(id,authid,31)
new tmp_vault_time,vault_time[21]
get_vaultdata(authid,vault_time,20)
tmp_vault_time = str_to_num(vault_time)
tmp_vault_time += playtime
connecttime[id] = tmp_vault_time
num_to_str(tmp_vault_time,vault_time,20)
set_vaultdata(authid,vault_time)
if(is_user_alive(id) == 0)
{
client_print(id,print_chat," Trebe sa fi viu ca sa folosesti aceasta comanda.")
return PLUGIN_CONTINUE
}
new credits
credits = str_to_num(arg2)
if(credits <= 0)
{
client_print(id,print_chat," Trebe sa precizezi o valoare (minim un credit)")
return PLUGIN_CONTINUE
}
new player, body, Float:dist = get_user_aiming(id,player,body,9999)
if(player == 0 || player > 32 || is_user_connected(player) == 0 || is_user_alive(player) == 0)
{
client_print(id,print_chat," Acest jucator nu exista.")
return PLUGIN_CONTINUE
}
new classname[256]
entity_get_string(player,EV_SZ_classname,classname,255)
if(!equal(classname,"player"))
{
client_print(id,print_chat," Acest jucator nu exista.")
return PLUGIN_CONTINUE
}
if(dist > 512.0)
{
client_print(id,print_chat," Jucatorul e prea departe ca sa ii poti da credite")
return PLUGIN_CONTINUE
}
if(credits > connecttime[id]/credittime)
{
client_print(id,print_chat," Nu ai aceasta suma ca sa o poti dona")
return PLUGIN_CONTINUE
}
new givername[256], receivername[256]
get_user_name(id,givername,255)
get_user_name(player,receivername,255)
decCredit(id,credits)
addCredit(player,credits)
client_print(id,print_chat," I-ai dat %i credite lui %s",credits,receivername)
client_print(player,print_chat," Ai primit %i credite de la %s",credits,givername)
return PLUGIN_CONTINUE
}
}
return PLUGIN_CONTINUE
}
public MainUpgradesMenu(id)
{
if(get_cvar_num("amx_upgrades") == 1)
{
new authid[32]
new playtime = (get_user_time(id) - lastplaytime[id])
lastplaytime[id] = get_user_time(id)
get_user_authid(id,authid,31)
new tmp_vault_time,vault_time[21]
get_vaultdata(authid,vault_time,20)
tmp_vault_time = str_to_num(vault_time)
tmp_vault_time += playtime
connecttime[id] = tmp_vault_time
num_to_str(tmp_vault_time,vault_time,20)
set_vaultdata(authid,vault_time)
new tmp_minutes = floatround(float(connecttime[id]/60),floatround_floor)
new minutes = tmp_minutes % (credittime/60)
new keys
new szMenuBody[255]
new len = format(szMenuBody, 511, "\yMain Upgrades Menu:^n")
len += format(szMenuBody[len], 511-len, "^n\r1. \wUpgraduri")
len += format(szMenuBody[len], 511-len, "^n\r2. \wUpgraduri Iteme")
len += format(szMenuBody[len], 511-len, "^n\r3. \wArata Upgradurile")
len += format(szMenuBody[len], 511-len, "^n\r4. \wAjutor")
len += format(szMenuBody[len], 511-len, "^n^n\r0. \wIesire")
len += format(szMenuBody[len], 511-len, "^n^nCredite: %i (in %i minute o sa primesti inca un credit)",connecttime[id]/credittime,(credittime/60)-minutes)
keys = (1<<0|1<<1|1<<2|1<<3|1<<9)
show_menu(id, keys, szMenuBody, -1)
}
else
client_print(id,print_chat,"[AMXX] Credit Mod is currently disabled")
return PLUGIN_HANDLED
}
public MainMenuCommand(id, key)
{
switch(key)
{
case 0: showMenu(id)
case 1: EUMenu(id)
case 2: show_all_upgrades(id)
case 3: UpgrHelp(id)
}
return PLUGIN_HANDLED
}
public EU2Menu(id)
{
new authid[32]
new playtime = (get_user_time(id) - lastplaytime[id])
lastplaytime[id] = get_user_time(id)
get_user_authid(id,authid,31)
new tmp_vault_time,vault_time[21]
get_vaultdata(authid,vault_time,20)
tmp_vault_time = str_to_num(vault_time)
tmp_vault_time += playtime
connecttime[id] = tmp_vault_time
num_to_str(tmp_vault_time,vault_time,20)
set_vaultdata(authid,vault_time)
new tmp_minutes = floatround(float(connecttime[id]/60),floatround_floor)
new minutes = tmp_minutes % (credittime/60)
new keys
new szMenuBody[512]
new len = format(szMenuBody, 511, "\yItem 2 Upgrade Menu:^n")
len += format(szMenuBody[len], 511-len, "^n\r1. \wBomba Sinucigasa (Pret: %d Credit)", wiredc4ecost)
len += format(szMenuBody[len], 511-len, "^n\r2. \wE.S.P (Pret: %d Credite)", espcost)
len += format(szMenuBody[len], 511-len, "^n\r3. \wTinta cu Laser (Pret: %d Credit)", lasercost)
len += format(szMenuBody[len], 511-len, "^n\r4. \wSuper Grenada (Pret: %d Credit)", sgrencost)
len += format(szMenuBody[len], 511-len, "^n\r5. \wCrowbar (Pret: %d Credite)", crowbarcost)
len += format(szMenuBody[len], 511-len, "^n\r6. \wStealth Shoes (Pret: %d Credit)", sshoecost)
len += format(szMenuBody[len], 511-len, "^n\r7. \wProtectie Flash (Pret: %d Credit)", flashcost)
len += format(szMenuBody[len], 511-len, "^n^n\r9. \wInapoi")
len += format(szMenuBody[len], 511-len, "^n\r0. \wIesire")
len += format(szMenuBody[len], 511-len, "^n^nCredite: %i (in %i minute o sa primesti inca un credit)",connecttime[id]/credittime,(credittime/60)-minutes)
keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<8|1<<9)
show_menu(id, keys, szMenuBody, -1)
}
public EUA2Menu(id, key)
{
switch(key)
{
case 0:
{
if(connecttime[id]/credittime < wiredc4ecost)
client_print(id, print_chat, " Nu ai destule credite.")
if(wired[id] == 1)
client_print(id, print_chat, " Ai deja o Bomba Sinucigasa.")
if(!is_user_alive(id))
client_print(id, print_chat, " Trebe sa fi in viata.")
if(connecttime[id]/credittime >= wiredc4ecost && wired[id] == 0 && is_user_alive(id))
{
itemcap[id]++
wired[id] = 1
upgradelevelup(id)
show_iupgrades(id)
decCredit(id,wiredc4ecost)
client_print(id, print_chat, " Foloseste-ti cutitul ca sa detonezi bomba")
}
EU2Menu(id)
}
case 1:
{
if(connecttime[id]/credittime < espcost)
client_print(id, print_chat, " Nu ai destule credite")
if(esp[id] == 1)
client_print(id, print_chat, " Ai deja E.S.P")
if(connecttime[id]/credittime >= espcost && esp[id] == 0)
{
itemcap[id]++
esp[id] = 1
upgradelevelup(id)
show_iupgrades(id)
set_task(3.0, "esploop", id, "", 0, "b")
decCredit(id,espcost)
client_print(id, print_chat, " E.S.P este activ")
creditsspent[id]++
}
EU2Menu(id)
}
case 2:
{
if(connecttime[id]/credittime < lasercost)
client_print(id, print_chat, " Nu ai destule credite")
if(laser[id] == 1)
client_print(id, print_chat, " Ai deja o Tinta Laser")
if(connecttime[id]/credittime >= lasercost && laser[id] == 0)
{
itemcap[id]++
laser[id] = 1
upgradelevelup(id)
show_iupgrades(id)
decCredit(id,lasercost)
client_print(id, print_chat, " Laser Activat . Bateria dureaza 10 secunde.")
creditsspent[id]++
}
EU2Menu(id)
}
case 3:
{
if(connecttime[id]/credittime < sgrencost)
client_print(id, print_chat, " Nu ai destule credite")
if(sgrenade[id] == 1)
client_print(id, print_chat, "Deja ai o Super Grenada")
if(!is_user_alive(id))
client_print(id, print_chat, "Trebe sa fi in viata")
if(connecttime[id]/credittime >= sgrencost && sgrenade[id] == 0 && is_user_alive(id))
{
itemcap[id]++
sgrenade[id] = 1
upgradelevelup(id)
show_iupgrades(id)
give_item(id, "weapon_hegrenade")
decCredit(id,sgrencost)
client_print(id, print_chat, " Aceasta grenada are damage foarte mare !")
}
EU2Menu(id)
}
case 4:
{
if(connecttime[id]/credittime < crowbarcost)
client_print(id, print_chat, " Nu ai destuel credite")
if(crowbar[id] == 1)
client_print(id, print_chat, " Ai deja un Crowbar")
if(!is_user_alive(id))
client_print(id, print_chat, " Trebe sa fi in viata")
if(connecttime[id]/credittime >= crowbarcost && crowbar[id] == 0 && is_user_alive(id))
{
itemcap[id]++
crowbar[id] = 1
upgradelevelup(id)
show_iupgrades(id)
decCredit(id,crowbarcost)
client_print(id, print_chat, " Acest Crowbar are damage x2")
creditsspent[id]++
}
EU2Menu(id)
}
case 5:
{
if(connecttime[id]/credittime < sshoecost)
client_print(id, print_chat, " Nu ai destule credite")
if(sshoe[id] > 0)
client_print(id, print_chat, " Pasesti deja Silentios !")
if(connecttime[id]/credittime >= sshoecost && sshoe[id] == 0)
{
itemcap[id]++
sshoe[id] = 1
upgradelevelup(id)
show_iupgrades(id)
set_user_footsteps(id, 1)
decCredit(id,sshoecost)
client_print(id, print_chat, " Gata cu sunetul pasiilor !")
creditsspent[id]++
}
EUMenu(id)
}
case 6:
{
if(connecttime[id]/credittime < flashcost)
client_print(id, print_chat, " Nu ai destule credite")
if(sshoe[id] > 0)
client_print(id, print_chat, " Deja ai Protectie pentru Flashuri")
if(connecttime[id]/credittime >= flashcost && flash[id] == 0)
{
itemcap[id]++
flash[id] = 1
upgradelevelup(id)
show_iupgrades(id)
decCredit(id,flashcost)
client_print(id, print_chat, " Gata cu Oribirea !")
creditsspent[id]++
}
EUMenu(id)
}
case 8: EUMenu(id)
}
return PLUGIN_HANDLED
}
public EUMenu(id)
{
if(get_cvar_num("amx_upgrades") == 1)
{
new authid[32]
new playtime = (get_user_time(id) - lastplaytime[id])
lastplaytime[id] = get_user_time(id)
get_user_authid(id,authid,31)
new tmp_vault_time,vault_time[21]
get_vaultdata(authid,vault_time,20)
tmp_vault_time = str_to_num(vault_time)
tmp_vault_time += playtime
connecttime[id] = tmp_vault_time
num_to_str(tmp_vault_time,vault_time,20)
set_vaultdata(authid,vault_time)
new tmp_minutes = floatround(float(connecttime[id]/60),floatround_floor)
new minutes = tmp_minutes % (credittime/60)
new keys
new szMenuBody[512]
new len = format(szMenuBody, 511, "\yItem Upgrade Menu:^n")
len += format(szMenuBody[len], 511-len, "^n\r1. \wFuri Hp (Pret: %d Credit)", hpscost)
len += format(szMenuBody[len], 511-len, "^n\r2. \wRegenerare (Pret: %d Credit)", regenerationcost)
len += format(szMenuBody[len], 511-len, "^n\r3. \wRecoil Scazut (Pret: %d Credite)", weapontrainingcost)
len += format(szMenuBody[len], 511-len, "^n\r4. \wBhop (Pret: %d Credit)", jumpmodulecost)
len += format(szMenuBody[len], 511-len, "^n\r5. \wCatarare pe Perete (Pret: %d Credit)", climbgearcost)
len += format(szMenuBody[len], 511-len, "^n\r6. \wx2 Money (Pret: %d Credite)", promocost)
len += format(szMenuBody[len], 511-len, "^n\r7. \wIncarcatoare Infinite (Pret: %d Credite)", unlacost)
len += format(szMenuBody[len], 511-len, "^n^n\r8. \wInainte")
len += format(szMenuBody[len], 511-len, "^n\r9. \wInapoi")
len += format(szMenuBody[len], 511-len, "^n\r0. \wIesire")
len += format(szMenuBody[len], 511-len, "^n^nCredite: %i (in %i minute o sa primesti inca un credit)",connecttime[id]/credittime,(credittime/60)-minutes)
keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)
show_menu(id, keys, szMenuBody, -1)
}
}
public EUAMenu(id, key)
{
if(itemcap[id] == maxitems)
client_print(id, print_chat, " Acesta este maximul de ITEME , asteapta pana mapa viitoare ca sa iei altele.")
if(creditsspent[id] == maxcredits)
client_print(id, print_chat, " Acesta este maximul de credite care il poti cheltui pe o harta .")
if(itemcap[id] < maxitems && creditsspent[id] < maxcredits)
{
switch(key)
{
case 0:
{
if(connecttime[id]/credittime < hpscost)
client_print(id, print_chat, " Nu ai destule credite")
if(hpstlr[id] == 1)
client_print(id, print_chat, " Deja Furi Hp-ul inamiciilor")
if(connecttime[id]/credittime >= hpscost && hpstlr[id] == 0)
{
itemcap[id]++
hpstlr[id] = 1
upgradelevelup(id)
show_iupgrades(id)
decCredit(id,hpscost)
client_print(id, print_chat, " Acum poti fura Hp-ul inamiciilor.")
creditsspent[id]++
}
EUMenu(id)
}
case 1:
{
if(connecttime[id]/credittime< regenerationcost)
client_print(id, print_chat, " Nu ai destule credite")
if(regeneration[id] == 1)
client_print(id, print_chat, " Deja ai trusa de prim-ajutor la tine")
if(connecttime[id]/credittime >= regenerationcost && regeneration[id] == 0)
{
itemcap[id]++
regeneration[id] = 1
firstaid(id)
upgradelevelup(id)
show_iupgrades(id)
decCredit(id,regenerationcost)
client_print(id, print_chat, "Acum Viata/Armura v-a incepe sa se regenereze")
creditsspent[id]++
}
EUMenu(id)
}
case 2:
{
if(connecttime[id]/credittime < weapontrainingcost)
client_print(id, print_chat, " Nu ai destule credite")
if(weapontraining[id] == 1)
client_print(id, print_chat, " Deja ai Recoilul Scazut")
if(connecttime[id]/credittime >= weapontrainingcost && weapontraining[id] == 0)
{
itemcap[id]++
weapontraining[id] = 1
upgradelevelup(id)
show_iupgrades(id)
decCredit(id,weapontrainingcost)
client_print(id, print_chat, "Gata cu Recoilul !")
creditsspent[id]++
}
EUMenu(id)
}
case 3:
{
if(connecttime[id]/credittime < jumpmodulecost)
client_print(id, print_chat, "Nu ai destule credite")
if(jumpmodule[id] == 1)
client_print(id, print_chat, " Ai deja Bhop")
if(connecttime[id]/credittime >= jumpmodulecost && jumpmodule[id] == 0)
{
itemcap[id]++
jumpmodule[id] = 1
upgradelevelup(id)
show_iupgrades(id)
decCredit(id,jumpmodulecost)
client_print(id, print_chat, "Acum poti face BunnyHop")
creditsspent[id]++
}
EUMenu(id)
}
case 4:
{
if(connecttime[id]/credittime < climbgearcost)
client_print(id, print_chat, " Nu ai destule credite")
if(climb[id] == 1)
client_print(id, print_chat, "Deja esti SpiderMan")
if(connecttime[id]/credittime >= climbgearcost && climb[id] == 0)
{
itemcap[id]++
climb[id] = 1
upgradelevelup(id)
show_iupgrades(id)
set_task(0.1, "cwall", id, "", 0, "b")
decCredit(id,climbgearcost)
client_print(id, print_chat, "Apasa [W] sau [S] si apoi [SPACE] ca sa te cateri pe pereti.")
creditsspent[id]++
}
EUMenu(id)
}
case 5:
{
if(connecttime[id]/credittime < promocost)
client_print(id, print_chat, "Nu ai destule credite")
if(promotion[id] == 1)
client_print(id, print_chat, " Deja esti mai bogat")
if(connecttime[id]/credittime >= promocost && promotion[id] == 0)
{
itemcap[id]++
promotion[id] = 1
upgradelevelup(id)
show_iupgrades(id)
decCredit(id,promocost)
client_print(id, print_chat, "Acum o sa primesti de 2 ori mai multi bani")
creditsspent[id]++
}
EUMenu(id)
}
case 6:
{
if(connecttime[id]/credittime < unlacost)
client_print(id, print_chat, "Nu ai destule credite")
if(gHasuammo[id] == 1)
client_print(id, print_chat, "Ai deja Incarcatoare Infinite")
if(connecttime[id]/credittime >= unlacost && gHasuammo[id] == 0)
{
itemcap[id]++
gHasuammo[id] = 1
upgradelevelup(id)
show_iupgrades(id)
decCredit(id,unlacost)
client_print(id, print_chat, "Acum ai Incarcatoare Infinite [Nu ca nu ai avea deja ...]")
creditsspent[id]++
}
EUMenu(id)
}
case 7: EU2Menu(id)
case 8: MainUpgradesMenu(id)
}
}
return PLUGIN_HANDLED
}
public showMenu(id)
{
if(get_cvar_num("amx_upgrades") == 1)
{
new authid[32]
new playtime = (get_user_time(id) - lastplaytime[id])
lastplaytime[id] = get_user_time(id)
get_user_authid(id,authid,31)
new tmp_vault_time,vault_time[21]
get_vaultdata(authid,vault_time,20)
tmp_vault_time = str_to_num(vault_time)
tmp_vault_time += playtime
connecttime[id] = tmp_vault_time
num_to_str(tmp_vault_time,vault_time,20)
set_vaultdata(authid,vault_time)
new tmp_minutes = floatround(float(connecttime[id]/60),floatround_floor)
new minutes = tmp_minutes % (credittime/60)
new keys
new szMenuBody[512]
new len = format(szMenuBody, 511, "\yPassive Upgrade Menu:^n")
len += format(szMenuBody[len], 511-len, "^n\r1. \wArmura (Pret: %d Credit)", armorcost)
len += format(szMenuBody[len], 511-len, "^n\r2. \wViata (Pret: %d Credite)", hpcost)
len += format(szMenuBody[len], 511-len, "^n\r3. \wViteza (Pret: %d Credit)", speedcost)
//len += format(szMenuBody[len], 511-len, "^n\r4. \wGravitatie (Pret: %d Credite)", gravitycost)
len += format(szMenuBody[len], 511-len, "^n\r4. \wStealth (Pret: %d Credit)", stealthcost)
len += format(szMenuBody[len], 511-len, "^n\r5. \wMultiJump (Pret: %d Credite)", multijumpcost)
len += format(szMenuBody[len], 511-len, "^n^n\r9. \wInapoi")
len += format(szMenuBody[len], 511-len, "^n\r0. \wIesire")
len += format(szMenuBody[len], 511-len, "^n^nCredite: %i (in %i minute o sa primesti inca un credit)",connecttime[id]/credittime,(credittime/60)-minutes)
keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<8|1<<9)
show_menu(id, keys, szMenuBody, -1)
}
return PLUGIN_CONTINUE
}
public actionMenu(id, key)
{
if(creditsspent[id] == maxcredits)
client_print(id, print_chat, "Ai atins maximul creditelor pe aceasta harta.")
if(creditsspent[id] < maxcredits)
{
switch(key)
{
case 0:
{
if(connecttime[id]/credittime < armorcost)
client_print(id, print_chat, " Nu ai destule credite")
if(Armor[id] == armormaxlvl)
client_print(id, print_chat, "Ai ajuns la Levelul Maxim !")
if(connecttime[id]/credittime >= armorcost && Armor[id] < armormaxlvl)
{
Armor[id]++
UserArmor(id)
upgradelevelup(id)
show_upgrades(id)
decCredit(id,armorcost)
creditsspent[id]++
}
showMenu(id)
}
case 1:
{
if(connecttime[id]/credittime < hpcost)
client_print(id, print_chat, " Nu ai destule credite")
if(Health[id] == hpmaxlvl)
client_print(id, print_chat, " Ai ajuns la Levelul Maxim !")
if(connecttime[id]/credittime >= hpcost && Health[id] < hpmaxlvl)
{
Health[id]++
UserHealth(id)
upgradelevelup(id)
show_upgrades(id)
decCredit(id,hpcost)
creditsspent[id]++
}
showMenu(id)
}
case 2:
{
if(connecttime[id]/credittime < speedcost)
client_print(id, print_chat, "Nu ai destule credite")
if(Speed[id] == speedmaxlvl)
client_print(id, print_chat, " Ai ajuns la Levelul Maxim !")
if(connecttime[id]/credittime >= speedcost && Speed[id] < speedmaxlvl)
{
Speed[id]++
UserSpeed(id)
upgradelevelup(id)
show_upgrades(id)
decCredit(id,speedcost)
creditsspent[id]++
}
showMenu(id)
}
case 3:
{
if(connecttime[id]/credittime < stealthcost)
client_print(id, print_chat, " Nu ai destule credite")
if(Stealth[id] == stealthmaxlvl)
client_print(id, print_chat, "Ai ajuns la Levelul Maxim !")
if(connecttime[id]/credittime >= stealthcost && Stealth[id] < stealthmaxlvl)
{
Stealth[id]++
UserStealth(id)
upgradelevelup(id)
show_upgrades(id)
decCredit(id,stealthcost)
creditsspent[id]++
}
showMenu(id)
}
case 4:
{
if(connecttime[id]/credittime < multijumpcost)
client_print(id, print_chat, " Nu ai destule credite")
if(multijump[id] == multijumpmaxlvl)
client_print(id, print_chat, " Ai ajuns la Levelul Maxim !")
if(connecttime[id]/credittime >= multijumpcost && multijump[id] < multijumpmaxlvl)
{
multijump[id]++
upgradelevelup(id)
show_upgrades(id)
decCredit(id,multijumpcost)
creditsspent[id]++
}
showMenu(id)
}
case 8: MainUpgradesMenu(id)
}
}
return PLUGIN_HANDLED
}
public UserArmor(id)
{
new iap = (Armor[id] * armorperbuy)
set_user_armor(id, 100 + iap)
return PLUGIN_CONTINUE
}
public UserHealth(id)
{
new ihp = (Health[id] * hpperbuy)
set_user_health(id, 100 + ihp)
return PLUGIN_CONTINUE
}
public UserSpeed(id)
{
if(speed == false)
return PLUGIN_CONTINUE
new ispeed = (Speed[id] * speedperbuy)
set_user_maxspeed(id, 240.0 + ispeed)
return PLUGIN_CONTINUE
}
public UserStealth(id)
{
new istealth = (Stealth[id] * stealthperbuy)
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, defaultstealth - istealth)
return PLUGIN_CONTINUE
}
public firstaid(id)
{
if(is_user_alive(id))
{
if(regeneration[id] > 0)
{
new Float:srate = regenerationrate
set_task(srate, "starttheregen", id, "", 0, "b")
}
}
return PLUGIN_CONTINUE
}
public starttheregen(id)
{
if(is_user_alive(id))
{
if(regeneration[id] > 0)
{
new maxhp = (100 + Health[id] * hpperbuy)
if(get_user_health(id) < maxhp)
{
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), { 0, 0, 0 }, id)
write_short(1<<10)
write_short(1<<10)
write_short(1<<12)
write_byte(0)
write_byte(0)
write_byte(255)
write_byte(50)
message_end()
new health = get_user_health(id)
health += hpregenp
set_user_health(id, health)
if(get_user_health(id) >= maxhp)
set_user_health(id, maxhp)
}
new maxap = (100 + Armor[id] * armorperbuy)
if(get_user_armor(id) < maxap)
{
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), { 0, 0, 0 }, id)
write_short(1<<10)
write_short(1<<10)
write_short(1<<12)
write_byte(0)
write_byte(0)
write_byte(255)
write_byte(50)
message_end()
new armor = get_user_armor(id)
armor += apregenp
set_user_armor(id, armor)
if(get_user_armor(id) >= maxap)
set_user_armor(id, maxap)
}
}
}
return PLUGIN_CONTINUE
}
public Event_Damage(id)
{
new damage = read_data(2)
new bodypart, weapon
new enemy = get_user_attacker(id, weapon, bodypart)
new hpgain = floatround(float(get_user_health(enemy)) + (float(damage) * 0.5))
new maxhp = (100 + Health[enemy] * hpperbuy)
if(is_user_alive(enemy) && hpstlr[enemy] > 0)
{
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), { 0, 0, 0 }, enemy)
write_short(1<<10)
write_short(1<<10)
write_short(1<<12)
write_byte(0)
write_byte(255)
write_byte(0)
write_byte(50)
message_end()
set_user_health(enemy, hpgain)
if(get_user_health(enemy) >= maxhp)
set_user_health(enemy, maxhp)
}
if(sgrenade[enemy] > 0 && weapon == CSW_HEGRENADE && is_user_alive(id))
{
new Xdamage = floatround(float(get_user_health(id)) - (float(damage) * 90.0))
if(Xdamage < 1)
{
set_msg_block(get_user_msgid("DeathMsg"),BLOCK_ONCE)
message_begin(MSG_ALL, get_user_msgid("DeathMsg"), {0, 0, 0}, 0)
write_byte(enemy)
write_byte(id)
write_byte(0)
write_string("grenade")
message_end()
}
set_user_health(id, Xdamage)
sgrenade[enemy] = 0
itemcap[enemy]--
}
if(crowbar[enemy] > 0 && weapon == CSW_KNIFE && is_user_alive(id))
{
new KXdamage = floatround(float(get_user_health(id)) - (float(damage)))
if(KXdamage < 1)
{
set_msg_block(get_user_msgid("DeathMsg"),BLOCK_ONCE)
message_begin(MSG_ALL, get_user_msgid("DeathMsg"), {0, 0, 0}, 0)
write_byte(enemy)
write_byte(id)
write_byte(0)
write_string("knife")
message_end()
new frags, deaths
frags = get_user_frags(enemy) + 1
set_user_frags(enemy, frags)
deaths = cs_get_user_deaths(id) + 1
cs_set_user_deaths(id, deaths)
frags = get_user_frags(id) + 1
set_user_frags(id, frags)
}
set_user_health(id, KXdamage)
}
return PLUGIN_CONTINUE
}
public client_PreThink(id)
{
if(is_user_alive(id) && get_cvar_num("amx_upgrades") == 1)
{
new buttons = get_user_button(id)
new obut = get_user_oldbutton(id)
if(jumpmodule[id] > 0)
{
entity_set_float(id, EV_FL_fuser2, 0.0)
if(buttons & IN_JUMP)
{
new flags = entity_get_int(id, EV_INT_flags)
if(flags | FL_WATERJUMP && entity_get_int(id, EV_INT_waterlevel) < 2 && flags & FL_ONGROUND)
{
new Float:velocity[3]
entity_get_vector(id, EV_VEC_velocity, velocity)
velocity[2] += 250.0
entity_set_vector(id, EV_VEC_velocity, velocity)
entity_set_int(id, EV_INT_gaitsequence, 6)
}
}
}
if(wired[id] > 0)
{
new temp[2]
new currweapon = get_user_weapon(id, temp[0], temp[1])
if(currweapon == CSW_KNIFE)
{
if(get_user_button(id) & IN_ATTACK)
{
set_task(0.5, "beep_sound", id)
set_task(1.2, "c4bombertimer", id)
}
}
}
if(multijump[id] > 0)
{
if((buttons & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
{
if(jumpnum[id] < multijump[id])
{
dojump[id] = true
jumpnum[id]++
return PLUGIN_CONTINUE
}
}
if((buttons & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
jumpnum[id] = 0
}
}
return PLUGIN_CONTINUE
}
public client_PostThink(id)
{
if(is_user_alive(id) && get_cvar_num("amx_upgrades") == 1)
{
if(dojump[id] == true)
{
new Float:velocity[3]
entity_get_vector(id,EV_VEC_velocity,velocity)
velocity[2] = random_float(265.0,285.0)
entity_set_vector(id,EV_VEC_velocity,velocity)
dojump[id] = false
return PLUGIN_CONTINUE
}
}
return PLUGIN_CONTINUE
}
public beep_sound(id)
{
if(wired[id] > 0)
emit_sound(id, CHAN_ITEM, "buttons/blip2.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
public update(id)
{
if(get_cvar_num("amx_upgrades") != 1)
return PLUGIN_CONTINUE
if(!is_user_alive(id))
return PLUGIN_CONTINUE
//set_user_gravity(id, 1 - Gravity[id] * gravityperbuy)
if(speed != false)
set_user_maxspeed(id, 240.0 + (Speed[id] * speedperbuy))
if(weapontraining[id] > 0)
entity_set_vector (id,EV_VEC_punchangle, Float:{0.0, 0.0, 0.0})
new temp[2]
new istealth = (Stealth[id] * stealthperbuy)
if(Stealth[id] > 0)
{
if(get_user_weapon(id, temp[0], temp[1]) == CSW_KNIFE)
{
new astealth = istealth + 20
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, defaultstealth - astealth)
}
else
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, defaultstealth - istealth)
}
new wpnid = read_data(2)
if(wired[id] > 0)
{
if(wpnid == CSW_KNIFE)
switchmodel(id)
}
if(crowbar[id] > 0)
{
if(wpnid == CSW_KNIFE)
switchmodel(id)
}
if(gHasuammo[id] > 0)
{
new clip = read_data(3)
if(wpnid == CSW_C4 || wpnid == CSW_KNIFE || wpnid == CSW_HEGRENADE || wpnid == CSW_SMOKEGRENADE || wpnid == CSW_FLASHBANG)
return PLUGIN_CONTINUE
if(clip == 0)
{
new wpnname[32]
get_weaponname(wpnid, wpnname, 31)
give_item(id, wpnname)
engclient_cmd(id, wpnname)
}
}
if(laser[id] > 0)
{
set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 6.0, 10.0, 0.1, 0.1, 10)
show_hudmessage(id, "o")
}
return PLUGIN_CONTINUE
}
public switchmodel(id)
{
new temp[2], wpnid = get_user_weapon(id, temp[0], temp[1])
if(is_user_alive(id))
{
if(wired[id] > 0)
{
if(wpnid == CSW_KNIFE)
{
entity_set_string(id, EV_SZ_viewmodel, "models/v_satchel_radio.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/p_satchel_radio.mdl")
}
}
if(crowbar[id] > 0)
{
if(wpnid == CSW_KNIFE)
{
entity_set_string(id, EV_SZ_viewmodel, "models/v_crowbar.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/p_crowbar.mdl")
}
}
}
}
public upgradelevelup(id)
{
client_print(id, print_center, "***Upgrade CumparaT***")
client_cmd(id, "spk weapons/pl_gun2.wav")
return PLUGIN_CONTINUE
}
public cwall(id)
{
new buttons = get_user_button(id)
if(buttons & IN_ATTACK)
return PLUGIN_HANDLED
if(!is_user_connected(id))
return PLUGIN_HANDLED
if(speed == true)
{
if(climb[id] > 0)
{
new Float: velocity[3]
entity_get_vector(id, EV_VEC_velocity, velocity)
if(buttons & IN_JUMP && (buttons & IN_FORWARD || buttons & IN_BACK))
{
if(velocity[0] == 0.0 || velocity[1] == 0.0)
{
velocity[1] = 10.0
velocity[2] = 220.0
entity_set_vector(id, EV_VEC_velocity, velocity)
}
}
}
}
return PLUGIN_CONTINUE
}
public c4bombertimer(id)
{
if(wired[id] > 0)
{
wired[id] = 0
itemcap[id]--
emit_sound(id, CHAN_STATIC, "weapons/mine_charge.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
new param[2]
param[0] = id
set_task(3.8, "bombed", BOMB_TASK + id, param, 1)
}
}
public bombed(param[])
{
new id = param[0]
new origin[3]
get_user_origin(id, origin, 0)
for(new a = 1; a <= get_maxplayers(); a++)
{
new origin1[3]
get_user_origin(a, origin1, 0)
if(is_user_alive(a))
{
if(!(origin[0] - origin1[0] > BOMBKILL_RANGE ||
origin[0] - origin1[0] < - BOMBKILL_RANGE ||
origin[1] - origin1[1] > BOMBKILL_RANGE ||
origin[1] - origin1[1] < - BOMBKILL_RANGE ||
origin[2] - origin1[2] > BOMBKILL_RANGE ||
origin[2] - origin1[2] < - BOMBKILL_RANGE))
{
new bombguyfrags
new name[33]
get_user_name(id, name, 32)
if((a != id))
{
bombguyfrags = get_user_frags(id)
bombguyfrags += 1
set_user_frags(id, bombguyfrags)
set_msg_block(get_user_msgid("DeathMsg"),BLOCK_ONCE)
message_begin(MSG_ALL, get_user_msgid("DeathMsg"), {0, 0, 0}, 0)
write_byte(id)
write_byte(a)
write_byte(1)
write_string("")
message_end()
client_print(a, print_chat, "%s te-a omorat cu Bomba !", name)
}
user_kill(a, 1)
explode(origin1)
}
}
}
}
explode(vec1[3])
{
// blast circles
message_begin(MSG_BROADCAST,SVC_TEMPENTITY, vec1)
write_byte(21)
write_coord(vec1[0])
write_coord(vec1[1])
write_coord(vec1[2] + 16)
write_coord(vec1[0])
write_coord(vec1[1])
write_coord(vec1[2] + 1936)
write_short(white)
write_byte(0)//startframe
write_byte(0)//framerate
write_byte(3)//life 2
write_byte(20)//width 16
write_byte(0)//noise
write_byte(188)//r
write_byte(220)//g
write_byte(255)//b
write_byte(255)//brightness
write_byte(0)//speed
message_end()
//Explosion2
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(12)
write_coord(vec1[0])
write_coord(vec1[1])
write_coord(vec1[2])
write_byte(188)//byte (scale in 0.1's) 188
write_byte(10)//byte (framerate)
message_end()
//TE_Explosion
message_begin(MSG_BROADCAST,SVC_TEMPENTITY,vec1)
write_byte(3)
write_coord(vec1[0])
write_coord(vec1[1])
write_coord(vec1[2])
write_short(fire)
write_byte(65)//byte (scale in 0.1's) 188
write_byte(10)//byte (framerate)
write_byte(0)//byte flags
message_end()
//Smoke
message_begin(MSG_BROADCAST,SVC_TEMPENTITY,vec1)
write_byte(5)//5
write_coord(vec1[0])
write_coord(vec1[1])
write_coord(vec1[2])
write_short(smoke)
write_byte(50)//2
write_byte(10)//10
message_end()
}
public esploop(id)
{
if(!is_user_alive(id))
return PLUGIN_CONTINUE
if(esp[id] > 0)
{
for(new a = 1; a <= get_maxplayers(); a++)
{
if(is_user_alive(a))
{
if(cs_get_user_team(id) != cs_get_user_team(a))
{
if((a != id))
{
new vec1[3]
get_user_origin(a, vec1, 0)
message_begin(MSG_ONE, SVC_TEMPENTITY, vec1, id)
write_byte(21)
write_coord(vec1[0])
write_coord(vec1[1])
write_coord(vec1[2] - 35)
write_coord(vec1[0])
write_coord(vec1[1])
write_coord(vec1[2] + credittime)
write_short(white)
write_byte(0)//startframe
write_byte(1)//framerate
write_byte(6)//3 life 2
write_byte(8)//width 16
write_byte(1)//noise
write_byte(100)//r
write_byte(100)//g
write_byte(255)//b
write_byte(192)//brightness
write_byte(0)//speed
message_end()
}
}
}
}
}
return PLUGIN_CONTINUE
}
public UpgrHelp(id)
{
new PUmotd[2048], title[64], dpos = 0
format(title, 63, "Unique Mod: [%s] ", VER)
dpos += format(PUmotd[dpos], 2047-dpos, "<html><head><style type=^"text/css^">pre{color:#FFB000;}body{background:#000000;margin-left:8px;margin-top:0px;}</style></head><pre><body>")
dpos += format(PUmotd[dpos], 2047-dpos, "^n^n<b>%s</b>^n^n",title)
dpos += format(PUmotd[dpos], 2047-dpos, "^n^n-=--=--=--=--=--=--=--=--=--=-^n^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[*]Comenzi:^n")
dpos += format(PUmotd[dpos], 2047-dpos, "/buy - Deschide Meniul^n")
dpos += format(PUmotd[dpos], 2047-dpos, "/credite - Cate credite ai / cat timp va dura pana o sa primesti inca un credit^n")
dpos += format(PUmotd[dpos], 2047-dpos, "^n^n-=--=--=--=--=--=--=--=--=--=-^n^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[*]Upgraduri:^n^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[Armura] - Primesti Armura^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[Viata] - Primesti Viata^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[Viteza]- Primesti Viteza^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[Gravitatie] - Scade Gravitatia^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[Stealth] - Scade Vizibilitatea^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[MultiJump] - Poti sari de mai multe ori in aer^n")
dpos += format(PUmotd[dpos], 2047-dpos, "^n^n-=--=--=--=--=--=--=--=--=--=-^n^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[*]Upgradeuri Iteme:^n^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[Furi Hp] - Furi Hp de la inamici^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[Regenerare] - Iti regenereaza Viata si Armura^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[Recoil Scazut] - Scade Recoilul [Adica nu se mai duce arma in toate partiile]^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[Bhop] - Activeaza BunnyHop-ul [Ti pe space si sari in continuu]^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[Catarare pe Perete] - Abilitate de a urca pe ziduri [Te duci in fata , si apesi space]^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[x2 Money] - Primesti de 2 ori mai multi bani^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[Incarcatoare Infinite] - Ai incarcatoare infinite [Nimic Nou]^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[Pasi Silentiosi] - Nu se mai aud pasii cand mergi^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[Bomba Sinucigasa] - Poti sa omori pe cineva care e langa tine cand o detonezi^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[E.S.P] - Abilitate sa vezi unde este inamicul^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[Tinta cu Laser] - Adauga o tinta laser^n")
dpos += format(PUmotd[dpos], 2047-dpos, " - Grenada cu Damage Mult mai Mare^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[Crowbar] - Cutit cu damage x2^n")
dpos += format(PUmotd[dpos], 2047-dpos, "[Protectie Flash] - Nu mai iei niciun flash^n")
dpos += format(PUmotd[dpos], 2047-dpos, "^n^n-=--=--=--=--=--=--=--=--=--=-^n^n")
dpos += format(PUmotd[dpos], 2047-dpos, "***[INFO] ACESTE UPGRADURI RAMAN SI DACA MORI !!!***^n")
dpos += format(PUmotd[dpos], 2047-dpos, "***[INFO] O SA PIERZI SUPER GRENADA SI BOMBA SINUCIGASA DACA MORI !!!***^n")
dpos += format(PUmotd[dpos], 2047-dpos, "***[INFO] CREDITELE RAMAN TOT TIMPUL PE NUMELE PE CARE JOCI DECI NU-TI SCHIMBA NUMELE !!!***^n")
dpos += format(PUmotd[dpos], 2047-dpos, "***[INFO] ITEMELE SI UPGRADURILE , SUNT DOAR PENTRU O HARTA , CAND SE SCHIMBA HARTA ELE V-OR DISPAREA !!!***^n")
dpos += format(PUmotd[dpos], 2047-dpos, "***[INFO] MAXIMUL ITEMELOR CARE LE POTI CUMPARA: %i***^n",maxitems)
dpos += format(PUmotd[dpos], 2047-dpos, "***[INFO] MAXIMUL CREDITELOR CARE IL POTI CHELUTI PE O HARTA: %i***^n",maxcredits)
show_motd(id, PUmotd, title)
}
public plugin_precache()
{
precache_sound("weapons/pl_gun2.wav")
precache_sound("buttons/blip2.wav")
precache_sound("weapons/mine_charge.wav")
precache_model("models/v_satchel_radio.mdl")
precache_model("models/p_satchel_radio.mdl")
precache_model("models/v_crowbar.mdl")
precache_model("models/p_crowbar.mdl")
smoke = precache_model("sprites/steam1.spr")
white = precache_model("sprites/white.spr")
fire = precache_model("sprites/explode1.spr")
}
public queryall(id,level,cid)
{
if (!cmd_access(id,level,cid,1))
return PLUGIN_HANDLED
new maxslots = get_maxplayers()
new query_name[32]
for(new i = 1; i <= maxslots; ++i)
{
if (!is_user_connected(i) && !is_user_connecting(i)) continue
get_user_name(i,query_name,31)
client_print(id,print_console," %s 's credits = %i",query_name,connecttime/credittime)
}
return PLUGIN_HANDLED
}
public client_authorized(id)
{
new authid[32], vault_time[21]
get_user_authid(id,authid,31)
if(vaultdata_exists(authid))
{
get_vaultdata(authid,vault_time,20)
connecttime[id] = str_to_num(vault_time)
}
else
{
connecttime[id] = numnewcredits * credittime
num_to_str(connecttime[id],vault_time,20)
set_vaultdata(authid,vault_time)
}
return PLUGIN_CONTINUE
}
public decCredit(id, itemcost)
{
new cost = itemcost
connecttime[id] = connecttime[id] - (credittime * cost)
new authid[32], vault_time[21]
get_user_authid(id,authid,31)
num_to_str(connecttime[id],vault_time,20)
set_vaultdata(authid,vault_time)
return PLUGIN_HANDLED
}
public addCredit(id, itemadd)
{
new addcredits = itemadd
connecttime[id] = connecttime[id] + (credittime * addcredits)
new authid[32], vault_time[21]
get_user_authid(id,authid,31)
num_to_str(connecttime[id],vault_time,20)
set_vaultdata(authid,vault_time)
return PLUGIN_HANDLED
}
public givecredit(id,level,cid)
{
if(!cmd_access(id,level,cid,3))
return PLUGIN_HANDLED
new target[32],credits[21]
read_argv(1,target,31)
read_argv(2,credits,20)
new player = cmd_target(id,target,8)
if(!player) return PLUGIN_HANDLED
new admin_name [32], player_name[32]
get_user_name(id,admin_name,31)
get_user_name(player,player_name,31)
new crednum = str_to_num(credits)
addCredit(player,crednum)
client_print(id,print_console," Ai adaugat %i credite la %s totalul creditelor.",crednum,player_name)
return PLUGIN_CONTINUE
}
public removecredit(id,level,cid)
{
if(!cmd_access(id,level,cid,3))
return PLUGIN_HANDLED
new target[32],credits[21]
read_argv(1,target,31)
read_argv(2,credits,20)
new player = cmd_target(id,target,8)
if(!player) return PLUGIN_HANDLED
new admin_name [32], player_name[32]
get_user_name(id,admin_name,31)
get_user_name(player,player_name,31)
new crednum = str_to_num(credits)
decCredit(player,crednum)
client_print(id,print_console," Ai scos %i credite din %s totalul creditelor.",crednum,player_name)
return PLUGIN_CONTINUE
}
Download resurse + sma : Download Link
Ps : Am zis sa fac o fapta buna pentru toti cei care vor resurse NOI pentru modul BaseBuilder ! Multe dintre ele sunt imbunatatite de mine , dar unele nu , multumesc lui spuf care mi-a facut cateva dintre ele si s-a chinuit !