Gamestudio Links
Zorro Links
Newest Posts
Help with plotting multiple ZigZag
by degenerate_762. 04/30/24 23:23
M1 Oversampling
by 11honza11. 04/30/24 08:16
Trading Journey
by howardR. 04/28/24 09:55
Zorro Trader GPT
by TipmyPip. 04/27/24 13:50
Data from CSV not parsed correctly
by jcl. 04/26/24 11:18
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
2 registered members (AndrewAMD, Quad), 843 guests, and 1 spider.
Key: Admin, Global Mod, Mod
Newest Members
firatv, wandaluciaia, Mega_Rod, EternallyCurious, howardR
19050 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 2 1 2
structpointer in skill #206556
05/14/08 09:42
05/14/08 09:42
Joined: Nov 2002
Posts: 120
Hamburg-Harburg
Windy_dup1 Offline OP
Member
Windy_dup1  Offline OP
Member

Joined: Nov 2002
Posts: 120
Hamburg-Harburg
Hallo,

hab da mal eine Frage. Ich möchte in einem Skill von einem entity
einen pointer eines structs speichern. bekomme dies aber nicht hin.
Kann mir jemand schreiben, wie ich die folgenden Zeilen umändern muss?

--------------------------------
typedef struct KOOR_2D_STRUCT
{
var xx;
var yy;
} KOOR_2D_STRUCT;

function dies_geht(KOOR_2D_STRUCT *zeiger)
{
zeiger.xx = 99;
}

action spieler()
{
KOOR_2D_STRUCT koor;
koor.xx = 10;
koor.yy = 20;
dies_geht(&koor);
my.skill99 = &koor; // fehler
while(1)
{
wait(1);
}
}

function test(ENTITY *objekt)
{
KOOR_2D_STRUCT *koor;
koor = objekt.skill99; // fehler
}
------------------
danke im voraus

Last edited by Windy_dup1; 05/14/08 11:17.
Re: structpointer in skill [Re: Windy_dup1] #206560
05/14/08 10:16
05/14/08 10:16
Joined: Jan 2007
Posts: 221
F
Fenriswolf Offline
Member
Fenriswolf  Offline
Member
F

Joined: Jan 2007
Posts: 221
Hallo,

dieser Versuch funktioniert nicht, weil du in deiner Action keinen Speicher für dein Struct alloziert hast:

KOOR_2D_STRUCT *koor = malloc(sizeof(KOOR_2D_STRUCT));
koor.xx = 10;
...

Last edited by Fenriswolf; 05/14/08 10:16. Reason: Rechtschreibefehler ;-)
Re: structpointer in skill [Re: Fenriswolf] #206566
05/14/08 11:13
05/14/08 11:13
Joined: Nov 2002
Posts: 120
Hamburg-Harburg
Windy_dup1 Offline OP
Member
Windy_dup1  Offline OP
Member

Joined: Nov 2002
Posts: 120
Hamburg-Harburg
In den oberen Skript ist mir ein fehler unterlaufen. Hatte versehntlich ein Sternchen gesetzt wo ich eigentlich keins hatte. Habe das Skript jetzt so umgeändert wie ich es auch benutze. Funktionen, die ich von innerhalb der action aufrufe und ihnen den struct mitgebe, funktionieren. Problem ist die übergabe an einen Skill und das spätere auslesen in der Funktion test().

Re: structpointer in skill [Re: Windy_dup1] #206572
05/14/08 12:07
05/14/08 12:07
Joined: Jan 2007
Posts: 221
F
Fenriswolf Offline
Member
Fenriswolf  Offline
Member
F

Joined: Jan 2007
Posts: 221
Wahrscheinlich liegt es daran, dass es ein lokales Struct ist.
Deklariere es mal als static:

static KOOR_2D_STRUCT koor;

Dadurch müsste es eigentlich funktionieren.

Re: structpointer in skill [Re: Fenriswolf] #206580
05/14/08 13:03
05/14/08 13:03
Joined: Nov 2002
Posts: 120
Hamburg-Harburg
Windy_dup1 Offline OP
Member
Windy_dup1  Offline OP
Member

Joined: Nov 2002
Posts: 120
Hamburg-Harburg
Als static macht es keinen Sinn, da ich mehreren Entity's diese action zuweise und jede unterschiedliche struct-werte hat. Hintergrund ist, ich möchte eben über die Entity an diese werte kommen. Wenn das Problem von den lokalen Struct herkommt, würde es bei einer externen Funktion auch nicht klappen.

Re: structpointer in skill [Re: Windy_dup1] #206600
05/14/08 14:57
05/14/08 14:57
Joined: Jan 2007
Posts: 221
F
Fenriswolf Offline
Member
Fenriswolf  Offline
Member
F

Joined: Jan 2007
Posts: 221
Am Entityskill liegt es jedenfalls auch nicht, denn folgender Code

KOOR_2D_STRUCT *koor_ptr = my.skill99;
error(str_for_num(str_create("#8"), koor_ptr.yy));

liefert das korrekte Ergebis (20), wenn er direkt vor der while-Schleife in der action einegfügt wird.
Wenn diese Zeilen in einer Funktion stehen und diese in der Action aufgerufen wird, funktioniert es auch noch.
Wird die genannte Funktion jedoch außerhalb der Action aufgerufen (beispielsweise in der main nach Erzeugung der Entity), erhält man einen falschen Wert.

Re: structpointer in skill [Re: Fenriswolf] #206603
05/14/08 15:26
05/14/08 15:26
Joined: Nov 2002
Posts: 120
Hamburg-Harburg
Windy_dup1 Offline OP
Member
Windy_dup1  Offline OP
Member

Joined: Nov 2002
Posts: 120
Hamburg-Harburg
Leider benötige ich diese Werte aber in einer externen Funktion, die ich über on_a = test(..); abrufen möchte. Ich gehe davon aus, dass ich etwas mit den Pointer falsch mache. Normalerweise teilt man dem Pointer ja mit auf was er zeigt. Nur kann ich bei einem Skill dies nicht. Ich vermute, dass hierin der Fehler liegt.

Danke noch einmal für Deine Mühe.

Re: structpointer in skill [Re: Windy_dup1] #207454
05/19/08 19:27
05/19/08 19:27
Joined: Nov 2002
Posts: 120
Hamburg-Harburg
Windy_dup1 Offline OP
Member
Windy_dup1  Offline OP
Member

Joined: Nov 2002
Posts: 120
Hamburg-Harburg
Kann den wirklich keiner hier im Forum sagen was ich hier falsch mache? oder ist es grundsätzlich nicht richtig pointer in skill's zu speichern.

Re: structpointer in skill [Re: Windy_dup1] #207461
05/19/08 20:29
05/19/08 20:29
Joined: Jul 2001
Posts: 6,904
H
HeelX Offline
Senior Expert
HeelX  Offline
Senior Expert
H

Joined: Jul 2001
Posts: 6,904
Vars sind vom typ long (schau mal in die acknex header!), daher caste deinen struct pointer von deinem Typ da auf void* und das wiederum auf long und speichere das im Skill.

Zum zurückholen einfach den wert des Skills auf nen Zeiger deines Typs da casten.

Re: structpointer in skill [Re: Windy_dup1] #207463
05/19/08 20:35
05/19/08 20:35
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Nicht, dass ich Ahnung vom Programmieren hätte, ich kann nur ein wenig C-Skript, deshalb verstehe ich auch nichts von structs, aber ich weiß nicht, ob man einen pointer überhaupt in einem Skill speichern kann.
Würde man nicht normalerweise einen handle im skill speichern und ihn dann an einen Pointer übergeben? (ptr_for_handle) Oder ist ein struct einem handle vergleichbar?

(Manchmal gibt einem ja eine dumme Frage eine Idee! wink )

Page 1 of 2 1 2

Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1