Opferlamm-Clan Board
www.opferlamm-clan.de
Verantwortlich für diese bösen Machenschaften: siehe Impressum

Registrierung Kalender Mitgliederliste Suche Häufig gestellte Fragen Zur Startseite

Opferlamm-Clan Board » Call of Duty 4 » Fix-Dateien, Modding-Fragen, Scripting » scripten allgemein » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen scripten allgemein
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
steinacker
Milupa-Fan


images/avatars/avatar-1080.gif


Dabei seit: 13.03.2008
Beiträge: 662


Fragezeichen scripten allgemein Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

moin
ich hab mal ein paar grundlegende fragen, was das scripten (programmieren) angeht
ich hab zwar schon einiges an C / C++ programiert aber diese programmierei bei CoD bereitet mir doch immer wieder kopfschmerzen
ich hab hier mal ein paar auszüge von OMWG's script zu dem randomtriggern:

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
3:
randomtrig = getentarray("randomtrigger","targetname"); //Ein Array mit dem Namen randomtrig bilden und mit allen Triggern füllen, die den targetname randomtrigger haben
for (i = 0; i < randomtrig.size; i++) //Schleife. Schleife so oft durchlaufen, bis i die Anzahl der Elemente im Array randomtrig erreicht hat (i beginnt bei 0 und wird pro durchlauf um 1 erhöht
randomtrig[i] triggerOff(); //das Element (den Trigger) mit der Nummer i im Array randomtrig ausschalten



randomtrig = getentarray("randomtrigger","targetname");
hier wird doch eigentlich mit der funktion "getentarray" die größe des array's randomtrig "ermittelt", nämlich die anzahl der trigger in der map mit dem namen randomtrigger
und das eigentliche "befüllen" des arrays macht doch die for-schleife und zwar wird diese so oft durchlaufen, wie anzahl trigger da sind und jeder eingetragene trigger an der "i-ten" stelle wird mit der funktion triggerOff() ausgeschaltet
richtig soweit?

weiter geht's:

Code einblendenCode angehängt. Klicke hier zum Ein-/Ausblenden

code:
1:
2:
level.t1 = randomintrange (0,randomtrig.size-1); //der Variablen level.t1 eine Zufallszahl zuweisen, die zwischen 0 und der Anzahl-1 der Elemente im Array randomtrig liegt
randomtrig[level.t1] triggerOn(); //Das Element (den Trigger), der im Array randomtrig an Position level.t1 steht, wieder einschalten


hier komme ich jetzt nicht ganz mit, nach meinen kenntnissen ist level ein objektarray der klasse level
und randomintrange(int , int) eine funktion die zwei integervariablen übergeben bekommt
aber wo ist diese funktion definiert, bzw. das objektarray der klasse level
und das .t1 kann ich auch nicht so recht zu ordnen

die zweite zeile ist wieder irgendwie verständlich, der ermittelte trigger im array wird mit der fuktion triggerOn() eingeschaltet

Edit:
hab hier mal'n screeny, was ich vor langer zeit programmiert hab, ein kleines archiv um musikCD's etc zu archivieren

in dem programmteil z.b. wird eine txt-datei geöffnet, die daten in ein dynamisches zeigerarray **dieMusikCD eingelesen und in einem listenfeld angezeigt


nur diese scripterei von CoD iss irgendwie verwirrend verwirrt

__________________
Steinacker, Hans Adam - der letzte Scharfrichter von Bad Mergentheim
der mit der Schärfe eines Schwertes richtende grosses Grinsen

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von steinacker: 12.03.2009 21:50.

steinacker ist offline E-Mail an steinacker senden Beiträge von steinacker suchen Nehmen Sie steinacker in Ihre Freundesliste auf
OLD MAN WITH GUN
... sehr viel alleine


images/avatars/avatar-798.gif


Dabei seit: 01.05.2006
Beiträge: 2.305


RE: scripten allgemein Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:

Original von steinacker
randomtrig = getentarray("randomtrigger","targetname");
hier wird doch eigentlich mit der funktion "getentarray" die größe des array's randomtrig "ermittelt", nämlich die anzahl der trigger in der map mit dem namen randomtrigger
und das eigentliche "befüllen" des arrays macht doch die for-schleife und zwar wird diese so oft durchlaufen, wie anzahl trigger da sind und jeder eingetragene trigger an der "i-ten" stelle wird mit der funktion triggerOff() ausgeschaltet
richtig soweit?
Nein.
randomtrig = getentarray("randomtrigger","targetname"); füllt auch gleich das Array randomtrig mit allen Elemtenten die den in den Klammern stehenden Parametern entsprechen (also es werden automatisch alle Elemente in das Array gepackt, die als targetname den Wert randomtrigger haben). Die Größe ergibt sich dabei automatisch (wird also einfach für jedes gefundene Element um 1 erhöht) und steht dann in randomtrig.size
Die for-Schleife danach schaltet dann einfach alle Trigger, die im Array randomtrig gespeichert sind aus (also randomtrig[0] ausschalten, randomtrig[1] ausschalten, randomtrig[2] ausschalten usw.)
Da man ja nicht weiß, wie oft man die Schleife durchlaufen lassen muss, nimmt man sich einfach den Größenwert des Arrays zur Hilfe (in diesem Fall randomtrig.size).
Dadurch ist sichergestellt, das alle Elemente im Array auch angesprochen werden (egal, wie viele Elemente sich im Array befinden).


Und was level betrifft, durch das Kombinieren einer Variablen mit level, wird die Variable global, wodurch sie nicht nur innerhalb der Funktion oder Schleife gültig ist sondern auch in anderen Funktionen und Schleifen (egal ob im selben Script oder sogar in einem anderen).
t1 = lokale Variable (nur innerhalb der Schleife/Funktion gültig)
level.t1 = globale Variable (überall gültig).

Wären in dem Script, auf den du dich beziehst, die Variablen nicht global, hättest du innerhalb der unterschiedlichen while-Schleifen die if-Abfragen nicht durchführen können, da die Werte, die dort herangezogen werden, innerhalb anderer Schleifen definiert worden sind (und wären dann in dieser Schleife wieder undefined)

__________________

Da die Lichtgeschwindigkeit höher ist als die Schallgeschwindigkeit,
hält man so manchen für einen hellen Kopf, bis man ihn reden hört.

OLD MAN WITH GUN ist offline Beiträge von OLD MAN WITH GUN suchen Nehmen Sie OLD MAN WITH GUN in Ihre Freundesliste auf
steinacker
Milupa-Fan


images/avatars/avatar-1080.gif


Dabei seit: 13.03.2008
Beiträge: 662


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

jetzt geht mir eine kerzenfabrik auf und es kommt langsam etwas licht hinein Freude

punkt eins mit dem array iss nun klar
und das level.t1 iss sowas wie ein zugriffsoperator oder wie das hieß
der mir es ermöglicht auf die variablen anderer klassen oder funktionen zuzugreifen, wie du schreibst: global
dabei muss ich aber immer den "operator" level nehmen und kann irgendwas dranwurschdeln, wenn ich das richtig verstehe

level.wurschdegal_irgendwas

ich könnte mir aber auch innerhalb der klasse variablen erstellen, so wie beim elevator z.b. im main: level.elevatorDown
diese varaible in der klasse deklariert kann nun von jeder funktion (thread) verwendet werden

Edit:
aber dieser level operator muss doch irgendwo definiert sein, in diesen weiten der CoD programmierung, oder iss der teil nicht zugänlich für uns

__________________
Steinacker, Hans Adam - der letzte Scharfrichter von Bad Mergentheim
der mit der Schärfe eines Schwertes richtende grosses Grinsen

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von steinacker: 13.03.2009 09:22.

steinacker ist offline E-Mail an steinacker senden Beiträge von steinacker suchen Nehmen Sie steinacker in Ihre Freundesliste auf
OLD MAN WITH GUN
... sehr viel alleine


images/avatars/avatar-798.gif


Dabei seit: 01.05.2006
Beiträge: 2.305


Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:

Original von steinacker
aber dieser level operator muss doch irgendwo definiert sein, in diesen weiten der CoD programmierung, oder iss der teil nicht zugänlich für uns
An den Teil kommst du nicht.

__________________

Da die Lichtgeschwindigkeit höher ist als die Schallgeschwindigkeit,
hält man so manchen für einen hellen Kopf, bis man ihn reden hört.

OLD MAN WITH GUN ist offline Beiträge von OLD MAN WITH GUN suchen Nehmen Sie OLD MAN WITH GUN in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Opferlamm-Clan Board » Call of Duty 4 » Fix-Dateien, Modding-Fragen, Scripting » scripten allgemein

Impressum ||Datenschutzerklärung

Forensoftware: Wbb - WoltLab GmbH || zum Archiv