CNDG
Würden Sie gerne auf diese Nachricht reagieren? Erstellen Sie einen Account in wenigen Klicks oder loggen Sie sich ein, um fortzufahren.


Ein Forum, in dem sich neue Clonk Entwickler untereinander austauschen können.
 
StartseiteStartseite  PortalPortal  SuchenSuchen  Neueste BilderNeueste Bilder  AnmeldenAnmelden  LoginLogin  

 

 Einen Wert zu einem Array hinzufügen per Script

Nach unten 
3 verfasser
AutorNachricht
Gamer
Staatsrat
Staatsrat
Gamer


Männlich Alter : 28
Ort : In einem kleinen Dorf in Unterfranken (Bayern)
Anmeldedatum : 10.02.09

Einen Wert zu einem Array hinzufügen per Script Empty
BeitragThema: Einen Wert zu einem Array hinzufügen per Script   Einen Wert zu einem Array hinzufügen per Script EmptyMo Aug 09, 2010 10:06 pm

Hi Leute,
Folgendes Problem. Ich hab ein Objekt gemacht, einen Relaunchpilz. Jeder der ihn isst soll nac dem Tod relauncht werden.
Das Prob ist ich hab das nur mit einer static gemacht, weil ich nicht weiß wie man einen Wert zu einem Array hinzufügen kann, ohne die anderen unberührt zu lassen.
I-Welche Ideen? :/
Gamer
Nach oben Nach unten
http://www.gamer95.npage.de/
Toastbrot
Kadett
Kadett
Toastbrot


Männlich Anmeldedatum : 10.03.09

Einen Wert zu einem Array hinzufügen per Script Empty
BeitragThema: Re: Einen Wert zu einem Array hinzufügen per Script   Einen Wert zu einem Array hinzufügen per Script EmptyMo Aug 09, 2010 11:06 pm

Du kannst durch das Array in einer for-Schleife gehen und sobald ein leerer Platz kommt füllst du den und wenn keiner frei ist füllst du array[GetLength(array)] mit deinem Wert was das Array um eins verlängert.
Nach oben Nach unten
Gamer
Staatsrat
Staatsrat
Gamer


Männlich Alter : 28
Ort : In einem kleinen Dorf in Unterfranken (Bayern)
Anmeldedatum : 10.02.09

Einen Wert zu einem Array hinzufügen per Script Empty
BeitragThema: Re: Einen Wert zu einem Array hinzufügen per Script   Einen Wert zu einem Array hinzufügen per Script EmptyMo Aug 09, 2010 11:29 pm

Hm, kannst du das mal an nem kurzen Beispiel erläutern?
Ich hab z.B einen Array pClonks und möchte dem den Wert von z.B FindObject(CLNK) hinzufügen. Wie geht das jetzt genau?
Nach oben Nach unten
http://www.gamer95.npage.de/
Limeox
Admiral
Admiral
Limeox


Männlich Anmeldedatum : 25.04.10

Einen Wert zu einem Array hinzufügen per Script Empty
BeitragThema: Re: Einen Wert zu einem Array hinzufügen per Script   Einen Wert zu einem Array hinzufügen per Script EmptyMo Aug 09, 2010 11:43 pm

pClonks[GetLengthpClonks)] = FindObject(CLNK);

Allerdings kanns gut sein dass dann ein Objekt doppelt drin ist, wenn das so allgemein gehalten ist.

Wenn du wirklich nur die reintun willst, die so einen Pilz essen, kannst du einfach jeden neuen Clonk hinten dranhängen. Also zB
Zitat :
public func Activate(object pClonk) {
[Pilz essen]
aClonks[GetLength(aClonks)] = pClonk;
RemoveObject();
}
Und beim Tod schaust du dann halt, ob der Clonk drin ist, und belebst ihn bei Bedarf wieder.

Wenn jeder sowieso nur einen Clonk hat, geht das sogar einfacher. Dann setzt du zB aRelaunches[GetOwner(pClonk)] = true. Das funktioniert weil die Spieler ja alle durchnummeriert sind.
Nach oben Nach unten
Gamer
Staatsrat
Staatsrat
Gamer


Männlich Alter : 28
Ort : In einem kleinen Dorf in Unterfranken (Bayern)
Anmeldedatum : 10.02.09

Einen Wert zu einem Array hinzufügen per Script Empty
BeitragThema: Re: Einen Wert zu einem Array hinzufügen per Script   Einen Wert zu einem Array hinzufügen per Script EmptyDi Aug 10, 2010 10:30 am

Danke Limeox, da wär ich nie selbst drauf gekommen mit den Arrays Smile
*Thanks Button drück*
Nach oben Nach unten
http://www.gamer95.npage.de/
Gamer
Staatsrat
Staatsrat
Gamer


Männlich Alter : 28
Ort : In einem kleinen Dorf in Unterfranken (Bayern)
Anmeldedatum : 10.02.09

Einen Wert zu einem Array hinzufügen per Script Empty
BeitragThema: Re: Einen Wert zu einem Array hinzufügen per Script   Einen Wert zu einem Array hinzufügen per Script EmptyDo Aug 12, 2010 3:11 pm

Mhm, i-wie funktioniert das nicht so ganz Sad
Also ich hab 2 Clonks. Der erste ist einen und dann ist der Zweite einen.
Zitat :
-> oneupclonk
= [0, Mario #106]
-> Mario::MakeCrewMember(this())
= true

-> oneupclonk
= [2, Mario #108]
[/quote]
Also nachdem der erste es gegesen hat ist ja noch alles in Ordnung, bloß kleine Unschönheit wegen der 0.
Nachdem der 2te Clonk es aber gegessen hat, steht vorne drann ne 2 (Das ist die Länge des Array) und dann der neue Clonk. Der alte Clonk geht dabei verloren..

EDIT: Hier mal die Scripts:
Code:
/*-- Clonk Appendto --*/

#strict
#appendto CLNK

static oneupclonk;

func Death(){
var elements;
for(elements in oneupclonk){if(elements == this())Relaunch();}
return(_inherited());
}

func Relaunch(){
SetLength(oneupclonk,GetLength(oneupclonk)-1);
var newclonk=CreateObject(GetID(this()),0,10,GetOwner(this()));
MakeCrewMember(newclonk,GetOwner(this()));
PlayerMessage(GetOwner(this()),"Du wurdest dank des 1-Up Pilzes wiederbelebt.");
RemoveObject(this(),1);
return(1);
}

Und vom Pilz:
Code:
/*-- Neues Objekt --*/

#strict


func Activate(object pClonk){
oneupclonk=[GetLength(oneupclonk)];
oneupclonk[GetLength(oneupclonk)] = pClonk;
//Das warst auch schon, bb.
Message("Dieser Clonk wird wiederbelebt, wenn er stirbt.",pClonk);
return(RemoveObject());
}
Nach oben Nach unten
http://www.gamer95.npage.de/
Limeox
Admiral
Admiral
Limeox


Männlich Anmeldedatum : 25.04.10

Einen Wert zu einem Array hinzufügen per Script Empty
BeitragThema: Re: Einen Wert zu einem Array hinzufügen per Script   Einen Wert zu einem Array hinzufügen per Script EmptyDo Aug 12, 2010 3:31 pm

Zitat :
oneupclonk=[GetLength(oneupclonk)];
Da ist der Fehler, du setzt das Array erst auf [2] und hängst dann den neuen dran. Die Zeile muss einfach raus.

Und btw: In Relaunch() verkürzt du das Array, obwohl du ja nichtmal weißt welcher Wert rausmuss. Die Zeile kannst auch raushauen. Um Werte aus Arrays zu löschen, musst du schon selbst eine Funktion bauen. Übrigens solltest du das auch tu, um Werte in Arrays zu finden:

Code:
global func FindInArray(array a, item) {
  for (var i; i < GetLength(a); i++)
    if (a[i] == item)
      return i;
  return -1;
}

global func RemoveArrayItem(array &a, int item) {
  var temp = [];
  for (var i; i < GetLength(a); i++) {
    if (i < item)
      temp[i] = a[i];
    if (i > item)
      temp[i-1] = a[i];
  }
  return a = temp;
}

Dann bräuchtest du im Clonk-Death() nur
Code:
if (FindInArray(oneupclonk, this) != -1) {
  Relaunch();
  RemoveArrayItem(oneupclonk, FindInArray(oneupclonk, this));
}
Nach oben Nach unten
Gamer
Staatsrat
Staatsrat
Gamer


Männlich Alter : 28
Ort : In einem kleinen Dorf in Unterfranken (Bayern)
Anmeldedatum : 10.02.09

Einen Wert zu einem Array hinzufügen per Script Empty
BeitragThema: Re: Einen Wert zu einem Array hinzufügen per Script   Einen Wert zu einem Array hinzufügen per Script EmptyDo Aug 12, 2010 4:41 pm

Danke für die Hilfe, aber wenn ich nun den Pilz esse steht da:
Code:
ERROR: Array access: array expected
 by: Activate(Mario #106) (obj Ein neues Objekt #110) (Mariotest.c4s\1-Up Pilz.c4d\Script.c:7)

Hier nochmal der derzeitige Script:
1-Up Pilz:
Code:

/*-- Neues Objekt --*/

#strict


func Activate(object pClonk){
oneupclonk[GetLength(oneupclonk)] = pClonk;
//Das warst auch schon, bb.
Message("Dieser Clonk wird wiederbelebt, wenn er stirbt.",pClonk);
return(RemoveObject());
}

global func FindInArray(array a, item) {
  for (var i; i < GetLength(a); i++)
    if (a[i] == item)
      return i;
  return -1;
}

global func RemoveArrayItem(array &a, int item) {
  var temp = [];
  for (var i; i < GetLength(a); i++) {
    if (i < item)
      temp[i] = a[i];
    if (i > item)
      temp[i-1] = a[i];
  }
  return a = temp;
}

Und das Appendto
Code:
/*-- Clonk Appendto --*/

#strict
#appendto CLNK

static oneupclonk;


func Initialize(){oneupclonk=[]; return(_inherited());}

func Death(){
if (FindInArray(oneupclonk, this) != -1) {
  Relaunch();
  RemoveArrayItem(oneupclonk, FindInArray(oneupclonk, this));
                                          }
return(_inherited());
}

func Relaunch(){
SetLength(oneupclonk,GetLength(oneupclonk)-1);
var newclonk=CreateObject(GetID(this()),0,10,GetOwner(this()));
MakeCrewMember(newclonk,GetOwner(this()));
PlayerMessage(GetOwner(this()),"Du wurdest dank des 1-Up Pilzes wiederbelebt.");
RemoveObject(this(),1);
return(1);
}

Hmpf Sad
Nach oben Nach unten
http://www.gamer95.npage.de/
Limeox
Admiral
Admiral
Limeox


Männlich Anmeldedatum : 25.04.10

Einen Wert zu einem Array hinzufügen per Script Empty
BeitragThema: Re: Einen Wert zu einem Array hinzufügen per Script   Einen Wert zu einem Array hinzufügen per Script EmptyDo Aug 12, 2010 5:27 pm

Das Array solltest du erstmal aus dem Clonk rausnehmen, sonst wirds immer auf [] gesetzt, wenn ein neuer relauncht. Das oneupclonk = [] solltest du dann im Szenarioscript in Initialize() festlegen.

Und SetLength(oneupclonk,GetLength(oneupclonk)-1); < das raus^^

Aber... müsste eig klappen.

Edit: Eigentlich müsste es sogar mit einem Effekt funktionieren, der kommt ohne das Arraygezeugs und ohne Clonk-Append aus.
Nach oben Nach unten
Gamer
Staatsrat
Staatsrat
Gamer


Männlich Alter : 28
Ort : In einem kleinen Dorf in Unterfranken (Bayern)
Anmeldedatum : 10.02.09

Einen Wert zu einem Array hinzufügen per Script Empty
BeitragThema: Re: Einen Wert zu einem Array hinzufügen per Script   Einen Wert zu einem Array hinzufügen per Script EmptyFr Aug 13, 2010 12:54 pm

Ja aber enn ich das Rausnehme dann wird der Clonk ja nichtt gelöscht wenn er relauncht wurde!
Nach oben Nach unten
http://www.gamer95.npage.de/
Limeox
Admiral
Admiral
Limeox


Männlich Anmeldedatum : 25.04.10

Einen Wert zu einem Array hinzufügen per Script Empty
BeitragThema: Re: Einen Wert zu einem Array hinzufügen per Script   Einen Wert zu einem Array hinzufügen per Script EmptyFr Aug 13, 2010 1:20 pm

Doch, das macht RemoveArrayItem.
Das Array um 1zu verkürzen nimmt immer den hintersten raus. Beispiel: Spieler 1 isst einen Pilz, Spieler 2 auch. Dann stirbt Spieler 1, wird wiederbelebt und Spieler 2 fliegt aus dem Array. Macht ja keinen Sinn^^
Nach oben Nach unten
Gesponserte Inhalte





Einen Wert zu einem Array hinzufügen per Script Empty
BeitragThema: Re: Einen Wert zu einem Array hinzufügen per Script   Einen Wert zu einem Array hinzufügen per Script Empty

Nach oben Nach unten
 
Einen Wert zu einem Array hinzufügen per Script
Nach oben 
Seite 1 von 1
 Ähnliche Themen
-
» Array error: Array expected!
» Ein Array-fehler
» RGB-Wert einzeln abfragen?

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
CNDG :: Sonstiges :: Scripthilfe-
Gehe zu: