DuLceTeL Posted November 10, 2016 Share Posted November 10, 2016 (edited) 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 November 10, 2016 by DuLceTeL Link to comment Share on other sites More sharing options...
Sp1dey Posted December 9, 2016 Share Posted December 9, 2016 Pentru a evita spam-ul. Link to comment Share on other sites More sharing options...
Recommended Posts