I'm working on a HUD for my zelda game, and so far it's up. but I'm trying to make it change bweapon's icon_state to "rusty", but i keep getting an undefined var error. What the problem?
Here the code where I define bweapon:
obj
hud
layer = MOB_LAYER + 1//appears above mobs
icon = 'hud.dmi'
declarations for other parts of my hud
bweapon
layer = MOB_LAYER + 2
dir = NORTH
icon = 'weapons.dmi'
icon_state = ""
New(client/C)
screen_loc = "10,13"
C.screen+=src
and ive tried using obj/hud/bweapon/icon_state = "rusty", but that doesnt work, I've also tried a MILLION variants of that. Whats wrong?
ID:172582
Apr 21 2004, 1:12 pm (Edited on Apr 22 2004, 2:28 pm)
|
|
Apr 22 2004, 12:07 am
|
|
so nobody knows how to solve this?
|
In response to Crispy
|
|
its on the obj/hud/bweapon/icon_state = "rusty" line. Basically I just need to know how to edit a variable like that from outside, like when you pick up another obj. Also, it may help that when a client connects to a mob:
new/obj/hud/bweapon(src) |
In response to Mooseboy
|
|
If you're putting that line in a proc, that's the problem; that sort of construct is used to set the initial value of vars, outside of procs. If you want to refer to an object inside a proc, you need to have a variable that references it.
The easiest way is probably to give mobs a var that keeps track of that bweapon obj: <code>mob var/obj/hud/bweapon/MyBWeapon</code> And then assign the var to the obj when you create it, like this (instead of that last line you mentioned): <code>src.MyBWeapon = new(src)</code> Then when you want to change its icon_state within a proc, you can just do this: <code>src.MyBWeapon.icon_state="rusty"</code> Note that "src.MyBWeapon" can (usually) be shortened to just "MyBWeapon". The exception is when you make a local var, also called "MyBWeapon" (which you shouldn't really do anyway). |
In response to Crispy
|
|
Thnx for your help, but it still won't work.
I understand how it works. You declare MyBWeapon, then make it equal the obj itself, so you can edit it's variables like that. Here's basically what I have(with unrelated code removed) proc givesword(swd as text) src.MyBWeapon.icon_state = "w[swd]1" src.MyBWeapon2.icon_state = "w[swd]2" src.mysword.icon_state = "[swd]" mob/var/obj/hud/bweapon/MyBWeapon mob/var/obj/hud/bweapon2/MyBWeapon2 mob/var/obj/hud/aweapon/MyAWeapon mob/var/obj/hud/aweapon2/MyAWeapon2 mob/var/obj/sword/mysword obj hud layer = MOB_LAYER + 1//appears above mobs icon = 'hud.dmi' bweapon layer = MOB_LAYER + 2 dir = NORTH icon = 'weapons.dmi' icon_state = "wrusty1" New(client/C) screen_loc = "10,13" C.screen+=src aweapon layer = MOB_LAYER + 2 dir = NORTH icon = 'weapons.dmi' icon_state = "" New(client/C) screen_loc = "12,13" bweapon2 layer = MOB_LAYER + 2 dir = NORTH icon = 'weapons.dmi' icon_state = "wrusty2" New(client/C) screen_loc = "10,14" C.screen+=src aweapon2 layer = MOB_LAYER + 2 dir = NORTH icon = 'weapons.dmi' icon_state = "" New(client/C) screen_loc = "12,14" client/New() . = ..() src.MyAWeapon = new/obj/hud/aweapon(src) src.MyAWeapon2 = new/obj/hud/aweapon2(src) src.MyBWeapon = new/obj/hud/bweapon(src) src.MyBWeapon2 = new/obj/hud/bweapon2(src) And here's a listing of the errors I get: Mooseworld.dm:238:error:src.MyBWeapon.icon_state:undefined var Mooseworld.dm:239:error:src.MyBWeapon2.icon_state:undefined var Mooseworld.dm:240:error:src.mysword.icon_state:undefined var Mooseworld.dm:510:error:src.MyAWeapon:undefined var Mooseworld.dm:511:error:src.MyAWeapon2:undefined var Mooseworld.dm:513:error:src.MyBWeapon:undefined var Mooseworld.dm:514:error:src.MyBWeapon2:undefined var Thanks to anyone who can help. |
In response to Mooseboy
|
|
not sure if this is allowed, but going for major bumpage cause I'm still having the same problems. Any help is appreciated
|
In response to Mooseboy
|
|
your givesword or whatever is a regular proc. Make it a mob/proc, or have it take a mob as an argument.
|