|
|
Wer kann mir bitte bei struct helfen, raff das einfach nicht !!!
#232555
10/22/08 13:22
10/22/08 13:22
|
Joined: Apr 2005
Posts: 274 austria
Ascalon
OP
Member
|
OP
Member
Joined: Apr 2005
Posts: 274
austria
|
Hallo, ich habe folgendes struct im code: typedef struct{ STRING* Name; int Dorfnummer; ENTITY* Dorf; } VILLAGE; VILLAGE myVillage[index]; mit der Funktion "function buildVillage()" möchte ich zur Laufzeit ein Dorf erstellen.
function BuildVillage()
{
VECTOR temp;
vec_set(temp.x,Siedler.x);
temp.z = 0;
index += 1;
myVillage[index].Dorfnummer = index;
myVillage[index].Dorf = ent_create("dorf.mdl",temp.x,village_property);
}
Mittels village_property möchte ich dann, wenn ich auf das Dorf klicke, über ein Panel die aktuelle Dorfnummer angeben und die Gesamtanzahl der Dörfer. Beide Werte sind aber imm die gleichen, ganz egal, welches Dorf ich dann anklicke. Was mach ich da falsch ?
|
|
|
Re: Wer kann mir bitte bei struct helfen, raff das einfach nicht !!!
[Re: Ascalon]
#232587
10/22/08 15:20
10/22/08 15:20
|
mercuryus
Unregistered
|
mercuryus
Unregistered
|
Woher soll die angeklickte Entity wissen welchen Index sie in Deinem Array hat? Du musst der Entity (per Skill) diesen Wert mitteilen...
... you = ent_create("dorf.mdl",temp.x,village_property); myVillage[index].Dorf = you; you.skill1 = index; ...
...den Du dann beim Klick-event anzeigst.
PS: vorsicht bei dem String! Soweit ich weis must Du den String erst erzeugen bevor Du ihn über den Pointer im struct verwendest:
myVillage[index].Dorf = str_create("Mein Dorf");
|
|
|
Re: Wer kann mir bitte bei struct helfen, raff das einfach nicht !!!
[Re: ]
#232627
10/22/08 19:06
10/22/08 19:06
|
Joined: Apr 2005
Posts: 274 austria
Ascalon
OP
Member
|
OP
Member
Joined: Apr 2005
Posts: 274
austria
|
oh...man !! ich raffs leider immer noch nicht  was genau muss ich dann in der function village_property schreiben ? danke jedenfalls mal für die Hilfe !
|
|
|
Re: Wer kann mir bitte bei struct helfen, raff das einfach nicht !!!
[Re: Ascalon]
#232643
10/22/08 20:34
10/22/08 20:34
|
mercuryus
Unregistered
|
mercuryus
Unregistered
|
ohne es zu prüfen...
// event handler........................................................
function evt_village(){
STRING* str_tmp = "#20";
STRING* str_vid = "#10";
// angeklickt
if(event_type==EVENT_CLICK){
str_cpy(str_tmp, "Ich bin Dorf #");
str_for_num(str_vid, myVillage[my.skill1].Dorfnummer);
str_cat(str_tmp, str_vid);
error(str_tmp); // Ausgabe
}
}
// entity action.........................................................
action village_property(){
// make me clickable
my.emask|=ENABLE_CLICK;
my.event=evt_village;
}
myVillage[index].Dorfnummer = index;muss - wie von Dir beschrieben - beim Erzeugen natürlich gesetzt werden. [edit] Da fällt mir noch auf: VILLAGE myVillage[index]; index sollte eine Zahl sein: z.B.: VILLAGE myVillage[100]
Last edited by mercuryus; 10/22/08 20:40.
|
|
|
Re: Wer kann mir bitte bei struct helfen, raff das einfach nicht !!!
[Re: Ascalon]
#232687
10/23/08 08:07
10/23/08 08:07
|
Joined: Apr 2005
Posts: 274 austria
Ascalon
OP
Member
|
OP
Member
Joined: Apr 2005
Posts: 274
austria
|
Hab jetzt leider noch ein Problem mit den Dorfnamen. Ich möcht ja bei jedem neu erstellten Dorf einen eigenen Dorfnamen zuweisen. Mit der Dorfnummer funktioniert alles einwandfrei, nur gehts jetzt bei dem Dorfnamen nicht.
function BuildVillage()
{
while(key_any) {wait(1);}
VECTOR temp;
vec_set(temp.x,Siedler.x);
temp.z = 0;
index += 1;
myVillage[index].DorfNummer = index;
str_cpy(strEntry," ");
inkey(strEntry);
myVillage[index].Name = strEntry;
you = ent_create("dorf.mdl",temp.x,village_property); // erstellt das Dorf
myVillage[index].Dorf = you;
you.skill99 = index;
}
in der village_property hab ich dann den verweis auf das klick-Ereignis und das weißt dann auf CityInfo_Event. Da steht dann folgendes:
function CityInfo_Event()
{
if(event_type == EVENT_CLICK)
{
str_cpy(strVillageName,myVillage[my.skill99].Name);
DorfNummer = myVillage[my.skill99].DorfNummer;
CityInfoPanel.flags = VISIBLE;
}
}
Jetzt hab ich aber wieder das gleiche Problem wie vorhin mit dem Counter, dass jedes Dorf den zuletzt eingegebenen Namen hat. Was hab ich jetzt falsch gemacht ?
|
|
|
Re: Wer kann mir bitte bei struct helfen, raff das einfach nicht !!!
[Re: Ascalon]
#232688
10/23/08 08:27
10/23/08 08:27
|
mercuryus
Unregistered
|
mercuryus
Unregistered
|
Hier weist Du nur einen Pointer zu myVillage[index].Name = strEntry; . Verwende str_cpy um stringinhalte zu kopieren.
In Deinem Fall denke ich aber, Du musst den String (Spiecher) erst allocieren: myVillage[index].Name = str_create(strEntry);
|
|
|
|