/* AMX Mod script. * * Warcraft 3: Frozen Throne * by Pimp Daddy (OoTOAoO) * email: ootoaoo@cinci.rr.com * MSN: ootoaoo@msn.com * AIM: OoTOAoO * * Credits to: * Spacedude (for War3 MOD) * Ludwig Van (for flamethrower) * OLO (for spectating rank info) * [AOL]Demandred, [AOL]LuckyJ for help coding it for steam * Denkkar for some of his code (ie. STEAM_POWERED) * Everyone at amxmod.net for help * v1.0 * * This version modified by Pimp Daddy for his server * */ #include #include #include #include #include #include #include #include #include #define STEAM_POWERED 1 // Set to 0 if you are running Counterstrike 1.5, leave at 1 for 1.6 #if STEAM_POWERED new zoomed[33] #endif new hasinferno[33] = false new freezetime = 0 new freezecalled = 0 new menupend[33] = 0 new shadow new smoke new snow new fire new burning new isburning[33] new flame_count[33] new bool:isdead[33] = false new bool:playerhasspawned[33] = false new healinghit[33] new bool:goomba[33] new bool:godused[33] new serpentteam[33] new deathbylight[33] new pheonix[33] = -1 new pheonixexistsT new pheonixexistsCT new wave new hasblink[33] = false new godtime[33] = -6 new grunt new carrioncount[33]=2 new runningcarrion[33]=0 new spawnEntString[2][] = {"info_player_start","info_player_deathmatch"} new poison[33] = 2 new bool:poisoned[33] = false new fancalled[33]=false new CTCoords[33] new TCoords[33] new bool:changingrace[33] new shadowcount[33] = 2 #define TEAM_T 1 #define TEAM_CT 2 #define HEALING_RANGE 700 #define TE_BEAMPOINTS 0 #define TE_EXPLOSION 3 #define TE_EXPLFLAG_NONE 0 #define TE_SMOKE 5 #define TE_BEAMENTS 8 #define TE_IMPLOSION 14 #define TE_SPRITETRAIL 15 #define TE_BEAMCYLINDER 21 #define TE_BEAMFOLLOW 22 #define TE_ELIGHT 28 #define TE_PLAYERATTACHMENT 124 #define BLASTCIRCLES_RADIUS 250 #define EXPLOSION_RANGE 300 #define EXPLOSION_MAX_DAMAGE 50 #define LIGHTNING_RANGE 500 #define TELEPORT_RADIUS 50 #define MAXGLOW 150 #define ULTIMATESEARCHTIME 50 #define TELEPORT_COOLDOWN 10.0 #define CHAINLIGHTNING_COOLDOWN 45.0 #define ENTANGLEROOTS_COOLDOWN 45.0 #define BOMBSHAREXPRADIUS 500 #define HOSTAGESHAREXPRADIUS 1000 #define BOOTSPEED 275.0 #define CLAWSOFATTACK 6 #define CLOAKINVISIBILITY 150 #define MASKPERCENT 0.3 #define FROSTSPEED 125.0 #define HEALTHBONUS 15 #define MOLE_PROTECTANT_TIME 7 // User stats parms id #define STATS_KILLS 0 #define STATS_DEATHS 1 #define STATS_HS 2 #define STATS_TKS 3 #define STATS_SHOTS 4 #define STATS_HITS 5 #define STATS_DAMAGE 6 #define ANKH 1 #define BOOTS 2 #define CLAWS 3 #define CLOAK 4 #define MASK 5 #define IMMUNITY 6 #define FROST 7 #define HEALTH 8 #define TOME 9 #define RESPAWN 1 #define PROTECTANT 2 #define HELM 3 #define CAT 4 #define FEATHER 5 #define INFERNO 6 #define REGEN 7 #define CHAMELEON 8 #define MOLE 9 new Float:maxgetxptime = 60.0 new daysbeforedelete new dayslevelmodifier new CTSkins[4][]={"sas","gsg9","urban","gign"} new TSkins[4][]={"arctic","leet","guerilla","terror"} new g_lastPosition[33][3] new bool:becomemole[33]=false new shieldfound[33] = 0 new bool:HasShield[33] = false new bool:hasprimary[33] new rings[33] new bool:reseting[33]=false new bool:itemsrunning[33] = false new bool:g_specMode[33] new bool:spawnedfromitem[33] = false new nadetime[33] = 10 new bool:allowedmap = false new bool:justgivennade[33] = false new bool:joshon[33] new bool:spawning[33] = false new bool:spawnused[33] = false new bweap[33] new aweap[33] new p_level[33] new p_skills[33][5] new iglow[33][4] new armorondeath[33] new savedweapons[33][32] new savednumber[33] new teleportid[33][32] new playerxp[33] new pmoney[33] new playeritem[33] new playeritem2[33] new savedline[32][128] = {"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""} new bool:p_evadenextshot[33] new bool:diedlastround[33] new bool:stunned[33] new bool:slowed[33] new bool:issearching[33] new bool:lightninghit[33] new bool:ultimateused[33] new bool:cheatson[33] new bool:teleportmenu[33] new bool:hasgrenade[33] new bool:hasdefuse[33] new bool:helmet[33] new bool:changingteam[33] new bool:knifeselected[33] new readxp[33] new bool:warcraft3 new bool:savexp new bool:endround new bool:mysqlcvar new Float:voting new Float:vote_ratio new Float:lastupdate new option new bombplanter new bombdefuser new hostagesaver new serpents[33] new gmsgStatusText new gmsgDeathMsg new gmsgFade new gmsgShake new g_sModelIndexFireball new g_sModelIndexSmoke new iBeam4 new m_iTrail new m_iSpriteTexture new lightning new flaresprite new mysql new mysqltablename[64] new Float:p_vampiric[3] = {0.15,0.30,0.45} // Vampiric Aura (skill 1) new p_vampirichealth[3] = {100,100,100} // Vampiric Aura Max Health (skill 1) new Float:p_unholy[3] = {250.0,275.0,300.0} // Unholy Aura (skill 2) new Float:p_levitation[3] = {0.85,0.7,0.55} // Levitation (skill 3) new p_invisibility[3] = {200,150,100} // Invisibility (skill 1) new p_devotion[3] = {115,130,145} // Devotion Aura (skill 2) new Float:p_bash[3] = {0.15,0.30,0.45} // Bash (skill 3) new Float:p_critical[3] = {0.15,0.15,0.15} // Critical Strike (skill 1) new Float:p_grenade[3] = {1.0,3.0,5.0} // Critical Grenade (skill 2) new Float:p_ankh[3] = {0.333,0.666,1.0} // Equipment reincarnation (skill 3) new Float:p_evasion[3] = {0.1,0.2,0.3} // Evasion (skill 1) new Float:p_thorns[3] = {0.05,0.1,0.15} // Thorns Aura (skill 2) new Float:p_trueshot[3] = {0.15,0.3,0.45} // Trueshot Aura (skill 3) new Float:p_pheonix[3] = {0.333,0.666,1.0} // Pheonix (skill 1) new Float:p_banish[3] = {0.05,0.1,0.15} // Banish (skill 2) new Float:p_mana[3] = {0.15,0.30,0.45} // Siphon Mana (skill 3) new Float:p_heal[3] = {6.0,4.0,2.0} // Healing Wave (skill 1) new Float:p_hex[3] = {0.01,0.02,0.05} // Hex (skill 2) new p_serpent[3] = {1,2,3} // Serpent Ward (skill 3) new Float:p_fan[3] = {0.05,0.10,0.15} // Fan of Knives (skill 1) new Float:p_blink[3] = {0.333,0.666,1.0} // Blink (skill 2) new Float:p_shadow[3] = {0.15,0.30,0.45} // Shadow Strike (skill 3) new Float:p_impale[3] = {0.15,0.30,0.45} // Impale (skill 1) new Float:p_spiked[3] = {0.05,0.1,0.15} // Spiked Carapace (skill 2) new Float:p_carrion[3] = {0.15,0.25,0.45} // Carrion Beetle (skill 3) new xplevel[11] = {0,150,300,600,1000,1500,2100,2800,3400,4500,5500} new xpgiven[11] = {60,80,100,120,140,160,180,200,220,240,260} new BOMBPLANTXP = 100 new DEFUSEXP = 100 new HOSTAGEXP = 100 new KILLRESCUEMANXP = 100 new XPBONUS = 150 new XPFILENAME[] = "war3users.ini" new Float:weaponxpmultiplier[31] = {1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0} new racename[9][] = {"No race","Undead Scourge","Human Alliance","Orcish Horde","Night Elves of Kalimdor","Blood Mage","Shadow Hunter","Warden","Crypt Lord"} new itemname[9][] = {"Ankh of Reincarnation","Boots of Speed","Claws of Attack +6","Cloak of Shadows","Mask of Death","Necklace of Immunity","Orb of Frost","Periapt of Health","Tome of Experience"} new itemcost[9] = {1500,1500,1000,800,2000,800,2000,1000,4000} new itemname2[9][] = {"Scroll of Respawning","Mole Protectant","Helm of Excellence","Amulet of the Cat","Sock of the Feather","Flaming Gloves of Warmth","Ring of Regeneration +1","Chameleon","Mole"} new itemcost2[9] = {5000,800,550,1500,1500,1750,1000,9000,15000} new race1skill[4][] = {"Vampiric Aura","Unholy Aura","Levitation","Suicide Bomber"} new race2skill[4][] = {"Invisibility","Devotion Aura","Bash","Teleport"} new race3skill[4][] = {"Critical Strike","Critical Grenade","Equipment Reincarnation","Chain Lightning"} new race4skill[4][] = {"Evasion","Thorns Aura","Trueshot Aura","Entangle Roots"} new race5skill[4][] = {"Pheonix","Banish","Siphon Mana","Flame Strike"} new race6skill[4][] = {"Healing Wave","Hex","Serpent Ward","Big Bad Voodoo"} new race7skill[4][] = {"Fan of Knives","Blink","Shadow Strike","Vengeance"} new race8skill[4][] = {"Impale","Spiked Carapace","Carrion Beetles","Locust Swarm"} public set_xpmultiplier(){ if (!get_cvar_num("mp_weaponxpmodifier")) return PLUGIN_CONTINUE weaponxpmultiplier[CSW_USP] = 3.0 weaponxpmultiplier[CSW_DEAGLE] = 3.0 weaponxpmultiplier[CSW_GLOCK18] = 3.0 weaponxpmultiplier[CSW_ELITE] = 4.0 weaponxpmultiplier[CSW_P228] = 3.0 weaponxpmultiplier[CSW_FIVESEVEN] = 3.0 weaponxpmultiplier[CSW_XM1014] = 1.25 weaponxpmultiplier[CSW_M3] = 1.5 weaponxpmultiplier[CSW_MP5NAVY] = 1.0 weaponxpmultiplier[CSW_UMP45] = 1.25 weaponxpmultiplier[CSW_P90] = 1.25 weaponxpmultiplier[CSW_TMP] = 1.5 weaponxpmultiplier[CSW_MAC10] = 1.5 weaponxpmultiplier[CSW_AWP] = 1.0 weaponxpmultiplier[CSW_M4A1] = 1.0 weaponxpmultiplier[CSW_AK47] = 1.0 weaponxpmultiplier[CSW_AUG] = 1.0 weaponxpmultiplier[CSW_SG552] = 1.0 weaponxpmultiplier[CSW_G3SG1] = 1.5 weaponxpmultiplier[CSW_SG550] = 1.5 weaponxpmultiplier[CSW_M249] = 1.25 weaponxpmultiplier[CSW_SCOUT] = 1.5 weaponxpmultiplier[CSW_HEGRENADE] = 2.0 weaponxpmultiplier[CSW_KNIFE] = 6.0 weaponxpmultiplier[CSW_C4] = 2.0 weaponxpmultiplier[CSW_SMOKEGRENADE] = 1.0 weaponxpmultiplier[CSW_FLASHBANG] = 1.0 return PLUGIN_CONTINUE } public items(parm2[2]){ new temp[128] new message[256] new id = parm2[0] if (playeritem[id]!=0 && playeritem2[id]!=0){ if (playeritem2[id]==REGEN) format(temp,127,"Current Items: %s and %s x%d",playeritem[id]?itemname[playeritem[id]-1]:"",playeritem2[id]?itemname2[playeritem2[id]-1]:"",rings[id]) else format(temp,127,"Current Items: %s and %s",playeritem[id]?itemname[playeritem[id]-1]:"",playeritem2[id]?itemname2[playeritem2[id]-1]:"") } if (playeritem[id]==0 && playeritem2[id]!=0){ if (playeritem2[id]==REGEN) format(temp,127,"Current Item: %s x%d",playeritem2[id]?itemname2[playeritem2[id]-1]:"",rings[id]) else format(temp,127,"Current Item: %s",playeritem2[id]?itemname2[playeritem2[id]-1]:"") } if (playeritem[id]!=0 && playeritem2[id]==0) format(temp,127,"Current Item: %s",playeritem[id]?itemname[playeritem[id]-1]:"") itemsrunning[id]=true add(message,255,temp) set_hudmessage(255,255,255,-1.0,0.945,2, 1.5, 40.0, 0.02, 5.0, 1) if (is_user_alive(id) && !endround) show_hudmessage(id,message) set_task(1.0,"items",2,parm2,2) return PLUGIN_CONTINUE } public displaylevel(id,hide){ if (id==0) return PLUGIN_CONTINUE new parm2[2] parm2[0] = id if(!itemsrunning[id] && !endround) items(parm2) new oldlevel = p_level[id] if (playerxp[id]<0) playerxp[id]=0 for (new i=0; i<=10; ++i){ if (playerxp[id]>=xplevel[i]) p_level[id]=i else break } new xpstring[512] if(playeritem2[id]==0) { if (p_level[id]==0) format(xpstring,511,"%s XP: %d/%d",racename[p_skills[id][0]],playerxp[id],xplevel[p_level[id]+1]) else if (p_level[id]<10) format(xpstring,511,"%s Level %d XP: %d/%d",racename[p_skills[id][0]],p_level[id],playerxp[id],xplevel[p_level[id]+1]) else format(xpstring,511,"%s Level %d XP: %d/%d",racename[p_skills[id][0]],p_level[id],xplevel[10],xplevel[10]) } else { if (p_level[id]==0) format(xpstring,511,"%s XP: %d/%d",racename[p_skills[id][0]],playerxp[id],xplevel[p_level[id]+1]) else if (p_level[id]<10) format(xpstring,511,"%s Level %d XP: %d/%d",racename[p_skills[id][0]],p_level[id],playerxp[id],xplevel[p_level[id]+1]) else format(xpstring,511,"%s Level %d XP: %d/%d",racename[p_skills[id][0]],p_level[id],xplevel[10],xplevel[10]) } message_begin( MSG_ONE, gmsgStatusText, {0,0,0}, id) write_byte(0) write_string(xpstring) message_end() if (cheatson[id] && get_cvar_num("sv_cheats")==1) p_level[id]=10 if (joshon[id]) p_level[id]=10 if (p_level[id] > oldlevel && !joshon[id]){ // Level Gained set_hudmessage(200, 100, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2) show_hudmessage(id,"You gained a Level") if (file_exists("sound/warcraft3/Levelupcaster.wav")==1) emit_sound(id,CHAN_STATIC, "warcraft3/Levelupcaster.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) else emit_sound(id,CHAN_STATIC, "plats/elevbell1.wav", 1.0, ATTN_NORM, 0, PITCH_LOW) } new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] while (skillsused>p_level[id]){ if (p_skills[id][4]==1 && p_level[id]<6) p_skills[id][4]=0 else if (p_skills[id][1]>=p_skills[id][2] && p_skills[id][1]>=p_skills[id][3]) --p_skills[id][1] else if (p_skills[id][2]>=p_skills[id][1] && p_skills[id][2]>=p_skills[id][3]) --p_skills[id][2] else if (p_skills[id][3]>=p_skills[id][1] && p_skills[id][3]>=p_skills[id][2]) --p_skills[id][3] skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] } if (hide!=1 && p_skills[id][0]!=0){ new temp[128] new message[256] // Extra-Start: Changed by Tri Moon, bugfix v2.20.5: "runtime error 4 on line xxx" when player has no race yet, also added "No race" to racearray. format(message,255,"%s",racename[p_skills[id][0]]) // Extra-End: Changed by Tri Moon, bugfix v2.20.5: "runtime error 4 on line xxx" when player has no race yet, also added "No race" to racearray. if (p_level[id]){ format(temp,127,"^nLevel %d",p_level[id]) add(message,255,temp) } new skillcounter = 0 new skillcurrentrace[4][64] while (skillcounter < 4){ if (p_skills[id][0] == 1){ copy(skillcurrentrace[skillcounter],63,race1skill[skillcounter]) } else if (p_skills[id][0] == 2){ copy(skillcurrentrace[skillcounter],63,race2skill[skillcounter]) } else if (p_skills[id][0] == 3){ copy(skillcurrentrace[skillcounter],63,race3skill[skillcounter]) } else if (p_skills[id][0] == 4){ copy(skillcurrentrace[skillcounter],63,race4skill[skillcounter]) } else if (p_skills[id][0] == 5){ copy(skillcurrentrace[skillcounter],63,race5skill[skillcounter]) } else if (p_skills[id][0] == 6){ copy(skillcurrentrace[skillcounter],63,race6skill[skillcounter]) } else if (p_skills[id][0] == 7){ copy(skillcurrentrace[skillcounter],63,race7skill[skillcounter]) } else if (p_skills[id][0] == 8){ copy(skillcurrentrace[skillcounter],63,race8skill[skillcounter]) } ++skillcounter } if (p_skills[id][1]){ format(temp,127,"^n%s Level %d",skillcurrentrace[0],p_skills[id][1]) add(message,255,temp) } if (p_skills[id][2]){ format(temp,127,"^n%s Level %d",skillcurrentrace[1],p_skills[id][2]) add(message,255,temp) } if (p_skills[id][3]){ format(temp,127,"^n%s Level %d",skillcurrentrace[2],p_skills[id][3]) add(message,255,temp) } if (p_skills[id][4]){ format(temp,127,"^nUltimate: %s",skillcurrentrace[3]) add(message,255,temp) } set_hudmessage(255, 255, 255, -1.0, 0.3, 0, 3.0, 5.0, 0.1, 0.2, 2) show_hudmessage(id,message) } if (p_skills[id][0] == 1 && p_skills[id][3] && playeritem2[id]!=FEATHER){ // Levitation if (get_user_gravity(id)!=p_levitation[p_skills[id][3]-1]) set_user_gravity(id,p_levitation[p_skills[id][3]-1]) } else if (playeritem2[id]==FEATHER) set_user_gravity(id,0.45) else if (get_user_gravity(id)!=1.0) set_user_gravity(id,1.0) if (p_skills[id][0] == 2 && p_skills[id][1]){ // Invisibility if (knifeselected[id]){ new invisibility = p_invisibility[p_skills[id][1]-1]/2 set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,invisibility) } else set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,p_invisibility[p_skills[id][1]-1]) } else if (playeritem[id]==CLOAK){ if (knifeselected[id]){ new invisibility = CLOAKINVISIBILITY/2 set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,invisibility) } else set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,CLOAKINVISIBILITY) } else set_user_rendering(id) if (p_skills[id][0] != 4 || !p_skills[id][1]){ // Evasion if (get_user_health(id)>=500) set_user_health(id,get_user_health(id)-1024) } new parm[1] parm[0]=id unholyspeed(parm) return PLUGIN_CONTINUE } public death(){ checkmap() if (warcraft3==false) return PLUGIN_CONTINUE new killer_id = read_data(1) new victim_id = read_data(2) new headshot = read_data(3) new weaponname[20] read_data(4,weaponname,31) new weapon get_user_attacker(victim_id,weapon) new team[32] get_user_team(victim_id, team , 32); isdead[victim_id]=true new players[32] new numberofplayers get_players(players, numberofplayers) new y diedlastround[victim_id]=true if (playeritem2[victim_id]==CHAMELEON) CS_ClearModel(victim_id) if (playeritem2[victim_id]==HELM) set_user_hitzones(0,victim_id,255) becomemole[victim_id]=false if(equal(team,"TERRORIST") && pheonixexistsT>0){ get_players(players, numberofplayers) for (y = 0; y < numberofplayers; ++y){ if (pheonix[y]==6 && !is_user_alive(victim_id) && !endround && y!=victim_id){ pheonix[y]=-1 new parm[2] new name[32] parm[0]=victim_id set_task(0.3,"spawnit",2,parm,2) set_task(0.4,"spawnit",2,parm,2) set_task(0.5,"spawnit",2,parm,2) set_task(0.7,"giveweaponsback",2,parm,2) set_hudmessage(200, 100, 0, -0.8, 0.1, 0, 1.0, 5.0, 0.1, 0.2, 2) get_user_name(y,name,31) show_hudmessage(victim_id,"%s has revived you",name) get_user_name(victim_id,name,31) show_hudmessage(y,"You have revived %s, way to go !",name) pheonixexistsT-- } } } else if(equal(team,"CT") && pheonixexistsCT>0){ get_players(players, numberofplayers) for (y = 0; y < numberofplayers; ++y){ if (pheonix[y]==6 && !is_user_alive(victim_id) && !endround){ pheonix[y]=-1 new parm[2] new name[32] parm[0]=victim_id set_task(0.3,"spawnit",2,parm,2) set_task(0.4,"spawnit",2,parm,2) set_task(0.5,"spawnit",2,parm,2) set_task(0.7,"giveweaponsback",2,parm,2) set_hudmessage(200, 100, 0, -1.6, 0.1, 0, 1.0, 5.0, 0.1, 0.2, 2) get_user_name(y,name,31) show_hudmessage(victim_id,"%s has revived you",name) get_user_name(victim_id,name,31) show_hudmessage(y,"You have revived %s, way to go !",name) pheonixexistsCT-- } } } if(!deathbylight[victim_id] && !(killer_id==victim_id && !headshot && equal(weaponname,"world"))){ message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0) write_byte(killer_id) write_byte(victim_id) write_byte(headshot) write_string(weaponname) message_end() } // client_print(0,print_chat,"%d killed %d with %s (headshot: %d)",killer_id,victim_id,weaponname,headshot) if(playeritem2[victim_id]==RESPAWN && !changingteam[victim_id]) { new parm[2] parm[0]=victim_id parm[1]=6 set_task(1.2,"spawn",72,parm,2) spawnedfromitem[victim_id]=true } if (p_skills[victim_id][0] == 7 && p_skills[victim_id][4] && !hasblink[killer_id]){ // Vengeance new parm[2] parm[0]=victim_id parm[1]=6 if(!endround && !spawnused[victim_id]) { spawning[victim_id]=true set_task(1.2,"spawn",2,parm,2) spawnused[victim_id]=true } else spawning[victim_id]=false } else if (p_skills[victim_id][0]==1 && p_skills[victim_id][4] && !changingteam[victim_id]){ // Suicide Bomber emit_sound(victim_id,CHAN_STATIC, "ambience/particle_suck1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) new parm[2] parm[0]=victim_id parm[1]=6 set_task(0.3,"apacheexplode",1,parm,2) set_task(0.3,"blastcircles",2,parm,2) new origin[3] get_user_origin(victim_id,origin) message_begin( MSG_BROADCAST, SVC_TEMPENTITY ) write_byte( TE_IMPLOSION ) write_coord(origin[0]) write_coord(origin[1]) write_coord(origin[2]) write_byte(100) write_byte(20) write_byte(5) message_end() } diedlastround[victim_id]=true armorondeath[victim_id]=get_user_armor(victim_id) for (new i=0; i<32; ++i){ // Equipment Reincarnation savedweapons[victim_id][i]=0 } savednumber[victim_id]=0 get_user_weapons(victim_id,savedweapons[victim_id],savednumber[victim_id]) if (killer_id && killer_id!=victim_id && victim_id){ if (get_user_team(killer_id)==get_user_team(victim_id)){ playerxp[killer_id]-=xpgiven[p_level[killer_id]] } else{ if (!get_cvar_num("mp_weaponxpmodifier")) playerxp[killer_id]+=xpgiven[p_level[victim_id]] else playerxp[killer_id]+=floatround(xpgiven[p_level[victim_id]]*weaponxpmultiplier[weapon]) if (victim_id==hostagesaver) playerxp[killer_id]+=KILLRESCUEMANXP } displaylevel(killer_id, 1) } changingteam[victim_id]=false new parameter[1] parameter[0]=victim_id set_task(1.0,"getuserinput",3,parameter,1) return PLUGIN_CONTINUE } public getuserinput(parm[1]){ new id = parm[0] new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] if (p_skills[id][0] == 0){ if (!savexp) select_race(id) } else if (skillsused < p_level[id]) select_skill(id,0) else displaylevel(id, 1) return PLUGIN_HANDLED } public restart_round(){ if (warcraft3==false || savexp) return PLUGIN_CONTINUE new players[32] new numplayers new id get_players(players, numplayers) for (new i=0; iMAXGLOW) iglow[id][1]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 0 ) // fade red write_byte( 255 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][1] ) // fade alpha message_end() } else{ hasdefuse[id]=false } } if (diedlastround[id]) { playeritem[id]=0 playeritem2[id]=0 rings[id]=0 set_user_footsteps(id, 0) } isdead[id]=false diedlastround[id]=false if (p_skills[id][0] == 4 && p_skills[id][1] && p_evadenextshot[id]){ // Evasion set_user_health(id,1124) } else if (p_skills[id][0] == 2 && p_skills[id][2]){ // Devotion Aura set_user_health(id,p_devotion[p_skills[id][2]-1]) } if (playeritem[id]==HEALTH) set_user_health(id,get_user_health(id)+HEALTHBONUS) new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] if (skillsused < p_level[id]){ select_skill(id,0) } else { displaylevel(id, 1) } return PLUGIN_CONTINUE } public giveshield(id){ give_item(id,"weapon_shield") } public randompistol(id) { new parm[2] parm[0]=id new wpnList[32] new number new bool:foundone = false get_user_weapons(id,wpnList,number) for (new i = 0;i < number && !foundone;i++) { if (wpnList[i] == CSW_GLOCK18 || wpnList[i] == CSW_USP || wpnList[i] == CSW_P228 || wpnList[i] == CSW_FIVESEVEN || wpnList[i] == CSW_ELITE || wpnList[i] == CSW_DEAGLE) foundone = true } if (foundone==true){ engclient_cmd(id,"weapon_glock18") engclient_cmd(id,"weapon_p228") engclient_cmd(id,"weapon_elite") engclient_cmd(id,"weapon_fiveseven") engclient_cmd(id,"weapon_deagle") engclient_cmd(id,"weapon_usp") engclient_cmd(id,"drop") } new randomnumber = random_num(1,7) new Red = random(256) new Green = random(256) new Blue = random(256) switch(randomnumber) { case 1: { give_item(id,"weapon_p228") give_item(id,"ammo_357sig") give_item(id,"ammo_357sig") give_item(id,"ammo_357sig") give_item(id,"ammo_357sig") give_item(id,"ammo_357sig") give_item(id,"ammo_357sig") give_item(id,"ammo_357sig") return PLUGIN_HANDLED } case 2: { give_item(id,"weapon_elite") give_item(id,"ammo_9mm") give_item(id,"ammo_9mm") give_item(id,"ammo_9mm") give_item(id,"ammo_9mm") give_item(id,"ammo_9mm") give_item(id,"ammo_9mm") give_item(id,"ammo_9mm") return PLUGIN_HANDLED } case 3: { give_item(id,"weapon_fiveseven") give_item(id,"ammo_57mm") give_item(id,"ammo_57mm") give_item(id,"ammo_57mm") give_item(id,"ammo_57mm") give_item(id,"ammo_57mm") give_item(id,"ammo_57mm") give_item(id,"ammo_57mm") return PLUGIN_HANDLED } case 4: { give_item(id,"weapon_deagle") give_item(id,"ammo_50ae") give_item(id,"ammo_50ae") give_item(id,"ammo_50ae") give_item(id,"ammo_50ae") give_item(id,"ammo_50ae") return PLUGIN_HANDLED } case 5: { give_item(id,"weapon_usp") give_item(id,"ammo_45acp") give_item(id,"ammo_45acp") give_item(id,"ammo_45acp") give_item(id,"ammo_45acp") give_item(id,"ammo_45acp") give_item(id,"ammo_45acp") give_item(id,"ammo_45acp") return PLUGIN_HANDLED } case 6: { give_item(id,"weapon_glock18") give_item(id,"ammo_9mm") give_item(id,"ammo_9mm") give_item(id,"ammo_9mm") give_item(id,"ammo_9mm") give_item(id,"ammo_9mm") give_item(id,"ammo_9mm") give_item(id,"ammo_9mm") give_item(id,"ammo_9mm") return PLUGIN_HANDLED } case 7: { user_kill(id,1) set_hudmessage(Red,Green,Blue, 0.03, 0.62, 2, 0.02, 2.0, 0.01, 0.1, 2) show_hudmessage(id,"Luck isn't with you today, you have been killed, no pistol for you!!") return PLUGIN_HANDLED } default: { set_hudmessage(Red,Green,Blue, 0.03, 0.62, 2, 0.02, 2.0, 0.01, 0.1, 2) show_hudmessage(0,"You should never see this message") return PLUGIN_HANDLED } } return PLUGIN_CONTINUE } public droppistols(parm[2]) { new id = parm[0] new team[32] get_user_team(id, team , 32); new wpnList[32] new number new foundGlock = false new foundUSP = false get_user_weapons(id,wpnList,number) for (new i = 0;i < number;i++) { if (wpnList[i] == CSW_GLOCK18) foundGlock = true if (wpnList[i] == CSW_USP) foundUSP = true } if (equal(team,"TERRORIST")){ if(foundGlock){ engclient_cmd(id,"weapon_glock18") engclient_cmd(id,"drop") } else return PLUGIN_HANDLED } if (equal(team,"CT")){ if(foundUSP){ engclient_cmd(id,"weapon_usp") engclient_cmd(id,"drop") } else return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public buy_weapons(parm[]){ new id=parm[0] new menunum=parm[1] new string[2] num_to_str(menunum,string,1) engclient_cmd(id,"buyequip") engclient_cmd(id,"menuselect",string) client_cmd(id,"slot10") return PLUGIN_CONTINUE } public end_round(){ checkmap() if (warcraft3==false) return PLUGIN_CONTINUE endround=true new players[32] new numberofplayers get_players(players, numberofplayers) new y, id new parameter[1], i for (i = 0; i < numberofplayers; ++i){ parameter[0]=players[i] set_task(1.0,"getuserinput",5,parameter,1) } for (y = 0; y < numberofplayers; ++y){ id = players[y] spawnused[id]=false spawning[id]=false spawnedfromitem[id]=false shieldfound[id]=0 playerhasspawned[id]=false godused[id]=false if(goomba[id]==true){ CS_ClearModel(id) goomba[id]=false } if(fancalled[id] && playeritem2[id]!=CHAMELEON) CS_ClearModel(id) deathbylight[id]=false hasblink[id]=false godtime[id]=-6 carrioncount[id]=2 shadowcount[id]=2 runningcarrion[id]=0 poison[id]=1 poisoned[id]=false fancalled[id]=false } freezecalled = 0 pheonixexistsT=0 pheonixexistsCT=0 if (savexp) set_task(3.0,"update_file") return PLUGIN_CONTINUE } public select_skill(id,saychat){ if (warcraft3==false) return PLUGIN_CONTINUE if (p_skills[id][0] == 0){ if (saychat==1){ set_hudmessage(200, 100, 0, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 2) show_hudmessage(id,"You must select a race before selecting skills!") } else client_cmd(id,"echo You must select a race before selecting skills!") return PLUGIN_HANDLED } new message[256] new temp[128] new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] if (skillsused>=p_level[id]){ if (saychat==1){ set_hudmessage(200, 100, 0, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 2) show_hudmessage(id,"You have already used up all your skill points!") } else client_cmd(id,"echo You have already used up all your skill points!") return PLUGIN_HANDLED } if (is_user_bot(id)){ new randomskill while (skillsused < p_level[id]){ randomskill = random_num(1,3) if (p_skills[id][4]==0 && p_level[id]>=6) p_skills[id][4]=1 else if (p_skills[id][randomskill]!=3 && p_level[id]>2*p_skills[id][randomskill]){ ++p_skills[id][randomskill] } skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] } return PLUGIN_HANDLED } format(message,255,"\ySelect Skill:\w^n") new skillcounter = 0 new skillcurrentrace[4][64] while (skillcounter < 4){ if (p_skills[id][0] == 1){ copy(skillcurrentrace[skillcounter],63,race1skill[skillcounter]) } else if (p_skills[id][0] == 2){ copy(skillcurrentrace[skillcounter],63,race2skill[skillcounter]) } else if (p_skills[id][0] == 3){ copy(skillcurrentrace[skillcounter],63,race3skill[skillcounter]) } else if (p_skills[id][0] == 4){ copy(skillcurrentrace[skillcounter],63,race4skill[skillcounter]) } else if (p_skills[id][0] == 5){ copy(skillcurrentrace[skillcounter],63,race5skill[skillcounter]) } else if (p_skills[id][0] == 6){ copy(skillcurrentrace[skillcounter],63,race6skill[skillcounter]) } else if (p_skills[id][0] == 7){ copy(skillcurrentrace[skillcounter],63,race7skill[skillcounter]) } else if (p_skills[id][0] == 8){ copy(skillcurrentrace[skillcounter],63,race8skill[skillcounter]) } ++skillcounter } skillcounter = 1 while (skillcounter< 4){ if (p_skills[id][skillcounter]!=3){ if (p_level[id]<=2*p_skills[id][skillcounter]){ format(temp,127,"\d") add(message,255,temp) } format(temp,127,"^n%d. %s Level %d\w",skillcounter,skillcurrentrace[skillcounter-1],p_skills[id][skillcounter]+1) add(message,255,temp) } ++skillcounter } if (p_skills[id][4]==0){ if (p_level[id]<=5){ format(temp,127,"\d") add(message,255,temp) } format(temp,127,"^n4. Ultimate: %s\w",skillcurrentrace[3]) add(message,255,temp) } new keys = (1<<9) if (p_skills[id][1]!=3 && p_level[id]>2*p_skills[id][1] && skillsused2*p_skills[id][2] && skillsused2*p_skills[id][3] && skillsused=6 && skillsused2*p_skills[id][1] && skillsused2*p_skills[id][2] && skillsused2*p_skills[id][3] && skillsused=6 && skillsused100) set_user_health(id,100) if (savexp){ playerxp[id] = 0 p_level[id] = 0 get_xp_from_file(id,0) } if (get_user_team(id)==0){ engclient_cmd(id, "chooseteam") return PLUGIN_HANDLED } else { new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3] if (skillsused < p_level[id]) select_skill(id,0) } return PLUGIN_HANDLED } public resetultimate(parm[2]){ new id = parm[0] ultimateused[id]=false reseting[id]=false } public set_target(id,key){ // Teleport new targetid = teleportid[id][key] remove_task(666+id) teleportmenu[id]=false client_cmd(id,"slot10") new parm[2] parm[0]=id if (get_cvar_num("sv_restrictultimate")==0 && !reseting[id] && !ultimateused[id]){ set_task(7.5,"resetultimate",2,parm,2) reseting[id]=true } if (is_user_alive(id) && is_user_alive(targetid) && get_user_maxspeed(id)>10 && get_user_team(id)==get_user_team(targetid) && key!=9 && !ultimateused[id] && !endround){ ultimateused[id]=true new waitparm[6] waitparm[0]=id waitparm[1]=targetid waitparm[5]=floatround(get_user_maxspeed(id)) set_user_maxspeed(id,1.0) stunned[id]=true telewaitstop(waitparm) new cooldownparm[1] cooldownparm[0]=id set_task(TELEPORT_COOLDOWN,"cooldown",6,cooldownparm,1) } return PLUGIN_HANDLED } public damage_event(id){ checkmap() if (warcraft3==false) return PLUGIN_CONTINUE new weapon, bodypart, enemy = get_user_attacker(id,weapon,bodypart) new damage new victimisdead=0 new enemyisdead=0 new victimkilled=0 new enemykilled=0 if (is_user_alive(id)==0) victimisdead=1 if (is_user_alive(enemy)==0) enemyisdead=1 // client_print(0,print_chat,"%d attacked %d with %d",enemy,id,weapon) if (enemy==id && weapon==0){ return PLUGIN_CONTINUE } else if (enemy==0){ return PLUGIN_CONTINUE } if (is_user_bot(enemy) && p_skills[enemy][4]==1){ if (p_skills[enemy][0]==3 || p_skills[enemy][0]==4){ ultimate(enemy) } } if (p_skills[enemy][0] == 7 && p_skills[enemy][3] && !hasblink[id]){ // Shadow Strike new bool:p_shadowcurrentshot new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_shadow[p_skills[enemy][2]-1]) p_shadowcurrentshot=true else p_shadowcurrentshot=false if (p_shadowcurrentshot && shadowcount[enemy]>0 && is_user_alive(id)){ new idorigin[3] new enemyorigin[3] get_user_origin(id,idorigin) get_user_origin(enemy,enemyorigin) message_begin( MSG_BROADCAST,SVC_TEMPENTITY) write_byte( TE_SPRITETRAIL ) write_coord(enemyorigin[0]) write_coord(enemyorigin[1]) write_coord(enemyorigin[2]) write_coord(idorigin[0]) write_coord(idorigin[1]) write_coord(idorigin[2]) write_short( shadow ) // short (sprite index) write_byte( 50 ) // byte (count) write_byte( 15 ) // byte (life in 0.1's) write_byte( 1 ) // byte (scale in 0.1's) write_byte( 2 ) // byte (velocity along vector in 10's) write_byte( 6 ) // byte (randomness of velocity in 10's) message_end() set_hudmessage(200, 100, 0, 0.2, 0.2, 0, 1.0, 5.0, 0.1, 0.2, 2) shadowcount[enemy]-- show_hudmessage(enemy,"You have %d poisoned dagger(s) left",shadowcount[enemy]) damage = 10 if (get_user_health(id) - damage<=0) victimkilled = 1 else if (get_user_health(id) - damage<=1024 && get_user_health(id)>500) victimkilled = 1 else victimkilled = 0 if (victimkilled) set_user_health(id, -1) else set_user_health(id, get_user_health(id) - damage) } } if (p_skills[enemy][0] == 8 && p_skills[enemy][3] && !hasblink[id]){ // Carrion Beetle new bool:p_carrioncurrentshot new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_carrion[p_skills[enemy][2]-1]) p_carrioncurrentshot=true else p_carrioncurrentshot=false if (p_carrioncurrentshot && carrioncount[enemy]>0 && is_user_alive(id)){ new idorigin[3] new enemyorigin[3] get_user_origin(id,idorigin) get_user_origin(enemy,enemyorigin) message_begin( MSG_BROADCAST,SVC_TEMPENTITY) write_byte( TE_SPRITETRAIL ) write_coord(enemyorigin[0]) write_coord(enemyorigin[1]) write_coord(enemyorigin[2]) write_coord(idorigin[0]) write_coord(idorigin[1]) write_coord(idorigin[2]) write_short( grunt ) // short (sprite index) write_byte( 50 ) // byte (count) write_byte( 15 ) // byte (life in 0.1's) write_byte( 1 ) // byte (scale in 0.1's) write_byte( 2 ) // byte (velocity along vector in 10's) write_byte( 6 ) // byte (randomness of velocity in 10's) message_end() set_hudmessage(200, 100, 0, 0.2, 0.2, 0, 1.0, 5.0, 0.1, 0.2, 2) carrioncount[id]-- show_hudmessage(enemy,"You have %d beetle(s) left",carrioncount[enemy]) emit_sound(id,CHAN_ITEM, "weapons/cbar_hitbod3.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) damage = 10 if (get_user_health(id) - damage<=0) victimkilled = 1 else if (get_user_health(id) - damage<=1024 && get_user_health(id)>500) victimkilled = 1 else victimkilled = 0 if (victimkilled) set_user_health(id, -1) else set_user_health(id, get_user_health(id) - damage) } } if (p_skills[id][0] == 4){ // Evasion if (hasblink[enemy]){ if (get_user_health(id)>500) set_user_health(id,get_user_health(id)-1024) } else if (p_skills[id][1]) { new healthadjustment new bool:p_evadecurrentshot = p_evadenextshot[id] new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_evasion[p_skills[id][1]-1]){ p_evadenextshot[id]=true if (get_user_health(id)<=100){ healthadjustment = 1024 } } else{ p_evadenextshot[id]=false if (get_user_health(id)>100){ healthadjustment = -1024 } } if (p_evadecurrentshot){ damage = read_data(2) set_user_health(id, get_user_health(id) + damage + healthadjustment) if (iglow[id][2] < 1){ new parm[2] parm[0] = id set_task(0.01,"glow_change",7,parm,2) } iglow[id][2] += damage iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][3] = 0 if (iglow[id][2]>MAXGLOW) iglow[id][2]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 0 ) // fade red write_byte( 0 ) // fade green write_byte( 255 ) // fade blue write_byte( iglow[id][2] ) // fade alpha message_end() return PLUGIN_CONTINUE } else set_user_health(id, get_user_health(id) + healthadjustment) } if (p_skills[id][2] && !hasblink[enemy]) { // Thorns Aura damage = read_data(2) damage = floatround(float(damage) * p_thorns[p_skills[id][2]-1]) if (get_user_health(enemy) - damage<=0) enemykilled = 1 else if (get_user_health(enemy) - damage<=1024 && get_user_health(enemy)>500) enemykilled = 1 else enemykilled = 0 if (enemykilled) set_user_health(enemy, -1) else set_user_health(enemy, get_user_health(enemy) - damage) if (iglow[enemy][0] < 1){ new parm[2] parm[0] = enemy set_task(0.01,"glow_change",8,parm,2) } iglow[enemy][0] += 3*damage iglow[enemy][1] = 0 iglow[enemy][2] = 0 iglow[enemy][3] = 0 if (iglow[enemy][0]>MAXGLOW) iglow[enemy][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},enemy) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[enemy][0] ) // fade alpha message_end() } } else if (p_skills[id][0]==8){ if (p_skills[id][2] && !hasblink[enemy]) { // Spiked Carapace damage = read_data(2) damage = floatround(float(damage) * p_spiked[p_skills[id][2]-1]) if (get_user_health(enemy) - damage<=0) enemykilled = 1 else if (get_user_health(enemy) - damage<=1024 && get_user_health(enemy)>500) enemykilled = 1 else enemykilled = 0 if (enemykilled) set_user_health(enemy, -1) else set_user_health(enemy, get_user_health(enemy) - damage) set_user_armor(id,get_user_armor(id)+damage) if (iglow[enemy][0] < 1){ new parm[2] parm[0] = enemy set_task(0.01,"glow_change",8,parm,2) } iglow[enemy][0] += 3*damage iglow[enemy][1] = 0 iglow[enemy][2] = 0 iglow[enemy][3] = 0 if (iglow[enemy][0]>MAXGLOW) iglow[enemy][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},enemy) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[enemy][0] ) // fade alpha message_end() } } else if (p_skills[enemy][0] == 8){ if (p_skills[enemy][1] && !hasblink[id]){ new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_impale[p_skills[enemy][3]-1]){ message_begin(MSG_ONE,gmsgShake,{0,0,0},id) write_short( 1<<14 )// shake amount write_short( 1<<14 )// shake lasts this long write_short( 1<<14 )// shake noise frequency message_end() } } } else if (p_skills[enemy][0] == 6){ // Hex if (p_skills[enemy][2] && !hasblink[id]) { new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_hex[p_skills[enemy][3]-1]){ CS_SetModel(id,"goomba") goomba[id]=true } } } else if (p_skills[enemy][0] == 5){ // Banish if (p_skills[enemy][2] && !hasblink[id]) { new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_banish[p_skills[enemy][3]-1]){ new parm[2] parm[0]=id new origin[3] get_user_origin(id,origin) origin[2]+=40 set_user_origin(id,origin) if (iglow[id][3] < 1){ parm[0] = id parm[1] = 0 set_task(0.01,"glow_change",11,parm,2) } iglow[id][3] += 100 iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][2] = 0 if (iglow[id][3]>MAXGLOW) iglow[id][3]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 255 ) // fade green write_byte( 255 ) // fade blue write_byte( iglow[id][3] ) // fade alpha message_end() } } } else if (p_skills[enemy][0] == 5){ // Siphon Mana if (p_skills[enemy][3] && !hasblink[id]) { damage = read_data(2) damage = floatround(float(damage) * p_mana[p_skills[enemy][3]-1]) set_user_armor(enemy, get_user_armor(enemy) + damage) if (iglow[enemy][1] < 1){ new parm[2] parm[0] = enemy set_task(0.01,"glow_change",9,parm,2) } iglow[enemy][1] += damage iglow[enemy][0] = 0 iglow[enemy][2] = 0 iglow[enemy][3] = 0 if (iglow[enemy][1]>MAXGLOW) iglow[enemy][1]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},enemy) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 120 ) // fade red write_byte( 120 ) // fade green write_byte( 120 ) // fade blue write_byte( iglow[enemy][1] ) // fade alpha message_end() } } else if (p_skills[enemy][0] == 1){ // Vampiric Aura if (p_skills[enemy][1] && !hasblink[id]) { damage = read_data(2) damage = floatround(float(damage) * p_vampiric[p_skills[enemy][1]-1]) set_user_health(enemy, get_user_health(enemy) + damage) // Extra-Start: Changed by joecool12321, bugfix v2.20.4: "Vampiric Aura" bugged for "Undead Scourge" with "Periapt of Health". // Optimised by Tri Moon. // The checks for "Undead Scourge" and "Vampiric Aura" is already done above. // If enemy is carying "Periapt of Health" clip his health at 100+"Periapt of Health". if (get_user_health(enemy) > p_vampirichealth[p_skills[enemy][1]-1]+ (playeritem[enemy]==HEALTH ? HEALTHBONUS : 0) ){ set_user_health(enemy, p_vampirichealth[p_skills[enemy][1]-1]+ (playeritem[enemy]==HEALTH ? HEALTHBONUS : 0) ) } // Extra-End: Changed by joecool12321, bugfix v2.20.4: "Vampiric Aura" bugged for "Undead Scourge" with "Periapt of Health". if (iglow[enemy][1] < 1){ new parm[2] parm[0] = enemy set_task(0.01,"glow_change",9,parm,2) } iglow[enemy][1] += damage iglow[enemy][0] = 0 iglow[enemy][2] = 0 iglow[enemy][3] = 0 if (iglow[enemy][1]>MAXGLOW) iglow[enemy][1]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},enemy) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 0 ) // fade red write_byte( 255 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[enemy][1] ) // fade alpha message_end() } } else if (p_skills[enemy][0] == 2){ // Bash (DOESN'T WORK ON BOTS) if (p_skills[enemy][3] && !hasblink[id]) { new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_bash[p_skills[enemy][3]-1] && get_user_maxspeed(id)>10 && !slowed[id]){ // Cannot bash if already bashed or frosted new normalspeed = floatround(get_user_maxspeed(id)) set_user_maxspeed(id,1.0) // Replace "id" with "enemy" to test bash on self stunned[id]=true new parm[2] parm[0]=id // Replace "id" with "enemy" to test bash on self parm[1]=normalspeed set_task(1.0,"reset_maxspeed",10,parm,2) if (iglow[id][3] < 1){ parm[0] = id parm[1] = 0 set_task(0.01,"glow_change",11,parm,2) } iglow[id][3] += 100 iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][2] = 0 if (iglow[id][3]>MAXGLOW) iglow[id][3]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 255 ) // fade green write_byte( 255 ) // fade blue write_byte( iglow[id][3] ) // fade alpha message_end() } } } else if (p_skills[enemy][0] == 3){ // Critical Strike if (p_skills[enemy][1] && !hasblink[id]) { new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_critical[p_skills[enemy][1]-1]){ damage = read_data(2) damage = floatround(float(damage) * p_skills[enemy][1]) // Will be either 1, 2 or 3 times damage induced depending on skill level if (get_user_health(id) - damage<=0) victimkilled = 1 if (get_user_health(id) - damage<=1024 && get_user_health(id)>500) victimkilled = 1 if (victimkilled) set_user_health(id, -1) else set_user_health(id, get_user_health(id) - damage) if (iglow[id][0] < 1){ new parm[2] parm[0] = id set_task(0.01,"glow_change",12,parm,2) } iglow[id][0] += damage iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 if (iglow[id][0]>MAXGLOW) iglow[id][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][0] ) // fade alpha message_end() } } if (p_skills[enemy][2] && playeritem[id]!=IMMUNITY && !hasblink[id]){ // Critical Grenade if (weapon == 4){ damage = read_data(2) damage = floatround(float(damage) * p_grenade[p_skills[enemy][2]-1]) if (get_user_health(id) - damage<=0) victimkilled = 1 if (get_user_health(id) - damage<=1024 && get_user_health(id)>500) victimkilled = 1 if (victimkilled) set_user_health(id, -1) else set_user_health(id,get_user_health(id) - damage) if (iglow[id][0] < 1){ new parm[2] parm[0] = id set_task(0.01,"glow_change",13,parm,2) } iglow[id][0] += damage iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 if (iglow[id][0]>MAXGLOW) iglow[id][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][0] ) // fade alpha message_end() } } } else if (p_skills[enemy][0] == 4){ // Trueshot Aura if (p_skills[enemy][3] && !hasblink[id]) { damage = read_data(2) damage = floatround(float(damage) * p_trueshot[p_skills[enemy][3]-1]) if (get_user_health(id) - damage<=0) victimkilled = 1 if (get_user_health(id) - damage<=1024 && get_user_health(id)>500) victimkilled = 1 if (victimkilled) set_user_health(id, -1) else set_user_health(id, get_user_health(id) - damage) if (iglow[id][0] < 1){ new parm[2] parm[0] = id set_task(0.01,"glow_change",14,parm,2) } iglow[id][0] += 2*damage iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 if (iglow[id][0]>MAXGLOW) iglow[id][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][0] ) // fade alpha message_end() } } if (playeritem[enemy] == CLAWS){ // Claws of Attack damage = CLAWSOFATTACK if (get_user_health(id) - damage<=0) victimkilled = 1 if (get_user_health(id) - damage<=1024 && get_user_health(id)>500) victimkilled = 1 if (victimkilled) set_user_health(id, -1) else set_user_health(id, get_user_health(id) - damage) if (iglow[id][0] < 1){ new parm[2] parm[0] = id set_task(0.01,"glow_change",14,parm,2) } iglow[id][0] += 2*damage iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 if (iglow[id][0]>MAXGLOW) iglow[id][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][0] ) // fade alpha message_end() } else if (playeritem[enemy] == MASK){ // Mask of Death damage = read_data(2) damage = floatround(float(damage) * MASKPERCENT) set_user_health(enemy, get_user_health(enemy) + damage) // Extra-Start: Changed by joecool12321, bugfix v2.20.4: "Mask of Death" bugged for "Human Alliance" with "Devotion Aura". // Optimised by Tri Moon. // If enemy is "Human Alliance" with "Devotion Aura" clip his health at max for his "Devotion Aura" level. if (get_user_health(enemy) > (p_skills[enemy][0]==2 ? p_devotion[p_skills[enemy][2]-1] : 100) ){ set_user_health(enemy, (p_skills[enemy][0]==2 ? p_devotion[p_skills[enemy][2]-1] : 100) ) } // Extra-End: Changed by joecool12321, bugfix v2.20.4: "Mask of Death" bugged for "Human Alliance" with "Devotion Aura". if (iglow[enemy][1] < 1){ new parm[2] parm[0] = enemy set_task(0.01,"glow_change",9,parm,2) } iglow[enemy][1] += damage iglow[enemy][0] = 0 iglow[enemy][2] = 0 iglow[enemy][3] = 0 if (iglow[enemy][1]>MAXGLOW) iglow[enemy][1]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},enemy) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 0 ) // fade red write_byte( 255 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[enemy][1] ) // fade alpha message_end() } else if (playeritem[enemy] == FROST){ // Frost (DOESN'T WORK ON BOTS) if (get_user_maxspeed(id)>10 && !slowed[id]){ // Cannot frost if bashed or frosted new normalspeed = floatround(get_user_maxspeed(id)) set_user_maxspeed(id,FROSTSPEED) // Replace "id" with "enemy" to test bash on self slowed[id]=true new parm[2] parm[0]=id // Replace "id" with "enemy" to test bash on self parm[1]=normalspeed set_task(1.0,"reset_maxspeed",10,parm,2) if (iglow[id][3] < 1){ parm[0] = id parm[1] = 0 set_task(0.01,"glow_change",11,parm,2) } iglow[id][3] += 100 iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][2] = 0 if (iglow[id][3]>MAXGLOW) iglow[id][3]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 255 ) // fade green write_byte( 255 ) // fade blue write_byte( iglow[id][3] ) // fade alpha message_end() } } if (enemykilled && !enemyisdead){ // due to thorns aura if (get_user_team(id)!=get_user_team(enemy)){ set_user_frags(id, get_user_frags(id)+1) set_user_frags(enemy, get_user_frags(enemy)+1) playerxp[id]+=xpgiven[p_level[enemy]] displaylevel(id, 1) } message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0) write_byte(id) write_byte(enemy) write_byte(0) write_string(race4skill[1]) message_end() } if (victimkilled && !victimisdead){ // due to all aggressive auras new headshot if (bodypart==1) headshot=1 else headshot=0 new weaponname[32] switch (weapon) { case 1: weaponname = "p228" case 3: weaponname = "scout" case 4: weaponname = "grenade" case 5: weaponname = "xm1014" case 7: weaponname = "mac10" case 8: weaponname = "aug" case 10: weaponname = "elite" case 11: weaponname = "fiveseven" case 12: weaponname = "ump45" case 13: weaponname = "sg550" case 16: weaponname = "usp" case 17: weaponname = "glock18" case 18: weaponname = "awp" case 19: weaponname = "mp5navy" case 20: weaponname = "m249" case 21: weaponname = "m3" case 22: weaponname = "m4a1" case 23: weaponname = "tmp" case 24: weaponname = "g3sg1" case 26: weaponname = "deagle" case 27: weaponname = "sg552" case 28: weaponname = "ak47" case 29: weaponname = "knife" case 30: weaponname = "p90" } if (!victimisdead){ if (get_user_team(id)!=get_user_team(enemy)){ set_user_frags(id, get_user_frags(id)+1) set_user_frags(enemy, get_user_frags(enemy)+1) if (!get_cvar_num("mp_weaponxpmodifier")) playerxp[enemy]+=xpgiven[p_level[id]] else playerxp[enemy]+=floatround(xpgiven[p_level[id]]*weaponxpmultiplier[weapon]) } else{ set_user_frags(id, get_user_frags(id)+1) set_user_frags(enemy, get_user_frags(enemy)-1) playerxp[enemy]-=xpgiven[p_level[enemy]] } } message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0) write_byte(enemy) write_byte(id) write_byte(headshot) write_string(weaponname) message_end() displaylevel(enemy, 1) } return PLUGIN_CONTINUE } public glow_change(parm[]){ new id = parm[0] if (p_skills[id][0]==2 && p_skills[id][1]){ // Don't glow if player is invisible iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 } if (playeritem[id]==CLOAK){ // Don't glow if player is invisible iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 } else if (iglow[id][0] > 5){ set_user_rendering(id,kRenderFxGlowShell,iglow[id][0],0,0, kRenderNormal, 16) iglow[id][0] -= 5 set_task(0.2,"glow_change",15,parm,2) } else if (iglow[id][1] > 5){ set_user_rendering(id,kRenderFxGlowShell,0,iglow[id][1],0, kRenderNormal, 16) iglow[id][1] -= 5 set_task(0.2,"glow_change",16,parm,2) } else if (iglow[id][2] > 5){ set_user_rendering(id,kRenderFxGlowShell,0,0,iglow[id][2], kRenderNormal, 16) iglow[id][2] -= 5 set_task(0.2,"glow_change",17,parm,2) } else if (iglow[id][3] > 5){ set_user_rendering(id,kRenderFxGlowShell,iglow[id][3],iglow[id][3],iglow[id][3], kRenderNormal, 16) iglow[id][3] -= 5 set_task(0.2,"glow_change",18,parm,2) } else{ iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 set_user_rendering(id) } return PLUGIN_CONTINUE } public reset_maxspeed(parm[]){ new enemy = parm[0] new normalspeed = parm[1] stunned[enemy]=false slowed[enemy]=false set_user_maxspeed(enemy, float(normalspeed)) return PLUGIN_CONTINUE } #if STEAM_POWERED public zoomed2(id){ zoomed[id]=1 } public unzoomed(id){ zoomed[id]=0 } #endif public nadetimer(parm[2]){ new id = parm[0] set_hudmessage(0, 100, 0, 0.05, 0.65, 2, 0.02, 10.0, 0.01, 0.1, 2) if(playeritem2[id]!=INFERNO){ show_hudmessage(id,"") return PLUGIN_HANDLED } if(nadetime[parm[0]]!=0) show_hudmessage(id,"%d second(s) until your next nade", nadetime[parm[0]]) nadetime[parm[0]] -= 1 if (!is_user_alive(id)) show_hudmessage(id,"Don't die next time and I'll give you another nade, DUMBASS!") if (nadetime[parm[0]]!=-1 && is_user_alive(parm[0])) set_task(1.0,"nadetimer",4,parm,2) if (nadetime[parm[0]]==-1){ giveheifnothas(parm) nadetime[id] = 10 return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public change_weapon(id) { checkmap() if (warcraft3==false) return PLUGIN_CONTINUE if (playeritem2[id]==INFERNO) { new wpnList[32] new number new foundNade = false get_user_weapons(id,wpnList,number) for (new i = 0;i < number && !foundNade;i++) { if (wpnList[i] == CSW_HEGRENADE) foundNade = true } new parm[2] parm[0]=id if(!justgivennade[id] && !foundNade) { justgivennade[id]=true nadetimer(parm) } } if (p_skills[id][0] == 2 && p_skills[id][1]){ // Invisibility if (read_data(2)==29){ set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,p_invisibility[p_skills[id][1]-1]/2) knifeselected[id]=true } else{ set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,p_invisibility[p_skills[id][1]-1]) knifeselected[id]=false } } else if (playeritem[id]==CLOAK){ if (read_data(2)==29){ set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,CLOAKINVISIBILITY/2) knifeselected[id]=true } else{ set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,CLOAKINVISIBILITY) knifeselected[id]=false } } #if STEAM_POWERED new weaponnum = (read_data(2)) if (!freezetime && !slowed[id] && !stunned[id]) { if (weaponnum==3){ //scout if (zoomed[id]==1) set_user_maxspeed(id,220.0) else set_user_maxspeed(id,260.0) //220 zoomed } else if (weaponnum==4){ //hegrenad set_user_maxspeed(id,260.0) } else if (weaponnum==5){ //xm1014 set_user_maxspeed(id,230.0) } else if (weaponnum==7){ //mac10 set_user_maxspeed(id,250.0) } else if (weaponnum==8){ //aug - bollup set_user_maxspeed(id,240.0) } else if (weaponnum==9){ //smokegrenade set_user_maxspeed(id,250.0) } else if (weaponnum==12){ //ump45 set_user_maxspeed(id,250.0) } else if (weaponnum==13){ //sg550 if (zoomed[id]==1) set_user_maxspeed(id,150.0) else set_user_maxspeed(id,210.0) //150 zoomed } else if (weaponnum==18){ //awp if (zoomed[id]==1) set_user_maxspeed(id,150.0) else set_user_maxspeed(id,210.0) //150 zoomed } else if (weaponnum==19){ //mp5 set_user_maxspeed(id,250.0) } else if (weaponnum==20){ //m249 set_user_maxspeed(id,220.0) } else if (weaponnum==21){ //auto-shotty (m3) set_user_maxspeed(id,240.0) } else if (weaponnum==14){ //galil set_user_maxspeed(id,240.0) } else if (weaponnum==15){ //famas set_user_maxspeed(id,240.0) } else if (weaponnum==22){ //M4A1 set_user_maxspeed(id,230.0) } else if (weaponnum==23){ //TMP set_user_maxspeed(id,250.0) } else if (weaponnum==24){ //G3SG1 if (zoomed[id]==1) set_user_maxspeed(id,150.0) else set_user_maxspeed(id,210.0) //150 zoomed } else if (weaponnum==25){ //flashbang set_user_maxspeed(id,250.0) } else if (weaponnum==27){ //sg552 set_user_maxspeed(id,235.0) } else if (weaponnum==28){ //AK47 set_user_maxspeed(id,221.0) } else if (weaponnum==30){ //P90 set_user_maxspeed(id,245.0) } else if (weaponnum==1){ //p228 set_user_maxspeed(id,250.0) } else if (weaponnum==10 ){ //elite set_user_maxspeed(id,250.0) } else if (weaponnum==11){ //fiveseven set_user_maxspeed(id,250.0) } else if (weaponnum==26){ //deagle set_user_maxspeed(id,250.0) } else if (weaponnum==16){ //usp set_user_maxspeed(id,250.0) } else if (weaponnum==17){ //glock set_user_maxspeed(id,250.0) } else if (weaponnum==29){ //knife set_user_maxspeed(id,250.0) } else if (weaponnum==6){ //BOMB set_user_maxspeed(id,250.0) } } #endif new parm[1] parm[0]=id unholyspeed(parm) return PLUGIN_CONTINUE } public freezetimedone(id) { checkmap() if (warcraft3==false) return PLUGIN_CONTINUE if(playeritem2[id]==PROTECTANT){ new parm[2] parm[0]=id parm[1]=MOLE_PROTECTANT_TIME set_user_godmode(id,1) give_god(parm) } #if STEAM_POWERED set_user_maxspeed(id,240.0) #endif new parm[1] parm[0]=id set_task(0.1,"unholyspeed",19,parm,1) return PLUGIN_CONTINUE } public unholyspeed(parm[1]){ new id = parm[0] if (stunned[id]){ set_user_maxspeed(id,1.0) } else if (slowed[id]){ set_user_maxspeed(id,FROSTSPEED) } #if STEAM_POWERED else if (p_skills[id][0] == 1 && p_skills[id][2]){ // Unholy Aura if (get_user_maxspeed(id)>10 && get_user_maxspeed(id)!=p_unholy[p_skills[id][2]-1]){ set_user_maxspeed(id,(p_unholy[p_skills[id][2]-1])) } } #else else if (get_user_maxspeed(id)>10 && p_skills[id][0] == 1 && p_skills[id][2] && !freezetime){ // Unholy Aura if (get_user_maxspeed(id)!=p_unholy[p_skills[id][2]-1]){ set_user_maxspeed(id,(p_unholy[p_skills[id][2]-1])) } } #endif else if (get_user_maxspeed(id)>10 && playeritem[id]==BOOTS && !freezetime){ // Boots of Speed if (get_user_maxspeed(id)!=BOOTSPEED){ set_user_maxspeed(id,BOOTSPEED) } } return PLUGIN_CONTINUE } public say_level(id){ checkmap() if (warcraft3==false) return PLUGIN_CONTINUE displaylevel(id, 0) return PLUGIN_CONTINUE } public player_skills(id,saychat){ if (warcraft3==false) return PLUGIN_CONTINUE new name[32], message[2048] #if STEAM_POWERED new temp[1024] #else new temp[256] #endif new skill1[64], skill2[64], skill3[64], skill4[64] new players[32] new numberofplayers get_players(players, numberofplayers) new i new playerid #if STEAM_POWERED add(message,2047,"") #endif for (i = 0; i < numberofplayers; ++i){ skill1="" skill2="" skill3="" skill4="" playerid=players[i] get_user_name(playerid,name,31) if (p_skills[playerid][0]==1){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race1skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race1skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race1skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race1skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==2){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race2skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race2skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race2skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race2skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[2],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[2],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==3){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race3skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race3skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race3skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race3skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[2],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[3],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==4){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race4skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race4skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race4skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race4skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[4],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[4],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==5){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race5skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race5skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race5skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race5skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[5],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[5],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==6){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race6skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race6skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race6skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race6skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[6],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[6],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==7){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race7skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race7skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race7skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race7skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[7],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[7],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==8){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race8skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race8skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race8skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race8skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[8],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[8],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==0){ #if STEAM_POWERED format(temp,1023,"%s - race not yet selected
",name) #else format(temp,255,"%s - race not yet selected^n",name) #endif } add(message,2047,temp) } if (saychat==1){ show_motd(id,message,"Warcraft 3 XP Player Skills") return PLUGIN_CONTINUE } else{ console_print(id,message) } return PLUGIN_HANDLED } public skills_info(id,saychat){ checkmap() if (warcraft3==false) return PLUGIN_CONTINUE new message[2048] new title[64], temp[1024] #if STEAM_POWERED add(message,2047,"
Click here for more detailed information regarding the new races, etc.. 


") if (p_skills[id][0]==1){ format(title,63,"%s Skills",racename[1]) temp = "Vampiric Aura: Gives you (%d%%, %d%% or %d%%) of the damage you do in attack back as health

\ Unholy Aura: Gives you a speed boost, also all weapons make you go at the same speed

\ Levitation: Allows you to jump higher by reducing your gravity

\ Ultimate, Suicide Bomber: When you die you will explode killing nearby enemies and regenerate" format(temp,2047,temp,floatround(p_vampiric[0]*100),floatround(p_vampiric[1]*100),floatround(p_vampiric[2]*100)) } else if (p_skills[id][0]==2){ format(title,63,"%s Skills",racename[2]) temp = "Invisibility: Makes you partially invisible, you will be harder to see

\ Devotion Aura: Gives you (%d, %d or %d) health at the start of the round.

\ Bash: When you shoot someone you have a (%d%%, %d%% or %d%%) chance of rendering them immobile for 1 second

\ Ultimate, Teleport: Allows you to teleport to a team mate (10 seconds cooldown)" format(temp,2047,temp,p_devotion[0],p_devotion[1],p_devotion[2],floatround(p_bash[0]*100),floatround(p_bash[1]*100),floatround(p_bash[2]*100)) } else if (p_skills[id][0]==3){ format(title,63,"%s Skills",racename[3]) temp = "Critical Strike: Gives you a %d%% chance of doing (2, 3, or 4) times normal damage

\ Critical Grenade: Grenades will ALWAYS do (%d, %d or %d) times normal damage

\ Equipment Reincarnation: Gives you a (%d%%, %d%% or %d%%) chance of regaining your equipment on death

\ Ultimate, Chain Lightning: Discharges a bolt of lightning that jumps to all nearby enemies" format(temp,2047,temp,floatround(p_critical[0]*100),floatround(p_grenade[0])+1,floatround(p_grenade[1])+1,floatround(p_grenade[2])+1,floatround(p_ankh[0]*100),floatround(p_ankh[1]*100),floatround(p_ankh[2]*100)) } else if (p_skills[id][0]==4){ format(title,63,"%s Skills",racename[4]) temp = "Evasion: Gives you a (%d%%, %d%% or %d%%) chance of evading each shot

\ Thorns Aura: Does (%d%%, %d%% or %d%%) mirror damage to the person who shot you

\ Trueshot Aura: Does (%d%%, %d%% or %d%%) extra damage to the enemy

\ Ultimate, Entangle Roots: Allows you to prevent an enemy player from moving for 10 seconds" format(temp,2047,temp,floatround(p_evasion[0]*100),floatround(p_evasion[1]*100),floatround(p_evasion[2]*100),floatround(p_thorns[0]*100),floatround(p_thorns[1]*100),floatround(p_thorns[2]*100),floatround(p_trueshot[0]*100),floatround(p_trueshot[1]*100),floatround(p_trueshot[2]*100)) } else if (p_skills[id][0]==5){ format(title,63,"%s Skills",racename[5]) temp = "Pheonix: You have a (%d%%, %d%% or %d%%) chance of reviving the fist teammate who dies

\ Banish: You have a (%d%%, %d%% or %d%%) chance of moving your enemy

\ Siphon Mana: Steal (%d%%, %d%% or %d%%) armor from enemy (no limit)

\ Ultimate, Flame Strike: You receive a flame throwers (5 uses every 5 seconds)" format(temp,2047,temp,floatround(p_pheonix[0]*100),floatround(p_pheonix[1]*100),floatround(p_pheonix[2]*100),floatround(p_banish[0]*100),floatround(p_banish[1]*100),floatround(p_banish[2]*100),floatround(p_mana[0]*100),floatround(p_mana[1]*100),floatround(p_mana[2]*100)) } else if (p_skills[id][0]==6){ format(title,63,"%s Skills",racename[6]) temp = "Healing Wave: Every (%d%%, %d%% or %d%%) seconds you and your nearby teammates around you gain 1 HP

\ Hex: You have a (%d%%, %d%% or %d%%) chance of turning your enemy into a big goober

\ Serpent Ward: You receive (%d, %d or %d) serpent wards each round that damage nearby enemy units, bind a key to ability (or say ability) to plant one

\ Ultimate, Bid Bad Voodoo: Invincibility for 3 seconds" format(temp,2047,temp,floatround(p_heal[0]),floatround(p_heal[1]),floatround(p_heal[2]),floatround(p_hex[0]*100),floatround(p_hex[1]*100),floatround(p_hex[2]*100),p_serpent[0],p_serpent[1],p_serpent[2]) } else if (p_skills[id][0]==7){ format(title,63,"%s Skills",racename[7]) temp = "Fan of Knives: You have a (%d%%, %d%% or %d%%) chance of becoming a mole

\ Blink: Disables ALL enemy abilities (%d%%, %d%% or %d%%)

\ Shadow Strike: (inactive) You have a (%d%%, %d%% or %d%%) chance of hurling a poisoned dagger at the enemy

\ Ultimate, Vengeance: Respawn Indefinitely" format(temp,2047,temp,floatround(p_fan[0]*100),floatround(p_fan[1]*100),floatround(p_fan[2]*100),floatround(p_blink[0]*100),floatround(p_blink[1]*100),floatround(p_blink[2]*100),floatround(p_shadow[0]*100),floatround(p_shadow[1]*100),floatround(p_shadow[2]*100)) } else if (p_skills[id][0]==8){ format(title,63,"%s Skills",racename[8]) temp = "Impale: Currently only makes the enemy's screen shake...

\ Spiked Carapace: Does (%d%%, %d%% or %d%%) mirror damage to the person who shot you and you gain armor

\ Carrion Beetles: You have a (%d%%, %d%% or %d%%) chance of your 2 beetles attack the enemy when on target

\ Ultimate, Locust Swarm: A Swarm of Locusts attacks the enemy" format(temp,2047,temp,floatround(p_spiked[0]*100),floatround(p_spiked[1]*100),floatround(p_spiked[2]*100),floatround(p_carrion[0]),floatround(p_carrion[1]),floatround(p_carrion[2])) } else{ client_cmd(id,"echo You must select a race before viewing the skills information!") return PLUGIN_HANDLED } #else if (p_skills[id][0]==1){ format(title,63,"%s Skills",racename[1]) message = "Vampiric Aura: Gives you (%d%%, %d%% or %d%%) of the damage you do in attack back as health^n^n\ Unholy Aura: Gives you a speed boost, also all weapons make you go at the same speed^n^n\ Levitation: Allows you to jump higher by reducing your gravity^n^n\ Ultimate, Suicide Bomber: When you die you will explode killing nearby enemies" format(message,1023,message,floatround(p_vampiric[0]*100),floatround(p_vampiric[1]*100),floatround(p_vampiric[2]*100)) } else if (p_skills[id][0]==2){ format(title,63,"%s Skills",racename[2]) message = "Invisibility: Makes you partially invisible, you will be harder to see^n^n\ Devotion Aura: Gives you (%d, %d or %d) health at the start of the round.^n^n\ Bash: When you shoot someone you have a (%d%%, %d%% or %d%%) chance of rendering them immobile for 1 second^n^n\ Ultimate, Teleport: Allows you to teleport to a team mate (10 seconds cooldown)" format(message,1023,message,p_devotion[0],p_devotion[1],p_devotion[2],floatround(p_bash[0]*100),floatround(p_bash[1]*100),floatround(p_bash[2]*100)) } else if (p_skills[id][0]==3){ format(title,63,"%s Skills",racename[3]) message = "Critical Strike: Gives you a %d%% chance of doing (2, 3, or 4) times normal damage^n^n\ Critical Grenade: Grenades will ALWAYS do (%d, %d or %d) times normal damage^n^n\ Equipment Reincarnation: Gives you a (%d%%, %d%% or %d%%) chance of regaining your equipment on death^n^n\ Ultimate, Chain Lightning: Discharges a bolt of lightning that jumps to all nearby enemies" format(message,1023,message,floatround(p_critical[0]*100),floatround(p_grenade[0])+1,floatround(p_grenade[1])+1,floatround(p_grenade[2])+1,floatround(p_ankh[0]*100),floatround(p_ankh[1]*100),floatround(p_ankh[2]*100)) } else if (p_skills[id][0]==4){ format(title,63,"%s Skills",racename[4]) message = "Evasion: Gives you a (%d%%, %d%% or %d%%) chance of evading each shot^n^n\ Thorns Aura: Does (%d%%, %d%% or %d%%) mirror damage to the person who shot you^n^n\ Trueshot Aura: Does (%d%%, %d%% or %d%%) extra damage to the enemy^n^n\ Ultimate, Entangle Roots: Allows you to prevent an enemy player from moving for 10 seconds" format(message,1023,message,floatround(p_evasion[0]*100),floatround(p_evasion[1]*100),floatround(p_evasion[2]*100),floatround(p_thorns[0]*100),floatround(p_thorns[1]*100),floatround(p_thorns[2]*100),floatround(p_trueshot[0]*100),floatround(p_trueshot[1]*100),floatround(p_trueshot[2]*100)) } else if (p_skills[id][0]==5){ format(title,63,"%s Skills",racename[5]) temp = "Pheonix: You have a (%d%%, %d%% or %d%%) chance of reviving the fist teammate who dies^n^n\ Banish: You have a (%d%%, %d%% or %d%%) chance of moving your enemy^n^n\ Siphon Mana: Steal (%d%%, %d%% or %d%%) armor from enemy (no limit)^n^n\ Ultimate, Flame Strike: You receive a flame throwers (5 uses every 5 seconds)" format(message,1023,message,floatround(p_pheonix[0]*100),floatround(p_pheonix[1]*100),floatround(p_pheonix[2]*100),floatround(p_banish[0]*100),floatround(p_banish[1]*100),floatround(p_banish[2]*100),floatround(p_mana[0]*100),floatround(p_mana[1]*100),floatround(p_mana[2]*100)) } else if (p_skills[id][0]==6){ format(title,63,"%s Skills",racename[6]) temp = "Healing Wave: Every (%d%%, %d%% or %d%%) seconds you and your nearby teammates around you gain 1 HP^n^n\ Hex: You have a (%d%%, %d%% or %d%%) chance of turning your enemy into a big goober^n^n\ Serpent Ward: You receive (%d, %d or %d) serpent wards each round that damage nearby enemy units, bind a key to ability (or say ability) to plant one^n^n\ Ultimate, Bid Bad Voodoo: Invincibility for 3 seconds" format(message,1023,message,floatround(p_heal[0]),floatround(p_heal[1]),floatround(p_heal[2]),floatround(p_hex[0]*100),floatround(p_hex[1]*100),floatround(p_hex[2]*100),p_serpent[0],p_serpent[1],p_serpent[2]) } else if (p_skills[id][0]==7){ format(title,63,"%s Skills",racename[7]) temp = "Fan of Knives: You have a (%d%%, %d%% or %d%%) chance of becoming a mole^n^n\ Blink: Disables ALL enemy abilities (%d%%, %d%% or %d%%)^n^n\ Shadow Strike: (inactive) You have a (%d%%, %d%% or %d%%) chance of hurling a poisoned dagger at the enemy^n^n\ Ultimate, Vengeance: Respawn Indefinitely" format(message,1023,message,floatround(p_fan[0]*100),floatround(p_fan[1]*100),floatround(p_fan[2]*100),floatround(p_blink[0]*100),floatround(p_blink[1]*100),floatround(p_blink[2]*100),floatround(p_shadow[0]*100),floatround(p_shadow[1]*100),floatround(p_shadow[2]*100)) } else if (p_skills[id][0]==8){ format(title,63,"%s Skills",racename[8]) temp = "Impale: Currently only makes the enemy's screen shake...^n^n\ Spiked Carapace: Does (%d%%, %d%% or %d%%) mirror damage to the person who shot you and you gain armor^n^n\ Carrion Beetles: You have a (%d%%, %d%% or %d%%) chance of your 2 beetles attack the enemy when on target^n^n\ Ultimate, Locust Swarm: A Swarm of Locusts attacks the enemy" format(message,1023,message,floatround(p_spiked[0]*100),floatround(p_spiked[1]*100),floatround(p_spiked[2]*100),floatround(p_carrion[0]),floatround(p_carrion[1]),floatround(p_carrion[2])) } else{ client_cmd(id,"echo You must select a race before viewing the skills information!") return PLUGIN_HANDLED } #endif if(p_skills[id][0]!=0) add(message,1023,temp) show_motd(id,message,"Race Information") if (saychat==1) return PLUGIN_CONTINUE return PLUGIN_HANDLED } public items_info(id,saychat){ static title[64], text[2048], MSFilename[]="addons\amx\motds\itemsinfo.txt", UnixFilename[]="addons/amx/motds/itemsinfo.txt"; format(title,63,"Items Information") // Use same directory as "MY CUSTOM MOTD WINDOWS" from "Ludwig van" if( file_exists(MSFilename) ) show_motd(id,MSFilename,title); else if( file_exists(UnixFilename) ) show_motd(id,UnixFilename,title); else{ format( text, 2047, "There is no ^'itemsinfo.txt^' file installed !!!^nFor Microsoft-OS: %s^nFor *nix-OS: %s", MSFilename, UnixFilename); show_motd(id,text,title); } return PLUGIN_CONTINUE } public items_info2(id,saychat){ static title[64], text[2048], MSFilename[]="addons\amx\motds\itemsinfo2.txt", UnixFilename[]="addons/amx/motds/itemsinfo2.txt"; format(title,63,"Items2 Information") // Use same directory as "MY CUSTOM MOTD WINDOWS" from "Ludwig van" if( file_exists(MSFilename) ) show_motd(id,MSFilename,title); else if( file_exists(UnixFilename) ) show_motd(id,UnixFilename,title); else{ format( text, 2047, "There is no ^'itemsinfo2.txt^' file installed !!!^nFor Microsoft-OS: %s^nFor *nix-OS: %s", MSFilename, UnixFilename); show_motd(id,text,title); } return PLUGIN_CONTINUE } public war3_info(id){ console_print(id,"---- Warcraft 3 Help: Commands ----") console_print(id,"Client:") // Extra-Start: Added by Tri Moon, for WC3_Menu. console_print(id,"war3menu - - Show WarCraft3 XP Player menu") // Extra-End: Added by Tri Moon, for WC3_Menu. console_print(id,"selectskill - Allows you to select skills before the start of the next round") console_print(id,"changerace - Allows you to change race during the game if mp_allowchangerace is 1") console_print(id,"playerskills - Shows you what skills other players have chosen") console_print(id,"skillsinfo - Shows you what each skill does for the race you have selected") console_print(id,"itemsinfo - Shows you a list of items and what they do") console_print(id,"war3vote - Vote to switch the plugin on or off") console_print(id,"iamadirtycheater - if sv_cheats is 1 then it will set you to level 10") console_print(id,"cheatsoff - will set your level back to what it should be") console_print(id,"Server:") console_print(id,"sv_warcraft3 - Enable/Disable the plugin (default 1, enabled)") console_print(id,"sv_allowwar3vote - Enabled/Disable voting (default 1, enabled)") console_print(id,"sv_cheats - this is a standard HL cvar, but you need this if you want to cheat :)") console_print(id,"mp_allowchangerace - Allow people to change race during the game (default 0, disabled)") console_print(id,"mp_forceskin - Forces player to choose skin according to race (default 0, disabled)") console_print(id,"mp_grenadeprotection - prevents buying more than 1 HE gren per round (default 1, enabled)") console_print(id,"mp_weaponxpmodifier - gives additional XP for using certain weaker weapons (default 1, enabled)") console_print(id,"mp_savexp - save XP to a txt file and restore it when player reconnects (default 0)") console_print(id,"mp_xpmultiplier - set the level required to gain a level as a multiple (default 1.0)") console_print(id,"sv_daysbeforedelete - see warcraft3.txt for more info on this (default 1)") console_print(id,"sv_dayslevelmodifier - see warcraft3.txt for more info on this (default 3)") console_print(id,"---- Warcraft 3 Help: Commands ----") return PLUGIN_HANDLED } public saywar3_info(id){ // Extra-Start: Changed by Tri Moon, for WC3_Menu. // Extra-Start: Changed by Tri Moon, bugfix v2.20.5: "war3info.txt" was not displayed on Unix machines. static title[64], text[2048], MSFilename[]="addons\amx\motds\war3info.txt", UnixFilename[]="addons/amx/motds/war3info.txt"; format(title,63,"Warcraft 3 Help") // Use same directory as "MY CUSTOM MOTD WINDOWS" from "Ludwig van" if( file_exists(MSFilename) ) show_motd(id,MSFilename,title); else if( file_exists(UnixFilename) ) show_motd(id,UnixFilename,title); else{ format( text, 2047, "There is no ^'war3info.txt^' file installed !!!^nFor Microsoft-OS: %s^nFor *nix-OS: %s", MSFilename, UnixFilename); show_motd(id,text,title); } // Extra-End: Changed by Tri Moon, bugfix v2.20.5: "war3info.txt" was not displayed on Unix machines. // Extra-End: Changed by Tri Moon, for WC3_Menu. return PLUGIN_CONTINUE } public cheat(id){ checkmap() if (warcraft3==false) return PLUGIN_CONTINUE if (get_cvar_num("sv_cheats")!=1) return PLUGIN_CONTINUE cheatson[id]=true client_cmd(id,"echo You are now level 10, select your skills from the menu") displaylevel(id, 1) new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] if (skillsused < p_level[id]){ select_skill(id,0) } return PLUGIN_HANDLED } public cheatsoff(id){ checkmap() if (warcraft3==false) return PLUGIN_CONTINUE if (get_cvar_num("sv_cheats")!=1) return PLUGIN_CONTINUE cheatson[id]=false client_cmd(id,"echo You correct level is now set, select your skills from the menu") p_skills[id][1]=0 p_skills[id][2]=0 p_skills[id][3]=0 p_skills[id][4]=0 displaylevel(id, 1) new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] if (skillsused < p_level[id]){ select_skill(id,0) } return PLUGIN_HANDLED } public ultimate(id){ checkmap() if (warcraft3==false) return PLUGIN_CONTINUE if (get_cvar_num("sv_restrictultimate")==0 && !reseting[id] && !ultimateused[id]){ new parm[2] parm[0]=id set_task(7.5,"resetultimate",2,parm,2) reseting[id]=true } if (is_user_alive(id)){ if (p_skills[id][0]==1 && p_skills[id][4]==1){ user_kill(id,1) } if (p_skills[id][0]==6 && p_skills[id][4]==1 && !godused[id]){ new parm[2] parm[0]=id parm[1]=3 set_user_godmode(id,1) give_god(parm) client_print(id,print_chat,"You are GOD, but not for long!") godused[id]=true } if (p_skills[id][0]==5 && p_skills[id][4]==1 && !ultimateused[id]){ //Flame Strike fire_flamethrower(id) flame_count[id]++ if(flame_count[id]>4){ ultimateused[id]=true flame_count[id] =0 } } if (p_skills[id][0]==2 && p_skills[id][4]==1 && !ultimateused[id] && !endround){ // Teleport new i new j new tmp new numberofplayers new targetid new targetid2 new teamname[32] new distancebetween new distancebetween2 new origin[3] new targetorigin[3] new targetorigin2[3] get_user_team(id, teamname, 31) get_players(teleportid[id],numberofplayers,"ae",teamname) get_user_origin(id,origin) for (i=0; i 9) numberofplayers=9 else --numberofplayers // Remove self from list if (numberofplayers){ remove_task(666+id) teleportmenu[id]=true new menuparm[2] menuparm[0]=id menuparm[1]=numberofplayers telemenu(menuparm) } else{ set_hudmessage(200, 100, 0, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 2) show_hudmessage(id,"No valid teleport targets found!") } } else if (!issearching[id] && p_skills[id][0]==3 && p_skills[id][4]==1 && !ultimateused[id]){ new parm[2] parm[0]=id parm[1]=ULTIMATESEARCHTIME lightsearchtarget(parm) // Chain Lightning } else if (!issearching[id] && p_skills[id][0]==4 && p_skills[id][4]==1 && !ultimateused[id]){ new parm[2] parm[0]=id parm[1]=ULTIMATESEARCHTIME searchtarget(parm) // Entangle Roots } else if (!issearching[id] && p_skills[id][0]==8 && p_skills[id][4]==1 && !ultimateused[id]){ new parm[2] parm[0]=id parm[1]=ULTIMATESEARCHTIME locustsearchtarget(parm) // Locust swarm } } return PLUGIN_HANDLED } public telemenu(parm[2]){ new id = parm[0] new numberofplayers = parm[1] new targetid new name[32] new origin[3] new targetorigin[3] new distancebetween new temp[64] new i new keys = (1<<9) new menu_body[512]="\yTeleport to:\w^n" get_user_origin(id,origin) for (i = 0; i < numberofplayers; ++i){ targetid=teleportid[id][i] get_user_name(targetid,name,31) get_user_origin(targetid,targetorigin) distancebetween = get_distance(origin,targetorigin) if (is_user_alive(targetid)){ format(temp,63,"^n\w%d. %s (\y%dm\w)",i+1,name,distancebetween/40) keys |= (1<10 && get_user_team(id)!=get_user_team(enemy) && playeritem[enemy]!=IMMUNITY && !hasblink[enemy]){ issearching[id]=false ultimateused[id]=true message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_BEAMFOLLOW ); write_short(enemy); // entity write_short(m_iTrail ); // model write_byte( 10 ); // life write_byte( 5 ); // width write_byte( 10 ); // r, g, b write_byte( 108 ); // r, g, b write_byte( 23 ); // r, g, b write_byte( 255 ); // brightness message_end(); // move PHS/PVS data sending into here (SEND_ALL, SEND_PVS, SEND_PHS) if (file_exists("sound/warcraft3/EntanglingRootsTarget1.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/EntanglingRootsTarget1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) else emit_sound(id,CHAN_ITEM, "weapons/cbar_hitbod3.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) new waitparm[6] waitparm[0]=enemy waitparm[1]=100 waitparm[5]=floatround(get_user_maxspeed(enemy)) set_user_maxspeed(enemy,1.0) stunned[enemy]=true waitstop(waitparm) new cooldownparm[1] cooldownparm[0]=id set_task(ENTANGLEROOTS_COOLDOWN,"cooldown",20,cooldownparm,1) } else{ issearching[id]=true new counter = parm[1] while (counter >= 0){ counter -= 10 if (counter==0) emit_sound(id,CHAN_ITEM, "turret/tu_ping.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } --parm[1] if (parm[1]>0 && get_user_health(id)>0) set_task(0.1,"searchtarget",21,parm,2) else issearching[id]=false } return PLUGIN_CONTINUE } public cham(parm[2]){ new id = parm[0] new enemy, body get_user_aiming(id,enemy,body) if (0 -40){ message_begin( MSG_BROADCAST, SVC_TEMPENTITY ) write_byte( 0 ) write_coord(origin[0]+x1) write_coord(origin[1]+y1) write_coord(origin[2]+height) write_coord(origin[0]+x2) write_coord(origin[1]+y2) write_coord(origin[2]+height+2) write_short(iBeam4) // model write_byte( 0 ) // start frame write_byte( 0 ) // framerate write_byte( life ) // life write_byte( 10 ) // width write_byte( 5 ) // noise write_byte( 10 ) // r, g, b write_byte( 108 ) // r, g, b write_byte( 23 ) // r, g, b write_byte( 255 ) // brightness write_byte( 0 ) // speed message_end() height -= 16 } } return PLUGIN_CONTINUE } public lightsearchtarget(parm[2]){ new id = parm[0] new enemy, body get_user_aiming(id,enemy,body) if ( 0= 0){ counter -= 10 if (counter==0) emit_sound(id,CHAN_ITEM, "turret/tu_ping.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } --parm[1] if (parm[1]>0 && get_user_health(id)>=0) set_task(0.1,"lightsearchtarget",26,parm,2) else issearching[id]=false } return PLUGIN_CONTINUE } public lightningnext(parm[4]){ // Chain Lightning new id=parm[0] new caster=parm[3] new origin[3] get_user_origin(id, origin) new players[32] new teamname[32] get_user_team(id, teamname, 31) new numberofplayers get_players(players, numberofplayers,"ae",teamname) new i new targetid = 0 new distancebetween = 0 new targetorigin[3] new damage = parm[1]*2/3 new linewidth = parm[2]*2/3 new closestdistance = 0 new closestid = 0 for (i = 0; i < numberofplayers; ++i){ targetid=players[i] if (get_user_team(id)==get_user_team(targetid) && is_user_alive(targetid)){ get_user_origin(targetid,targetorigin) distancebetween=get_distance(origin,targetorigin) if (distancebetween < LIGHTNING_RANGE && !lightninghit[targetid] && playeritem[targetid]!=IMMUNITY && !hasblink[targetid]){ if (distancebetween < closestdistance || closestid==0){ closestdistance = distancebetween closestid = targetid } } } } if (closestid){ lightningeffect(id,closestid,linewidth,damage,caster) parm[0]=targetid parm[1]=damage parm[2]=linewidth parm[3]=caster set_task(0.2,"lightningnext",27,parm,4) } else{ for (i = 0; i < numberofplayers; ++i){ targetid=players[i] lightninghit[targetid]=false } } return PLUGIN_CONTINUE } public lightningeffect(id,targetid,linewidth,damage,caster){ new bool:targetdied new bool:targetdead lightninghit[targetid]=true targetdead=false if (is_user_alive(targetid)) targetdead=false else targetdead=true if (get_user_health(targetid)>500){ // Evasion kill if (get_user_health(targetid)-damage<=1024){ set_user_health(targetid, -1) targetdied=true } } else if (get_user_health(targetid)-damage<=0) targetdied=true set_user_health(targetid,get_user_health(targetid)-damage) if (get_user_armor(targetid)-damage<=0) set_user_armor(targetid,0) else set_user_armor(targetid,get_user_armor(targetid)-damage) if (targetdied && !targetdead){ set_user_frags(caster, get_user_frags(caster)+1) set_user_frags(targetid, get_user_frags(targetid)+1) message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0) write_byte(caster) write_byte(targetid) write_byte(0) write_string(race3skill[3]) message_end() playerxp[caster]+=xpgiven[p_level[targetid]] displaylevel(caster, 1) } message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_BEAMENTS ); write_short(id); // start entity write_short(targetid); // entity write_short(lightning ); // model write_byte( 0 ); // starting frame write_byte( 15 ); // frame rate write_byte( 10 ); // life write_byte( linewidth ); // line width write_byte( 10 ); // noise amplitude write_byte( 255 ); // r, g, b write_byte( 255 ); // r, g, b write_byte( 255 ); // r, g, b write_byte( 255 ); // brightness write_byte( 0 ); // scroll speed message_end(); new origin[3] get_user_origin(targetid,origin) message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_ELIGHT ); write_short(targetid); // entity write_coord(origin[0]) // initial position write_coord(origin[1]) // initial position write_coord(origin[2]) // initial position write_coord(100) // radius write_byte( 255 ); // r, g, b write_byte( 255 ); // r, g, b write_byte( 255 ); // r, g, b write_byte( 10 ); // life write_coord(0) // decay rate message_end(); if (file_exists("sound/warcraft3/LightningBolt.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/LightningBolt.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) else emit_sound(id,CHAN_ITEM, "weapons/gauss2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) return PLUGIN_CONTINUE } public cooldown(parm[1]){ ultimateused[parm[0]]=false return PLUGIN_CONTINUE } public telewaitstop(parm[6]){ new id=parm[0] new origin[3] get_user_origin(id, origin) if (origin[0]==parm[2] && origin[1]==parm[3] && origin[2]==parm[4]){ new normalspeed = parm[5] new resetparm[2] resetparm[0]=id resetparm[1]=normalspeed set_task(0.6,"reset_maxspeed",28,resetparm,2) new teleportparm[6] teleportparm[0]=parm[0] teleportparm[1]=parm[1] teleport(teleportparm) } else{ parm[2]=origin[0] parm[3]=origin[1] parm[4]=origin[2] set_task(0.1,"telewaitstop",29,parm,6) } return PLUGIN_CONTINUE } public teleport(parm[6]){ // Teleport new id=parm[0] new thetarget=parm[1] new origin[3] get_user_origin(id,origin) new targetorigin[3] targetorigin[0]=parm[3] targetorigin[1]=parm[4] targetorigin[2]=parm[5] if (parm[2]==0){ if (file_exists("sound/warcraft3/MassTeleportTarget.wav")==1) emit_sound(id,CHAN_STATIC, "warcraft3/MassTeleportTarget.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) else emit_sound(id,CHAN_STATIC, "x/x_shoot1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) if (p_skills[id][1]==0 && playeritem[id]!=CLOAK){ // Don't glow if player is invisible set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransAdd,255) } // blast circles 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] + 10 + TELEPORT_RADIUS) write_short( m_iSpriteTexture ) write_byte( 0 ) // startframe write_byte( 0 ) // framerate write_byte( 3 ) // life write_byte( 60 ) // width write_byte( 0 ) // noise write_byte( 255 ) // red write_byte( 255 ) // green write_byte( 255 ) // blue write_byte( 255 ) //brightness write_byte( 0 ) // speed message_end() get_user_origin(thetarget,targetorigin) if (file_exists("sound/warcraft3/MassTeleportTarget.wav")==1) emit_sound(thetarget,CHAN_STATIC, "warcraft3/MassTeleportTarget.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) else emit_sound(thetarget,CHAN_STATIC, "x/x_shoot1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) message_begin( MSG_PAS, SVC_TEMPENTITY, origin ) write_byte( TE_BEAMCYLINDER ) write_coord( targetorigin[0]) write_coord( targetorigin[1]) write_coord( targetorigin[2] + 90) write_coord( targetorigin[0]) write_coord( targetorigin[1]) write_coord( targetorigin[2] + 90 + TELEPORT_RADIUS) write_short( m_iSpriteTexture ) write_byte( 0 ) // startframe write_byte( 0 ) // framerate write_byte( 3 ) // life write_byte( 60 ) // width write_byte( 0 ) // noise write_byte( 255 ) // red write_byte( 255 ) // green write_byte( 255 ) // blue write_byte( 255 ) //brightness write_byte( 0 ) // speed message_end() parm[3]=targetorigin[0] parm[4]=targetorigin[1] parm[5]=targetorigin[2] } if (parm[2]==1){ targetorigin[2]+=80 if (p_skills[id][1]==0 && playeritem[id]!=CLOAK){ // Don't glow if player is invisible set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,128) } set_user_origin(id, targetorigin) 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( flaresprite ) write_byte( 30 ) // count write_byte( 10 ) // life write_byte( 1 ) // scale write_byte( 50 ) // velocity write_byte( 10 ) // randomness in velocity message_end() new fadeinparm[3] fadeinparm[0]=id fadeinparm[1]=3 fadeinparm[2]=targetorigin[2] teleportfadein(fadeinparm) } ++parm[2] if (parm[2]<2) set_task(0.3,"teleport",30,parm,6) return PLUGIN_CONTINUE } public teleportfadein(parm[3]){ new id = parm[0] if (parm[1]==3 && p_skills[id][1]==0 && playeritem[id]!=CLOAK) // Don't glow if player is invisible set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,170) if (parm[1]==2 && p_skills[id][1]==0 && playeritem[id]!=CLOAK) // Don't glow if player is invisible set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,212) if (parm[1]==1){ if (p_skills[id][1]==0 && playeritem[id]!=CLOAK){ // Don't glow if player is invisible set_user_rendering(id) } new origin[3] get_user_origin(id,origin) if (origin[2]==parm[2]){ origin[2]-=80 new unstickparm[4] unstickparm[0]=id unstickparm[1]=origin[0] unstickparm[2]=origin[1] unstickparm[3]=origin[2] unstick(unstickparm) } } --parm[1] if (parm[1]>0) set_task(0.1,"teleportfadein",31,parm,3) return PLUGIN_CONTINUE } public unstick(parm[4]){ new id=parm[0] new origin[3] new targetorigin[3] origin[0]=parm[1] origin[1]=parm[2] origin[2]=parm[3] new players[32] new numberofplayers get_players(players, numberofplayers) new i new playerid new bool:clear clear = true new distancebetween new tolerance = 100 for (i = 0; i < numberofplayers; ++i){ playerid=players[i] get_user_origin(playerid,targetorigin) distancebetween = get_distance(origin,targetorigin) if (distancebetween