PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : setVehicleVarName sinnvoll?


Rockhount
31.08.2013, 03:16
Ich bearbeite gerade ein paar alte Skripte und bin dabei auf etwas gestoßen, das sich mir nicht ganz erschließt. Es geht dabei um das Zusammenspiel von publicvariable und setVehicleVarName. Hier ein Beispiel:
convoytruck = "jailbus" createVehicle getPos _pos;
convoytruck setVehicleInit
"
convoytruck = this;
this setVehicleVarName ""convoytruck"";
";
processinitcommands;
publicvariable "convoytruck";Wozu sollte der Bus und die globale Variable gleich genannt werden? Wenn der Name des Objekts und die Variable(die auf das Objekt verweist) gleich heißen, dann ist doch die Durchführung beider Methoden unnötig? publicvariable sollte hier doch schon reichen und folgendes auch ersetzen können:convoytruck = this; oder?

Rockhount
31.08.2013, 20:55
Kann keiner etwas dazu sagen?

Moerderhoschi
31.08.2013, 21:49
Sets the name of the variable which contains a reference to this object. It is necessary in MP to change the variable content after a respawn. When you only use 'myVar = <vehicle>', you'll just have a normal variable, when you use this command as well, 'myVar' will be the name for the vehicle, i.e. if you have other variables containing the vehicle, they'll now return 'myVar' and not WEST ...
Note: This command does not set 'myVar' to contain the vehicle, this has to be done separately.

Also ich interpretiere das so dass trotzdem weiterhin eine Variable definiert werden muss, also zusatzlich zum SetVehicleVarName. Steht auch so im Example im BIWiki

_Object="M1A1" CreateVehicle (GetPos Player);
_VarName="MYTANK";
_Object SetVehicleVarName _VarName;
_Object Call Compile Format ["%1=_This ; PublicVariable ""%1""",_VarName];

Habe mit dem Befehl bis dato sehr wenig gearbeitet deswegen kann ich Dir leider nicht mehr als meine Interpretation des Wikieintrags bieten.

gruß
hoschi

Vienna
01.09.2013, 01:59
Ohne setVehicleVarName enthält convoytruck die ID des Fahrzeuges.

Mit setVehicleVarName enthält convoytruck den Vehicle-Namen convoytruck. Entspricht dem Namen, den man einem Objekt im Editor geben kann.

Rockhount
01.09.2013, 02:51
Ja, das hatte ich mir schon gedacht. Dann ist in diesen Fall also das hier:
convoytruck setVehicleInit
"
convoytruck = this;
this setVehicleVarName ""convoytruck"";
";
processinitcommands;komplett unnötig.

Vienna
01.09.2013, 08:39
Das Vorhandensein des Befehls wird ja einen Grund haben.

Wenn es z.B. notwendig ist ein Objekt mit dem Namen und nicht mit der ID anzusprechen? Wie z.B. bei Moerderhoschis Post mit call compile?

Vielleicht kann man damit einen bereits vergebenen Namen einem neuen Objekt zuweisen? Keine Ahnung ob man zuvor objNull anwenden muss.

Rockhount
01.09.2013, 12:51
Es geht mir nur um den Befehl publicvariable und ob es alles andere ersetzen könnte. Ich denke, es macht kein Unterschied, ob man nun die Variable oder das Objekt direkt anspricht. Ich bin nur kein Freund von processinitcommands. Und das Verbreiten von nur einer Variable, anstelle von ganzen Codezeilen, sollte auch der Performance gut tun.