ID:2171237
 
(See the best response by Flame Guardian.)
Problem description:
So, all my I tiled icons are having this problem, where in-game when someone first makes their character, they're fine, but when they relog, their icon takes on 2 tiles of the same icon for some reason. Now, I'm not the greatest coder, but I'm working on it!! I have absolutely no idea how to fix this x.x. Hlp!
Btw, all 2+ tiled icons work fine. It's only the single tiled icons.
Show us the Login() and Loading proc you use.
Code:
LoginScreen
icon='Login3.png'
density=1
layer = MOB_LAYER
LoginNew
layer = MOB_LAYER+999
Click()
var/logins={"
<html>
<title>
Character Name
</title>
<body bgcolor=black text=lime>
<b>
Choose a name for your Character by following these rules:<br>
-Don't put HTMLs in your name;<br>
-Capitalize your name or an awful ''the'' wil appear in front of it;<br>
-Your name must be at least 3 characters long but not must be longer than 20 characters;<br>
</body>
</html>
"}

switch(alert(usr,"In which slot do you want to start a character?",,"Slot 1","Slot 2","Slot 3"))
if("Slot 1")
if(fexists("players/[usr.key]/[usr.key]1.sav"))
alert(usr,"You already have created a character on this slot...")
return
else
usr<<browse(logins,"window=help;size=400x400")
sleep(20)
var/charactername = input("","Name") as text|null
if(length(charactername) < 2)
alert("Your name must be longer than 2 letters!")
return
if(length(charactername) > 12)
alert("Your name can not be longer then 20 letters!")
return
usr.name="[html_encode(charactername)]"
usr.slot1=1
usr.player=1
usr.loc = locate(20,20,20)
if("Slot 2")
if(fexists("players/[usr.key]/[usr.key]2.sav"))
alert(usr,"You already have created a character on this slot...")
return
else
usr<<browse(logins,"window=help;size=400x400")
sleep(20)
var/charactername = input("","Name") as text|null
if(length(charactername) < 2)
alert("Your name must be longer than 2 letters!")
return
if(length(charactername) > 12)
alert("Your name can not be longer then 20 letters!")
return
usr.name="[html_encode(charactername)]"
usr.slot2=1
usr.player=1
usr.loc = locate(20,20,20)
if("Slot 3")
if(fexists("players/[usr.key]/[usr.key]3.sav"))
alert(usr,"You already have created a character on this slot...")
return
else
usr<<browse(logins,"window=help;size=400x400")
sleep(20)
var/charactername = input("","Name") as text|null
if(length(charactername) < 2)
alert("Your name must be longer than 2 letters!")
return
if(length(charactername) > 12)
alert("Your name can not be longer then 20 letters!")
return
usr.name="[html_encode(charactername)]"
usr.slot3=1
usr.player=1
usr.loc = locate(20,20,20)



mob
proc
LoadPlayer()
if(fexists("players/[src.key]/[src.key]1.sav")||fexists("players/[src.key]/[src.key]2.sav")||fexists("players/[src.key]/[src.key]3.sav"))
switch(alert(src,"Which slot do you want to load?",,"Slot 1","Slot 2","Slot 3"))
if("Slot 1")
if(fexists("players/[src.key]/[src.key]1.sav"))
var/savefile/F = new("players/[src.key]/[src.key]1.sav")
Read(F)
world<<output("<b><font size=1><font color=yellow>(System) <font color=white>[src]([src.key]) has logged in...","Battle:add")
client.view = src.view
new/obj/hudMeters/health_01(src.client)
new/obj/hudMeters/health_02(src.client)
src.updateHealth()
new/obj/hudMeters2/magic_01(src.client)
new/obj/hudMeters2/magic_02(src.client)
src.updateMagic()
src.loc = locate(xco,yco,zco)
src.OOC = 1
src.slot1=1
src.cansave=1
src.invisibility=0
src.strength=src.Mstrength
src.spirit=src.Mspirit
src.defense=src.Mdefense
src.speed=src.Mspeed
src.Level=src.OLevel
src.health=src.Ohealth
src.magic=src.Omagic
if(src.health>src.Mhealth)
src.health=src.Mhealth
if(src.magic>src.Mmagic)
src.magic=src.Mmagic
src.Frozen = 0
src.moving = 0
src.NonPK = 0
src.AttackCheck()
src.AbilityCheck()
src.FamilyCheck()
src.Max_MouseName()
src.AFK()
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
if(src.health<round(src.Mhealth/20))
if(!src.Cursed&&!src.Poisoned)
del(src.StatusImage)
src.Status="Near Death"
src.StatusImage=image(/obj/Status/NearDeath/,src)
src<<src.StatusImage
src.Abilities()
return
if(!src.Cursed&&src.Poisoned)
del(src.StatusImage)
src.Status="Near Death"
src.StatusImage=image(/obj/Status/PND/,src)
src<<src.StatusImage
src.Abilities()
return
if(src.Cursed&&!src.Poisoned)
del(src.StatusImage)
src.Status="Near Death"
src.StatusImage=image(/obj/Status/CND/,src)
src<<src.StatusImage
src.Abilities()
return
if(src.Cursed&&src.Poisoned)
del(src.StatusImage)
src.Status="Near Death"
src.StatusImage=image(/obj/Status/CPND/,src)
src<<src.StatusImage
src.Abilities()
return
if(!src.Poisoned&&!src.Cursed)
del(src.StatusImage)
src.Status="Healthy"
if(!src.Cursed&&src.Poisoned)
del(src.StatusImage)
src.Status="Poisoned"
src.StatusImage=image(/obj/Status/Poison/,src)
src<<src.StatusImage
src.Poison()
if(src.Cursed&&!src.Poisoned)
del(src.StatusImage)
src.Status="Cursed"
src.StatusImage=image(/obj/Status/Curse/,src)
src<<src.StatusImage
src.Curse()
if(src.Cursed&&src.Poisoned)
del(src.StatusImage)
src.Status="Cursed & Poisoned"
src.StatusImage=image(/obj/Status/CP/,src)
src<<src.StatusImage
src.Curse()
src.Poison()
return
else
alert(src,"You don't have a Character saved in this slot...")
if("Slot 2")
if(fexists("players/[src.key]/[src.key]2.sav"))
var/savefile/F = new("players/[src.key]/[src.key]2.sav")
Read(F)
world<<output("<b><font size=1><font color=yellow>(System) <font color=white>[src]([src.key]) has logged in...","Battle:add")
client.view = src.view
new/obj/hudMeters/health_01(src.client)
new/obj/hudMeters/health_02(src.client)
src.updateHealth()
new/obj/hudMeters2/magic_01(src.client)
new/obj/hudMeters2/magic_02(src.client)
src.updateMagic()
src.loc = locate(xco,yco,zco)
src.strength=src.Mstrength
src.spirit=src.Mspirit
src.defense=src.Mdefense
src.speed=src.Mspeed
src.iconrelog()
src.Level=src.OLevel
src.health=src.Ohealth
src.magic=src.Omagic
src.NonPK = 0
if(src.health>src.Mhealth)
src.health=src.Mhealth
if(src.magic>src.Mmagic)
src.magic=src.Mmagic
src.slot2=1
src.OOC = 1
src.cansave=1
src.Frozen = 0
src.AttackCheck()
src.AbilityCheck()
src.FamilyCheck()
src.Max_MouseName()
src.AFK()
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
if(src.health<round(src.Mhealth/20))
if(!src.Cursed&&!src.Poisoned)
del(src.StatusImage)
src.Status="Near Death"
src.StatusImage=image(/obj/Status/NearDeath/,src)
src<<src.StatusImage
src.Abilities()
return
if(!src.Cursed&&src.Poisoned)
del(src.StatusImage)
src.Status="Near Death"
src.StatusImage=image(/obj/Status/PND/,src)
src<<src.StatusImage
src.Abilities()
return
if(src.Cursed&&!src.Poisoned)
del(src.StatusImage)
src.Status="Near Death"
src.StatusImage=image(/obj/Status/CND/,src)
src<<src.StatusImage
src.Abilities()
return
if(src.Cursed&&src.Poisoned)
del(src.StatusImage)
src.Status="Near Death"
src.StatusImage=image(/obj/Status/CPND/,src)
src<<src.StatusImage
src.Abilities()
return
if(!src.Poisoned&&!src.Cursed)
del(src.StatusImage)
src.Status="Healthy"
if(!src.Cursed&&src.Poisoned)
del(src.StatusImage)
src.Status="Poisoned"
src.StatusImage=image(/obj/Status/Poison/,src)
src<<src.StatusImage
src.Poison()
if(src.Cursed&&!src.Poisoned)
del(src.StatusImage)
src.Status="Cursed"
src.StatusImage=image(/obj/Status/Curse/,src)
src<<src.StatusImage
src.Curse()
if(src.Cursed&&src.Poisoned)
del(src.StatusImage)
src.Status="Cursed & Poisoned"
src.StatusImage=image(/obj/Status/CP/,src)
src<<src.StatusImage
src.Curse()
src.Poison()
return
else
alert(src,"You don't have a Character saved in this slot...")
if("Slot 3")
if(fexists("players/[src.key]/[src.key]3.sav"))
var/savefile/F = new("players/[src.key]/[src.key]3.sav")
Read(F)
world<<output("<b><font size=1><font color=yellow>(System) <font color=white>[src]([src.key]) has logged in...","Battle:add")
src.loc = locate(xco,yco,zco)
client.view = src.view
new/obj/hudMeters/health_01(src.client)
new/obj/hudMeters/health_02(src.client)
src.updateHealth()
new/obj/hudMeters2/magic_01(src.client)
new/obj/hudMeters2/magic_02(src.client)
src.updateMagic()
src.OOC = 1
src.slot3=1
src.strength=src.Mstrength
src.iconrelog()
src.spirit=src.Mspirit
src.defense=src.Mdefense
src.speed=src.Mspeed
src.Level=src.OLevel
src.NonPK = 0
src.health=src.Ohealth
src.magic=src.Omagic
if(src.health>src.Mhealth)
src.health=src.Mhealth
if(src.magic>src.Mmagic)
src.magic=src.Mmagic
src.cansave=1
src.Frozen = 0
src.AttackCheck()
src.AbilityCheck()
src.FamilyCheck()
src.Max_MouseName()
src.AFK()
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
src.overlays-=/obj/SPAWN
if(src.health<round(src.Mhealth/20))
if(!src.Cursed&&!src.Poisoned)
del(src.StatusImage)
src.Status="Near Death"
src.StatusImage=image(/obj/Status/NearDeath/,src)
src<<src.StatusImage
src.Abilities()
return
if(!src.Cursed&&src.Poisoned)
del(src.StatusImage)
src.Status="Near Death"
src.StatusImage=image(/obj/Status/PND/,src)
src<<src.StatusImage
src.Abilities()
return
if(src.Cursed&&!src.Poisoned)
del(src.StatusImage)
src.Status="Near Death"
src.StatusImage=image(/obj/Status/CND/,src)
src<<src.StatusImage
src.Abilities()
return
if(src.Cursed&&src.Poisoned)
del(src.StatusImage)
src.Status="Near Death"
src.StatusImage=image(/obj/Status/CPND/,src)
src<<src.StatusImage
src.Abilities()
return
if(!src.Poisoned&&!src.Cursed)
del(src.StatusImage)
src.Status="Healthy"
if(!src.Cursed&&src.Poisoned)
del(src.StatusImage)
src.Status="Poisoned"
src.StatusImage=image(/obj/Status/Poison/,src)
src<<src.StatusImage
src.Poison()
if(src.Cursed&&!src.Poisoned)
del(src.StatusImage)
src.Status="Cursed"
src.StatusImage=image(/obj/Status/Curse/,src)
src<<src.StatusImage
src.Curse()
if(src.Cursed&&src.Poisoned)
del(src.StatusImage)
src.Status="Cursed & Poisoned"
src.StatusImage=image(/obj/Status/CP/,src)
src<<src.StatusImage
src.Curse()
src.Poison()
return
else
alert(src,"You don't have a Character saved in this slot...")
else
alert(src,"You don't have a Saved File on this server...")

I didn't make this code, I'm basically using this source as a way to learn, with permission from the retired owner of course. Or who I've been told is the owner, who knows who really wrote it x.x.
code</>
var/D=input("Which Digimon do you want to become?") in varDigi+list("Cancel")
if(D=="Cancel")
usr<<output("<b><font color=yellow>[src.name]: Thanks for coming, Calu! ^-^","Battle:add")
return
usr.overlays=null
usr.icon_state=""
if(D=="Chicomon")
usr.Digimon="[D]"
usr.icon='Digimons/Chicomon.dmi'
usr.rank="In-Training"

if(D=="Veemon")
usr.Digimon="[D]"
usr.icon='Digimons/Veemon.dmi'
usr.rank="Rookie"

if(D=="SnowAgumon")
usr.Digimon="[D]"
usr.icon='Digimons/SnowAgumon.dmi'
usr.rank="Rookie"

if(D=="Monodramon")
usr.Digimon="[D]"
usr.icon='Digimons/Monodramon.dmi'
usr.rank="Rookie"

if(D=="ExVeemon")
usr.Digimon="[D]"
usr.icon='Digimons/ExVeemon.dmi'
usr.rank="Champion"
usr.icon_state="1"
var/obj/A=new /obj/ExVeemon
usr.overlays+=A


so the weirdest thing... the Exveemon is a 2 tile icon.. and the chicomon is a 1 tile.. there's an obj that converts you from ExVeemon to chicomon.. and I've pinpointed that's the only time the double icon occurs. Is something not resetting when they change from the 2 tile icon to the 1 tile icon?
Best response
var/obj/A=new /obj/ExVeemon
usr.overlays+=A

Instead of adding an overlay to create a 2 tile icon, you can just make the icon itself a 64x32 or 32x64 icon file.

You can also check i /obj/ExVeemon has an icon of usr.icon='Digimons/ExVeemon.dmi' and icon_state of "1". If so, there's your problem. If the overlay and the player's icon both are the same icon or icon_state or whatever, they're going to look the same.
I got it to work, thank you everyone!!! Solved :D.