Armed-Assault.de Twitter
 
 
Themen-Optionen Ansicht
Alt 04.10.2010, 20:13   #21 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Das ist ja erstmal zum Testen, für Anfänger und "kleinere" Missionen gedacht.

Zum Verhindern des EH auf allen Clients sollte z.B. reichen: if(this==player)then{...}

EH Dammaged ist gut, der kann im ersten Beispiel Hit und Killed ersetzen.

Das Eintragungen in der Initialisierungszeile auch beim Respawn gelten hatte ich auch so ähnlich in Erinnerung.

Mit der Geschwindigkeit von spawn bin ich nicht zufrieden. Möglicherweise wäre es besser ein Skript in eine Variable zu laden. Dann ist es aber nicht mehr so einfach zu handhaben. Oder vielleicht läuft while direkt im EH?
Vienna ist offline  
Alt 04.10.2010, 20:52   #22 (permalink)
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 84
Beiträge: 6.552
Standard

*deleted*

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.

Geändert von Xeno (03.01.2014 um 08:16 Uhr).
Xeno ist offline  
Alt 04.10.2010, 23:23   #23 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Es friert nichts ein! while ist auf 10000 Durchläufe begrenzt, die sind so schnell durch, dass ein Gewehrprojektil erst 2m geflogen ist.

Es gab Versionen von Arma, wo nach überschreiten der 10000 das Programm einfrohr. Jetzt wird bei 10000 Durchläufen automatisch die Schleife beendet.

Ohne sleep geht nichts, weil man dann nur auf 2m den Flug eines Geschosses kontrollieren kann.

Wer es nicht glaubt, im Anhang die Testmission für Arma2.
Angehängte Dateien
Dateityp: zip While_Test-utes.zip (1,1 KB, 31x aufgerufen)
Vienna ist offline  
Alt 06.10.2010, 11:20   #24 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Interessant ist bei der while Bedingung im EventHandler folgendes:



... this addEventHandler ["Fired", {...; while {alive _p}do{...;if(...)then{deleteVehicle _p};...}}]

Das Geschoss wird beim ersten Durchlauf gelöscht, ist nicht mehr sichtbar und macht auch keinen Schaden. Trotzdem wird die while Schleife 10000 Mal durchlaufen.



... this addEventHandler ["Fired", {...; while {alive _p}do{...;if(...)then{_p setDamage 1;deleteVehicle _p};...}}]

Gibt man _p setDamage 1 hinzu, dann ist die Schleife nach dem 1. Durchlauf beendet.



... this addEventHandler ["Fired", {...; while {alive _p}do{...;if(...)then{_p setDamage 1};...}}]

Hier wurde jetzt deleteVehicle _p entfernt. Die Schleife wird nach dem 1. Durchlauf beendet, aber dass Geschoss fliegt weiter und hat auch die entsprechende Trefferwirkung.



... this addEventHandler ["Fired", {...; while {true}do{...;if(...)then{...};...}}]

Diese Schleife wird zwingend 10000 Mal durchlaufen. Das Geschoss wird nicht zerstört oder entfernt. Das Geschoss ist nach den 10000 Durchläufen keine 2 Meter geflogen.
Vienna ist offline  
Alt 06.10.2010, 13:30   #25 (permalink)
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 84
Beiträge: 6.552
Standard

*deleted*

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.

Geändert von Xeno (03.01.2014 um 08:16 Uhr).
Xeno ist offline  
Alt 06.10.2010, 15:55   #26 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Die Befehlsfolge direkt im EventHandler unbrauchbar und mit "Skript" in aufwendigen Missionen zu langsam. Also ist der Basisschutz aus Post #10 die Lösung.


Eine Frage zu den globalen Effekten der EventHandler. Wenn nach unterer Zeile der EH nur bei S1 aktiv ist, wird dann z.B. die Meldung auf allen PCs ausgegeben?

Ich denke eher nicht. Aber wenn ja, in beiden Varianten?

1: S1 addEventHandler [ "Dammaged", " hint '.......' " ]

2: S1 addEventHandler [ "Dammaged", { hint "....." } ]
Vienna ist offline  
Alt 29.07.2013, 10:46   #27 (permalink)
Newbie
 
Registriert seit: 16.07.2013
Beiträge: 18
Standard

Zitat von Vienna Beitrag anzeigen

Ein Beispiel für den Basisschutz über EventHandler.

Skript: BasisSchutz.sqf

Guten Morgen, Mittag, Abend die Herren und evt Damen :-)
Ich habe da ein kleines Problem. Das Script von Vienna verwende ich momentan in einer leicht abgeänderten Version auf einem DayZ Epoch Chernarus Server.

Es funktioniert soweit alles bis auf die Tatsache das Fahrzeuge beim verlassen der SafeZone weder Schießen noch Schaden nehmen können... und das die Anzeige eingefroren ist (die anzeige von Blut, Durst, Essen usw vom spieler)

Habt ihr eine Idee wie ich den Fahrzeugen über den trigger oder das Skript die Eventhandler wieder weg nehmen kann ? (Noch offen!)
Und ob es eine Möglichkeit gibt das einfrieren der Anzeige zu verhindern ? (Noch offen!)

Diese variante verwende ich momentan

Code:
Private ["_Basis","_EH_Fired","_EH_Test"];


_Basis = _this select 0;

while {true} do
  {
    waitUntil {(vehicle player in list _Basis)};
    _EH_Fired  = vehicle player addEventHandler ["Fired", { NearestObject [_this select 0,_this select 4] setPos[0,0,0]}];
	_EH_Test = vehicle player addEventHandler ["HandleDamage", {}];
    waitUntil {! (vehicle player in list _Basis)};
    vehicle player removeEventHandler ["Fired", _EH_Fired];
	 vehicle player removeEventHandler ["HandleDamage", _EH_Test];
  }
PS: Ich weis das ihr euch hauptsächlich nur mit den Arma programmierungen beschäftigt doch da die MOD DAYZ auf Arma 2 OA basiert hoffe ich hier dennoch hilfe zu finden.

Edit: ein weiteres kleines Problem das ich habe ist wenn sich in dem Trigger stehend einer ausloggt mit ALT+F4 und wieder rein kommt greift der Trigger bei demjenigen nicht! da wäre noch die Frage gibt es eine möglichkeit dafür zu sorgen das jemand der sich dort drin EINLOGGT zu einer bestimten position geportet wird ? (z.b. vor den Trigger) aber er soll nur geportet werden wenn er sich dort einloggt nicht wenn er rein läuft!

Geändert von SniperIce (29.07.2013 um 11:27 Uhr).
SniperIce ist offline  
Alt 29.07.2013, 19:38   #28 (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

Drollig.. Dir ist aber schon bewusst, dass die DayZ Mod über einen Haufen Scripte verfügt, die dem Spieler erstmal alle EventHandler entzieht, um dann DayZ-eigene zu verwenden? Und wie siehts aus, wenn man z.B. die Kleidung wechselt? Dann wird ja das alte Spielerobjekt gelöscht und ein der Spieler wird in eine neu generierte KI "gebeamt"... dann hat man ja im Grunde wieder ein anderes Objekt, als man es zu Beginn hatte. Sind dann da noch die von Dir verwendeten EventHandler drauf? Und wie Du schon sagst, gibt es ein Problem beim JIP... also ich sehe da ohne imensen Aufwand keine größere Chance das stabil zum Laufen zu kriegen...
__________________
Buliwyf ist offline  
Alt 29.07.2013, 22:26   #29 (permalink)
Newbie
 
Registriert seit: 16.07.2013
Beiträge: 18
Standard

Naja es wird ja wohl dennoch eine abfrage dafür geben wie zb.

befindet sich ein spieler / character / fahrzeug in diesem trigger dann darf der weder feuern noch schaden nehmen. verlässt er diesen wird alles wieder auf standard gesetzt (in diesem fall gilt als verlassen und betreten auch das anziehen einer anderen kleidung)

und das skript an sich funktioniert ja bis auf bei fahrzeugen da dort der eventhandler nicht mehr entfernt wird.

was deinen angesprochenen punkt angeht das eventhandler entzogen werden stimmt dieser beim standard Epoch Chernarus nicht da dort extra alle eventhandler freigegeben sind, und ohne probleme freigegeben werden können. wie gesagt es ist und bleibt nur eine mod von Arma 2 OA und unterliegt somit der programmierung dieser !

Edit: zum thema in neuen körper beamen ( das ist richtig jedoch greift der eventhandler handledamage dennoch auch wenn ich mich mit admin tool in den bereich beame ! )
SniperIce ist offline  
Alt 02.08.2013, 14:29   #30 (permalink)
Newbie
 
Registriert seit: 16.07.2013
Beiträge: 18
Standard

Da mir da wohl keiner helfen kann stelle ich wenigstens noch eine andere Frage und hoffe da auf Hilfe.

Gibt es eine Möglichkeit die Anwesenheit eines Fahrzeuges in einem trigger abfragen zu lassen (gerne auch via Script) also momentan lasse ich ein Skript für einen Spieler ausführen in der Init.Sqf mit:

if (playerSide == WEST) then {[Triggername] execVM "Godmode.sqf"};

Welches folgendes Skript ausführt:

HTML-Code:
Private ["_Basis","_EH_Test"];


_Basis = _this select 0;

while {true} do
  {
    waitUntil {(player in list _Basis)};
    	_EH_Test = player addEventHandler ["HandleDamage", {}];
Funktioniert auch TOP nur wie bekomme ich es hin das nicht nach (playerSide == WEST) sondern nach Vehicle gesucht wird ?

danke schonmal vor ab
SniperIce ist offline  
Alt 02.08.2013, 21:52   #31 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

z.B. vehicle player isKindOf "Tank"
Vienna 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


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