/* AMX Mod script. * * Warcraft 3: Frozen Throne * by Pimp Daddy (OoTOAoO) * http://www.4hm.net * * Credits to: * Spacedude (for War3 MOD) * Ludwig Van (for flamethrower) * OLO (for spectating rank info) * JGHG for the mole code * [AOL]Demandred, [AOL]LuckyJ for help coding it for steam * [AOL]Demandred for freezetime exploit fix * Denkkar for some of his code (ie. STEAM_POWERED) * Everyone at amxmod.net for help * joecool12321 for various health related fixes * Tri Moon for various improvements (No Race, war3menu, etc...) * xeroblood for spotting some bugs for me :) * bad-at-this for contributing the status bar code used for godmode (big bad voodoo) * kamikaze for... help w/testing version before release always helping people out on the forums contributing code for the anti-skywalking * lui for the delayed ultimate code * The following people helped convert the text to German: Walken / Altegarde.com Fire ^^plan.los^^ * The following people helped convert the text to French: laurent5425 neko */ #include #include #include #include #if !defined _amxmodx_included #include #include #else #include #endif //VERSION NAME AUTHOR new WC3NAME[] = "Warcraft 3 Frozen Throne" new WC3AUTHOR[] = "Pimp Daddy (OoTOAoO)" new WC3VERSION[] = "1.6.7" // // THESE ARE THE ONLY OPTIONS THAT NEED TO BE CHANGED DURING COMPILE TIME #define STEAM_POWERED 1 // Set this to 0 if you are running Counterstrike 1.5, leave at 1 for 1.6 #define CSSTATS_ENABLED 0 // Set this to 0 if you don't want spectating rank information #define ADMIN_LEVEL_WC3 ADMIN_LEVEL_A // set the admin level required for giving xp and accessing the admin menu (see amxconst.inc) // Language Options #if !defined LANG_ENG #define LANG_ENG 1 // Set this to 1 to use english (ALL LANGUAGE WILL BE LANG_ENG) #endif #if !defined LANG_GER #define LANG_GER 0 // Set this to 1 if you would like *MOST* of the language to be in German #endif #if !defined LANG_FRE #define LANG_FRE 0 // Set this to 1 if you would like *MOST* of the language to be in French #endif #if ((LANG_ENG + LANG_GER + LANG_FRE) != 1) new thereshouldbeaneerorherebecausethiswordiswaytoolongforavariable = 0 // You have more than one language selected if there is a warning here #endif #if STEAM_POWERED new zoomed[33] #endif #if CSSTATS_ENABLED #include #endif // ****** Item and Race Information #if LANG_GER new racename[10][] = {"keine Rasse","Untote Plage","Menschliche Allianz","Orkische Horde","Nachtelfen von Kalimdor","Blutmagier","Schattenjaeger","Waechter","Crypt Lord","Chemaeleon"} new shortracename[10][] = {"keine Rasse","Untote","Menschen","Ork","Nachtelfe","Blutmagier","Schattenjaeger","Waechter","Crypt Lord","Chameleon"} new itemname[9][] = {"Ankh der Reinkarnation","Stiefel der Geschwindigkeit","Klauen des Angriffs","Mantel des Schattens","Maske des Todes","Kette der Immunität","Frostkugel","Gesundheitsstein","Buch der Erfahrung"} new shortitemname[9][] = {"Ankh","Stiefel","Klauen","Mantel","Maske","Kette","Kugel","Stein","Buch"} new itemname2[9][] = {"Rolle der Wiederbelebung","Schutz des Maulwurfs","Helm der Vortrefflichkeit","Amulet der Katze","Ferdersocken","Brennende Handschuhe der Waerme","Ring der Regeneration +1","Chamaeleon","Maulwurf"} new shortitemname2[9][] = {"Rolle","Schutz","Helm","Amulet","Socken","Handschuhe","Ring","Chemaeleon","Maulwurf"} new race1skill[4][] = {"Vampir Aura","Unheilige Aura","Schweben","Selbstmord-Bomber"} new race2skill[4][] = {"Unsichtbarkeit","Aura der Hingabe","Hieb","Telepodertieren"} new race3skill[4][] = {"Kritischer Treffer","Kritische Granaten","Ausrüstungs Reinkarnation","Kettenblitz"} new race4skill[4][] = {"Ausweichen","Dornen Aura","Schadens Aura","Wucherwurzeln"} new race5skill[4][] = {"Pheonix","Verbannung","Mana Klau","Flamen Angriff"} new race6skill[4][] = {"Welle der Heilung","Hex","Schlangen Waechter","Voodoozauber"} new race7skill[4][] = {"Faechernde Messer","Blinzeln","Schattenschlag","Blutrache"} new race8skill[4][] = {"Aufspießen","Stachelruestung","Aas Kaefer","Heuschrecken Schwarm"} new race9skill[4][] = {"ENTERVALUEENTERVALUEENTERVALUEENTERVALUE","ENTERVALUEENTERVALUEENTERVALUEENTERVALUE","ENTERVALUEENTERVALUEENTERVALUEENTERVALUE","ENTERVALUEENTERVALUEENTERVALUEENTERVALUE"} #endif #if LANG_FRE //Change 10/07/2004 new racename[10][] = {"Aucune Race","Fleau Mort-Vivant","Alliance Humaine","la Horde Orque","Elfe de la nuit","Mage de Sang","Chasseur de l'Ombre","Gardien","Seigneur de la Crypte","Metamorphe"} new shortracename[10][] = {"Aucune Race","Mort-Vivant","Humain","Orc","Elfe","Mage","Chasseur","Gardien","Seigneur","Metamorphe"} new itemname[9][] = {"Ankh de Reincarnation","Bottes de vitesse","Griffes d'Attaque","Manteau de l'Ombre","Masque de Mort","Collier d'Immunite","Orbe de Givre","Fetiche de Sante","Tome d'Experience"} new shortitemname[9][] = {"Ankh","Bottes","Griffes","Manteau","Masque","Collier","Orbe","Fetiche","Tome"} new itemname2[9][] = {"Parchemin de Renaissance","Protection Agent-Double","Haume d'Excellence","Amulette du Chat","Chausse de Plume","Gants Flamboyant de chaleur","Anneau de regeneration +1","Cameleon","Agent Double"} new shortitemname2[9][] = {"Parchemin","Protection","Haume","Amulette","Chausse","Gants","Anneau","Cameleon","Agent"} new race1skill[4][] = {"Aura Vampirique","Aura Impie","Levitation","Bombe-Kamikaze"} new race2skill[4][] = {"Invisibilite","Aura de Devotion","Assomer","Teleportation"} new race3skill[4][] = {"Coup Critique","Super Grenade","Reincarnation de l'Equipement","Chaine d'eclair"} new race4skill[4][] = {"Esquive","Aura de Ronce","Aura de precision","Sarments"} new race5skill[4][] = {"Pheonix","Bannissement","Siphon de Mana","Frappe de Feu"} new race6skill[4][] = {"Aura de Guerison","Sortilege","Gardien Serpent","Armure Divine"} new race7skill[4][] = {"Tourbillon de lames","Transfert","Choc des tenebres","Vengeance"} new race8skill[4][] = {"Empaler","Armure Epineuse","Scarabees Charognards","Essaim de Sauterelles"} new race9skill[4][] = {"ENTERVALUEENTERVALUEENTERVALUEENTERVALUE","ENTERVALUEENTERVALUEENTERVALUEENTERVALUE","ENTERVALUEENTERVALUEENTERVALUEENTERVALUE","ENTERVALUEENTERVALUEENTERVALUEENTERVALUE"} //End Change /* new racename[10][] = {"Aucune Race","Fleau Mort-Vivant","Alliance Humaine","la Horde Orque","Elfe de la nuit","Mage de Sang","Chasseur de l'Ombre","Gardien","Seigneur de la Crypte","Cameleon"} new shortracename[10][] = {"Aucune Race","Mort-Vivant","Humain","Orc","Elfe","Mage","Chasseur","Gardien","Seigneur","Chameleon"} new itemname[9][] = {"Ankh de Reincarnation","Bottes de vitesse","Griffes d'Attaque","Manteau de l'Ombre","Masque de Mort","Collier d'Immunite","Orbe de Givre","Fetiche de Sante","Tome d'Experience"} new shortitemname[9][] = {"Ankh","Bottes","Griffes","Manteau","Masque","Collier","Orbe","Fetiche","Tome"} new itemname2[9][] = {"Parchemin de Renaissance","Mole Protectant","Haume d'Excellence","Amulette du Chat","Chausse de Plume","Gants Flamboyant de chaleur","Anneau de regeneration +1","Cameleon","Mole"} new shortitemname2[9][] = {"Parchemin","Protectant","Haume","Amulette","Chausse","Gants","Anneau","Cameleon","Mole"} new race1skill[4][] = {"Aura Vampirique","Aura Impie","Levitation","Bombe-Kamikaze"} new race2skill[4][] = {"Invisibilite","Aura de Devotion","Assomer","Teleportation"} new race3skill[4][] = {"Coup Critique","Super Grenade","Reincarnation de l'Equipement","Chaine d'eclair"} new race4skill[4][] = {"Esquive","Aura de Ronce","Aura de precision","Sarments"} new race5skill[4][] = {"Pheonix","Bannissement","Siphon de Mana","Frappe de Feu"} new race6skill[4][] = {"Aura de Guerison","Sortilege","Gardien Serpent","Armure Divine"} new race7skill[4][] = {"Attaque de couteaux","Blink","Shadow Strike","Vengeance"} new race8skill[4][] = {"Empaler","Armure Epineuse","Scarabees Charognards","Essaim de Sauterelles"} new race9skill[4][] = {"ENTERVALUEENTERVALUE","ENTERVALUEENTERVALUE","ENTERVALUEENTERVALUE","ENTERVALUEENTERVALUE"} */ #endif #if LANG_ENG new racename[10][] = {"No race","Undead Scourge","Human Alliance","Orcish Horde","Night Elves of Kalimdor","Blood Mage","Shadow Hunter","Warden","Crypt Lord","Chameleon"} new shortracename[10][] = {"No race","Undead","Human","Orc","Night Elf","Blood Mage","Shadow Hunter","Warden","Crypt Lord","Chameleon"} new itemname[9][] = {"Ankh of Reincarnation","Boots of Speed","Claws of Attack","Cloak of Shadows","Mask of Death","Necklace of Immunity","Orb of Frost","Periapt of Health","Tome of Experience"} new shortitemname[9][] = {"Ankh","Boots","Claws","Cloak","Mask","Necklace","Orb","Periapt","Tome"} 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 shortitemname2[9][] = {"Scroll","Protectant","Helm","Amulet","Sock","Gloves","Ring","Chameleon","Mole"} 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"} new race9skill[4][] = {"ENTERVALUEENTERVALUEENTERVALUEENTERVALUE","ENTERVALUEENTERVALUEENTERVALUEENTERVALUE","ENTERVALUEENTERVALUEENTERVALUEENTERVALUE","ENTERVALUEENTERVALUEENTERVALUEENTERVALUE"} #endif // ****** End Item and Race Information //Race9 Setup new race9Options[5] = {0,1,1,1,1} // the value is what race that skill should be copied from so race9Options[1] = 1 means that skill1 is undead skill1 this means you can not have skill 1 form more than one race. // this default setting of 0,1,1,1,1 will make the 9th race have all the undead skills // note that the first value does not do anything. new MOD[32]={"AMX"} new VIP_ESCAPE_BONUS new VIP_KILL_BONUS new DEFUSER_KILL_BONUS new KILL_BOMB_CARRIER new BOMBPLANTXP new DEFUSEXP new HOSTAGEXP new KILLRESCUEMANXP new XPBONUS new HEADSHOT_BONUS new ROUNDXP // Team Numbers for get_user_team(id) #define SPEC 0 #define TEAM_T 1 #define TEAM_CT 2 // NEVER CHANGE THESE !!! DISASTEROUS RESULTS #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 TE_LARGEFUNNEL 100 #define MAX_NAME_LENGTH 31 #define MAX_VAR_LENGTH 64 // END // Do not change these #define MAXGLOW 150 #define ULTIMATESEARCHTIME 50 #define TELEPORT_RADIUS 50 #define LIGHTNING_RANGE 500 //END // Shopmenu Items #define BOOTSPEED 275.0 #define CLAWSOFATTACK 6 #define CLOAKINVISIBILITY 150 #define MASKPERCENT 0.3 #define FROSTSPEED 125.0 #define HEALTHBONUS 15 //END // 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 // team ids #define UNASSIGNED 0 #define TS 1 #define CTS 2 #define AUTO_TEAM 5 // For Icon events #define ICON_HIDE 0 #define ICON_SHOW 1 #define ICON_FLASH 2 // Added by NeKo //For Controller Event new FT_start //hour to start plugin new FT_stop //hour to stop plugin new FT_control //enable time controler new FT_message //Blood definition #define TE_BLOODSTREAM 101 #define TE_BLOOD 103 #define TE_BLOODSPRITE 115 #define TE_WORLDDECAL 116 //new bloodinter = 100 //new bloodquantite = 7 // Temporary Fix for HE nades not being read in czero new Float:he_origin[33][3] // End Temporary Fix new bool:wc3_empty_server= true new bool:showicons[33] new bool:u_delay = false new bool:no_he = false new bool:buycalled=false new bool:buytime new bool:game_commence[33]=false new bool:gotShield[33] new bool:resetskill[33] new bool:teleportmenu[33] new bool:givenade new bool:hasgodmode[33] new bool:pheonix[33] new bool:skinchanged[33] new bool:givepistol new bool:give_items[33] = false new bool:playerhasspawned[33] new bool:spawnedfromitem[33] = false new bool:ismole[33]=false new bool:justgivennade[33] = false new bool:itemsrunning[33] = false new bool:g_specMode[33] new bool:blinkdelayed[33] new bool:menupend[33] = false new bool:to_be_revived[33] = false // Sprites new shadow new snow new fire new burning new grunt new g_sModelIndexFireball new g_sModelIndexSmoke new iBeam4 new m_iTrail new m_iSpriteTexture new lightning new flaresprite // Crap added by NeKo/Pimp Daddy new race_1 new race_2 new race_3 new race_4 new race_5 new race_6 new race_7 new race_8 new race_9 new race_0 new level_0 new level_1 new level_2 new level_3 new level_4 new level_5 new level_6 new level_7 new level_8 new level_9 new level_10 // Added by NeKo new spr_blood_spray new spr_blood_drop // End Added by NeKo /* new ankh new boots new cat new chameleon new claws new cloak new feather new frost new healthitem new helm new immunity new inferno new mask new mole new protectant new regen new respawn new tome */ // Captured Messages new gmsgStatusText new gmsgDeathMsg new gmsgFade new gmsgShake new gmsgIcon new deathmessageshown[33] new g_friend[33] new bombDefuserIndex[33] new bombCarrier new bombdefuser new mysql new mysqltablename[64] new alive_before_explosion[33] = false new suicideAttempt[33] new vipID = 0 new savedOldLoc[33][3] new savedNewLoc[33][3] new teleportid[33][32] new godshealth[33] new flashg[33] new freezetime = 0 new freezecalled = 0 new isburning[33] new flame_count[33] new healinghit[33] new serpentteam[33] new pheonixexistsT new pheonixexistsCT new hasblink[33] = false new carrioncount[33]=2 new spawnEntString[2][] = {"info_player_start","info_player_deathmatch"} new shadowcount[33] = 2 new rings[33] new nadetime[33] new p_level[33] new p_skills[33][5] new iglow[33][4] new armorondeath[33] new savedweapons[33][32] new savednumber[33] = 0 new playerxp[33] new playeritem[33] new playeritem2[33] new bool:isBuyzone[33] 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:hasdefuse[33] new bool:helmet[33] new bool:changingteam[33] new bool:knifeselected[33] new bool:warcraft3 new bool:endround new Float:voting new Float:vote_ratio new option new hostagesaver new serpents[33] new he[33] /* new CTSkins[4][]={"sas","gsg9","urban","gign"} new TSkins[4][]={"arctic","leet","guerilla","terror"} */ //Change 10/07/2004 new CTSkins[5][]={"sas","gsg9","urban","gign","spetsnaz"} new TSkins[5][]={"arctic","leet","guerilla","terror","militia"} //End Change 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] = {265.0,285.0,320.0} // Unholy Aura (skill 2) new Float:p_levitation[3] = {0.8,0.6,0.4} // 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] = {2.0,4.0,6.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.07,0.13,0.20} // Banish (skill 2) new Float:p_mana[3] = {0.02,0.04,0.08} // 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.05,0.10,0.15} // 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 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 itemcost[9] = {1500,1500,1000,800,2000,800,2000,1000,4000} new itemcost2[9] = {5000,1500,550,1500,1500,1750,1000,9000,16000} //Change 10/07/2004 #if !defined CSW_GALIL #define CSW_GALIL 14 #endif #if !defined CSW_FAMAS #define CSW_FAMAS 15 #endif //End Change 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 //Change 10/07/2004 #if STEAM_POWERED weaponxpmultiplier[CSW_GALIL] = 1.15 weaponxpmultiplier[CSW_FAMAS] = 1.15 #endif //End Change 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] = 3.0 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]){ // Displays the player's items in the bottom center of the screen new temp[128] new message[256] new id = parm2[0] //lang definition #if LANG_FRE new _curitems[]="Objets Possedes" new _and[]="et" new _curitem[]="Objet Possede" #endif #if LANG_GER new _curitems[]="Current Items" new _and[]="und" new _curitem[]="Current Item" #endif #if LANG_ENG new _curitems[]="Current Items" new _and[]="and" new _curitem[]="Current Item" #endif // if (playeritem[id]!=0 && playeritem2[id]!=0){ if (playeritem2[id]==REGEN) format(temp,127,"%s: %s %s %s x%d",_curitems,playeritem[id]?itemname[playeritem[id]-1]:"",_and,playeritem2[id]?itemname2[playeritem2[id]-1]:"",rings[id]) else format(temp,127,"%s: %s %s %s",_curitems,playeritem[id]?itemname[playeritem[id]-1]:"",_and,playeritem2[id]?itemname2[playeritem2[id]-1]:"") } if (playeritem[id]==0 && playeritem2[id]!=0){ if (playeritem2[id]==REGEN) format(temp,127,"%s: %s x%d",_curitem,playeritem2[id]?itemname2[playeritem2[id]-1]:"",rings[id]) else format(temp,127,"%s: %s",_curitem,playeritem2[id]?itemname2[playeritem2[id]-1]:"") } if (playeritem[id]!=0 && playeritem2[id]==0) format(temp,127,"%s: %s",_curitem,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",451+id,parm2,2) return PLUGIN_CONTINUE } public displaylevel(id,hide){ if (id==0) return PLUGIN_CONTINUE if(get_cvar_num("FT_items_in_hud")){ 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 } //lang definition #if LANG_FRE new _level[]="Niveau" new _and[]="et" new _yougainlevel[]="Felicitation, vous gagnez un niveau" #endif #if LANG_GER new _level[]="Level" new _and[]="und" new _yougainlevel[]="Congratulation, You gained a Level" #endif #if LANG_ENG new _level[]="Level" new _and[]="and" new _yougainlevel[]="Congratulation, You gained a Level" #endif // new xpstring[512] if(get_cvar_num("FT_items_in_hud")){ 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 %s %d XP: %d/%d ",racename[p_skills[id][0]],_level,p_level[id],playerxp[id],xplevel[p_level[id]+1]) else format(xpstring,511,"%s %s %d XP: %d/%d ",racename[p_skills[id][0]],_level,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 %s %d XP: %d/%d ",racename[p_skills[id][0]],_level,p_level[id],playerxp[id],xplevel[p_level[id]+1]) else format(xpstring,511,"%s %s %d XP: %d ",racename[p_skills[id][0]],_level,p_level[id],playerxp[id]) } }else{ new temp2[128] if (playeritem[id]!=0 && playeritem2[id]!=0){ if (playeritem2[id]==REGEN && rings[id]>1) format(temp2,127,"%s %s %s x%d",playeritem[id]?shortitemname[playeritem[id]-1]:"",_and,playeritem2[id]?shortitemname2[playeritem2[id]-1]:"",rings[id]) else format(temp2,127,"%s %s %s",playeritem[id]?shortitemname[playeritem[id]-1]:"",_and,playeritem2[id]?shortitemname2[playeritem2[id]-1]:"") } else if (playeritem[id]==0 && playeritem2[id]!=0){ if (playeritem2[id]==REGEN && rings[id]>1) format(temp2,127,"%s x%d ",playeritem2[id]?shortitemname2[playeritem2[id]-1]:"",rings[id]) else format(temp2,127,"%s",playeritem2[id]?shortitemname2[playeritem2[id]-1]:"") } else if (playeritem[id]!=0 && playeritem2[id]==0) format(temp2,127,"%s",playeritem[id]?shortitemname[playeritem[id]-1]:"") if (p_level[id]==0) format(xpstring,511,"%s XP: %d/%d %s",racename[p_skills[id][0]],playerxp[id],xplevel[p_level[id]+1],temp2) else if(p_level[id]<10) format(xpstring,511,"%s %s %d XP: %d/%d %s",shortracename[p_skills[id][0]],_level,p_level[id],playerxp[id], xplevel[p_level[id]+1],temp2) else format(xpstring,511,"%s %s %d XP: %d %s",shortracename[p_skills[id][0]],_level,p_level[id],playerxp[id],temp2) } message_begin( MSG_ONE, gmsgStatusText, {0,0,0}, id) write_byte(0) write_string(xpstring) message_end() if (p_level[id] > oldlevel){ // Level Gained set_hudmessage(200, 100, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2) show_hudmessage(id,_yougainlevel) if (file_exists("sound/warcraft3/levelupcaster.wav")==1 && is_user_alive(id)) emit_sound(id,CHAN_ITEM, "warcraft3/levelupcaster.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) else if (is_user_alive(id)) emit_sound(id,CHAN_ITEM, "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 && hide!=3){ new temp[128] new message[256] format(message,255,"%s",racename[p_skills[id][0]]) if (p_level[id]){ format(temp,127,"^n%s %d",_level,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]) } else if (p_skills[id][0] == 9){ copy(skillcurrentrace[skillcounter],63,race9skill[skillcounter]) } ++skillcounter } if (p_skills[id][1]){ format(temp,127,"^n%s %s %d",skillcurrentrace[0],_level,p_skills[id][1]) add(message,255,temp) } if (p_skills[id][2]){ format(temp,127,"^n%s %s %d",skillcurrentrace[1],_level,p_skills[id][2]) add(message,255,temp) } if (p_skills[id][3]){ format(temp,127,"^n%s %s %d",skillcurrentrace[2],_level,p_skills[id][3]) add(message,255,temp) } if (p_skills[id][4]){ format(temp,127,"^n%s: %s","Ultimate",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(get_cvar_num("sv_gravity")>650){ if (((p_skills[id][0] == 9 && race9Options[3] == 1) || 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.35) else if (get_user_gravity(id)!=1.0) set_user_gravity(id,1.0) } else set_user_gravity(id,1.0) if (((p_skills[id][0] == 9 && race9Options[1] == 2) || 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] == 9 && race9Options[1] != 4) || 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 check_for_reviving(victim_id){ //lang definition #if LANG_FRE new _hasreviving[]="vous a fait revivre" new _youarerevived1[]="Vous avez fait revivre" new _youarerevived2[]="c'est parti !" #endif #if LANG_GER new _hasreviving[]="has revived you" new _youarerevived1[]="You have revived" new _youarerevived2[]="way to go !" #endif #if LANG_ENG new _hasreviving[]="has revived you" new _youarerevived1[]="You have revived" new _youarerevived2[]="way to go !" #endif // new players[32], numberofplayers, y get_players(players, numberofplayers) if(get_user_team(victim_id)==TEAM_T && pheonixexistsT>0){ for (y = 0; y < numberofplayers; ++y){ new id = players[y] if (pheonix[id] && !to_be_revived[victim_id] && !endround && id!=victim_id && !changingteam[victim_id] && is_user_alive(id) && get_user_team(id)==get_user_team(victim_id) && !is_user_alive(victim_id) && get_user_team(victim_id)!=SPEC){ pheonix[id]=false new parm[2], name[32] parm[0]=victim_id set_task(0.7,"func_spawn",2,parm,2) // Spawns player set_hudmessage(200, 100, 0, -0.8, 0.1, 0, 1.0, 5.0, 0.1, 0.2, 2) get_user_name(id,name,31) show_hudmessage(victim_id,"%s %s",name,_hasreviving) client_print(victim_id,print_chat,"[%s] %s %s",MOD, name,_hasreviving) get_user_name(victim_id,name,31) show_hudmessage(id,"%s %s, %s",_youarerevived1,name,_youarerevived2) client_print(id,print_chat,"[%s] %s %s, %s",MOD,_youarerevived1,name,_youarerevived2) pheonixexistsT-- return PLUGIN_CONTINUE } } } else if(get_user_team(victim_id)==TEAM_CT && pheonixexistsCT>0){ for (y = 0; y < numberofplayers; ++y){ new id = players[y] if (pheonix[id] && !to_be_revived[victim_id] && !endround && id!=victim_id && !changingteam[victim_id] && is_user_alive(id) && get_user_team(id)==get_user_team(victim_id) && !is_user_alive(victim_id) && get_user_team(victim_id)!=SPEC){ pheonix[id]=false new parm[2], name[32] parm[0]=victim_id set_task(0.7,"func_spawn",2,parm,2) // Spawns player set_hudmessage(200, 100, 0, -1.6, 0.1, 0, 1.0, 5.0, 0.1, 0.2, 2) get_user_name(id,name,31) show_hudmessage(victim_id,"%s %s",name,_hasreviving) client_print(victim_id,print_chat,"[%s] %s %s",MOD, name,_hasreviving) get_user_name(victim_id,name,31) show_hudmessage(id,"%s %s, %s",_youarerevived1,name,_youarerevived2) client_print(id,print_chat,"[%s] %s %s, %s",MOD,_youarerevived1,name,_youarerevived2) to_be_revived[victim_id]=true pheonixexistsCT-- return PLUGIN_CONTINUE } } } return PLUGIN_CONTINUE } public death(){ // Called when you die if (warcraft3==false) return PLUGIN_CONTINUE new killer_id = read_data(1) new victim_id = read_data(2) new headshot = read_data(3) if (task_exists(2000+victim_id)) // Remove the function that makes you jump if you're goombad remove_task(2000+victim_id) icon_controller(victim_id,ICON_HIDE) // Remove icon because you don't have an ultimate when you're dead ismole[victim_id]=false // For use w/mole protectant if (playeritem2[victim_id]==CHAMELEON || skinchanged[victim_id]) changeskin(victim_id,1) if (playeritem2[victim_id]==HELM) set_user_hitzones(victim_id) if(playeritem2[victim_id]==RESPAWN && !changingteam[victim_id]){ new parm[2] parm[0]=victim_id parm[1]=6 if(playeritem2[victim_id]!=MOLE){ playeritem2[victim_id]=0 rings[victim_id]=0 } playeritem[victim_id]=0 set_task(0.5,"func_spawn",72,parm,2) spawnedfromitem[victim_id]=true } rings[victim_id]=0 set_user_footsteps(victim_id, 0) new weaponname[20] read_data(4,weaponname,31) new weapon get_user_attacker(victim_id,weapon) if( headshot && killer_id!=victim_id && !deathmessageshown[victim_id] && get_user_team(victim_id)!=get_user_team(killer_id)){ playerxp[killer_id]+= HEADSHOT_BONUS if (get_cvar_num("FT_kill_objectives")) #if LANG_FRE client_print(killer_id,print_chat,"[%s] Vous etes recompense de %d XP pour avoir fait un headshot", MOD, HEADSHOT_BONUS)//? #else client_print(killer_id,print_chat,"[%s] You are awarded %d XP for having a headshot", MOD, HEADSHOT_BONUS)//? #endif } if(!deathmessageshown[victim_id] && killer_id!=victim_id && !equal(weaponname,"world")){ deathmessageshown[victim_id]=true 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() } changingteam[victim_id]=false diedlastround[victim_id]=true if (((p_skills[victim_id][0] == 9 && race9Options[4] == 7) || p_skills[victim_id][0] == 7) && p_skills[victim_id][4] && (!hasblink[killer_id] || killer_id==victim_id) && !u_delay){ // Vengeance new parm[2] parm[0]=victim_id parm[1]=6 if(!endround && !ultimateused[victim_id]){ set_task(1.2,"func_spawn",2,parm,2) ultimateused[victim_id]=true } } else if (((p_skills[victim_id][0] == 9 && race9Options[4] == 1) || p_skills[victim_id][0] == 1) && p_skills[victim_id][4] && !hasblink[killer_id] && !changingteam[victim_id] && !u_delay){ // Suicide Bomber emit_sound(victim_id,CHAN_ITEM, "ambience/particle_suck1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) new parm[5], origin[3] get_user_origin(victim_id,origin) parm[0]=victim_id parm[1]=6 parm[2]=origin[0] parm[3]=origin[1] parm[4]=origin[2] set_task(0.1,"implosion",1,parm,5) set_task(0.2,"apacheexplode",2,parm,5) set_task(0.3,"blastcircles",3,parm,5) } check_for_reviving(victim_id) saveweapons(victim_id) if (killer_id && killer_id!=victim_id && victim_id){ new name[32] get_user_name(victim_id,name,31) if (get_user_team(killer_id)==get_user_team(victim_id)){ playerxp[killer_id]-=xpgiven[p_level[killer_id]] if (get_cvar_num("FT_kill_objectives")) #if LANG_FRE client_print(killer_id,print_chat,"[%s] Vous etes recompense de %d XP pour avoir tue %s",MOD,xpgiven[p_level[killer_id]]*-1,name)//? #else client_print(killer_id,print_chat,"[%s] You are awarded %d XP for killing %s",MOD,xpgiven[p_level[killer_id]]*-1,name)//? #endif } else{ if (!get_cvar_num("mp_weaponxpmodifier")){ playerxp[killer_id]+=xpgiven[p_level[victim_id]] if (get_cvar_num("FT_kill_objectives")) #if LANG_FRE client_print(killer_id,print_chat,"[%s] Vous etes recompense de %d XP pour avoir tue %s",MOD,xpgiven[p_level[killer_id]],name)//? #else client_print(killer_id,print_chat,"[%s] You are awarded %d XP for killing %s",MOD,xpgiven[p_level[killer_id]],name)//? #endif } else{ playerxp[killer_id]+=floatround(xpgiven[p_level[victim_id]]*weaponxpmultiplier[weapon]) if (get_cvar_num("FT_kill_objectives")) #if LANG_FRE client_print(killer_id,print_chat,"[%s] Vous etes recompense de %d XP pour avoir tue %s",MOD,xpgiven[p_level[killer_id]],name)//? #else client_print(killer_id,print_chat,"[%s] You are awarded %d XP for killing %s",MOD,xpgiven[p_level[killer_id]],name)//? #endif } if (victim_id==hostagesaver && get_user_team(victim_id)!=get_user_team(killer_id)){ playerxp[killer_id]+=KILLRESCUEMANXP #if LANG_FRE client_print(killer_id,print_chat,"[%s] Vous recevez %d XP pour avoir tue le sauveur d'otages",MOD, KILLRESCUEMANXP) #else client_print(killer_id,print_chat,"[%s] You received %d XP for killing the hostage rescuer",MOD, KILLRESCUEMANXP) #endif } } displaylevel(killer_id, 1) } if (victim_id==bombdefuser && killer_id!=bombdefuser && get_user_team(victim_id)!=get_user_team(killer_id)){ new temp temp = DEFUSER_KILL_BONUS + xpgiven[p_level[victim_id]] playerxp[killer_id]+= temp if (get_cvar_num("FT_objectives")){ new killersname[33] get_user_name(killer_id,killersname,31) #if LANG_FRE client_print(killer_id,print_chat, "[%s] %s a recu %d XP pour avoir tue le desamorceur",MOD,killersname,temp) #else client_print(killer_id,print_chat, "[%s] received %s %d XP for killing the bomb defuser",MOD,killersname,temp) #endif } } if (victim_id==bombCarrier && killer_id!=bombCarrier && get_user_team(victim_id)!=get_user_team(killer_id)){ new temp temp = KILL_BOMB_CARRIER + xpgiven[p_level[victim_id]] playerxp[killer_id]+= temp if (get_cvar_num("FT_objectives")){ new killersname[33] get_user_name(killer_id,killersname,31) #if LANG_FRE client_print(killer_id,print_chat, "[%s] %s a recu %d XP pour avoir tue le porteur de la bombe",MOD,killersname,temp) #else client_print(killer_id,print_chat, "[%s] received %s %d XP for killing the bomb carrier",MOD,killersname,temp) #endif } } 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(get_cvar_num("mp_savexp")){ get_xp_from_file(id,1) }else select_race(id) } else if (skillsused < p_level[id]) select_skill(id,0) else displaylevel(id, 1) return PLUGIN_HANDLED } public game_commencing(){ new players[32], numplayers, id get_players(players, numplayers) for (new i=0; i650){ if (((p_skills[id][0] == 9 && race9Options[3] == 1) || 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.35) else set_user_gravity(id,1.0) } else set_user_gravity(id,1.0) if (playeritem2[id]==CAT) set_user_footsteps(id, 1) else set_user_footsteps(id, 0) if(playeritem2[id]!=CHAMELEON && skinchanged[id]) changeskin(id,1) if (task_exists(9000+id) && playeritem2[id]!=REGEN) remove_task(9000+id) if (playeritem[id]==HEALTH) set_user_health(id,get_user_health(id)+HEALTHBONUS) if(playeritem2[id]==REGEN && !task_exists(9000+id)) regenerate(parm) if (playeritem2[id]==HELM) set_user_hitzones(0,id,253) else set_user_hitzones(0,id,255) if (playeritem2[id]==CHAMELEON && is_user_alive(id)) changeskin(id,0) } public new_round(id){ // Called at the beginning of each round and when the event ResetHUD is called if (warcraft3==false) return PLUGIN_CONTINUE if(game_commence[id]){ playeritem[id] = 0 playeritem2[id] = 0 he[id] = 0 diedlastround[id]=false game_commence[id]=false } if(get_cvar_num("FT_competitive") && !buycalled){ set_task(get_cvar_float("mp_buytime")*60.0,"set_buytime",899) buycalled = true } icon_controller(id,ICON_HIDE) deathmessageshown[id]=false issearching[id]=false // if player is searching when the round ends, this resets that value to 0 if (p_skills[id][0] == 0){ if(get_cvar_num("mp_savexp")) get_xp_from_file(id,1) else select_race(id) return PLUGIN_HANDLED } to_be_revived[id]=false // Temporary orc nade fix for czero if(is_running("czero")){ he_origin[id][0]=-1.234 he_origin[id][1]=-1.234 he_origin[id][2]=-1.234 if(task_exists(id+9500)) remove_task(id+9500) } if (playerhasspawned[id]){ if (((p_skills[id][0] == 9 && race9Options[3] == 6) || p_skills[id][0] == 6) && p_skills[id][3]) // Serpent Ward serpents[id]=p_serpent[p_skills[id][3]-1] else serpents[id]=0 if(!freezetime && !ultimateused[id]) icon_controller(id,ICON_SHOW) if(stunned[id] || slowed[id]) set_user_maxspeed(id,240.0) if(playeritem2[id]!=MOLE) playeritem2[id]=0 playeritem[id]=0 changeskin(id,1) displaylevel(id,1) return PLUGIN_HANDLED } if (p_skills[id][0] == 9) displaylevel(id,0) u_delay = false if (get_cvar_num("FT_ultimatedelay")){ u_delay = true if (!task_exists(12385)) set_task(get_cvar_float("FT_ultimatedelay"), "udelay_cooldown", 12385) } if (menupend[id]){ if(get_cvar_num("mp_savexp")) get_xp_from_file(id,1) else select_race(id) menupend[id]=false } if (task_exists(21)) // Stops any ultimates from continuing when the new round starts remove_task(21) if (task_exists(26)) // Stops any ultimates from continuing when the new round starts remove_task(26) if (task_exists(id+500)) // Stop any cooldowns in effect remove_task(500+id) if (task_exists(id+645)) // Remove bomb count down remove_task(645+id) buytime=true checkmap() new parm[2] parm[0]=id if (freezecalled==0){ freezetime = 1 freezecalled = 1 } if(get_cvar_num("FT_blinkstartdisabled")){ blinkdelayed[id]=true set_task(get_cvar_float("FT_blink_delay"),"cooldown2",50 + id,parm,1) } if (get_cvar_num("FT_warn_suicide")) suicideAttempt[id] = 0 #if STEAM_POWERED set_user_maxspeed(id,1.0) #endif if (playeritem2[id]==HELM) set_user_hitzones(0,id,253) set_task(0.1, "weapon_controller", 10091, parm, 2) // Weapon Reincarnation isburning[id]=0 ultimateused[id]=false flame_count[id]=0 stunned[id]=false slowed[id]=false endround=false hostagesaver=0 hasblink[id]=false // Checks skills check_skills(id) check_fan(id) if (get_cvar_num("FT_reset_skills")){ if (resetskill[id]) { p_skills[id][1]=0 p_skills[id][2]=0 p_skills[id][3]=0 p_skills[id][4]=0 p_level[id] = 0 resetskill[id]=false 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_CONTINUE } public resetskills(id,saychat){ if (warcraft3==false) return PLUGIN_CONTINUE if (get_cvar_num("FT_reset_skills")){ if(saychat==1) #if LANG_FRE client_print(id,print_center,"Vos competences seront remise à zero au prochain round") #else client_print(id,print_center,"Your skills will be reset next round") #endif else #if LANG_FRE console_print(id,"Vos competences seront remise à zero au prochain round") #else console_print(id,"Your skills will be reset next round") #endif resetskill[id]=true } else{ if(saychat==1) #if LANG_FRE client_print(id,print_center,"Cette option est desactivee du serveur") #else client_print(id,print_center,"This server has disabled that option") #endif else #if LANG_FRE console_print(id,"Cette option est desactivee du serveur") #else console_print(id,"This server has disabled that option") #endif resetskill[id]=false } return PLUGIN_HANDLED } #if !STEAM_POWERED public reset_position(parm[4]){ new origin[3] origin[0]=parm[1] origin[1]=parm[2] origin[2]=parm[3] set_user_origin(parm[0],origin) } #endif public weapon_controller( parm[2] ){ if (warcraft3==false) return PLUGIN_CONTINUE new id = parm[0] new origin[3] = 0 new weaponid = 0, weaponname[20] = 0, ammoname[20] = 0 new bool:reincarnate new iweapons[32] = 0, wpname[32] = 0, inum = 0 get_user_weapons(id,iweapons,inum) reincarnate = false // Save weapons of people who survived: otherwise the stripper will nab them... if( diedlastround[id] == false ){ // LIVED LAST ROUND reincarnate = false } // Equipement & Eligibility Check for Re-Incarnation if ( diedlastround[id]){ // DIED LAST ROUND new Float:randomnumber = random_float(0.0,1.0) if (((p_skills[id][0] == 9 && race9Options[3] == 3) || p_skills[id][0] == 3) && p_skills[id][3] && randomnumber <= p_ankh[p_skills[id][3]-1]){ reincarnate = true //client_print(id,print_chat, "skill detected") } else if(give_items[id]){ reincarnate = true give_items[id]=false } else if (playeritem[id]==ANKH) reincarnate=true } // Equipement Re-Incarnation: Includes pistols. Also, living ppl need to be re-incarnated. if (reincarnate){ if (file_exists("sound/warcraft3/soundpack/reincarnation.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/soundpack/reincarnation.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) // Disarm and Isolate Player Before Re-Incarnation get_user_origin(id,origin) origin[2] -= 2000 set_user_origin(id,origin) for(new a=0;aMAXGLOW) 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() // Restore Re-Incarnated Player to the map #if STEAM_POWERED set_user_origin(id,origin) #else new parm2[4] parm2[0]=id parm2[1]=origin[0] parm2[2]=origin[1] parm2[3]=origin[2] set_task(0.1,"reset_position",3,parm2,4) #endif }else{ hasdefuse[id]=false } item_functions(parm) return PLUGIN_HANDLED } #if !STEAM_POWERED 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 } #endif public saveweapons(id){ armorondeath[id]=get_user_armor(id) for (new i=0; i<32; ++i){ // Equipment Reincarnation savedweapons[id][i]=0 } savednumber[id]=0 get_user_weapons(id,savedweapons[id],savednumber[id]) return PLUGIN_CONTINUE } public end_round(){ // Called at the end of a round if (warcraft3==false) return PLUGIN_CONTINUE endround=true buycalled=false 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) } if(task_exists(899)) remove_task(899) for(y=0;y<33;++y) spawnPointsused[y]=false for (y = 0; y < numberofplayers; ++y){ id = players[y] if(task_exists(600+id)) // Removes walker (undead changing speed) remove_task(600+id) if (task_exists(id+90)) // Removes any current healing processes remove_task(id+90) if (task_exists(9000+id)) // Removes undead flashing process remove_task(9000+id) if (task_exists(50 + id)) // Remove any current cooldowns remove_task(50+id) if (task_exists(1000+id)){ // Remove any reset_maxspeeds occuring (could cause a person to move during freezetime remove_task(1000+id) new parm[2] parm[0]=id reset_maxspeed(parm) } if (task_exists(4500+id)){ // Resets godmode remove_task(4500+id) new parm[2] parm[0]=id reset_godmode(parm) } if(is_user_alive(id)) saveweapons(id) spawnedfromitem[id]=false playerhasspawned[id]=false if(playeritem2[id]!=CHAMELEON) changeskin(id,1) he[id]=0 carrioncount[id]=2 shadowcount[id]=2 flashg[id]=0 ismole[id]=false itemsrunning[id]=true } freezecalled = 0 pheonixexistsT=0 pheonixexistsCT=0 if (get_cvar_num("mp_savexp")) write_all() // if in race9 mode and FT_9raceRandom is set to true then pick random powers for next round // this is done last with the hope that it will not effect the current round?? if (get_cvar_num("FT_9race")){ if (get_cvar_num("FT_9raceRandom")){ new myintvallocal = 0 copy(race9skill[0],63,"") copy(race9skill[1],63,"") copy(race9skill[2],63,"") copy(race9skill[3],63,"") // loop through all four skill options (3 + ultimate) pick a new race at random and update the skill while (myintvallocal < 4){ race9Options[myintvallocal + 1] = random_num(1,8) if (race9Options[myintvallocal + 1] == 1){ copy(race9skill[myintvallocal],63,race1skill[myintvallocal]) } else if (race9Options[myintvallocal + 1] == 2){ copy(race9skill[myintvallocal],63,race2skill[myintvallocal]) } else if (race9Options[myintvallocal + 1] == 3){ copy(race9skill[myintvallocal],63,race3skill[myintvallocal]) } else if (race9Options[myintvallocal + 1] == 4){ copy(race9skill[myintvallocal],63,race4skill[myintvallocal]) } else if (race9Options[myintvallocal + 1] == 5){ copy(race9skill[myintvallocal],63,race5skill[myintvallocal]) } else if (race9Options[myintvallocal + 1] == 6){ copy(race9skill[myintvallocal],63,race6skill[myintvallocal]) } else if (race9Options[myintvallocal + 1] == 7){ copy(race9skill[myintvallocal],63,race7skill[myintvallocal]) } else if (race9Options[myintvallocal + 1] == 8){ copy(race9skill[myintvallocal],63,race8skill[myintvallocal]) } ++myintvallocal } } } 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) #if LANG_FRE show_hudmessage(id,"Vous devez choisir votre race avant de choisir les competences!") #else show_hudmessage(id,"You must select a race before selecting skills!") #endif } else #if LANG_FRE client_cmd(id,"echo %s","Vous devez choisir votre race avant de choisir les competences!") #else client_cmd(id,"echo %s","You must select a race before selecting skills!") #endif 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) #if LANG_FRE show_hudmessage(id,"Vous avez deja utilise tous vos points de competences!") #else show_hudmessage(id,"You have already used up all your skill points!") #endif } else #if LANG_FRE client_cmd(id,"echo %s","Vous avez deja utilise tous vos points de competences!") #else client_cmd(id,"echo %s","You have already used up all your skill points!") #endif 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 } #if LANG_GER format(message,255,"\yWaehle eine Faehigkeit:\w^n") #else format(message,255,"\ySelect Skill\w^n") #endif 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) } #if LANG_FRE format(temp,127,"^n%d. %s %s %d\w",skillcounter,skillcurrentrace[skillcounter-1],"Niveau",p_skills[id][skillcounter]+1) #else format(temp,127,"^n%d. %s %s %d\w",skillcounter,skillcurrentrace[skillcounter-1],"Level",p_skills[id][skillcounter]+1) #endif 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. %s: %s\w","Ultimate",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) new parm[1] parm[0]=id if (get_cvar_num("mp_savexp")){ playerxp[id] = 0 p_level[id] = 0 get_xp_from_file(id,0) } check_skills(id) if(!freezetime && !blinkdelayed[id] && !ultimateused[id]) icon_controller(id,ICON_SHOW) 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) } if(((p_skills[id][0] == 9 && race9Options[2] == 2) || p_skills[id][0] == 2) && p_skills[id][2] && get_user_health(id) <= 100){ // set_health set_user_health(id,p_devotion[p_skills[id][2]-1]) } return PLUGIN_HANDLED } public jumper(parm[2]){ new id = parm[0] client_cmd(id,"+jump;wait;-jump") parm[1]++ if(!endround && is_user_alive(id)) set_task(3.0,"jumper",2000+id,parm,1) return PLUGIN_CONTINUE } public do_damage(id,enemy, damage,deathby, victim_or_enemy, weapon, bodypart, userdead){ // one who is attacked, attacker ,damage // victim = 1 // enemy = 2 if (!warcraft3) return PLUGIN_CONTINUE new userkilled = 0 new string[128] switch (deathby){ case 1: format(string,127,"%s",race8skill[2]) // Carrion Beetles case 2: format(string,127,"%s",race4skill[1]) // Thorns Aura case 3: format(string,127,"%s",race4skill[2]) // Trueshot Aura case 4: format(string,127,"%s",race8skill[1]) // Spiked Carapace case 5: format(string,127,"%s",race5skill[1]) // Banish case 6: format(string,127,"%s",race3skill[0]) // Critical Strike case 7: format(string,127,"%s",race3skill[1]) // Critical Grenade case 8: format(string,127,"%s",itemname[2]) // Duh case 9: format(string,127,"%s",race7skill[2]) // Shadow Strike case 10: format(string,127,"%s",race7skill[1]) // Blink kill of someone w/big bad voodoo case 11: format(string,127,"%s",race3skill[3]) // Chain Lightning Kill case 12: format(string,127,"%s",race1skill[3]) // Suicide Bomber Kill case 13: format(string,127,"%s",race5skill[3]) // Flame Strike Kill case 14: format(string,127,"%s",race6skill[2]) // Serpant Ward Kill case 15: format(string,127,"%s",race8skill[3]) // Locust Kill case 16: format(string,127,"%s",itemname[5]) } client_print(id,print_console,"[DEBUG] Damage received : %d, by %s",damage,string) client_print(enemy,print_console,"[DEBUG] Damage done : %d, by %s",damage,string) if(userdead || !is_user_alive(id)){ return PLUGIN_HANDLED } if(hasblink[id] && (weapon ==10 || weapon==11 || weapon==12 || weapon==13 || weapon==15)) return PLUGIN_HANDLED if(hasgodmode[id] && !hasblink[enemy] && playeritem[enemy]!=IMMUNITY) return PLUGIN_HANDLED if (bodypart==1 && get_user_team(id)!=get_user_team(enemy)){ playerxp[enemy]+=HEADSHOT_BONUS if (get_cvar_num("FT_kill_objectives")) #if LANG_FRE client_print(enemy,print_chat,"[%s] Vous etes recompense de %d XP pour avoir fait un headshot", MOD, HEADSHOT_BONUS)//? #else client_print(enemy,print_chat,"[%s] You are awarded %d XP for having a headshot", MOD, HEADSHOT_BONUS)//? #endif displaylevel(enemy,1) } if (get_user_health(id) - damage<=0) userkilled = 1 if (get_user_health(id) - damage<=1024 && get_user_health(id)>500) userkilled = 1 if (userkilled) set_user_health(id, -1) else set_user_health(id, get_user_health(id) - damage) if (userkilled && get_user_team(id)!=get_user_team(enemy)) set_user_money(enemy,get_user_money(enemy)+300) if (userkilled){ diedlastround[id]=true } if (userkilled && id!=enemy){ switch (deathby){ case 1: format(string,127,"%s",race8skill[2]) // Carrion Beetles case 2: format(string,127,"%s",race4skill[1]) // Thorns Aura case 3: format(string,127,"%s",race4skill[2]) // Trueshot Aura case 4: format(string,127,"%s",race8skill[1]) // Spiked Carapace case 5: format(string,127,"%s",race5skill[1]) // Banish case 6: format(string,127,"%s",race3skill[0]) // Critical Strike case 7: format(string,127,"%s",race3skill[1]) // Critical Grenade case 8: format(string,127,"%s",itemname[2]) // Duh case 9: format(string,127,"%s",race7skill[2]) // Shadow Strike case 10: format(string,127,"%s",race7skill[1]) // Blink kill of someone w/big bad voodoo case 11: format(string,127,"%s",race3skill[3]) // Chain Lightning Kill case 12: format(string,127,"%s",race1skill[3]) // Suicide Bomber Kill case 13: format(string,127,"%s",race5skill[3]) // Flame Strike Kill case 14: format(string,127,"%s",race6skill[2]) // Serpant Ward Kill case 15: format(string,127,"%s",race8skill[3]) // Locust Kill case 16: format(string,127,"%s",itemname[5]) } } if (userkilled && id!=enemy){ new idname[32], enemyname[32] get_user_name(id,idname,31) get_user_name(enemy,enemyname,31) new players[32], numberofplayers, i, y get_players(players, numberofplayers) for (i = 0; i < numberofplayers; ++i){ y=players[i] console_print(y,"****** %s was killed by %s's %s",idname,enemyname,string) } } new name[32] get_user_name(id,name,31) if (userkilled && (victim_or_enemy == 2 || victim_or_enemy == 3)&& id !=enemy && userdead==0){ // due to thorns or spiked carapace or serpent wards or ultimates if (get_user_team(id)!=get_user_team(enemy)){ set_user_frags(enemy, get_user_frags(enemy)+1) set_user_frags(id, get_user_frags(id)+1) logKill(enemy,id, string) if(get_user_team(id)!=get_user_team(enemy)){ playerxp[enemy]+=xpgiven[p_level[id]] if (get_cvar_num("FT_kill_objectives")) #if LANG_FRE client_print(enemy,print_chat,"[%s] Vous gagnez %d XP pour avoir tue %s avec %s",MOD,xpgiven[p_level[id]],name,string)//? #else client_print(enemy,print_chat,"[%s] You just gained %d XP for killing %s with %s",MOD,xpgiven[p_level[id]],name,string)//? #endif displaylevel(id, 1) } } if(!deathmessageshown[id]){ deathmessageshown[id]=true message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0) write_byte(enemy) write_byte(id) write_byte(0) write_string(string) message_end() } return PLUGIN_HANDLED } // && get_user_team(id)!=get_user_team(enemy) if (userkilled && victim_or_enemy == 1 && id!=enemy && userdead==0){ // 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" #if STEAM_POWERED case 14: weaponname = "galil" case 15: weaponname = "famas" #endif 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" } set_user_frags(id, get_user_frags(id)+1) set_user_frags(enemy, get_user_frags(enemy)+1) logKill(enemy,id, weaponname) if (!get_cvar_num("mp_weaponxpmodifier") && get_user_team(id)!=get_user_team(enemy)){ playerxp[enemy]+=xpgiven[p_level[id]] if (get_cvar_num("FT_kill_objectives")) #if LANG_FRE client_print(enemy,print_chat,"[%s] Vous gagnez %d XP pour avoir tue %s avec %s",MOD,xpgiven[p_level[id]],name,string)//? #else client_print(enemy,print_chat,"[%s] You just gained %d XP for killing %s with %s",MOD,xpgiven[p_level[id]],name,string)//? #endif } else if(get_user_team(id)!=get_user_team(enemy)){ playerxp[enemy]+=floatround(xpgiven[p_level[id]]*weaponxpmultiplier[weapon]) if (get_cvar_num("FT_kill_objectives")) #if LANG_FRE client_print(enemy,print_chat,"[%s] Vous gagnez %d XP pour avoir tue %s avec %s",MOD,floatround(xpgiven[p_level[id]]*weaponxpmultiplier[weapon]),name,string)//? #else client_print(enemy,print_chat,"[%s] You just gained %d XP for killing %s with %s",MOD,floatround(xpgiven[p_level[id]]*weaponxpmultiplier[weapon]),name,string)//? #endif } if(!deathmessageshown[id]){ deathmessageshown[id]=true 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 } // Start Temporary Fix for czero (HE nades not working) public reset_he_origin(parm[]){ new enemy = parm[0] he_origin[enemy][0]=-1.234 he_origin[enemy][1]=-1.234 he_origin[enemy][2]=-1.234 // client_print(enemy,print_chat,"[DEBUG]After reset: x : %f, y: %f, z: %f",he_origin[enemy][0],he_origin[enemy][1],he_origin[enemy][2]) return PLUGIN_CONTINUE } // End Temporary Fix public damage_event(id){ if (warcraft3==false) return PLUGIN_CONTINUE // Added by NeKo if (get_cvar_num("FT_showblood")){ new colorblood = p_skills[id][0] new racecolor if (colorblood == 3 || colorblood == 6) // orc racecolor = 4 else if (colorblood == 4 || colorblood == 7) // elf racecolor = 2 else if (colorblood == 1 || colorblood == 8) // undead racecolor = 3 else if (colorblood == 2 || colorblood == 5) // human racecolor = 1 else racecolor = 5 bloodcreature(id,racecolor) } // End added by NeKo new weapon = 0, bodypart = 0, enemy = get_user_attacker(id,weapon,bodypart) new damage // Temporary Fix: HE nade tossed in CZ (get_user_attacker is broken in CZ for nades) This is not 100% (obviously, look at the shitty code) if(weapon==0 && enemy==0 && is_running("czero")){ new Float:porigin[3], players[32], pnum=0, y=0 new Float:distance, testenemy Entvars_Get_Vector(id,EV_VEC_origin,porigin) get_players(players, pnum) for(y=0;y0 && 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]-- if (file_exists("sound/warcraft3/shadowstrikebirth1.wav")==1) emit_sound(id,CHAN_STATIC, "warcraft3/shadowstrikebirth1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) if (file_exists("sound/warcraft3/shadowstrikemissile1.wav")==1) emit_sound(enemy,CHAN_STATIC, "warcraft3/shadowstrikemissile1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) damage = 10 do_damage(id, enemy,damage,9,1, weapon, bodypart,0) 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][2] ) // fade alpha message_end() } } } if (((p_skills[enemy][0] == 9 && race9Options[3] == 8) || p_skills[enemy][0] == 8)){ // Carrion Beetle if(p_skills[enemy][3]){ new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_carrion[p_skills[enemy][3]-1]&& 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( 15 ) // 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[enemy]-- if (file_exists("sound/warcraft3/carrionswarmlaunch1.wav")==1) emit_sound(enemy,CHAN_STATIC, "warcraft3/carrionswarmlaunch1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) if (file_exists("sound/warcraft3/carrionswarmdamage1.wav")==1) emit_sound(id,CHAN_STATIC, "warcraft3/carrionswarmdamage1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) damage = 10 do_damage(id, enemy,damage,1,1, weapon, bodypart,0) } } } if (((p_skills[id][0] == 9 && (race9Options[1] == 4 || race9Options[2] == 4)) || p_skills[id][0] == 4)){ // Elf if (((p_skills[id][0] == 9 && race9Options[1] == 4) || p_skills[id][0] == 1) && p_skills[id][1]) { // Evasion new healthadjustment = 0 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() } else set_user_health(id, get_user_health(id) + healthadjustment) } if (((p_skills[id][0] == 9 && race9Options[2] == 4) || p_skills[id][0] == 4) && p_skills[id][2]) { // Thorns Aura damage = read_data(2) damage = floatround(float(damage) * p_thorns[p_skills[id][2]-1]) do_damage(enemy, id,damage,2,2, weapon, bodypart,0) 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() } } if (((p_skills[enemy][0] == 9 && race9Options[3] == 4) || p_skills[enemy][0] == 4) && p_skills[enemy][3]) { // Trueshot damage = read_data(2) damage = floatround(float(damage) * p_trueshot[p_skills[enemy][3]-1]) do_damage(id, enemy,damage,3,1, weapon, bodypart,0) 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 (((p_skills[id][0] == 9 && race9Options[2] == 8) || p_skills[id][0] == 8)){ if (p_skills[id][2]) { // Spiked Carapace damage = read_data(2) damage = floatround(float(damage) * p_spiked[p_skills[id][2]-1]) do_damage(enemy, id,damage,4,2, weapon, bodypart,0) if(get_user_armor(id)<101) 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() } } if (p_skills[enemy][1] && ((p_skills[enemy][0] == 9 && race9Options[1] == 8) || p_skills[enemy][0] == 8)){ new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_impale[p_skills[enemy][1]-1]){ if (file_exists("sound/warcraft3/impalehit.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/impalehit.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) message_begin(MSG_ONE,gmsgShake,{0,0,0},id) write_short(255<< 14 ) //ammount write_short(10 << 14) //lasts this long write_short(255<< 14) //frequency message_end() } } if (((p_skills[enemy][0] == 9 && race9Options[2] == 6) || p_skills[enemy][0] == 6)){ // Hex if (p_skills[enemy][2]) { new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_hex[p_skills[enemy][2]-1] && !skinchanged[id]){ changeskin(id,2) new parm[2] parm[0]=id parm[1]=0 jumper(parm) #if LANG_GER client_print(id,print_chat,"[%s] Du bist nun ein Goomba und springst nur herum.",MOD) #endif #if LANG_FRE client_print(id,print_chat,"[%s] Vous vous etes transformer en goomba, en mourant",MOD) #endif #if LANG_ENG client_print(id,print_chat,"[%s] You are now a goomba, just jumping along",MOD) #endif } } } if (((p_skills[enemy][0] == 9 && (race9Options[2] == 5 || race9Options[3] == 5)) || p_skills[enemy][0] == 5)){ // Banish if (((p_skills[enemy][0] == 9 && race9Options[2] == 5) || p_skills[enemy][0] == 5) && p_skills[enemy][2]) { new Float:randomnumber = random_float(0.0,1.0) new num = p_skills[enemy][2]-1 // server_print("[%s] Banish Skill: %d, randomnumber: %f, Banish chance: %f",MOD, num, randomnumber,p_banish[num]) if (randomnumber <= p_banish[num]){ new parm[2] parm[0]=id if(randomnumber>9){ user_slap(id,0) user_slap(id,0) user_slap(id,0) do_damage(id, id,9,5,2, weapon, bodypart,0) } else{ user_slap(id,0) user_slap(id,0) user_slap(id,0) do_damage(id, id,7,5,2, weapon, bodypart,0) } if (file_exists("sound/warcraft3/banishcaster.wav")==1) emit_sound(enemy,CHAN_STATIC, "warcraft3/banishcaster.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) 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 (((p_skills[enemy][0] == 9 && race9Options[3] == 5) || p_skills[enemy][0] == 5) && p_skills[enemy][3]) { // Siphon Mana new money = get_user_money(id) money = floatround(p_mana[p_skills[enemy][3]-1] * money) set_user_money(enemy,get_user_money(enemy)+money,1) set_user_money(id,get_user_money(id)-money,1) 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() } } if (((p_skills[enemy][0] == 9 && race9Options[1] == 1) || p_skills[enemy][0] == 1)){ // Vampiric Aura if (p_skills[enemy][1]) { damage = read_data(2) damage = floatround(float(damage) * p_vampiric[p_skills[enemy][1]-1]) set_user_health(enemy, get_user_health(enemy) + damage) 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) ) } 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() } } if (((p_skills[enemy][0] == 9 && race9Options[3] == 2) || p_skills[enemy][0] == 2)){ // Bash (DOESN'T WORK ON BOTS) if (p_skills[enemy][3]) { 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) stunned[id]=true new parm[2] parm[0]=id parm[1]=normalspeed set_task(1.0,"reset_maxspeed",1000+id,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 (((p_skills[enemy][0] == 9 && (race9Options[1] == 3 || race9Options[2] == 3)) || p_skills[enemy][0] == 3)){ // Critical Strike if (((p_skills[enemy][0] == 9 && race9Options[1] == 3) || p_skills[enemy][0] == 3) && p_skills[enemy][1]) { 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 do_damage(id, enemy,damage,6,1, weapon, bodypart,0) 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][0] == 9 && race9Options[2] == 3) || p_skills[enemy][0] == 3) && p_skills[enemy][2]){ // Critical Grenade new bool:allow=true if(playeritem2[enemy]==INFERNO){ if(get_cvar_num("FT_glove_orc_damage")) allow=true else allow=false } else allow=true if(no_he) allow=false if (weapon == 4 && allow){ damage = read_data(2) damage = floatround(float(damage) * p_grenade[p_skills[enemy][2]-1]) do_damage(id, enemy,damage,7,1, weapon, bodypart,0) new name[32] get_user_name(id,name,31) 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() } } } if (playeritem[enemy] == CLAWS){ // Claws of Attack damage = CLAWSOFATTACK do_damage(id, enemy,damage,8,1, weapon, bodypart,0) 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) if (get_user_health(enemy) > (((p_skills[enemy][0] == 9 && race9Options[2] == 2) || p_skills[enemy][0] == 2) ? p_devotion[p_skills[enemy][2]-1] : 100) ){ set_user_health(enemy, (((p_skills[enemy][0] == 9 && race9Options[2] == 2) || p_skills[enemy][0] == 2) ? p_devotion[p_skills[enemy][2]-1] : 100) ) } 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",1000+id,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() } } return PLUGIN_CONTINUE } public glow_change(parm[]){ new id = parm[0] if (((p_skills[id][0] == 9 && race9Options[1] == 2) || 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 } else 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) #if LANG_FRE show_hudmessage(id,"%d seconde(s) avant votre prochaine grenade", nadetime[parm[0]]) #else show_hudmessage(id,"%d second(s) until your next grenade", nadetime[parm[0]]) #endif nadetime[parm[0]] -= 1 if (!is_user_alive(id)) #if LANG_FRE show_hudmessage(id,"Ne meurs pas imbecile, et tu auras des grenades!") #else show_hudmessage(id,"Don't die next time and I'll give you another nade ya silly goose!") #endif if (nadetime[parm[0]]!=-1 && is_user_alive(parm[0])) set_task(1.0,"nadetimer",9400+id,parm,2) if (nadetime[parm[0]]==-1){ giveheifnothas(parm) nadetime[id] = get_cvar_num("FT_glove_timer") return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public change_weapon(id) { if (warcraft3==false) return PLUGIN_CONTINUE // Gives person a grenade if they weren't just given one if (playeritem2[id]==INFERNO) { new wpnList[32] = 0 new number = 0 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) } } // End nade giving segment new clipamount = 0 new ammoamount = 0 new weaponnum = 0 weaponnum = (get_user_weapon(id,clipamount,ammoamount)) if (((p_skills[id][0] == 9 && race9Options[1] == 2) || p_skills[id][0] == 2) && p_skills[id][1]){ // Invisibility if (weaponnum==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 (weaponnum==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 } } else set_user_rendering(id) #if STEAM_POWERED 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() { if (warcraft3==false) return PLUGIN_CONTINUE freezetime = 0 new players[32],numberofplayers, id, i, parm[1] get_players(players, numberofplayers) for (i = 0; i < numberofplayers; ++i){ id=players[i] parm[0]=id #if STEAM_POWERED set_user_maxspeed(id,240.0) #endif set_task(0.1,"unholyspeed",19,parm,1) set_task(0.1,"unfreezespeed",21) if(get_cvar_num("FT_blinkstartdisabled")){ if(!(((p_skills[id][0] == 9 && race9Options[4] == 2) || p_skills[id][0] == 2) && p_skills[id][4])){ icon_controller(id,ICON_SHOW) ultimateused[id]=false } } else{ icon_controller(id,ICON_SHOW) ultimateused[id]=false } displaylevel(id,3) } return PLUGIN_CONTINUE } public set_buytime() buytime=false // New function called by freezetimedone - [AoL]Demandred public unfreezespeed() { if (warcraft3==false) return PLUGIN_CONTINUE new players[32] new numberofplayers get_players(players, numberofplayers) new i new id for (i = 0; i < numberofplayers; ++i){ id=players[i] change_weapon(id) } return PLUGIN_CONTINUE } // End new function - [AoL]Demandred public unholyspeed(parm[1]){ if (warcraft3==false) return PLUGIN_CONTINUE new id = parm[0] if (stunned[id]){ set_user_maxspeed(id,1.0) return PLUGIN_HANDLED } else if (slowed[id]){ set_user_maxspeed(id,FROSTSPEED) } #if STEAM_POWERED else if (get_user_maxspeed(id)>10 && ((p_skills[id][0] == 9 && race9Options[2] == 1) || p_skills[id][0] == 1) && p_skills[id][2] && !freezetime){ // 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] == 9 && race9Options[2] == 1) || 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 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) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,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) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],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[3],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],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) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],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) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],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) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],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) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],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) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],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]==9){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race9skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race9skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race9skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race9skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[9],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[9],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){ #if LANG_GER show_motd(id,message,"Warcraft 3 Frozen Throne Spieler Faehigkeiten") #endif #if LANG_FRE show_motd(id,message,"Warcraft3 Frozen Throne Competentes des Joueurs") #endif #if LANG_ENG show_motd(id,message,"Warcraft 3 Frozen Throne Player Skills") #endif return PLUGIN_CONTINUE } else{ console_print(id,message) } return PLUGIN_HANDLED } public items_info(id,saychat){ if (warcraft3==false) return PLUGIN_CONTINUE new temp[1024], pos = 0 #if STEAM_POWERED new theforward[] = "
  • " new backward[] = "
  • " new lastone[] = "" pos += format(temp[pos], 1024-pos, "
      ") #else new theforward[] = "" new backward[] = "^n" new lastone[] = "" #endif #if LANG_GER if(saychat==1){ pos += format(temp[pos], 1024-pos, "%sAnkh of Reincarnation: Wenn du stirbst, erhälst du in der nächsten Runde deine Ausrüstung zurück%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sBoots of Speed: Du rennst schneller als alle anderen%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sClaws of Attack +%s: Bei jedem Treffer werden dem Gegner zusätzliche %sHP abgezogen%s",theforward,CLAWSOFATTACK,CLAWSOFATTACK,backward) pos += format(temp[pos], 1024-pos, "%sCloak of Shadows: Macht dich teilweise unsichtbar, mit dem Messer in der Hand fast unsichtbar%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sMask of Death: Du bekommst HP zurück wenn du dem Gegner Schaden zufügst %s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sNecklace of Immunity: Du bist immun gegen Ultimates",theforward,backward) pos += format(temp[pos], 1024-pos, "%sOrb of Frost: Macht den Gegner langsamer wenn du ihn triffst%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sPeriapt of Health: Du bekommst extra Gesundheit beim Start der Runde%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sTome of Experience: Du kaufst Erfahrungspunkte ein.%s%s",theforward,backward,lastone) show_motd(id,temp,"Einkaufsmenu Gegenstandsinfo") } else{ console_print(id,"---- Einkaufsmenu Gegenstandsinfo ----") console_print(id,"Ankh of Reincarnation: Wenn du stirbst, erhälst du in der nächsten Runde deine Ausrüstung zurück") console_print(id,"Boots of Speed: Du rennst schneller als alle anderen") console_print(id,"Claws of Attack +%s: Bei jedem Treffer werden dem Gegner zusätzliche %sHP abgezogen",CLAWSOFATTACK,CLAWSOFATTACK) console_print(id,"Cloak of Shadows: Macht dich teilweise unsichtbar, mit dem Messer in der Hand fast unsichtbar") console_print(id,"Mask of Death: Du bekommst HP zurück wenn du dem Gegner Schaden zufügst ") console_print(id,"Necklace of Immunity: Du bist immun gegen Ultimates") console_print(id,"Orb of Frost: Macht den Gegner langsamer wenn du ihn triffst") console_print(id,"Periapt of Health: Du bekommst extra Gesundheit beim Start der Runde") console_print(id,"Tome of Experience: Du kaufst Erfahrungspunkte ein.") console_print(id,"---- Einkaufsmenu Gegenstandsinfo ----") } #endif #if LANG_FRE if(saychat==1){ pos +=