Armed-Assault.de Twitter
 
 
Themen-Optionen Ansicht
Alt 01.03.2010, 10:11   #1 (permalink)
50 Beiträge100 Beiträge
 
Benutzerbild von SmartGun
 
Registriert seit: 04.06.2008
Beiträge: 197
Standard [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;
-ein trigger mit der Bedingung
Code:
alarm_1
-der script- Aufruf
Code:
nul=[trg_alarm_1,alarm_1] execVM "script.sqf";


-script.sqf:
Code:
_trigger = _this select 0;
_var = _this select 1;


// code //

_var = true;
puplicvariable "_var";
das funktioniert aber nicht.

wen ich _var so auslese:
Code:
hint format ["%1",_var];
dann bekomme ich "true" zurück

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!
SmartGun ist offline  
Alt 01.03.2010, 11:11   #2 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Buliwyf
 
Registriert seit: 11.03.2005
Ort: HH
Alter: 52
Beiträge: 1.930
Standard

publicvariable "_var";



Wobei _var kein globaler Standard wegen dem Unterstrich ist, sondern nur lokal ist. Du solltest _var in zB meineVariable ändern...

Hier nachzulesen

__________________

Geändert von Buliwyf (01.03.2010 um 11:15 Uhr).
Buliwyf ist offline  
Alt 01.03.2010, 11:18   #3 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Lester
 
Registriert seit: 26.11.2006
Ort: Kiel, S-H
Alter: 57
Beiträge: 3.013
Standard

Du versuchst zudem dort die scriptlokale Variable _var global zu machen, das kann nur in die Hose gehen.
__________________
Nur ein Beispiel das zeigt wie BI "support" definiert: https://feedback.bistudio.com/T75547
Lester ist offline  
Alt 01.03.2010, 12:12   #4 (permalink)
50 Beiträge100 Beiträge
 
Benutzerbild von SmartGun
 
Registriert seit: 04.06.2008
Beiträge: 197
Standard

Danke für die schnellen Antworten!

jup, das "publicvariable" war ein typo.

Zitat:

Du versuchst zudem dort die scriptlokale Variable _var global zu machen

stimmt, das gehört so:
Code:
publicvariable "alarm_1";
aber ich möchte ja das alarm_1 im Aufruf frei wählen können damit ich immer das gleiche script verwenden kann aber halt mit anderen parametern z. b.

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;
entspricht
Code:
publicvariable "alarm_1";
oder nicht?
SmartGun ist offline  
Alt 01.03.2010, 13:56   #5 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 38
Beiträge: 1.737
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

Zitat:

Code:
publicvariable _var;
entspricht
Code:
publicvariable "alarm_1";
oder nicht?


...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;
_var = _this select 1;
alarm_an = false;


// code //
hint format ["%1",_var];


_var = true;
if (_var == true) then
{
alarm_an = true;
}
                  else
{
if (true) exitwith {};
};

puplicvariable "alarm_an";
...falls deine lok.v. true gesetzt wird wird eine andere glob. var. ebenfalls true gesetzt die dann wierum public gemacht werden kann. es gibt auch einfachere lösungen (im sinne von weniger schreibarbeit) aber in dieser wird das prinzip hoffentlich deutlich. dein hint-text sollte eigentlich funktionieren solange du ihn in dem skript öffnest bzw. abfragst. kommt aber auch darauf an was du da abfragen willst... das sieht man ja nun nicht weil dein code fehlt.




mfg
Pfandgiraffe ist offline  
Alt 01.03.2010, 17:03   #6 (permalink)
50 Beiträge100 Beiträge
 
Benutzerbild von SmartGun
 
Registriert seit: 04.06.2008
Beiträge: 197
Standard

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 )

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";
script.sqf:
Code:
_var = _this select 0;

// code //

call compile format ["%1=true",_var];
publicVariable _var;

If (true) exitWith {};
was das -> publicVariable _var;

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ß!
SmartGun ist offline  
Alt 01.03.2010, 17:40   #7 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 38
Beiträge: 1.737
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

jetzt versuchst du schonwieder die lok.v. public zu machen... das funzt im mp nicht.
Pfandgiraffe ist offline  
Alt 01.03.2010, 17:44   #8 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

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.
Cyborg11 ist offline  
Alt 02.03.2010, 21:00   #9 (permalink)
50 Beiträge100 Beiträge
 
Benutzerbild von SmartGun
 
Registriert seit: 04.06.2008
Beiträge: 197
Standard

Nabend!

also wenn ich das so schreibe
Code:
publicvariable "_var";
dann behandelt er _var als währe sie eine gobale var, was sie aber nicht ist, weil mit _. -> funzt nicht

schreibe ich
Code:
publicvariable _var
dann entspricht das
Code:
publicvariable alarm_1
was auch nicht geht weil alarm_1 bei o.g. scriptaufruf ja ein STRING ist und keine globale var. ausserdem fehlen die beiden "" .

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];
habbich´s jetzt geblickt?
SmartGun ist offline  
Alt 02.03.2010, 21:23   #10 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

Nein! du kannst KEINE lokalen Variablen public machen, auch wenn du in deinem Skript
Code:
_var = _this select 0
schreibst und deine globale Variable an dein Skript übergibst. Die Variable _var hat dann zwar diesen Wert:
Code:
_var = alarm_1
Das heißt aber du hast jetzt aus deiner GLOBALEN Variable eine LOKALE gemacht, die nur auf deinem PC bzw. nur in diesem Skript existiert.
Du kannst keine lokalen Variablen public machen.

Was du willst, sind dynamische globale Variablen, hab ich Recht?
Cyborg11 ist offline  
Alt 03.03.2010, 05:58   #11 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 38
Beiträge: 1.737
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

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.
__________________
Niemand hat die Absicht eine Tüte zu bauen!
​​​​​​​
___<<<A3 Wounding System>>>___
Pfandgiraffe ist offline  
Alt 03.03.2010, 08:12   #12 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Lester
 
Registriert seit: 26.11.2006
Ort: Kiel, S-H
Alter: 57
Beiträge: 3.013
Standard

Zitat von SmartGun Beitrag anzeigen

Code:
call compile format ["publicvariable '%1'", _var];
habbich´s jetzt geblickt?
Ich hab zwar keinen Schimmer was das sonst keiner damit zufrieden ist, aber das funzt prächtig wenn _var einen String enthält der den gewünschten Varablennamen enthält.
__________________
Nur ein Beispiel das zeigt wie BI "support" definiert: https://feedback.bistudio.com/T75547
Lester ist offline  
Alt 03.03.2010, 08:14   #13 (permalink)
50 Beiträge100 Beiträge
 
Benutzerbild von SmartGun
 
Registriert seit: 04.06.2008
Beiträge: 197
Standard

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?

Geändert von SmartGun (03.03.2010 um 08:19 Uhr).
SmartGun ist offline  
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
lokal IF abfrage unmöglich ?? RAPS Editing 3 22.05.2009 11:05
Frage zur Lokalen Variable Hercules-HH Editing 14 06.04.2009 17:06
Problem local > global Rettich Editing 5 06.03.2009 15:18
globale Variable - Umgang Hercules-HH Editing 2 26.12.2008 23:32
Script Lokal oder Global? Duke49th Editing 2 29.05.2008 16:51


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119