PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RemoveAction prob


DirtyHarryTPC
28.03.2009, 12:44
hi

mein problem ist ,hab früher immer sqs benutzt und da funzte es wunderbar wenn man ein objekt mit nem action button hatte und ihn benutzt hat der addaction nach script aufruf weg war weil im script stand drin obj1 removeAction ID , nun benutzte ich nur noch sqf und da funzt das nicht :(.
gibts da eine möglichkeit ??



mfg Harry

S4mmy
28.03.2009, 13:28
Ich glaube so war das:

Erstelle eine Gamelogik und schreib in die Init Zeile
obj1=position this nearestObject 5555 | 5555 ist die ID Nummer..
und schiebe die Logik auf das Haus.

In die Sqf schreibst du dann dein Script und die befehle addaction und removeaction fügst du mit ein.


_action = obj1 addaction ["Hallo..","hallo.sqf"];

obj1 removeaction _action;



Möge mich einer verbessern wenn's nicht stimmt.^^

DirtyHarryTPC
28.03.2009, 13:36
also es ist kein obj mit ner ID es istn computer.;)
der addAction steht in der init.sqf , im script steht nur ein bischen hint "bla bla bla"
hab deinen vorschlag mal am anfang geschrieben ,scheint aber nich zu gehen.

S4mmy
28.03.2009, 13:53
warum schreibst du die addaction in die init.sqf :komisch: naja

was willst du denn genau haben^^ ?

du kannst auch einen kleinen auslöser machen auf mehrfach stellen den um den pc machen

bei aktivierung:
_action = computer1 addaction ["Pc benutzen","usqpc.sqf"];

und bei deaktivierung:
computer1 removeaction _action;

DirtyHarryTPC
28.03.2009, 14:04
naja ich machs schon immer so und wie gesagt per sqs hatts auch immer geklappt :D

S4mmy
28.03.2009, 14:06
stell dich langsam mal auf sqf ein sqs gibts mit arma 2 nicht mehr ;)

probiers mal so wie ichs dir geschrieben hab mit dem auslöser.

Garstiger Hobbit
28.03.2009, 14:42
Wenn ihr das schon über nen auslöser machen wollt.

Dann wohl eher so.

Action = computer1 addaction ["Pc benutzen","usqpc.sqf"];

computer1 removeaction action;

Bei der anderen Variante wird wohl ein error kommen von wegen locale Variable im Globalen bereich.

DirtyHarryTPC
28.03.2009, 14:48
richtig :D

hab aber nicht vor das über nen auslöser zu machen , sollte es nich im script funzen lass ich eben weg, auch nich so schlimm .

Vienna
28.03.2009, 18:22
Beim Aufrufen einer Aktion wird automatisch das Objekt mit der Aktion und die Nummer der Aktion als Parameter übergeben.

Wenn ihr ins aufgerufene Skript die Zeile

(_this select 0)removeaction(_this select 2);

schreibt, dann wird die Aktion, die aufgerufen wurde, aus dem Objekt gelöscht.


Die Parameter, die in ein Skript übergeben werden, könnt ihr euch anzeigen lassen, wenn ihr diese Zeile in das Skript schreibt:

player groupchat format["%1",_this];

DirtyHarryTPC
28.03.2009, 18:23
aha mal probieren. :)

TeRp
28.03.2009, 18:50
Beim Aufrufen einer Aktion wird automatisch das Objekt mit der Aktion und die Nummer der Aktion als Parameter übergeben.

Wenn ihr ins aufgerufene Skript die Zeile

(_this select 0)removeaction(_this select 2);

schreibt, dann wird die Aktion, die aufgerufen wurde, aus dem Objekt gelöscht.


Die Parameter, die in ein Skript übergeben werden, könnt ihr euch anzeigen lassen, wenn ihr diese Zeile in das Skript schreibt:

player groupchat format["%1",_this];

Nicht machen, das ist nicht MP-kompatibel.
Allgemein gehe ich davon aus, dass du falsche Variablennamen für die ID benutzt (wahrscheinlich beim Löschen). Es wäre daher äußerst sinnvoll, mal deine Mission hier zu posten.
So ist das leider nur reines Rätselraten, was bei dir denn genau der Fehler sein könnte (sprich: Syntaxfehler, vergessenes ;, falsche Variablennamen, ...).

Aber gut, ich mach's dir vor:

Ich würde dir, aufgrund der MP-Sache, einfach einen Trigger empfehlen, auch wenn man das sicherlich elegant per Script lösen kann.

Init.sqf:
dein Kram

kondition = false;
meineAktion = objekt addAction ["Titel","script.sqf"];

Script.sqf:
dein Kram

kondition = true; publicVariable "kondition";

Trigger:
Auslösung: once
Bedingung: kondition
Bei Aktivierung: object removeAction meineAktion

Fertig.