11.07.2013, 08:38 | #1 (permalink) |
Registriert seit: 09.12.2006
Beiträge: 84
|
Respawnschutz im Multiplayer
Hallo Zusammen,
Ich benötige Hilfe bei diesem Script. Code:
_n = 15; _i = 0; hint "Respawnschutz Aktiv"; Player allowDamage false; While {_i <= _n} do { _i = _i + 1; hintSilent format ["Respawnschutz noch: %1",_n - _i]; sleep 1; }; hint "Respawnschutz aus"; Player allowDamage true; Gruß Togo |
11.07.2013, 08:52 | #2 (permalink) |
Registriert seit: 26.11.2006
Ort: Kiel, S-H
Alter: 58
Beiträge: 3.013
|
Nen Googletranslate von der BIKI: (anders kann ich die Seite hier nicht sehen )
__________________
Nur ein Beispiel das zeigt wie BI "support" definiert: https://feedback.bistudio.com/T75547 |
11.07.2013, 14:31 | #3 (permalink) |
Registriert seit: 09.12.2006
Beiträge: 84
|
Hallo Lester,
danke für deine Antwort, so habe ich das auch gelesen. Gib es den keine andere Möglichkeit?? Ich habe jetzt schon mehrere Sachen ausprobiert ohne erfolg ! Eine Idee die ich noch habe ist, das ich den namen des Spielers auslese und das ganze mit setcaptive steuere! Das sollte doch im MP möglich sein oder ? Und jetzt die frage: Wie liest man den vergebenen Namen aus und übergibt diesen z.b an eine Variable ? Gruß |
11.07.2013, 15:32 | #4 (permalink) |
Registriert seit: 26.11.2006
Ort: Kiel, S-H
Alter: 58
Beiträge: 3.013
|
Natürlich gibt es Möglichkeiten das passent zu machen, es bedeutet ja "nur" das dieses Script auf allen Rechner ausgeführt werden muß.
Natürlich darf man dann natürlich nicht mehr Player verwenden sondern muß die "Einheit übergeben" ... verwenden tut man dafür z.B. ein Multiplayer Framework. Im Prinzip ist es nichts anderes als ein überall gestartetes Script das via eines Publicvariable Eventhandlers auf eine Variablenänderung wartet. Z.B. Könnte die Variable TAG_CaptiveUnit heissen. Die auszulösende Maschine würde dann anstelle Deines Scripts dann sowas machen Code:
TAG_CaptiveUnit = player; publicvariable "TAG_CaptiveUnit"; Aber wie es im wahren Leben nun einmal so ist, ist es nicht ganz so einfach, so kommen für gewöhnlich die Eventhandlerscripte nicht mit Wartezeiten klar, ergo muß man sich hier was anderes einfallen lassen. Z.B. ein Spawn der dann das eigentliche Script auslöst und dabie auch gleich den Variableninhalt übergibt. Denn innerhalb der 15Sekunden könnte schließlich ein anderer Weiderbelebt werden, dann wäre der Inhalt von TAG_CaptiveUnit natürlich nicht mehr der alte weil der von der anderen Maschine überschrieben wurde. Ich hoffe das waren genug Anregungen
__________________
Nur ein Beispiel das zeigt wie BI "support" definiert: https://feedback.bistudio.com/T75547 |
11.07.2013, 16:20 | #5 (permalink) |
Registriert seit: 09.12.2006
Beiträge: 84
|
Hallo Lester nochmals Danke für deine Antwort. Das ist mir noch etwas zu kompliziert…… Mir würde es reichen wie ich den Namen des Players auslese damit ich im Respawnschutz Script sagen kann z.b.: S1 setcaptive true. Aber ich finde nichts darüber außer dass ich den Namen ausgeben kann mit:
Code:
hint format["%1",player]; Gruß Togo |
11.07.2013, 17:50 | #6 (permalink) |
Registriert seit: 26.11.2006
Ort: Kiel, S-H
Alter: 58
Beiträge: 3.013
|
hint str(player);
geht auch ... ändert aber nichts an der Problematik das der Befehl im genannten Beispiel überall lokal ausgeführt werden muß damit es eben auch dort gültig ist. Man kann natürlich auch noch eine andere Reihe von "schmutzigen Tricks" nutzen aber so richtig fein ist das dann natürlich nicht, weswegen ich so etwas auch gar nicht näher bringen möchte.
__________________
Nur ein Beispiel das zeigt wie BI "support" definiert: https://feedback.bistudio.com/T75547 |
13.07.2013, 20:55 | #7 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Vielleicht hilft dir das hier: Schiessverbot in bestimmten Bereichen
|
14.07.2013, 10:23 | #8 (permalink) |
Registriert seit: 09.12.2006
Beiträge: 84
|
Hallo Vienna und Lester,
Vielen dank erst mal für die bisherige Hilfestellung. Leider ist das nicht was ich suche... ich habe ein Respawnsystem was bei einem respawn den Kammeraden zum Respawn West Punkt wieder ins Spiel nimmt und von diesem Punkt per script, diesen wieder zur seiner Gruppe teleportiert. Hier möchte ich, bevor dieser teleportiert wird Abfragen wie sein Unitname ist und diesen speichern, bei wiedereintritt bei der Gruppe soll ein Respawnschutz den Spieler für 15 Sekunden schützen, damit dieser Deckung suchen kann. Gruß Geändert von Togo (14.07.2013 um 20:51 Uhr). |
15.07.2013, 13:04 | #9 (permalink) |
Registriert seit: 26.11.2006
Ort: Kiel, S-H
Alter: 58
Beiträge: 3.013
|
Nur noch mal generell nicht das wir aneinander vorbei reden.
Man kann den Namen einer Unit mittels Code:
name unitobject Das hat aber nichts mit dem Objektnamen zu tun der z.B. s1 wäre ! Wie man es dreht, im MP müssen gewisse Befehle lokal auf jedem Client ausgeführt werden, so sinnvoll oder unsinnig es einem auch grundsätzlich erscheinen mag. Bei Textausgaben ist es natürlich sehr sinnvoll, so kann eine Meldung nur der gewünschte Client verarbeiten, bei anderen Dingen wird es grenzwertig wie im Falle des allowdamage. Imo ein Paradebeispiel für Schwachsinn wurde mal beim Fuel getrieben der je nach Client unterschiedliche Daten haben konnte. sokonnte mit dem selben Fahrzeug (ohne tanken) jeder Spieler unterschiedliche Entfernungen erreichen. Möglicherweise ist das sogar immer noch aktiv, wobei ich mich frage was das soll, in Natura gibt es keine Personenbezugenen Tankfüllmengen a la Sitzeinstellungen. Vielleicht ist das auch nur der Versuch Cheating zu unterbinden oder eben ein auf Nummer sicher gehen das nur handverlesene Befehle Traffic verursachen ?!
__________________
Nur ein Beispiel das zeigt wie BI "support" definiert: https://feedback.bistudio.com/T75547 |
15.07.2013, 14:00 | #10 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Das Problem beim Respawn gleich wieder abgeschossen zu werden ist ein bekanntes.
Beamen und danach auch noch geschützt zu sein ist aber keine so gute Lösung. Es ist ja auch möglich den Spieler z.B. aus 80m Höhe an zufälliger Position etwas weiter von der Gruppe entfernt mit dem Fallschirm "abzuwerfen" oder dem Spieler die Absprungposition auf der Karte auswählen zu lassen. Fallschirmabsprung über Map-Klick |
25.07.2013, 11:27 | #12 (permalink) |
Registriert seit: 09.12.2006
Beiträge: 84
|
Hi Xeno,
genau das ist es was ich gesucht habe !!! Jetzt funktioniert es Hier das Script... Code:
////////////////////////////////////////////////////////////////// // Respawnschutz // Created by: [TOG] Togo ////////////////////////////////////////////////////////////////// if (isMultiplayer && isDedicated) exitWith {}; while {true} do { waitUntil {!alive player}; _n = 30; // hier die Zeit einstellen _i = 0; player addEventHandler ["HandleDamage", {false}]; hint "Respawnschutz Aktiv"; hintc "TEST"; While {_i <= _n} do { _i = _i + 1; hintSilent format ["Respawnschutz noch: %1",_n - _i]; sleep 1; }; player removeAllEventHandlers "HandleDamage"; hint "Respawnschutz aus"; }; |
30.07.2013, 08:39 | #13 (permalink) |
Registriert seit: 09.12.2006
Beiträge: 84
|
Hallo mal wieder zusammen,
so ich bin wieder auf ein kleines Problemchen gestoßen. Das Respawnschutz Script habe ich im Multiplayer getestet ohne ACE Module und es funktioniert tadellos . Nach Einbau in meine Missionen funktionierte der Respawnschutz nicht mehr . Nach langem Suchen ist mir aufgefallen das der EH Code:
player addEventHandler ["HandleDamage", {false}]; Code:
player setVariable ["ace_w_allow_dam", false]; Code:
player setVariable ["ace_w_allow_dam", true]; Hier nochmal das komplette Script…… Code:
if (isMultiplayer && isDedicated) exitWith {}; while {true} do { waitUntil {!alive player}; _n = 30; // hier die Zeit einstellen _i = 0; // player setVariable ["ace_w_allow_dam", false]; player addEventHandler ["HandleDamage", {false}]; hint "Respawnschutz Aktiv"; While {_i <= _n} do { _i = _i + 1; hintSilent format ["Respawnschutz noch: %1",_n - _i]; sleep 1; }; // player setVariable ["ace_w_allow_dam", true]; player removeAllEventHandlers "HandleDamage"; hint "Respawnschutz aus"; }; Gruß Togo |
30.07.2013, 08:53 | #14 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Bei ACE kann ich dir leider nicht helfen. Was mir aber aufgefallen ist, dass du vor dem Respawn den eventHandler setzt. Macht vielleicht keinen Unterschied, aber ich habe die fett hervorgehobene Zeile hinzugefügt.
Code:
if (isMultiplayer && isDedicated) exitWith {}; while {true} do { waitUntil {!alive player}; _n = 30; // hier die Zeit einstellen _i = 0; waitUntil {alive player}; //warten bis Player wieder im Spiel // player setVariable ["ace_w_allow_dam", false]; player addEventHandler ["HandleDamage", {false}]; hint "Respawnschutz Aktiv"; While {_i <= _n} do { _i = _i + 1; hintSilent format ["Respawnschutz noch: %1",_n - _i]; sleep 1; }; // player setVariable ["ace_w_allow_dam", true]; player removeAllEventHandlers "HandleDamage"; hint "Respawnschutz aus"; }; |
30.07.2013, 09:25 | #16 (permalink) |
Registriert seit: 09.12.2006
Beiträge: 84
|
@Vienna
Danke für den Hinweis, das macht Sin @ Xeno Super, das es mal wieder so leicht für euch ist ;-), ich habe mir gestern 3 Std. einen Wolf gesucht… hehe. Werde auf jeden Fall jetzt noch eine Abfrage einbauen ob das ACE Wounding aktiviert ist oder nicht. Vielen Dank euch beide. |
31.07.2013, 12:09 | #18 (permalink) |
Registriert seit: 09.12.2006
Beiträge: 84
|
Respawn mit Inventar und Bewaffung
Hi,
ich verwende zusammen mit dem Respawnprozedur ein Script was sicherstellen soll dass das Inventar vom Player auch erhalten bleibt. Nun ist mir gestern Abend beim Training aufgefallen das einige Spieler von uns teilweise nicht mehr den Inhalt im Rucksack hatten. Bei mir selber war es nicht so….. So wie ich das verstehe läuft das Script lokal ab, kann es hier sein das leistungsschwächere Rechner das Script nicht zu 100 % ausführen? , oder liegt der Fehler im Script ? Wäre schön wenn ein erfahrener Scripter sich das mal anschauen könnte… Hier das Script: Code:
if (isMultiplayer && isDedicated) exitWith {}; WaitUntil {!isNull player}; player addEventHandler ["Killed", { _unit = _this select 0; private ['_magazines','_weapons','_backpack','_backpackweap','_backpackmags','_unit']; _weapons = weapons _unit; _magazines = magazines _unit; _backpack = if (!isNull unitBackpack _unit) then {typeOf unitBackpack _unit} else {""}; if (_backpack != "") then { _backpackmags = getMagazineCargo unitBackpack _unit; _backpackweap = getWeaponCargo unitBackpack _unit; _unit setVariable ["players_bp_content",[_backpack,_backpackweap,_backpackmags]]; } else { _unit setVariable ["players_bp_content",["","",""]]; }; _items = items player; _unit setVariable ["players_content",[_weapons,_magazines,_items]]; }]; player addEventHandler ["Respawn", { _unit = _this select 0; private ['_a_stuff','_unit','_a_bp','_bp','_bpw','_bpm','_pi']; removeAllWeapons player; removeAllItems player; if (!isNull unitBackpack _unit) then {removeBackpack _unit}; _a_stuff = _unit getVariable "players_content"; _pw = _a_stuff select 0; _pm = _a_stuff select 1; _pi = _a_stuff select 2; {player addMagazine _x} foreach _pm; {player addWeapon _x} foreach _pw; {if !(player hasWeapon _x) then {player addWeapon _x}} forEach _pi; player selectWeapon (primaryWeapon player); _muzzles = getArray(configFile>>"cfgWeapons" >> primaryWeapon player >> "muzzles"); // Fix for weapons with grenade launcher player selectWeapon (_muzzles select 0); _a_bp = _unit getVariable "players_bp_content"; _bp = _a_bp select 0; if(_bp != "") then { player addBackpack _bp; clearWeaponCargoGlobal (unitBackpack player); clearMagazineCargoGlobal (unitBackpack player); _bpw = _a_bp select 1; _bpm = _a_bp select 2; for "_i" from 0 to (count (_bpm select 0) - 1) do { (unitBackpack player) addMagazineCargoGlobal [(_bpm select 0) select _i,(_bpm select 1) select _i] }; for "_i" from 0 to (count (_bpw select 0) - 1) do { (unitBackpack player) addWeaponCargoGlobal [(_bpw select 0) select _i,(_bpw select 1) select _i] }; }; }]; Gruß Togo |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
BWmod BWmod Multiplayer Kampagne Operation Speerspitze | Faceman | Usermade Missions | 8 | 08.10.2012 09:29 |
face.jpg Multiplayer | XxStevenxX | Editing & Scripting | 5 | 17.05.2012 19:02 |
Flugzeuge und Drohnen im Multiplayer | Mighty | Multiplayer | 4 | 28.04.2011 23:28 |
arma 2 op oa multiplayer an einem pc | Benn1000 | Multiplayer | 2 | 23.01.2011 18:11 |
arma 2 op oa multiplayer an einem pc | Benn1000 | Community | 3 | 23.01.2011 15:33 |