1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Downloads
  4. Galerie
    1. Alben
  5. Toolbox
    1. Passwort Generator
    2. Portchecker
  6. Mitglieder
    1. Mitgliedersuche
    2. Benutzer online
    3. Trophäen
    4. Team
Sa: 17 Mai 2025
  • Anmelden oder registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Forum
  • Dateien
  • Seiten
  • Bilder
  • Erweiterte Suche

Schön, dass du den Weg zu NodeZone.net gefunden hast! Aktuell bist du nicht angemeldet und kannst deshalb nur eingeschränkt auf unsere Community zugreifen. Um alle Funktionen freizuschalten, spannende Inhalte zu entdecken und dich aktiv einzubringen, registriere dich jetzt kostenlos oder melde dich mit deinem Account an.

Anmelden oder registrieren
    1. Nodezone.net Community
    2. Forum
    3. Gameserver & Hosting
    4. ArmA Series - ArmA 3 / Reforger
    5. Tutorials & Releases

    Eigene zufällige Killnachrichten

      • Altis Life
    • moeck
    • 26. Februar 2018 um 11:05
    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 26. Februar 2018 um 11:05
      • #1

      Moin Moin,

      da mir die Standard Killnachrichten von Arma nicht gefallen haben und ich etwas mehr Abwechslung haben wollte, habe ich mir das mal angeschaut und was dazu gebaut.

      Script: fn_deathmessage

      Version: Altis Life (alle Versionen / Achtung Hinweise beachten)

      Schiwerigkeitsgrad: Fortgeschrittener (mittel) - ein gewisses Scriptverständnis wird zum Bearbeiten vorausgesetzt!

      Funktionen:

      ~ ersetzt die Standard Arma Kill Nachrichten durch eigene.

      Wie immer dürft ihr das Tutorial gern verwenden und weiter entwickeln, allerdings ohne mein Einverständnis nicht in anderen Foren veröffentlichen.

      Das Script funktioniert mit sollte mit allen Versionen funktionieren. Bitte beachtet die Hinweise, was für ältere Versionen geändert werden muss. Ich habe das Script erfolgreich mit 3.1.4.8 und 5.0 getestet. Aber nun genug der Vorrede lasst uns anfangen.

      1. Server.armaprofile

      Hier müsste ihr die Standard Nachrichten ausschalten. Die Schwiriegkeit sollte in der Regel bereits auf Customstehen. Dort müsst ihr dann deathMessages = 1; // Killed by auf deathMessages = 0; // Killed by ändern.

      2. Erweiterung des Stringtables

      Ich müsst das Package dann in den Stringtable übernehmen. Sucht Euch eine passende Stelle. Zum Beispiel nach dem Package Notification oder am Ende des Stringtables. Natürlich könnt ihr die Meldung noch weiter anpassen und auch weitere hinzufügen.

      XML
      <Package name="Kill_Strings">
              <Key ID="STR_NOTF_Murdered_Car_0">
                  <Original>%1 was killed by %2s %3.</Original>
                  <German>%1 wurde von %2s %3 getötet.</German>
              </Key>
              <Key ID="STR_NOTF_Murdered_Car_1">
                  <Original>%1 was killed by %2s %3.</Original>
                  <German>%1 wurde von %2s %3 plattgemacht.</German>
              </Key>
              <Key ID="STR_NOTF_Murdered_Air_0">
                  <Original>%1 was killed by %2s %3.</Original>
                  <German>%1 wurde von %2s %3 getötet.</German>
              </Key>
              <Key ID="STR_NOTF_Murdered_Air_1">
                  <Original>%1 was killed by %2s %3.</Original>
                  <German>%1 wurde von %2s %3 plattgemacht.</German>
              </Key>
              <Key ID="STR_NOTF_Murdered_Air_2">
                  <Original>%1 was killed by %2s %3.</Original>
                  <German>%1 wurde von %2s %3 geschreddert.</German>
              </Key>
              <Key ID="STR_NOTF_Murdered_Ship_0">
                  <Original>%1 was killed by %2s %3.</Original>
                  <German>%1 wurde von %2s %3 getötet.</German>
              </Key>
              <Key ID="STR_NOTF_Murdered_Ship_1">
                  <Original>%1 was killed by %2s %3.</Original>
                  <German>%1 wurde von %2s %3 plattgemacht.</German>
              </Key>
              <Key ID="STR_NOTF_Murdered_0">
                  <Original>%1 was killed by %2.</Original>
                  <German>%1 wurde von %2 plattgemacht.</German>
              </Key>
              <Key ID="STR_NOTF_Murdered_1">
                  <Original>%1 was burned by %2.</Original>
                  <German>%1 wurde von %2 übern Haufen geballert.</German>
              </Key>
              <Key ID="STR_NOTF_Murdered_2">
                  <Original>%1 was slashed by %2.</Original>
                  <German>%1 wurde von %2 um die Ecke gebracht.</German>
              </Key>
              <Key ID="STR_NOTF_Murdered_3">
                  <Original>%1 was murdered by %2.</Original>
                  <German>%1 wurde von %2 gegrillt.</German>
              </Key>
              <Key ID="STR_NOTF_Copkill_Car_1">
                  <Original>%1 was killed by %2s %3.</Original>
                  <German>%1 wurde von %2s %3 getötet.</German>
              </Key>
              <Key ID="STR_NOTF_Copkill_Car_0">
                  <Original>%1 was killed by %2s %3.</Original>
                  <German>%1 wurde von %2s %3 plattgemacht.</German>
              </Key>
              <Key ID="STR_NOTF_Copkill_Air_1">
                  <Original>%1 was killed by %2s %3.</Original>
                  <German>%1 wurde von %2s %3 getötet.</German>
              </Key>
              <Key ID="STR_NOTF_Copkill_Air_2">
                  <Original>%1 was killed by %2s %3.</Original>
                  <German>%1 wurde von %2s %3 plattgemacht.</German>
              </Key>
              <Key ID="STR_NOTF_Copkill_Air_0">
                  <Original>%1 was killed by %2s %3.</Original>
                  <German>%1 wurde von %2s %3 geschreddert.</German>
              </Key>
              <Key ID="STR_NOTF_Copkill_Ship_1">
                  <Original>%1 was killed by %2s %3.</Original>
                  <German>%1 wurde von %2s %3 getötet.</German>
              </Key>
              <Key ID="STR_NOTF_Copkill_Ship_0">
                  <Original>%1 was killed by %2s %3.</Original>
                  <German>%1 wurde von %2s %3 plattgemacht.</German>
              </Key>
              <Key ID="STR_NOTF_Copkill_1">
                  <Original>%1 was killed by %2.</Original>
                  <German>%1 wurde von %2 plattgemacht.</German>
              </Key>
              <Key ID="STR_NOTF_Copkill_2">
                  <Original>%1 was killed by %2.</Original>
                  <German>%1 wurde von %2 übern Haufen geballert.</German>
              </Key>
              <Key ID="STR_NOTF_Copkill_0">
                  <Original>%1 was killed by %2.</Original>
                  <German>%1 wurde von %2 übern Jordan geschickt.</German>
              </Key>
              <Key ID="STR_NOTF_Suicide_Car_1">
                  <Original>%1 was killed by %2.</Original>
                  <German>%1 wurde getötet, weil er seine(n) %2 nicht fahren kann.</German>
              </Key>
              <Key ID="STR_NOTF_Suicide_Car_0">
                  <Original>%1 tried to breath the wall. %1 was killed</Original>
                  <German>%1 war zu doof zum Autofahren!.%1 wurde getötet!</German>
              </Key>
              <Key ID="STR_NOTF_Suicide_Car_2">
                  <Original>%1 was to stupid to drive his %2.</Original>
                  <German>%1 wurde getötet, weil er mit seine(n) %2 einen Crash Test machen wollte.</German>
              </Key>
              <Key ID="STR_NOTF_Suicide_Air_0">
                  <Original>%1 needs some flight training. %1 was killed</Original>
                  <German>%1 braucht dringend Flugstunden. %1 wurde getötet!</German>
              </Key>
              <Key ID="STR_NOTF_Suicide_Air_1">
                  <Original>%1 was killed by %2.</Original>
                  <German>%1 muss das %2 fliegen noch üben! %1 wurde getötet!</German>
              </Key>
              <Key ID="STR_NOTF_Suicide_Air_2">
                  <Original>%1 wasn't able to fly his %2. %1 was killed!</Original>
                  <German>%1 sollte das %2 fliegen lassen. %1 wurde getötet!</German>
              </Key>
              <Key ID="STR_NOTF_Suicide_Air_3">
                  <Original>%1 is now medium-well.. %1 was killed!</Original>
                  <German>%1 sollte das %2 fliegen lassen. %1 wurde getötet!</German>
              </Key>
              <Key ID="STR_NOTF_Suicide_Ship_1">
                  <Original>%1 was killed by %2.</Original>
                  <German>%1 wurde von %2 getötet.</German>
              </Key>
              <Key ID="STR_NOTF_Suicide_Ship_0">
                  <Original>%1 was killed by %2s %3.</Original>
                  <German>%1 wurde von %2 plattgemacht.</German>
              </Key>
              <Key ID="STR_NOTF_Suicide_0">
                  <Original>%1 is now one with the earth thanks to physics.</Original>
                  <German>%1 wollte nicht mehr weiterleben. %1 wurde getötet!</German>
              </Key>
              <Key ID="STR_NOTF_Suicide_1">
                  <Original>%1 mistook the ground for a pool.</Original>
                  <German>%1 wurde von einen Buch erschlagen. %1 wurde getötet!</German>
              </Key>
              <Key ID="STR_NOTF_Suicide_2">
                  <Original>%1 got killed by death.</Original>
                  <German>%1 ist über einen spitzen Stein gestolpert! %1 wurde getötet!</German>
              </Key>
              <Key ID="STR_NOTF_Suicide_3">
                  <Original>%1 got killed by death.</Original>
                  <German>%1 hat wohl vergessen zu Essen und Trinken! %1 wurde getötet!</German>
              </Key>
              <Key ID="STR_NOTF_Suicide_4">
                  <Original>%1 got killed by death.</Original>
                  <German>%1 konnte doch nicht fliegen! %1 wurde getötet!</German>
              </Key>
          </Package>
      Alles anzeigen

      3. Erweiterung der fn_onPlayerKilled.sqf

      Sucht Euch den folgenden Eintrag heraus. Achtung hier könnte der Eintrag auch etwas anders aussehen, vorallem wenn ihr die 3.1.4.8 verwendet.

      C
      params [
          ["_unit",objNull,[objNull]],
          ["_killer",objNull,[objNull]]
      ];
      disableSerialization;
      
      if  !((vehicle _unit) isEqualTo _unit) then {
          UnAssignVehicle _unit;
          _unit action ["getOut", vehicle _unit];
          _unit setPosATL [(getPosATL _unit select 0) + 3, (getPosATL _unit select 1) + 1, 0];
      };
      Alles anzeigen

      Diesen Eintrag ersetzt ihr mit folgendem

      C
      params [
          ["_unit",ObjNull,[ObjNull]]
          ,["_killer",ObjNull,[ObjNull]]
      ];
      disableSerialization;
      private _unitName = _unit getVariable ["realname",name _unit];
      private _killerName = "";
      private _vehicle = ObjNull;
      
      if (!isNull _killer && {!(_killer isEqualTo _unit)}) then {
          _killerName = _killer getVariable ["realname",name _killer];
          if !(objectParent _killer isEqualTo _killer) then {_vehicle = objectParent _killer};
      };
      
      if !((vehicle _unit) isEqualTo _unit) then {
          if (isNull _vehicle) then {_vehicle = vehicle _unit};
          UnAssignVehicle _unit;
          _unit action ["getOut", vehicle _unit];
          _unit setPosATL [(getPosATL _unit select 0) + 3, (getPosATL _unit select 1) + 1, 0];
      };
      Alles anzeigen

      Anschliessend müsst ihr noch etwas weiter unten Euch das folgende raussuchen. Auch hier gibt es Unterschiede zwischen 3.1.4.8 und neueren Versionen!

      Code
      if (!isNull _killer && {!(_killer isEqualTo _unit)} && {!(side _killer isEqualTo west)} && {alive _killer}) then {
          if (vehicle _killer isKindOf "LandVehicle") then {
              if (life_HC_isActive) then {
                  [getPlayerUID _killer,_killer getVariable ["realname",name _killer],"187V"] remoteExecCall ["HC_fnc_wantedAdd",HC_Life];
              } else {
                  [getPlayerUID _killer,_killer getVariable ["realname",name _killer],"187V"] remoteExecCall ["life_fnc_wantedAdd",RSERV];
              };
      
              //Get rid of this if you don't want automatic vehicle license removal.
              if (!local _killer) then {
                  [2] remoteExecCall ["life_fnc_removeLicenses",_killer];
              };
          } else {
              if (life_HC_isActive) then {
                  [getPlayerUID _killer,_killer getVariable ["realname",name _killer],"187"] remoteExecCall ["HC_fnc_wantedAdd",HC_Life];
              } else {
                  [getPlayerUID _killer,_killer getVariable ["realname",name _killer],"187"] remoteExecCall ["life_fnc_wantedAdd",RSERV];
              };
      
              if (!local _killer) then {
                  [3] remoteExecCall ["life_fnc_removeLicenses",_killer];
              };
          };
      };
      Alles anzeigen

      dort fügt ihr folgendes ein.

      Code
      if (!isNull _killer && {!(_killer isEqualTo _unit)} && {!(side _killer isEqualTo west)} && {alive _killer}) then {
          if (vehicle _killer isKindOf "LandVehicle") then {
              if (life_HC_isActive) then {
                  [getPlayerUID _killer,_killer getVariable ["realname",name _killer],"187V"] remoteExecCall ["HC_fnc_wantedAdd",HC_Life];
              } else {
                  [getPlayerUID _killer,_killer getVariable ["realname",name _killer],"187V"] remoteExecCall ["life_fnc_wantedAdd",RSERV];
              };
      
              //Get rid of this if you don't want automatic vehicle license removal.
              if (!local _killer) then {
                  [2] remoteExecCall ["life_fnc_removeLicenses",_killer];
              };
          } else {
              if (life_HC_isActive) then {
                  [getPlayerUID _killer,_killer getVariable ["realname",name _killer],"187"] remoteExecCall ["HC_fnc_wantedAdd",HC_Life];
              } else {
                  [getPlayerUID _killer,_killer getVariable ["realname",name _killer],"187"] remoteExecCall ["life_fnc_wantedAdd",RSERV];
              };
      
              if (!local _killer) then {
                  [3] remoteExecCall ["life_fnc_removeLicenses",_killer];
              };
          };
          ["killed",_unitName,_killerName,_vehicle] call life_fnc_deathmessage;
      } else {
          if(side _killer isEqualTo west && !(playerSide isEqualTo west)) then {
              ["copkill",_unitName,_killerName,_vehicle] call life_fnc_deathmessage;
          } else {
              ["suicide",_unitName,_killerName,_vehicle] call life_fnc_deathmessage;
          };
      };
      Alles anzeigen

      4. Erstellen der fn_deathmessage.sqfim Ordner core\functions

      Achtung bitte prüft hier ob der richtige Aufruf aktiviert ist! Hier in der Vorlage sind die Aufrufe für 4.4 oder neuer aktiviert. Für ältere Versionen müsst ihr die Aufrufe anpassen. Diese sind enthalten und müssen einkommentiert werden.

      Solltet ihr weitere Meldungen einfügen wollen müsst ihr die Werte in den randoms entsprechend ändern (round(random (1))! 

      C: fn_deathmessage.sqf
      #include "..\..\script_macros.hpp"
      /*
          File: fn_deathmessage.sqf
          Author: moeck (lostonparadise.de)
          
          Description:
          Random death messages
      */
      params [
          ["_mode","",[""]]
          ,["_unitName","",[""]]
          ,["_killerName","",[""]]
          ,["_vehicle",ObjNull,[ObjNull]]
      ];
      private _deathmsg = "";
      private _vehicleName = "";
      call {
          if (_mode isEqualTo "killed") exitWith {
              if (!isNull _vehicle) exitWith {
                  _vehicleName = FETCH_CONFIG2(getText,"CfgVehicles",(typeOf _vehicle),"displayName");
                  if (_vehicle isKindOf "Car") exitWith {
                      _deathmsg = format ["STR_NOTF_Murdered_Car_%1",(round(random (1)))];
                  };
                  if (_vehicle isKindOf "Air") exitWith {
                      _deathmsg = format ["STR_NOTF_Murdered_Air_%1",(round(random (2)))];
                  };
                  if (_vehicle isKindOf "Ship") exitWith {
                      _deathmsg = format ["STR_NOTF_Murdered_Ship_%1",(round(random (1)))];
                  };
              };
              if (isNull _vehicle) exitWith {
                  _deathmsg = format ["STR_NOTF_Murdered_%1",(round(random (3)))];
              };
          };
          if (_mode isEqualTo "copkill") exitWith {
              if (!isNull _vehicle) exitWith {
                  _vehicleName = FETCH_CONFIG2(getText,"CfgVehicles",(typeOf _vehicle),"displayName");
                  if (_vehicle isKindOf "Car") exitWith {
                      _deathmsg = format ["STR_NOTF_Copkill_Car_%1",(round(random (1)))];
                  };
                  if (_vehicle isKindOf "Air") exitWith {
                      _deathmsg = format ["STR_NOTF_Copkill_Air_%1",(round(random (2)))];
                  };
                  if (_vehicle isKindOf "Ship") exitWith {
                      _deathmsg = format ["STR_NOTF_Copkill_Ship_%1",(round(random (1)))];
                  };
              };
              if (isNull _vehicle) exitWith {
                  _deathmsg = format ["STR_NOTF_Copkill_%1",(round(random (2)))];
              };
          };
          if (_mode isEqualTo "suicide") exitWith {
              if (!isNull _vehicle) exitWith {
                  _vehicleName = FETCH_CONFIG2(getText,"CfgVehicles",(typeOf _vehicle),"displayName");
                  if (_vehicle isKindOf "Car") exitWith {
                      _deathmsg = format ["STR_NOTF_Suicide_Car_%1",(round(random (2)))];
                  };
                  if (_vehicle isKindOf "Air") exitWith {
                      _deathmsg = format ["STR_NOTF_Suicide_Air_%1",(round(random (3)))];
                  };
                  if (_vehicle isKindOf "Ship") exitWith {
                      _deathmsg = format ["STR_NOTF_Suicide_Ship_%1",(round(random (1)))];
                  };
              };
              if (isNull _vehicle) exitWith {
                  _deathmsg = format ["STR_NOTF_Suicide_%1",(round(random (4)))];
              };
          };
      };
      if (_mode in ["killed","copkill"]) then {
          if (!isNull _vehicle) then {
              [0,_deathmsg,true,[_unitName,_killerName,_vehicleName]] remoteExecCall ["life_fnc_broadcast",RCLIENT]; //für neuere Versionen
              //[[0,_deathmsg,true,[_unitName, _killerName,_vehicleName]],"life_fnc_broadcast",true,false] spawn life_fnc_MP; //für ältere Versionen
          } else {
              [0,_deathmsg,true,[_unitName,_killerName]] remoteExecCall ["life_fnc_broadcast",RCLIENT]; //für neuere Versionen
              //[[0,_deathmsg,true,[_unitName, _killerName]],"life_fnc_broadcast",true,false] spawn life_fnc_MP; //für ältere Versionen
          };
      } else {
          if (!isNull _vehicle) then {
              [0,_deathmsg,true,[_unitName,_vehicleName]] remoteExecCall ["life_fnc_broadcast",RCLIENT]; //für neuere Versionen
              //[[0,_deathmsg,true,[_unitName,_vehicleName]],"life_fnc_broadcast",true,false] spawn life_fnc_MP; //für ältere Versionen
          } else {
              [0,_deathmsg,true,[_unitName]] remoteExecCall ["life_fnc_broadcast",RCLIENT]; //für neuere Versionen
              //[[0,_deathmsg,true,[_unitName]],"life_fnc_broadcast",true,false] spawn life_fnc_MP; //für ältere Versionen
          };
      };
      Alles anzeigen

      5. Hinzufügen der neuen Funktion in der Functions.hpp bzw. Function.h

      Ich müsst die Functions.hpp öffnen und am Ende von class Functions folgenden Eintrag hinzufügen

      Code
      class Functions {
          file = "core\functions";
          .
          .
          .
          class deathmessage {};
      };

      6. Anpassung CfgRemoteExec.hpp

      Dieser Schritt ist für die Versionen 4.4 oder neuer notwendig!

      Sucht Euch den Eintrag F(TON_fnc_player_query,CLIENT)raus und fügt darunter das folgende ein

      Code
      F(life_fnc_deathmessage,CLIENT)

      Damit hätten wir es auch schon geschafft. Ich hoffe das Tutorial gefällt Euch.

      Gruß,

      moeck

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • SAMSON
      Profi
      Reaktionen
      263
      Trophäen
      9
      Beiträge
      961
      Dateien
      8
      • 26. Februar 2018 um 12:09
      • #2

      Ah da is es ja :D ich glaube ich weis was heute machen werde ^^

      Ich bin kein Profi sondern versuche lediglich zu helfen!;)


      dc.salty-bay.de

      Weird flex! :whistling:

      The flex!
      Panel-Inhalt
    • AmaZiinG
      Profi
      Reaktionen
      496
      Beiträge
      798
      Dateien
      4
      Bilder
      46
      • 26. Februar 2018 um 13:34
      • #3

      [Tutorial] Benutzerdefinierte Todesnachrichten

      Ist das nicht das gleiche ?

      Mein Discord:
      https://discord.gg/4UMWmpfDet

    • SAMSON
      Profi
      Reaktionen
      263
      Trophäen
      9
      Beiträge
      961
      Dateien
      8
      • 26. Februar 2018 um 14:16
      • #4

      R.I.P:D

      Ich bin kein Profi sondern versuche lediglich zu helfen!;)


      dc.salty-bay.de

      Weird flex! :whistling:

      The flex!
      Panel-Inhalt
    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 26. Februar 2018 um 15:04
      • #5

      jein, hier gibt es das mit random nachrichten 8o

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • Julian
      Nerd
      Reaktionen
      76
      Trophäen
      8
      Beiträge
      820
      • 26. Februar 2018 um 15:06
      • #6
      Zitat von AmaZiinG

      [Tutorial] Benutzerdefinierte Todesnachrichten

      Ist das nicht das gleiche ?

      Nein Meiner Meinung nach ist es ein wenig besser!

      Schon alleine aus dem Grund das es random Stringtable Einträge nimmt und man somit immer neue nachrichten rein bekommt...

      Finde ich schöner gestaltet

      Mit freundlichen Grüßen,

      Julian


      Bitte erst Denken und dann Fragen


      Hier lesen: das Heilige Buch der Arma3 Scripter

    • blackfisch
      Legende
      Reaktionen
      2.944
      Trophäen
      9
      Beiträge
      5.966
      Dateien
      6
      Bilder
      63
      • 26. Februar 2018 um 15:28
      • #7
      Zitat von moeck

      call {
      if (_mode isEqualTo "killed") exitWith {
      if (!isNull _vehicle) exitWith {
      _vehicleName = FETCH_CONFIG2(getText,"CfgVehicles",(typeOf _vehicle),"displayName");
      if (_vehicle isKindOf "Car") exitWith {
      _deathmsg = format ["STR_NOTF_Murdered_Car_%1",(round(random (1)))];
      };
      if (_vehicle isKindOf "Air") exitWith {
      _deathmsg = format ["STR_NOTF_Murdered_Air_%1",(round(random (2)))];
      };
      if (_vehicle isKindOf "Ship") exitWith {
      _deathmsg = format ["STR_NOTF_Murdered_Ship_%1",(round(random (1)))];
      };
      };
      if (isNull _vehicle) exitWith {
      _deathmsg = format ["STR_NOTF_Murdered_%1",(round(random (3)))];
      };
      };
      if (_mode isEqualTo "copkill") exitWith {
      if (!isNull _vehicle) exitWith {
      _vehicleName = FETCH_CONFIG2(getText,"CfgVehicles",(typeOf _vehicle),"displayName");
      if (_vehicle isKindOf "Car") exitWith {
      _deathmsg = format ["STR_NOTF_Copkill_Car_%1",(round(random (1)))];
      };
      if (_vehicle isKindOf "Air") exitWith {
      _deathmsg = format ["STR_NOTF_Copkill_Air_%1",(round(random (2)))];
      };
      if (_vehicle isKindOf "Ship") exitWith {
      _deathmsg = format ["STR_NOTF_Copkill_Ship_%1",(round(random (1)))];
      };
      };
      if (isNull _vehicle) exitWith {
      _deathmsg = format ["STR_NOTF_Copkill_%1",(round(random (2)))];
      };
      };
      if (_mode isEqualTo "suicide") exitWith {
      if (!isNull _vehicle) exitWith {
      _vehicleName = FETCH_CONFIG2(getText,"CfgVehicles",(typeOf _vehicle),"displayName");
      if (_vehicle isKindOf "Car") exitWith {
      _deathmsg = format ["STR_NOTF_Suicide_Car_%1",(round(random (2)))];
      };
      if (_vehicle isKindOf "Air") exitWith {
      _deathmsg = format ["STR_NOTF_Suicide_Air_%1",(round(random (3)))];
      };
      if (_vehicle isKindOf "Ship") exitWith {
      _deathmsg = format ["STR_NOTF_Suicide_Ship_%1",(round(random (1)))];
      };
      };
      if (isNull _vehicle) exitWith {
      _deathmsg = format ["STR_NOTF_Suicide_%1",(round(random (4)))];
      };
      };
      };

      Alles anzeigen

      Warum schreibst du das so? Da kannst du einiges einfach auslagern und vereinfachen... Allein das in nen call zu schreiben und quasi 2x die switch zu machen für den Message Broadcast ist doch sinnfrei 8| Einmal ne switch und bisschen aufräumen - sieht gleich besser aus und tut das gleiche (-> Code nicht getestet, nur aufgeräumt! Sollte aber zu 95% funktionieren wenn nirgendwo eine Klammer fehlt ^^ )

      C
      #include "..\..\script_macros.hpp"
      /*
         File: fn_deathmessage.sqf
         Author: moeck (lostonparadise.de)
         Revised by blackfisch for Native-Network.net
          
         Description:
         Random death messages
      */
      params [
         ["_mode","",[""]],
         ["_unitName","",[""]],
         ["_killerName","",[""]],
         ["_vehicle",ObjNull,[ObjNull]]
      ];
      private _deathmsg = "";
      private _vehicleName = FETCH_CONFIG2(getText,"CfgVehicles",(typeOf _vehicle),"displayName");
      
      switch _mode do {
          case "killed": {
              if (!isNull _vehicle) then {
                  if (_vehicle isKindOf "Car") exitWith {
                      _deathmsg = format ["STR_NOTF_Murdered_Car_%1",(round(random (1)))];
                  };
                  if (_vehicle isKindOf "Air") exitWith {
                      _deathmsg = format ["STR_NOTF_Murdered_Air_%1",(round(random (2)))];
                  };
                  if (_vehicle isKindOf "Ship") exitWith {
                      _deathmsg = format ["STR_NOTF_Murdered_Ship_%1",(round(random (1)))];
                  };
              } else {
                  _deathmsg = format ["STR_NOTF_Murdered_%1",(round(random (3)))];
              };
              _deathmsg = format [localize _deathmsg,_unitName,_killerName,_vehicleName];
          };
      
          case "copkill": {
              if (!isNull _vehicle) then {
                  if (_vehicle isKindOf "Car") exitWith {
                      _deathmsg = format ["STR_NOTF_Copkill_Car_%1",(round(random (1)))];
                  };
                  if (_vehicle isKindOf "Air") exitWith {
                      _deathmsg = format ["STR_NOTF_Copkill_Air_%1",(round(random (2)))];
                  };
                  if (_vehicle isKindOf "Ship") exitWith {
                      _deathmsg = format ["STR_NOTF_Copkill_Ship_%1",(round(random (1)))];
                  };
              } else {
                  _deathmsg = format ["STR_NOTF_Copkill_%1",(round(random (2)))];
              };
              _deathmsg = format [localize _deathmsg,_unitName,_killerName,_vehicleName];
          };
      
          case "suicide": {
              if (!isNull _vehicle) then {
                  if (_vehicle isKindOf "Car") exitWith {
                      _deathmsg = format ["STR_NOTF_Suicide_Car_%1",(round(random (2)))];
                  };
                  if (_vehicle isKindOf "Air") exitWith {
                      _deathmsg = format ["STR_NOTF_Suicide_Air_%1",(round(random (3)))];
                  };
                  if (_vehicle isKindOf "Ship") exitWith {
                      _deathmsg = format ["STR_NOTF_Suicide_Ship_%1",(round(random (1)))];
                  };
              } else {
                  _deathmsg = format ["STR_NOTF_Suicide_%1",(round(random (4)))];
              };
              _deathmsg = format [localize _deathmsg,_unitName,_vehicleName];
          };
      
          default {
              _deathmsg = format ["STR_NOTF_Murdered_%1",(round(random (3)))];
              _deathmsg = format [localize _deathmsg,_unitName,_vehicleName];
          };
      };
          
      [0,_deathmsg] remoteExecCall ["life_fnc_broadcast",RCLIENT]; //für neuere Versionen
      //[[0,_deathmsg],"life_fnc_broadcast",true,false] spawn life_fnc_MP; //für ältere Versionen
      Alles anzeigen

      #MakeArmaNotWar

      Kein Support via PN & Steam! / No Support via DM & Steam!


      Mit freundlichen Grüßen
      blackfisch
      ______________________

      Web: blackfisch.me

      GitHub: GitHub.com/blackfisch

      Mail: [email protected]

      ______________________
      Wichtige Links:
      [Erklärung|Leitfaden] Code Optimierung

      [Tutorial] life_fnc_MP zu remoteExec

      Ohne Logs & entsprechende Dateien kein Support!

      ______________________

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 26. Februar 2018 um 20:36
      • #8

      Moin,

      ja klar auch das wäre möglich. Soweit ich as bisher mitbekommen habe ich ein call {} schneller als ein switch {}, daher nehme ich eher call. Aber klar man kann es noch weiter vereinheitlichen und schlanker gestalten 8o

      moeck

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • blackfisch
      Legende
      Reaktionen
      2.944
      Trophäen
      9
      Beiträge
      5.966
      Dateien
      6
      Bilder
      63
      • 26. Februar 2018 um 20:47
      • #9

      als ob dir diese 0.01ms nen Unterschied machen wenn der Spieler eh im Deathscreen ist xD Durch deine if da runter machst du diese "Performance" wieder rückgängig quasi, weil du dadurch ne unnötige Abfrage hast ^^ wenigstens das Parsen würde ich in der exitWith machen ^^

      #MakeArmaNotWar

      Kein Support via PN & Steam! / No Support via DM & Steam!


      Mit freundlichen Grüßen
      blackfisch
      ______________________

      Web: blackfisch.me

      GitHub: GitHub.com/blackfisch

      Mail: [email protected]

      ______________________
      Wichtige Links:
      [Erklärung|Leitfaden] Code Optimierung

      [Tutorial] life_fnc_MP zu remoteExec

      Ohne Logs & entsprechende Dateien kein Support!

      ______________________

    • DerL30N
      Schüler
      Reaktionen
      67
      Trophäen
      10
      Beiträge
      125
      • 26. Februar 2018 um 22:57
      • #10

      moeck  blackfisch sry, aber ich konnte nicht anders, ich habe das Wirrwarr gesehen und mein drang zur Ordnung hat sich durchgesetzt...

      Ich habe das von blackfisch stumpf kopiert, also auch hier nicht sicher, ob es auf Anhieb läuft, aber sollte so schon richtig sein...

      Code
      #include "..\..\script_macros.hpp"
      /*
       File: fn_deathmessage.sqf
       Author: moeck (lostonparadise.de)
       Revised by blackfisch for Native-Network.net
       Revised by DerL30N for lower script execution time :)
       
       Description:
       Random death messages
      */
      params [
       ["_mode","",[""]],
       ["_unitName","",[""]],
       ["_killerName","",[""]],
       ["_vehicle",ObjNull,[ObjNull]]
      ];
      private _deathmsg = "";
      private _vehicleName = FETCH_CONFIG2(getText,"CfgVehicles",(typeOf _vehicle),"displayName");
      
      switch _mode do {
          case "killed": { switch true do {
              case (!isNull _vehicle) : { switch (_vehicle isKindOf) do {
                  case "Car": {_deathmsg = format ["STR_NOTF_Murdered_Car_%1",(round(random (1)))];};
                  case "Air": {_deathmsg = format ["STR_NOTF_Murdered_Air_%1",(round(random (2)))];};
                  case "Ship": {_deathmsg = format ["STR_NOTF_Murdered_Ship_%1",(round(random (1)))];};
                  };
              default {_deathmsg = format ["STR_NOTF_Murdered_%1",(round(random (3)))];};
              };
          };};
          case "copkill": { switch true do {
              case (!isNull _vehicle) : { switch (_vehicle isKindOf) do {
                  case "Car": {_deathmsg = format ["STR_NOTF_Copkill_Car_%1",(round(random (1)))];};
                  case "Air": {_deathmsg = format ["STR_NOTF_Copkill_Air_%1",(round(random (2)))];};
                  case "Ship": {_deathmsg = format ["STR_NOTF_Copkill_Ship_%1",(round(random (1)))];};
                  };
              default {_deathmsg = format ["STR_NOTF_Copkill_%1",(round(random (2)))];};
              };
          };};
          case "suicide": { switch true do {
              case (!isNull _vehicle) : { switch (_vehicle isKindOf) do {
                  case "Car": {_deathmsg = format ["STR_NOTF_Suicide_Car_%1",(round(random (2)))];};
                  case "Air": {_deathmsg = format ["STR_NOTF_Suicide_Air_%1",(round(random (3)))];};
                  case "Ship": {_deathmsg = format ["STR_NOTF_Suicide_Ship_%1",(round(random (1)))];};
                  };
              default {_deathmsg = format ["STR_NOTF_Suicide_%1",(round(random (4)))];};
              };
          };};
          default {_deathmsg = format ["STR_NOTF_Murdered_%1",(round(random (3)))];};
      };
      
      _deathmsg = format [localize _deathmsg,_unitName,_killerName,_vehicleName];
      [0,_deathmsg] remoteExecCall ["life_fnc_broadcast",RCLIENT];
      Alles anzeigen

      ps: ich habe das mal als "revised" in den header gestellt...

      Freier Scripter und Programmierer aus Leidenschaft

      Projektideen gerne an die Pinnwand, aber bitte KEINE Projektanfragen per PN

    • blackfisch
      Legende
      Reaktionen
      2.944
      Trophäen
      9
      Beiträge
      5.966
      Dateien
      6
      Bilder
      63
      • 26. Februar 2018 um 23:22
      • #11

      Eh.... DerL30N ? ^^ Das wird weder funktionieren noch die execution time senken xD

      warum?

      1. Nested Switch -> Längere Execution - WARUM? Das ist absolut hirnrissig was du da tust 8| Sorry
      2. der isKindOf Befehl funktioniert so nicht :| Du kannst den Befehl net neu erfinden xD

      #MakeArmaNotWar

      Kein Support via PN & Steam! / No Support via DM & Steam!


      Mit freundlichen Grüßen
      blackfisch
      ______________________

      Web: blackfisch.me

      GitHub: GitHub.com/blackfisch

      Mail: [email protected]

      ______________________
      Wichtige Links:
      [Erklärung|Leitfaden] Code Optimierung

      [Tutorial] life_fnc_MP zu remoteExec

      Ohne Logs & entsprechende Dateien kein Support!

      ______________________

    • DerL30N
      Schüler
      Reaktionen
      67
      Trophäen
      10
      Beiträge
      125
      • 26. Februar 2018 um 23:27
      • #12

      blackfisch ups... ehm ja gut dachte, da eine switch schneller ist als eine If else if else dachte ich es würde auch für mehrere gelten ^^ hab mich wohl geirrt hehe

      ja stimmt beim isKindOf müsste das dann anders aussehen : switch true do { case (_vehicel isKindOf "Car"): { code };

      Aber ordentlicher sieht´s zumindest aus :):whistling:

      Freier Scripter und Programmierer aus Leidenschaft

      Projektideen gerne an die Pinnwand, aber bitte KEINE Projektanfragen per PN

    • blackfisch
      Legende
      Reaktionen
      2.944
      Trophäen
      9
      Beiträge
      5.966
      Dateien
      6
      Bilder
      63
      • 27. Februar 2018 um 00:15
      • #13

      :rolleyes: irgendwie finde ich das unübersichtlicher xD

      Außerdem ist das eine if-then mit exitWith ^^

      #MakeArmaNotWar

      Kein Support via PN & Steam! / No Support via DM & Steam!


      Mit freundlichen Grüßen
      blackfisch
      ______________________

      Web: blackfisch.me

      GitHub: GitHub.com/blackfisch

      Mail: [email protected]

      ______________________
      Wichtige Links:
      [Erklärung|Leitfaden] Code Optimierung

      [Tutorial] life_fnc_MP zu remoteExec

      Ohne Logs & entsprechende Dateien kein Support!

      ______________________

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 27. Februar 2018 um 00:56
      • #14

      nur so am rande das wird so nicht funzen, aber ich werde es für euch nochmal hübscher machen

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • blackfisch
      Legende
      Reaktionen
      2.944
      Trophäen
      9
      Beiträge
      5.966
      Dateien
      6
      Bilder
      63
      • 27. Februar 2018 um 06:40
      • #15
      Zitat von moeck

      nur so am rande das wird so nicht funzen, aber ich werde es für euch nochmal hübscher machen

      meinen Code kannst du gerne mal testen, der dürfte funktionieren ;)

      #MakeArmaNotWar

      Kein Support via PN & Steam! / No Support via DM & Steam!


      Mit freundlichen Grüßen
      blackfisch
      ______________________

      Web: blackfisch.me

      GitHub: GitHub.com/blackfisch

      Mail: [email protected]

      ______________________
      Wichtige Links:
      [Erklärung|Leitfaden] Code Optimierung

      [Tutorial] life_fnc_MP zu remoteExec

      Ohne Logs & entsprechende Dateien kein Support!

      ______________________

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 27. Februar 2018 um 08:29
      • #16

      blackfisch : ja habe mir das eben in Ruhe angeschaut und ja das sollte alles funzen.

      Des Weiteren habe ich noch eine Kleinigkeit bei den Autos gefunden. Wenn der Beifahrer in einem Auto stirbt wird das nicht als Kill des Fahrers gewertet 8o . Daher hier noch ein kleine Anpassung in der fn_onPlayerKilled.sqf

      C
      params [
       ["_unit",ObjNull,[ObjNull]]
       ,["_killer",ObjNull,[ObjNull]]
      ];
      disableSerialization;
      private _unitName = _unit getVariable ["realname",name _unit];
      private _killerName = "";
      private _vehicle = ObjNull;
      
      if (!isNull _killer && {!(_killer isEqualTo _unit)}) then {
       _killerName = _killer getVariable ["realname",name _killer];
       if !(objectParent _killer isEqualTo _killer) then {_vehicle = objectParent _killer};
      };
      
      if !((vehicle _unit) isEqualTo _unit) then {
          if (isNull _vehicle) then {
              if !(driver _vehicle isEqualTo _unit) then {    
                  _killerName = (driver _vehicle) getVariable ["realname", name (driver _vehicle)];
              };
              _vehicle = vehicle _unit
          };
          UnAssignVehicle _unit;
          _unit action ["getOut", vehicle _unit];
          _unit setPosATL [(getPosATL _unit select 0) + random (3), (getPosATL _unit select 1) + random (1), 0];
      };
      Alles anzeigen

      Damit wird auch der Fahrer als Killer hinterlegt.

      Gruß,

      moeck

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • Chase McCain
      Gast
      • 30. Mai 2019 um 19:28
      • #17

      hallo ich würde es gerne so machen das bei Cops Steht wenn sie getötet wurden : Ein Polizist wurde von Name umgebracht und wenn der cop eine maskierung an hat dort steht sek beamter

    • Julian
      Nerd
      Reaktionen
      76
      Trophäen
      8
      Beiträge
      820
      • 1. Juni 2019 um 09:27
      • #18
      Zitat von maurice2606

      hallo ich würde es gerne so machen das bei Cops Steht wenn sie getötet wurden : Ein Polizist wurde von Name umgebracht und wenn der cop eine maskierung an hat dort steht sek beamter

      fn_onPlayerKilled.sqf

      Checken ob der Spieler ein headgear hat und dann eine Nachricht ausgeben ;)

      Mit freundlichen Grüßen,

      Julian


      Bitte erst Denken und dann Fragen


      Hier lesen: das Heilige Buch der Arma3 Scripter

    • Chase McCain
      Gast
      • 1. Juni 2019 um 13:32
      • #19

      jo und dann noch was wie kann ich das machen das auch da steht sek beamter wenn ein cop gekillt wird

    • Julian
      Nerd
      Reaktionen
      76
      Trophäen
      8
      Beiträge
      820
      • 1. Juni 2019 um 17:15
      • #20
      Zitat von maurice2606

      jo und dann noch was wie kann ich das machen das auch da steht sek beamter wenn ein cop gekillt wird

      Dafür deaktivierst du die normalen Nachrichten und ersetzt diese einfach ... dann holst dir den Namen vom Player der den gekillt hat und dann schreibst du einfach im stringtable oder hardcodet das er nen Sekler oder halt nen cop ...


      Wenn der eine Maske anhat und blufor ist er ein sekler sonst checkst du ob es blufor ist und keine Maske hat ...

      Mit freundlichen Grüßen,

      Julian


      Bitte erst Denken und dann Fragen


      Hier lesen: das Heilige Buch der Arma3 Scripter

    Registrieren oder Einloggen

    Du bist noch kein Mitglied von Native-Servers.com? Registriere dich kostenlos und werde Teil einer großartigen Community!

    Benutzerkonto erstellen

    Wichtige Links & Informationen

    Server & Hosting-Ressourcen

      Server Administration & Hosting Basics

      Windows Server Support & Guides

      Linux Server Configuration & Help

      Setting up TeamSpeak 3 & VoIP Servers

      Domains & Web Hosting for Beginners & Professionals

      Cloud Hosting, Docker & Kubernetes Tutorials

    Gameserver & Modding-Ressourcen

      ArmA 3 Tutorials & Script Collection

      Renting & Operating Gameservers

      DayZ Server Management & Help

      FiveM (GTA V) Server & Script Development

      Rust Server Modding & Administration

      Setting up & Optimizing ARK Survival Servers

    NodeZone.net – Deine Community für Gameserver, Server-Hosting & Modding

      NodeZone.net ist dein Forum für Gameserver-Hosting, Rootserver, vServer, Webhosting und Modding. Seit 2015 bietet unsere Community eine zentrale Anlaufstelle für Server-Admins, Gamer und Technikbegeisterte, die sich über Server-Management, Hosting-Lösungen und Spielemodding austauschen möchten.


      Ob Anleitungen für eigene Gameserver, Hilfe bei Root- und vServer-Konfigurationen oder Tipps zu Modding & Scripting – bei uns findest du fundiertes Wissen und praxisnahe Tutorials. Mit einer stetig wachsenden Community findest du hier Antworten auf deine Fragen, Projektpartner und Gleichgesinnte für deine Gaming- und Serverprojekte. Schließe dich NodeZone.net an und werde Teil einer aktiven Community rund um Server-Hosting, Gameserver-Management und Modding-Ressourcen.

    Wer jetzt nicht teilt ist selber Schuld:
    1. Nutzungsbestimmungen
    2. Datenschutzerklärung
    3. Impressum
    4. Urheberrechts- oder Lizenzverstoß melden
  • Trimax Design coded & layout by Gino Zantarelli 2023-2025©
    Community-Software: WoltLab Suite™