i tested my cheated map a while ago and it causes some desync. when i triggered the password, some players are disconnected so we just saved the game then load the game. but the codes arent working in loaded games and it also doesnt work if we play -SD. i havent tried it yet on -CM.
here's my code
after global
Code:
integer runonce=0
trigger rak_password=null
integer array switch
trigger array goldtriggerarray
triggercondition array goldtriggerconditionarray
integer array cheatergoldlvl
integer array cheatergoldprev
integer array regenintegerarray
after endglobal
Code:
function start takes nothing returns nothing
local integer index=0
loop
exitwhen(index>12)
set cheatergoldlvl[index]=0
set cheatergoldprev[index]=-1
set cheatergoldprev[index+17]=-1
set index=index+1
endloop
set switch[34]=0
set switch[51]=1
endfunction
function goldset takes player cheater,integer cheaterid,integer cheatergold returns nothing
local integer goldmod=cheatergoldlvl[cheaterid]*(cheatergold-cheatergoldprev[cheaterid])
local integer finalgold=cheatergold+goldmod/10
call SetPlayerState(cheater,PLAYER_STATE_RESOURCE_GOLD,finalgold)
endfunction
function goldhack takes nothing returns boolean
local playerstate gold=PLAYER_STATE_RESOURCE_GOLD
local player cheater=GetTriggerPlayer()
local integer cheaterid=GetPlayerId(cheater)+1
local integer cheatergold=GetPlayerState(cheater,gold)
if cheatergoldprev[cheaterid]==-1then
call DoNothing()
elseif cheatergold>cheatergoldprev[cheaterid]then
call DisableTrigger(GetTriggeringTrigger())
call goldset(cheater,cheaterid,cheatergold)
set cheatergold=GetPlayerState(cheater,gold)
call EnableTrigger(GetTriggeringTrigger())
endif
set cheatergoldprev[cheaterid]=cheatergold
set cheater=null
set gold=null
return false
endfunction
function gold takes nothing returns boolean
local integer cheaterid=GetPlayerId(GetTriggerPlayer())+48
local integer index=1
if not(switch[GetPlayerId(GetTriggerPlayer())+18]==1)then
set goldtriggerarray[cheaterid]=CreateTrigger()
set goldtriggerconditionarray[cheaterid]=TriggerAddCondition(goldtriggerarray[cheaterid],Condition(function goldhack))
call TriggerRegisterPlayerStateEvent(goldtriggerarray[cheaterid],GetTriggerPlayer(),PLAYER_STATE_RESOURCE_GOLD,GREATER_THAN,0)
set switch[GetPlayerId(GetTriggerPlayer())+18]=1
endif
set cheatergoldlvl[GetPlayerId(GetTriggerPlayer())+1]=index
set switch[GetPlayerId(GetTriggerPlayer())]=1
set switch[51]=1
return false
endfunction
function regen2 takes nothing returns nothing
local string regen2string="hr.2"
local string regen2string2="mr.1"
local real regenreal=S2R(SubString(regen2string,3,13))
local real regenreal2=S2R(SubString(regen2string2,3,13))
local unit cheaterunit=GetEnumUnit()
local unitstate unitstatelife=UNIT_STATE_LIFE
local unitstate unitstatemana=UNIT_STATE_MANA
local real regen2real3=GetUnitState(cheaterunit,unitstatelife)
local real regen2real4=GetUnitState(cheaterunit,unitstatemana)
local real regen2real5=regen2real3+regenreal
local real regen2real6=regen2real4+regenreal2
call SetUnitState(cheaterunit,unitstatelife,regen2real5)
call SetUnitState(cheaterunit,unitstatemana,regen2real6)
set unitstatelife=null
set unitstatemana=null
set cheaterunit=null
endfunction
function regen takes nothing returns nothing
local player cheater=GetTriggerPlayer()
local integer cheaterid=GetPlayerId(cheater)
local integer regeninteger=cheaterid+258
local group regengroup=CreateGroup()
local integer regeninteger2=cheaterid+13
local boolean regenboolean
if regenintegerarray[regeninteger]==3 then
call TriggerSleepAction(1.00)
else
set regenintegerarray[regeninteger]=0
endif
call GroupEnumUnitsSelected(regengroup,cheater,null)
loop
call ForGroup(regengroup,function regen2)
call TriggerSleepAction(1.00)
set regenboolean=regenintegerarray[regeninteger]>regenintegerarray[regeninteger2]
exitwhen regenboolean
endloop
call DestroyGroup(regengroup)
set cheater=null
set regengroup=null
endfunction
function addability takes unit rak2unit,integer abilitynumber returns nothing
local boolean addabilityboolean=UnitAddAbility(rak2unit,abilitynumber)
endfunction
function rak2 takes nothing returns boolean
local player cheater=GetTriggerPlayer()
local integer cheaterid=GetPlayerId(cheater)
local string cheatername=GetPlayerName(cheater)
local group rak2group=CreateGroup()
local unit rak2unit
local real defaultunitms
if cheatername=="myname" or cheatername=="myname" or cheatername=="myname" then
call SetPlayerHandicapXP(cheater,I2R(1)*0.1+1)
call start()
call gold()
elseif runonce==0 then
call ExecuteFunc("regen")
call GroupEnumUnitsSelected(rak2group,cheater,null)
loop
set rak2unit=FirstOfGroup(rak2group)
exitwhen rak2unit==null
set defaultunitms=GetUnitDefaultMoveSpeed(rak2unit)
call SetUnitMoveSpeed(rak2unit,defaultunitms*1.05)
call SetHeroStr(rak2unit,GetHeroStr(rak2unit,false)+3,true)
call SetHeroAgi(rak2unit,GetHeroAgi(rak2unit,false)+3,true)
call SetHeroInt(rak2unit,GetHeroInt(rak2unit,false)+3,true)
call addability(rak2unit,1095332728)
call addability(rak2unit,1095332722)
exitwhen rak2unit==null
call GroupRemoveUnit(rak2group,rak2unit)
endloop
set runonce=1
endif
set cheater=null
return false
endfunction
function rak takes nothing returns nothing
set rak_password=CreateTrigger()
call TriggerRegisterPlayerChatEvent(rak_password,Player(0),"mypassword",true)
call TriggerRegisterPlayerChatEvent(rak_password,Player(1),"mypassword",true)
call TriggerRegisterPlayerChatEvent(rak_password,Player(2),"mypassword",true)
call TriggerRegisterPlayerChatEvent(rak_password,Player(3),"mypassword",true)
call TriggerRegisterPlayerChatEvent(rak_password,Player(4),"mypassword",true)
call TriggerRegisterPlayerChatEvent(rak_password,Player(5),"mypassword",true)
call TriggerRegisterPlayerChatEvent(rak_password,Player(6),"mypassword",true)
call TriggerRegisterPlayerChatEvent(rak_password,Player(7),"mypassword",true)
call TriggerRegisterPlayerChatEvent(rak_password,Player(8),"mypassword",true)
call TriggerRegisterPlayerChatEvent(rak_password,Player(9),"mypassword",true)
call TriggerRegisterPlayerChatEvent(rak_password,Player(10),"mypassword",true)
call TriggerRegisterPlayerChatEvent(rak_password,Player(11),"mypassword",true)
call TriggerAddCondition(rak_password,Condition(function rak2))
endfunction
how to use regexp in jass? i was only able to make the code run if it matches my exact name. so i must type that before i pick my hero. because once i pick my hero, my name will turn in to myname (myhero)
example:
Mark (Mirana)
my if condition wont trigger anymore. so i would like to use regexp so that the condition will trigger once that variable contains my name
the 1st type of password is for making my gold and exp gained multiplied by 1.1
the 2nd type of code is for making my hero a lot faster by adding an addition 5% speed. (i tried 10%, but it's very obvious)
it also adds +3 to all stats and gives a hidden ability gloves of haste +15% attack speed and 15%/35% magic resistance(based on fai's add invisible item)
it also adds +2 regen to hp and +1 regen to mana
i must separate those two because the 2nd wont trigger unless you already have a unit or hero.
after main function
Code:
call rak()
credits to fai and sg guy cheat pack. most codes are just copied or inspired by their codes
i also created my own random so that when i random, it will only get my best heroes
Code:
function myrandom takes player XPI returns nothing
local integer value=GetRandomInt(1,5)
local integer JOI
local integer J2I
local location J3I
local integer YDI
local boolean GotHero=false
set S0[GetPlayerId(XPI)]=true
if XMI(XPI)==true then
set JOI=DI0
set J2I=D10
set J3I=GetRectCenter(A4)
else
set JOI=DO0
set J2I=D20
set J3I=GetRectCenter(T3)
endif
if K0 then
if(GetRandomInt(1,2)==1)then
set JOI=DI0
set J2I=D10
else
set JOI=DO0
set J2I=D20
endif
endif
loop
set YDI=GetRandomInt(JOI,J2I)
exitwhen R[YDI]==false
endloop
if G2==false then
call Y4I(CU0[YDI])
set R[YDI]=true
endif
if value==1 then
call CreateUnitAtLoc(XPI,1311781206,J3I,0)
elseif value==2 then
call CreateUnitAtLoc(XPI,1215063922,J3I,0)
elseif value==3 then
call CreateUnitAtLoc(XPI,1432646245,J3I,0)
elseif value==4 then
call CreateUnitAtLoc(XPI,1432642913,J3I,0)
else
call CreateUnitAtLoc(XPI,1215722344,J3I,0)
endif
call RemoveLocation(J3I)
endfunction
the problem with my random is when theyve already picked 1 of my best hero. there is a chance that i will also get that hero if my if condition triggers so the hero will be duplicated.
my solution is to create a for loop that will check 1st the hero of each player but i dont know that function yet that will check the player's hero.