Jump to content

[PLUGIN Cs1.6] HnS Level Mod


DuLceTeL

Recommended Posts

Descriere : E un hns lvl mod mai vechi pe care l-am facut. 
Author: D3luxe 
Download :

#include <amxmodx> 

#include <fun> 
#include <fakemeta> 
#include <amxmisc> 
#include <cstrike> 
#include <xs> 
#include <nvault> 
#include <hamsandwich> 

#define PLUGIN "HnSNivelMod" 
#define VERSION "1.0" 
#define AUTHOR "D3luxe" 

#define DNS_LICENTIAT "freakz" 
#define MAX_LEVEL 40 
#define OWNER_FLAGS read_flags("abcdefghijklmnopqrstu") 

new const Tag[] = "[Freakz]" 
new const XP_NECESAR[MAX_LEVEL+1] = 

1, 
100, 
135, 
170, 
300, 
600, 
700, 
900, 
1200, 
1500, 
1750, 
2010, 
2500, 
3200, 
3800, 
4100, 
4500, 
4800, 
5500, 
6100, 
6400, 
6600, 
6800, 
7300, 
7500, 
7700, 
7900, 
8300, 
8400, 
9400, 
10400, 
10800, 
11200, 
12700, 
13700, 
14700, 
15700, 
16700, 
17700, 
19000, 
20000 
}; 
new user[33]; 
new g_xp[33],g_lvl[33]; 
new xp_kill,xp_kill_hs,g_msgsync; 
new TeleportSprite2,g_spriteShockwave; 
new Teleport_Cooldown[33]; 
new const SOUND_BLINK[] = "weapons/flashbang-1.wav" ; 
const UNIT_SEC = 0x1000; 
const FFADE = 0x0000; 
new CvarTeleportCooldown, CvarTeleportRange; 
new g_vault; 

public plugin_init() 

new szHostName[ 64 ]; 
get_cvar_string( "hostname", szHostName, sizeof( szHostName ) -1 ); 
if( contain( szHostName, DNS_LICENTIAT ) == -1 ) 
set_fail_state( "Plugin Nelicentiat."); 
register_plugin(PLUGIN, VERSION, AUTHOR); 
register_clcmd("+ultimate","start_teleport"); 
register_clcmd("-ultimate","start_teleport"); 
register_clcmd("say /lvl ", "show_lvlmenu" ); 
register_clcmd("Nivelul_Dorit?","cmd_lvl"); 
RegisterHam(Ham_Spawn,"player","item_spawn",1); 
RegisterHam(Ham_Killed,"player","give_xp"); 

xp_kill = register_cvar("hns_xp_kill","15"); 
xp_kill_hs = register_cvar("hns_xp_kill_hs","25"); 
CvarTeleportCooldown = register_cvar("teleport_cooldown", "30");
CvarTeleportRange = register_cvar("teleport_range", "12345"); 
g_msgsync = CreateHudSyncObj(); 
g_vault = nvault_open("LevelModbyD3luxe"); 
if(g_vault == INVALID_HANDLE) 
set_fail_state("Eroare la deschiderea bazei de date nvault."); 
set_task(1.0,"show_hud",_,_,_,"b"); 

public plugin_precache() 

TeleportSprite2 = precache_model( "sprites/blueflare2.spr");
g_spriteShockwave = precache_model( "sprites/shockwave.spr" ); 
precache_sound("hnsm_lvlup.wav"); 

public client_putinserver(id) 

Teleport_Cooldown[id] = 0; 
remove_task(id); 
if(!is_user_bot(id)) 
LoadData(id);

public show_hud() 

new Players[32],num,id; 
get_players(Players,num,"c"); 
for(new i = 0; i < num; i++) 

id = Players
if(is_user_bot(id) || !is_user_connected(id)) continue; 
if(g_lvl[id] == 40) 

set_hudmessage(0,252,30,-1.0,0.16,0,6.0,1.2) 
ShowSyncHudMsg(id,g_msgsync,"~~|Lvl:%d/40|~~",g_lvl[id]); 
}else{ 
set_hudmessage(0,252,30,-1.0,0.16,0,6.0,1.2) 
ShowSyncHudMsg(id,g_msgsync,"XP:%d/%d | Lvl:%d/40",g_xp[id],XP_NECESAR[g_lvl[id]],g_lvl[id]); 



public show_lvlmenu(id) 

static szText[ 555 char ],szNumber[10]; 
new Player[32],num,ids; 
get_players(Player,num,"c"); 
new menu = menu_create("Playeri ONLINE :", "clasament_handler" ); 
for(new i = 0; i < num; i++) 

ids = Player
if(!is_user_connected(ids)) continue; 
new name[33]; 
get_user_name(ids,name,charsmax(name)); 
num_to_str(ids, szNumber, charsmax( szNumber )); 
formatex(szText, charsmax( szText ),"\yNume: \w%s\r|\yXP: \w%d \r|\yNivel: \w%d\r|",name,g_xp[ids],g_lvl[ids]); 
menu_additem(menu,szText,szNumber, 0); 

menu_setprop( menu, MPROP_EXITNAME, "Exit") 
menu_display( id, menu, 0); 

public clasament_handler(id, menu, item) 

if(item == MENU_EXIT) 

menu_destroy(menu); 
return PLUGIN_HANDLED; 

static data[6], name[64], acs, cllbck; 
menu_item_getinfo(menu, item, acs, data, 5, name, 63, cllbck); 
if(!(get_user_flags(id) & OWNER_FLAGS)) 
{
ChatColor(id,"!g%s !yDoar ownerul poate da !teamlvl",Tag);
show_lvlmenu(id); 
return PLUGIN_HANDLED; 

new PlayerD = str_to_num(data); 
if(!PlayerD) 

ChatColor(id,"!g%s !yAcel player nu exista.",Tag);
show_lvlmenu(id); 
return PLUGIN_HANDLED; 

user[id] = PlayerD; 
client_cmd(id,"messagemode Nivelul_Dorit?") 
menu_destroy(menu); 
return PLUGIN_HANDLED; 

public cmd_lvl( id ) 

static szArg[ 15 ]; 
read_argv( 1, szArg, sizeof ( szArg ) -1 ); 
new number = str_to_num(szArg); 
if(number < 1 ) 

ChatColor(id,"!g%s !yNivelul nu poate fii mai mic decat !team1.", Tag) 
return PLUGIN_HANDLED; 
}else if(number > 40 ){ 
ChatColor(id,"!g%s !yNivelul nu poate fii mai mare decat !team40.", Tag) 
return PLUGIN_HANDLED; 
}else if(!characters(szArg, strlen(szArg))){ 
ChatColor(id,"!g%s !yTrebuie sa introduci un !teamnumar.", Tag) 
return PLUGIN_HANDLED; 

new name[33]; 
get_user_name(user[id],name,charsmax(name)); 
g_lvl[user[id]] = number; 
emit_sound(user[id],CHAN_AUTO,"hnsm_lvlup.wav",VOL_NORM, ATTN_NORM, 0, PITCH_NORM); 
give_special_item(user[id]); 
ChatColor(id,"!g%s !yI-ai dat !teamlevel %d !ylui %s!g.",Tag,number,name); 
return PLUGIN_HANDLED; 

public give_xp(victim,attacker,shouldgib) 

if(g_lvl[attacker] < 40) 

if(get_pdata_int(victim, 75) == HIT_HEAD) 
g_xp[attacker] += get_pcvar_num(xp_kill_hs); 
else 
g_xp[attacker] += get_pcvar_num(xp_kill); 

while(g_xp[attacker] >= XP_NECESAR[g_lvl[attacker]] && g_lvl[attacker] < 40) 

emit_sound(attacker,CHAN_AUTO,"hnsm_lvlup.wav",VOL_NORM, ATTN_NORM, 0, PITCH_NORM); 
give_special_item(attacker); 
g_lvl[attacker]++;


SaveData(attacker); 
return HAM_IGNORED; 

public give_special_item(id) 

if(is_user_alive(id) && g_lvl[id] > 0 && g_lvl[id] <= MAX_LEVEL && !is_user_bot(id)) 

Teleport_Cooldown[id] = 0; 
remove_task(id); 
strip_user_weapons(id); 
give_item(id,"weapon_knife"); 
switch(g_lvl[id]) 

case 1 : give_item(id,"weapon_smokegrenade"); 
case 2 : give_item(id,"weapon_hegrenade"); 
case 3 : 

give_item(id,"weapon_hegrenade"); 
cs_set_user_bpammo(id,CSW_HEGRENADE,2); 

case 4 : 

give_item(id,"weapon_smokegrenade"); 
give_item(id,"weapon_hegrenade"); 
cs_set_user_bpammo(id,CSW_SMOKEGRENADE,2); 
cs_set_user_bpammo(id,CSW_HEGRENADE,2); 

case 5..7 : { 
set_user_health(id,100 + g_lvl[id]); 
give_item(id,"weapon_smokegrenade"); 
give_item(id,"weapon_hegrenade"); 
cs_set_user_bpammo(id,CSW_SMOKEGRENADE,2); 
cs_set_user_bpammo(id,CSW_HEGRENADE,2);

case 8..24 :{ 
set_user_health(id,100 + g_lvl[id]); 
give_item(id,"weapon_smokegrenade"); 
give_item(id,"weapon_hegrenade"); 
cs_set_user_bpammo(id,CSW_SMOKEGRENADE,2); 
cs_set_user_bpammo(id,CSW_HEGRENADE,2);
new dgl = give_item(id,"weapon_deagle"); 
if(dgl){ 
cs_set_weapon_ammo(dgl,1); 
cs_set_user_bpammo(id,CSW_DEAGLE,0);
}

case 25 : { 
set_user_health(id,100 + g_lvl[id]); 
give_item(id,"weapon_smokegrenade"); 
give_item(id,"weapon_hegrenade"); 
cs_set_user_bpammo(id,CSW_SMOKEGRENADE,2); 
cs_set_user_bpammo(id,CSW_HEGRENADE,2);
new dgl = give_item(id,"weapon_deagle"); 
if(dgl){ 
cs_set_weapon_ammo(dgl,2); 
cs_set_user_bpammo(id,CSW_DEAGLE,0);
}

case 30..39 : 

set_user_health(id,100 + g_lvl[id]+5); 
give_item(id,"weapon_smokegrenade"); 
give_item(id,"weapon_hegrenade"); 
cs_set_user_bpammo(id,CSW_SMOKEGRENADE,2); 
cs_set_user_bpammo(id,CSW_HEGRENADE,2); 
TeleportShowHUD(id); 
new dgl = give_item(id,"weapon_deagle"); 
if(dgl){ 
cs_set_weapon_ammo(dgl,2); 
cs_set_user_bpammo(id,CSW_DEAGLE,0);


case 40 : { 
set_user_health(id,150); 
give_item(id,"weapon_smokegrenade"); 
give_item(id,"weapon_hegrenade"); 
give_item(id,"weapon_flashbang"); 
cs_set_user_bpammo(id,CSW_SMOKEGRENADE,5); 
cs_set_user_bpammo(id,CSW_FLASHBANG,5); 
cs_set_user_bpammo(id,CSW_HEGRENADE,5); 
TeleportShowHUD(id); 
new dgl = give_item(id,"weapon_deagle"); 
if(dgl){ 
cs_set_weapon_ammo(dgl,3); 
cs_set_user_bpammo(id,CSW_DEAGLE,0);



}

public item_spawn(id) 

set_task(12.5,"give_special_item",id); 

//teleport 
public start_teleport(id) 

if(!is_user_alive(id)) return PLUGIN_HANDLED; 
if(!Teleport_Cooldown[id] && g_lvl[id] > 30) 

if (teleport(id)) 

emit_sound(id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM); 
remove_task(id); 
Teleport_Cooldown[id] = get_pcvar_num(CvarTeleportCooldown); 
set_task(1.0, "TeleportShowHUD", id, _, _, "b"); 
return PLUGIN_HANDLED; 
}else{ 
Teleport_Cooldown[id] = 0; 
set_hudmessage(0, 100, 200,-1.0, -1.0, 0, 1.0, 1.1, 0.0, 0.0, -11); 
show_hudmessage(id, "Pozitia de teleportare este invalida."); 
return PLUGIN_HANDLED; 


return PLUGIN_HANDLED; 

public TeleportShowHUD(id) { 
if (!is_user_alive(id)) { 
remove_task(id); 
Teleport_Cooldown[id] = 0; 
return PLUGIN_HANDLED; 

set_hudmessage(0, 100, 200, 0.05, 0.60, 0, 1.0, 1.1, 0.0, 0.0, -11); 
if(is_user_alive(id) && Teleport_Cooldown[id] == 1) { 
Teleport_Cooldown[id] --; 
show_hudmessage(id, "Puterea iti va reveni in: %d secunda",Teleport_Cooldown[id]); 

if(is_user_alive(id) && Teleport_Cooldown[id] > 1) { 
Teleport_Cooldown[id] --; 
show_hudmessage(id, "Puterea iti va reveni in: %d secunde",Teleport_Cooldown[id]); 

if(Teleport_Cooldown[id] <= 0) { 
show_hudmessage(id, "Iti poti folosi din nou puterea."); 
remove_task(id); 
Teleport_Cooldown[id] = 0; 

return PLUGIN_HANDLED; 

bool:teleport(id) { 
new Float:vOrigin[3], Float:vNewOrigin[3], 
Float:vNormal[3], Float:vTraceDirection[3], 
Float:vTraceEnd[3]; 

pev(id, pev_origin, vOrigin); 

velocity_by_aim(id, get_pcvar_num(CvarTeleportRange), vTraceDirection); 
xs_vec_add(vTraceDirection, vOrigin, vTraceEnd); 

engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0); 

new Float:flFraction; 
get_tr2(0, TR_flFraction, flFraction); 
if (flFraction < 1.0) { 
get_tr2(0, TR_vecEndPos, vTraceEnd); 
get_tr2(0, TR_vecPlaneNormal, vNormal); 


xs_vec_mul_scalar(vNormal, 40.0, vNormal); // do not decrease the 40.0 
xs_vec_add(vTraceEnd, vNormal, vNewOrigin); 

if (is_player_stuck(id, vNewOrigin)) 
return false; 

emit_sound(id, CHAN_STATIC, SOUND_BLINK, 1.0, ATTN_NORM, 0, PITCH_NORM); 
tele_effect(vOrigin); 

engfunc(EngFunc_SetOrigin, id, vNewOrigin); 

tele_effect2(vNewOrigin); 

return true; 

stock is_player_stuck(id, Float:originF[3]) { 
engfunc(EngFunc_TraceHull, originF, originF, 0, (pev(id, pev_flags) & FL_DUCKING) ? HULL_HEAD : HULL_HUMAN, id, 0); 

if (get_tr2(0, TR_StartSolid) || get_tr2(0, TR_AllSolid) || !get_tr2(0, TR_InOpen)) 
return true; 

return false; 

stock tele_effect(const Float:torigin[3]) { 
new origin[3]; 
origin[0] = floatround(torigin[0]); 
origin[1] = floatround(torigin[1]); 
origin[2] = floatround(torigin[2]); 

message_begin(MSG_PAS, SVC_TEMPENTITY, origin); 
write_byte(TE_BEAMCYLINDER); 
write_coord(origin[0]); 
write_coord(origin[1]); 
write_coord(origin[2]+10); 
write_coord(origin[0]); 
write_coord(origin[1]); 
write_coord(origin[2]+60); 
write_short(g_spriteShockwave); 
write_byte(0); 
write_byte(0); 
write_byte(3); 
write_byte(60); 
write_byte(0); 
write_byte(255); 
write_byte(255); 
write_byte(255); 
write_byte(255); 
write_byte(0); 
message_end(); 

stock tele_effect2(const Float:torigin[3]) { 
new origin[3]; 
origin[0] = floatround(torigin[0]); 
origin[1] = floatround(torigin[1]); 
origin[2] = floatround(torigin[2]); 

message_begin(MSG_PAS, SVC_TEMPENTITY, origin); 
write_byte(TE_BEAMCYLINDER); 
write_coord(origin[0]); 
write_coord(origin[1]); 
write_coord(origin[2]+10); 
write_coord(origin[0]); 
write_coord(origin[1]); 
write_coord(origin[2]+60); 
write_short(g_spriteShockwave); 
write_byte(0); 
write_byte(0); 
write_byte(3); 
write_byte(60); 
write_byte(0); 
write_byte(255); 
write_byte(255); 
write_byte(255); 
write_byte(255); 
write_byte(0); 
message_end(); 

message_begin(MSG_BROADCAST, SVC_TEMPENTITY); 
write_byte(TE_SPRITETRAIL); 
write_coord(origin[0]); 
write_coord(origin[1]); 
write_coord(origin[2]+40); 
write_coord(origin[0]); 
write_coord(origin[1]); 
write_coord(origin[2]); 
write_short(TeleportSprite2); 
write_byte(30); 
write_byte(10); 
write_byte(1); 
write_byte(50); 
write_byte(10); 
message_end(); 

public client_disconnect(id) 

Teleport_Cooldown[id] = 0; 
remove_task(id); 
if(!is_user_bot(id)) 
SaveData(id);

public SaveData(id) 

new vaultkey[64],vaultdata[256],name[32] 
get_user_name(id,name,charsmax(name)) 
formatex(vaultkey,63,"%s-Del",name) 
formatex(vaultdata,63,"%i#%i#",g_xp[id],g_lvl[id]) 
nvault_set(g_vault,vaultkey,vaultdata) 

public LoadData(id) { 
new vaultkey[64],vaultdata[256],name[32]; 
get_user_name(id,name,charsmax(name)) 
formatex(vaultkey,63,"%s-Del",name) 
formatex(vaultdata,255,"%i#%i#",g_xp[id],g_lvl[id]) 

nvault_get(g_vault,vaultkey,vaultdata,255) 
replace_all(vaultdata, 255, "#", " ") 
new XP[32],LEVEL[32] 
parse(vaultdata,XP,31,LEVEL,31) 
g_xp[id] = str_to_num(XP) 
g_lvl[id] = str_to_num(LEVEL) 

public plugin_end() nvault_close(g_vault); 
bool:characters(const symbol[], len) { 

new const valid_chars[][] = { 
"0" ,"1" ,"2" ,"3" ,"4" ,"5" ,"6" ,"7" ,"8" ,"9" 

static i, a, valids; 
valids = 0 

for(i = 0; i < len; i++) { 

for(a = 0; a < sizeof(valid_chars); a++) { 

if(symbol == valid_chars[a][0]) { 

valids++ 
break 



if(valids != len) 
return false 
return true 

stock ChatColor(const id, const input[], any:...) 

new count = 1, players[32] 
static msg[191] 
vformat(msg, 190, input, 3) 

replace_all(msg, 190, "!g", "^4") 
replace_all(msg, 190, "!y", "^1") 
replace_all(msg, 190, "!team", "^3") 

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(); 


}

 

Edited by DuLceTeL
Link to comment
Share on other sites

  • 5 weeks later...
Guest
This topic is now closed to further replies.
×
×
  • Create New...