ShadowInTheD
Active Member
- Reaction score
- 12
I'm thinking there's some infinite loop in my function that encrypts data that needs to be saved (as mentioned by comments). The game doesn't lag, so I actually don't know if it is that, but I can't find anything..
Here's my function:
Appreciate any help =)
Here's my function:
JASS:
function Encrypt_Hero takes player pl returns string
local integer Hero_Number
local string array Item_Number
local string Alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$%^&*"
local integer HeroCheckInt = 0
local integer ItemCheckInt = 0
local integer ItemSlot = 1
local string name = GetPlayerName(pl)
local integer namelength = StringLength(name)
local string array characterPosition
local integer nameIntegerCheck = 0
local integer charPosInt
//Getting 15 char Username
loop
if namelength < 15 then
set name = name + "#"
exitwhen false
endif
set namelength = StringLength(name)
endloop
//Getting Hero Data 0,1
loop
if udg_HeroSaveCount[HeroCheckInt] == GetUnitTypeId(udg_Heroes[GetPlayerId(pl)]) then
set Hero_Number = HeroCheckInt
exitwhen true
endif
set HeroCheckInt = HeroCheckInt+1
endloop
set udg_CodePerPlayer[GetPlayerId(pl)] = udg_CodePerPlayer[GetPlayerId(pl)] + SubString(Alphabet,HeroCheckInt+15,HeroCheckInt+16)
//Break from Hero, Getting Item Data 1,3,3,5,5,7,7,9,9,11,11,13
loop
exitwhen ItemSlot > 6
if UnitItemInSlot(udg_Heroes[GetPlayerId(pl)],ItemSlot)== null then
set ItemSlot = ItemSlot + 1
else
loop
exitwhen ItemCheckInt > 1
if udg_ItemSaveCount[ItemCheckInt] == GetItemTypeId(UnitItemInSlot(udg_Heroes[GetPlayerId(pl)],ItemSlot)) then
set udg_CodePerPlayer[GetPlayerId(pl)] = udg_CodePerPlayer[GetPlayerId(pl)] + Decimal2Base70(ItemCheckInt+147)
endif
set ItemCheckInt = ItemCheckInt+1
endloop
set ItemSlot = ItemSlot + 1
endif
endloop
//Break from Items, Getting Attribute Data 14,19
set udg_CodePerPlayer[GetPlayerId(pl)] = udg_CodePerPlayer[GetPlayerId(pl)] + Decimal2Base70(GetHeroStr(udg_Heroes[GetPlayerId(pl)],false)+104) + Decimal2Base70(GetHeroAgi(udg_Heroes[GetPlayerId(pl)],false)+74) + Decimal2Base70(GetHeroInt(udg_Heroes[GetPlayerId(pl)],false)+192)
//Break from Attribute Data, Getting Experience 19,23
set udg_CodePerPlayer[GetPlayerId(pl)] = udg_CodePerPlayer[GetPlayerId(pl)] + Decimal2Base70(GetHeroXP(udg_Heroes[GetPlayerId(pl)])+1029353)
//Break from Experience, Getting Name 23,38
loop
exitwhen nameIntegerCheck > 15
if nameIntegerCheck == 0 then
set name = Decimal2Base70(Base70ToDecimal(SubString(name,0,1)))
else
set name = SubString(name,0,nameIntegerCheck-1) + Decimal2Base70(Base70ToDecimal(SubString(name,nameIntegerCheck,nameIntegerCheck+1))) + SubString(name,nameIntegerCheck+2,15)
endif
set nameIntegerCheck = nameIntegerCheck + 1
endloop
set udg_CodePerPlayer[GetPlayerId(pl)] = udg_CodePerPlayer[GetPlayerId(pl)] + name
//Break from Name, Getting Gold and PVP 38, 42 ,46
set udg_CodePerPlayer[GetPlayerId(pl)] = udg_CodePerPlayer[GetPlayerId(pl)] + Decimal2Base70(GetPlayerState(pl,PLAYER_STATE_RESOURCE_GOLD)+1072045) + Decimal2Base70(GetPlayerState(pl,PLAYER_STATE_RESOURCE_LUMBER)+1395427)
//Break from Gold and PVP, Getting Attribute Points 46,48
set udg_CodePerPlayer[GetPlayerId(pl)] = udg_CodePerPlayer[GetPlayerId(pl)] + Decimal2Base70(udg_PlayerAttributePoints[GetPlayerId(pl)]+92)
//Break from Attribute Points, Mixing up Code
loop
exitwhen charPosInt > 48
set characterPosition[charPosInt] = SubString(udg_CodePerPlayer[GetPlayerId(pl)],charPosInt,charPosInt+1)
set charPosInt = charPosInt + 1
endloop
call DisplayTimedTextToPlayer(pl,0,0,3600,"Your Code: " + udg_CodePerPlayer[GetPlayerId(pl)])
set udg_CodePerPlayer[GetPlayerId(pl)] = characterPosition[33] + SubString(udg_CodePerPlayer[GetPlayerId(pl)],1,32) + characterPosition[0] + SubString(udg_CodePerPlayer[GetPlayerId(pl)],33,48)
set udg_CodePerPlayer[GetPlayerId(pl)] = SubString(udg_CodePerPlayer[GetPlayerId(pl)],0,2) + characterPosition[10] + SubString(udg_CodePerPlayer[GetPlayerId(pl)],3,9)+characterPosition[1]+SubString(udg_CodePerPlayer[GetPlayerId(pl)],10,48)
set udg_CodePerPlayer[GetPlayerId(pl)] = SubString(udg_CodePerPlayer[GetPlayerId(pl)],0,3) + characterPosition[13] + SubString(udg_CodePerPlayer[GetPlayerId(pl)],4,12)+characterPosition[2]+SubString(udg_CodePerPlayer[GetPlayerId(pl)],13,48)
set udg_CodePerPlayer[GetPlayerId(pl)] = SubString(udg_CodePerPlayer[GetPlayerId(pl)],0,4) + characterPosition[42] + SubString(udg_CodePerPlayer[GetPlayerId(pl)],4,41)+characterPosition[4]+SubString(udg_CodePerPlayer[GetPlayerId(pl)],42,48)
set udg_CodePerPlayer[GetPlayerId(pl)] = SubString(udg_CodePerPlayer[GetPlayerId(pl)],0,7) + characterPosition[18] + SubString(udg_CodePerPlayer[GetPlayerId(pl)],8,17)+characterPosition[8]+SubString(udg_CodePerPlayer[GetPlayerId(pl)],18,48)
set udg_CodePerPlayer[GetPlayerId(pl)] = SubString(udg_CodePerPlayer[GetPlayerId(pl)],0,8) + characterPosition[46] + SubString(udg_CodePerPlayer[GetPlayerId(pl)],9,45)+characterPosition[9]+SubString(udg_CodePerPlayer[GetPlayerId(pl)],46,48)
set udg_CodePerPlayer[GetPlayerId(pl)] = SubString(udg_CodePerPlayer[GetPlayerId(pl)],0,10) + characterPosition[37] + SubString(udg_CodePerPlayer[GetPlayerId(pl)],11,36)+characterPosition[11]+SubString(udg_CodePerPlayer[GetPlayerId(pl)],37,48)
set udg_CodePerPlayer[GetPlayerId(pl)] = SubString(udg_CodePerPlayer[GetPlayerId(pl)],0,13) + characterPosition[22] + SubString(udg_CodePerPlayer[GetPlayerId(pl)],14,21)+characterPosition[14]+SubString(udg_CodePerPlayer[GetPlayerId(pl)],22,48)
set udg_CodePerPlayer[GetPlayerId(pl)] = SubString(udg_CodePerPlayer[GetPlayerId(pl)],0,16) + characterPosition[26] + SubString(udg_CodePerPlayer[GetPlayerId(pl)],17,25)+characterPosition[17]+SubString(udg_CodePerPlayer[GetPlayerId(pl)],26,48)
set udg_CodePerPlayer[GetPlayerId(pl)] = SubString(udg_CodePerPlayer[GetPlayerId(pl)],0,18) + characterPosition[30] + SubString(udg_CodePerPlayer[GetPlayerId(pl)],19,29)+characterPosition[19]+SubString(udg_CodePerPlayer[GetPlayerId(pl)],30,48)
call DisplayTimedTextToPlayer(pl,0,0,3600,"Your Code: " + udg_CodePerPlayer[GetPlayerId(pl)])
return udg_CodePerPlayer[GetPlayerId(pl)]
endfunction
Appreciate any help =)