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
Why Zorro supports up to 72 cores?
by jcl. 04/26/24 11:09
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
4 registered members (AndrewAMD, 7th_zorro, VoroneTZ, Quad), 901 guests, and 0 spiders.
Key: Admin, Global Mod, Mod
Newest Members
firatv, wandaluciaia, Mega_Rod, EternallyCurious, howardR
19050 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Using engine_getvar() #150322
08/26/07 15:39
08/26/07 15:39
Joined: Oct 2006
Posts: 873
S
Shadow969 Offline OP
User
Shadow969  Offline OP
User
S

Joined: Oct 2006
Posts: 873
Hi, can someone explain me the correct way of using engine_getvar()?

Code:
long typ;
my.material = engine_getvar("mat_model",&typ);


after using it MY entity turns black if it's a model, or gets a dark texture if it's a terrain. i guess my code is completely wrong

Re: Using engine_getvar() [Re: Shadow969] #150323
08/26/07 16:14
08/26/07 16:14
Joined: Oct 2006
Posts: 873
S
Shadow969 Offline OP
User
Shadow969  Offline OP
User
S

Joined: Oct 2006
Posts: 873
Nevermind, i found the right way, thanks to Uhrwerk

Code:
long typ;
my.material = *((MATERIAL**)engine_getvar("mat_model",&typ));



Re: Using engine_getvar() [Re: Shadow969] #150324
08/27/07 09:41
08/27/07 09:41
Joined: Jul 2000
Posts: 27,986
Frankfurt
jcl Offline

Chief Engineer
jcl  Offline

Chief Engineer

Joined: Jul 2000
Posts: 27,986
Frankfurt
Yes. For the predefined engine variables, you'll get not the variable itself, but a pointer to it.

Re: Using engine_getvar() [Re: jcl] #150325
10/31/07 09:55
10/31/07 09:55
Joined: Oct 2002
Posts: 361
Germany Cologne
hack-panther Offline
Senior Member
hack-panther  Offline
Senior Member

Joined: Oct 2002
Posts: 361
Germany Cologne
Ich habe zu der Funktion auch eine Frage und möchte kein extra Thema dazu eröffnen:

Ich kann mit folgender Zeile ein Integer auslesen,
dessen Name in IntName_Str gespeichert ist:
Code:
long varType;
*((int*)engine_getvar((IntName_Str->chars), &varType))



Aber wenn es ein Integer-Array ist, gibt es einen Crash...

Kann man mit der Funktion keine Integer-Arrays auslesen
oder muss ich was an der Zeile ändern???

Bitte um Hilfe...

MfG
Hack-Panther

Re: Using engine_getvar() [Re: hack-panther] #150326
11/01/07 10:29
11/01/07 10:29
Joined: Jul 2000
Posts: 27,986
Frankfurt
jcl Offline

Chief Engineer
jcl  Offline

Chief Engineer

Joined: Jul 2000
Posts: 27,986
Frankfurt
Sie bekommen hier einen Pointer auf einen Pointer, denn ein Array und ein Pointer sind dasselbe unter C/C++.

Falls das nicht weiterhilft: Können Sie ein kurzes Code-Beispiel posten, mit einem Integer-Array? engine_getvar kann mit Sicherheit auch arrays zurückliefern, aber vielleicht liegt das Problem anderswo.

Re: Using engine_getvar() [Re: jcl] #150327
11/01/07 21:51
11/01/07 21:51
Joined: Oct 2002
Posts: 361
Germany Cologne
hack-panther Offline
Senior Member
hack-panther  Offline
Senior Member

Joined: Oct 2002
Posts: 361
Germany Cologne
Pointer auf einen Pointer heißt also (int**)?

Aber ich bekomme es immer noch nicht hin.

Ein Beispiel:
Code:

int IntArray[#5];
function test
{
int IntArray[1]=123;
long varType;
int i=0;

i=*((int**)(engine_getvar(("IntArray[1]", &varType)));
}



Das gibt einen Crash...

Dann dachte ich mir, dass er vielleicht nur den kompletten Array zurückliefert und habe weiter rum exprimentiert:

Code:
*((int**)(engine_getvar(("IntArray", &varType))); //Ohne Array-Index klappt es und es wird 0 zurückgeliefert. 



Code:
*((int**)(engine_getvar(("IntArray", &varType)))[1]; //wieder Crash



Wie funktioniert es denn jetzt richtig?....

Re: Using engine_getvar() [Re: hack-panther] #150328
11/02/07 10:24
11/02/07 10:24
Joined: Jul 2000
Posts: 27,986
Frankfurt
jcl Offline

Chief Engineer
jcl  Offline

Chief Engineer

Joined: Jul 2000
Posts: 27,986
Frankfurt
Alle 3 Beispiele sind falsch. Richtig wäre z.B.

i = ((int*)(engine_getvar("IntArray", &varType)))[1];

Aber Ihre Funktion wird sowieso immer 0 liefern. Warum, das lasse ich hier mal wieder als kleine Denksportaufgabe stehen .

Re: Using engine_getvar() [Re: jcl] #150329
11/02/07 20:19
11/02/07 20:19
Joined: Oct 2002
Posts: 361
Germany Cologne
hack-panther Offline
Senior Member
hack-panther  Offline
Senior Member

Joined: Oct 2002
Posts: 361
Germany Cologne
Jaaa gut....
Sie meinen wohl weil ich mich im Beispielcode verschrieben habe. ( int IntArray[1]=123; )

In meinem Projekt klappt es aber nun...

Da war ich ja nah dran mit meiner Lösung,
aber das mit dem Poiter vom Pointer usw. muss ich wohl noch was üben...

Vielen dank...

[Edit] Aber multidimensionale Arrays gehen mit engine_getvar nicht oder?
Wenn ich z.B. schreibe:
i = ((int*)(engine_getvar("IntArray", &varType)))[1][1];
kommt bei mit die Fehlermeldung "dimension of array error"...

Last edited by hack-panther; 11/02/07 21:25.

Moderated by  old_bill, Tobias 

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