18.10.2012, 17:23 | #1 (permalink) |
Registriert seit: 29.09.2012
Beiträge: 56
|
Zivilisten Counter
Hallo,
suche zurzeit ein Script das das Spiel beendet wenn zu viele Zivilisten getötet wurden hab leider nur das hier gefunden. Code:
SHK_DeadCivilianCount = 0; SHK_DeadCivilianLimit = 10; SHK_fnc_deadCivilians = { hintsilent format ["Civilian death toll: %1",_this]; if (_this >= SHK_DeadCivilianLimit) then { server execVM "Abort.sqf"; // whatever }; }; if isserver then { { if (side _x == Civilian && _x iskindof "Man") then { _x addEventHandler ["killed", { SHK_DeadCivilianCount = SHK_DeadCivilianCount + 1; publicvariable "SHK_DeadCivilianCount"; if !isdedicated then { SHK_DeadCivilianCount call SHK_fnc_deadCivilians; }; }]; }; } foreach allunits; } else { "SHK_DeadCivilianCount" addpublicvariableeventhandler { (_this select 1) call SHK_fnc_deadCivilians }; }; ich schicke am besten einen Link zur Mission woher ich das Script habe viel. kann mir dann einer erklären wie es wirkt: =RTY= Immediate Action Co-08 - Co-op missions - Armaholic Oder viel. findet jemand ein besseres Danke schon mal voraus. |
18.10.2012, 17:55 | #2 (permalink) |
Registriert seit: 01.07.2006
Ort: Kabul
Alter: 38
Beiträge: 2.666
|
civcounter.sqf
Code:
_kills = 5; _count = {civilian countside allUnits}; _startcount = call _count; while {isNil"ende1"} do { if ((call _count) <= (_startcount - _kills)) then { ende1=true; publicvariable "ende1"; }; sleep 1; }; gruß hoschi |
18.10.2012, 19:23 | #3 (permalink) |
Registriert seit: 29.09.2012
Beiträge: 56
|
Leider klappt das nicht wie es soll das Spiel ist leider sofort zu ende.
Habe mal Debug Konsole benutzt und mal die Variablen aus deinem Script global gestellt: Es scheint so als würde Code:
count = {civilian countside allUnits}; Geändert von Q_W_E_R (18.10.2012 um 19:38 Uhr). |
19.10.2012, 12:37 | #5 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Das verwendete Skript hat den Nachteil, dass die Zivilisten vor dem Spielstart erstellt werden müssen und keine weiteren im Spiel hinzukommen dürfen. Beim folgenden Skript ist das egal.
Skript: maxCivKills.sqf" Code:
//Zum Beenden der Mission über 'ende1', wenn die als Parameter // übergebene Anzahl an Zivilisten getötet wurde. // //Aufrufbeispiel für 5 tote Zivilisten: // 5 execVM "maxCivKills.sqf" // //Die Zivilisten können vor oder während des Spielens erstellt werden. private = ["_tote","_CivsNeu","_CivsAlt"]; _tote = 0; //Zähler für tote Zivilisten _CivsAlt = 0; while {_tote < _this} do //Schleife läuft solange Totengrenze nicht erreicht { waitUntil {civilian countside allUnits != _CivsAlt}; _CivsNeu = civilian countside allUnits; //aktuell vorhandene Zivilisten if (_CivsNeu < _CivsAlt) then { _tote = _tote + (_CivsAlt - _CivsNeu) }; _CivsAlt = _CivsNeu }; ende1 = true; publicvariable "ende1"; //Nur zum Testen: player groupChat format["Tote Zivilisten: %1 Spielende ende1 erreicht!",_tote]; |
19.10.2012, 18:18 | #6 (permalink) |
Registriert seit: 29.09.2012
Beiträge: 56
|
OK danke hat geklappt .
mein Fehler war das starten des Scripts, hab das in den Editor geschrieben: Code:
[] exec "civcount.sqf" Also Danke |
19.10.2012, 20:18 | #7 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Beim Aufrufen von Skripten im Editor ist eine Variable voranzustellen! Die Variable kann immer die selbe sein, die wird sonst nicht mehr benötigt.
z.B. für das maxCivKills-Skript sieht das so aus: temp = 5 execVM "maxCivKills.sqf"; Im Editor kannst du mit einem Auslöser Variable initialisieren und Skripte Aufrufen. Die Bedingung des Auslösers ist dabei auf true zu setzen! Auslöserbeispiel: Code:
Achse A - B: 0 Aktivierung: Keine Einmal Bedingung : true Bei Akt. : Punkte = 0; temp = 5 execVM "maxCivKills.sqf"; temp = [1,2,3] execVM "SkriptXY.sqf"; |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
ArmA 2 Zivilisten Modul | Argonaut1 | Editing & Scripting | 20 | 13.07.2014 19:48 |
Feindl. Zivilisten + Sturmhauben | Nova | Editing & Scripting | 2 | 28.07.2012 10:36 |
Zivilisten mit East verfeinden | Pfandgiraffe | Editing & Scripting | 9 | 30.05.2012 09:15 |
Zufallsgenerierte Zivilisten und Feinder über die ganze Karte | Clawhammer | Editing & Scripting | 5 | 28.03.2011 13:39 |
Zivilisten durch Auslöser erschießen | comrade91 | Editing & Scripting | 16 | 02.12.2010 18:06 |