[Frage] globale variable lokal verarbeiten und wieder global machen
Hallo zusammen!
ich habe ein kleines problem, das mir das kanze script versaut. folgendes: -globale variable definiert in der init.sqf Code:
alarm_1 = false; Code:
alarm_1 Code:
nul=[trg_alarm_1,alarm_1] execVM "script.sqf"; -script.sqf: Code:
_trigger = _this select 0; wen ich _var so auslese: Code:
hint format ["%1",_var]; es muss doch irgendwie gehen eine lokale variable global zu machen und an alle clients + server zu senden. Ich komm einfach nicht drauf. Weis vielleicht jemand Rat? währ echt nice Grüße! |
publicvariable "_var";
:zahn: Wobei _var kein globaler Standard wegen dem Unterstrich ist, sondern nur lokal ist. Du solltest _var in zB meineVariable ändern... Hier nachzulesen ;) |
Du versuchst zudem dort die scriptlokale Variable _var global zu machen, das kann nur in die Hose gehen.
|
Danke für die schnellen Antworten!
jup, das "publicvariable" war ein typo. :D Zitat:
Code:
publicvariable "alarm_1"; nul=[trg_alarm_453,alarm_453] execVM "script.sqf"; versucht habe ich auch schon diesen Aufruf: nul=[trg_alarm_1,"alarm_1"] execVM "script.sqf"; würde bedeuten: Code:
publicvariable _var; Code:
publicvariable "alarm_1"; |
Zitat:
...na eben nicht. du hast deine globale variable alarm_1 zu einer in der .sqf lokalen _var umgeformt. wenn du die lokale variable _var wieder auslesen und public machen willst, musst du sie erst wieder global machen. d.h.: Code:
_trigger = _this select 0; mfg |
Hi und Danke für die ausführliche Erklährung!
das hab ich soweit gecheckt. der hint war nur zum debuggen hat also nix mit dem script zu tun. das ich die lokale var erst wieder in eine globale "konvertieren" muss um sie public zu machen ist mir klar. nur wollte ich umgehen die globale var innerhalb des scripts "namentlich anzusprechen". (sorry für die laienhaften Umschreibungen, bin nur hobbybastler :zahn: ) die globale var ist ja schon im script-Aufruf gegeben und das sollte reichen. Andernfalls ist das script ja nicht mehr universell einsetztbar sondern ich müsste für jede globale var ein eigenes script machen. Ich denke aber ich bin einen Schritt weiter. hab folgendes probiert und es funzt zumindest im Editor... Aufruf: Code:
nul=["alarm_1"] execVM "script.sqf"; Code:
_var = _this select 0; angeht bin ich mir nicht sicher. es kommt keine Fehlermeldung und in die .rpt schreibt er mir auch nix. wird sich wohl erst auf dem dedi-server zeigen ob das läuft :) den code hab ich weggelassen, da er zu lang währe und mit den variablen direkt nix zu tun hat. Gruß! |
jetzt versuchst du schonwieder die lok.v. public zu machen... das funzt im mp nicht.
|
Die lokale Variable "_var" existiert nur solange, solange das Skript läuft. Ist das Skript beendet, ist die Variable _var auch verschwunden ;)
Andere Skripte können lokale Variablen auch nicht benutzen. |
Nabend!
also wenn ich das so schreibe Code:
publicvariable "_var"; schreibe ich Code:
publicvariable _var Code:
publicvariable alarm_1 das heißt ich muss meinen STRING in eine globale var verwursten was dann so aussehen könnte: Code:
call compile format ["publicvariable '%1'", _var]; |
Nein! du kannst KEINE lokalen Variablen public machen, auch wenn du in deinem Skript
Code:
_var = _this select 0 Code:
_var = alarm_1 Du kannst keine lokalen Variablen public machen. Was du willst, sind dynamische globale Variablen, hab ich Recht? |
einfacher wäre es glaube ich script oder die ganze mission mal anzuhängen. dann kann man gucken was du vor hast und dir dementsprechende lösungswege zeigen. denn mitlerweile versteh ich nicht mehr was du willst.:komisch:
|
Zitat:
|
Moin,
und Danke für eure Zeit, Leute. werd heut abend ne mission anhängen. und mich zwischenzeitlich schlau machen was "dynamische globale Variablen" überhaupt sind ;) // edit THX Lester! haben gleichzeitig gepostet. das bedeutet die var wird an alle clients gesendet obwohl das script auf dem server local ist? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:48 Uhr. |
Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias