Armed-Assault.de Twitter
 
 
Themen-Optionen Ansicht
Alt 11.07.2013, 08:38   #1 (permalink)
50 Beiträge
 
Registriert seit: 09.12.2006
Beiträge: 84
Standard 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;
Ich verwende es direkt nach einem Respawn zur Gruppe. Mit "Player allowDamage false;" soll verhindert werden das man nach dem Respawn gleich wieder erschossen wird. Dies funtioniert im Singleplayer ohne Probleme, aber nicht im Multiplayer. Was muss ich tun damit das funktioniert???

Gruß Togo
Togo ist offline  
Alt 11.07.2013, 08:52   #2 (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: 58
Beiträge: 3.013
Standard

Nen Googletranslate von der BIKI: (anders kann ich die Seite hier nicht sehen )
Zitat:

Dieser Befehl funktioniert nur lokal und muss auf allen Rechnern zur globalen Einfluss haben ausgeführt werden.

__________________
Nur ein Beispiel das zeigt wie BI "support" definiert: https://feedback.bistudio.com/T75547
Lester ist offline  
Alt 11.07.2013, 14:31   #3 (permalink)
50 Beiträge
 
Registriert seit: 09.12.2006
Beiträge: 84
Standard

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ß
Togo ist offline  
Alt 11.07.2013, 15:32   #4 (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: 58
Beiträge: 3.013
Standard

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";
Der wartende Eventhandler würde dann jetzt auf allen Maschinen ausgelöst werden und letztendlich dort Dein Script auslösen wo dann anstelle von Player natürlich TAG_CaptiveUnit gebraucht wird.

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
Lester ist offline  
Alt 11.07.2013, 16:20   #5 (permalink)
50 Beiträge
 
Registriert seit: 09.12.2006
Beiträge: 84
Standard

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
Togo ist offline  
Alt 11.07.2013, 17:50   #6 (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: 58
Beiträge: 3.013
Standard

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
Lester ist offline  
Alt 13.07.2013, 20:55   #7 (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

Vielleicht hilft dir das hier: Schiessverbot in bestimmten Bereichen
Vienna ist offline  
Alt 14.07.2013, 10:23   #8 (permalink)
50 Beiträge
 
Registriert seit: 09.12.2006
Beiträge: 84
Standard

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).
Togo ist offline  
Alt 15.07.2013, 13:04   #9 (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: 58
Beiträge: 3.013
Standard

Nur noch mal generell nicht das wir aneinander vorbei reden.

Man kann den Namen einer Unit mittels
Code:
name unitobject
erhalten, da steht dann z.B. Christian Miller oder im Spielerfalle zb. Lester

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
Lester ist offline  
Alt 15.07.2013, 14:00   #10 (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 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
Vienna ist offline  
Alt 15.07.2013, 14:39   #11 (permalink)
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 84
Beiträge: 6.552
Standard

*deleted*

Xeno

Geändert von Xeno (08.12.2013 um 17:15 Uhr).
Xeno ist offline  
Alt 25.07.2013, 11:27   #12 (permalink)
50 Beiträge
 
Registriert seit: 09.12.2006
Beiträge: 84
Standard

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";

};
Togo ist offline  
Alt 30.07.2013, 08:39   #13 (permalink)
50 Beiträge
 
Registriert seit: 09.12.2006
Beiträge: 84
Icon5

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}];
nicht zusammen mit dem ACE Module „Enable Wounding System“ funktioniert. Ok, dann habe ich herumexperimentiert und habe folgendes ausprobiert, und habe das vor dem Eventhandler gesetzt:
Code:
player setVariable ["ace_w_allow_dam", false];
und am Ende des Scripts wieder:
Code:
player setVariable ["ace_w_allow_dam", true];
das funktioniert auch so weit, aber das fatale daran ist, dass ich bei Verletzungen keine Bandage etc. mehr anwenden kann. Es scheint mir so das ace_w_allow_dam", true nicht funktioniert. Hat jemand eine Idee ?
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
Togo ist offline  
Alt 30.07.2013, 08:53   #14 (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

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";
};
Vienna ist offline  
Alt 30.07.2013, 08:55   #15 (permalink)
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 84
Beiträge: 6.552
Standard

*deleted*

Xeno

Geändert von Xeno (03.01.2014 um 09:17 Uhr).
Xeno ist offline  
Alt 30.07.2013, 09:25   #16 (permalink)
50 Beiträge
 
Registriert seit: 09.12.2006
Beiträge: 84
Icon7

@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.
Togo ist offline  
Alt 30.07.2013, 09:39   #17 (permalink)
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 84
Beiträge: 6.552
Standard

*deleted*

Xeno

Geändert von Xeno (03.01.2014 um 09:17 Uhr).
Xeno ist offline  
Alt 31.07.2013, 12:09   #18 (permalink)
50 Beiträge
 
Registriert seit: 09.12.2006
Beiträge: 84
Standard 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]
        };
    };
}];
Das ganze starte ich mit einem Aufruf in der init.sqf.



Gruß Togo
Togo 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
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


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