Description Parameter - ACE Revive oder Farroqs Revive

  • Mapping

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Description Parameter - ACE Revive oder Farroqs Revive

    Es geht um einen optionalen Scriptaufruf.

    Ich möchte in meiner Mission über die Parameter das "Medic system" auswählbar machen.
    Entweder soll mit ACE oder mit Farroqs Revive gespielt werden können.
    Die Mission ist komplett Vanilla, sämtliche ACE Medic und Supply Kisten werden via Marker gesetzt wenn ACE geladen ist.

    1. Farroqs Initialisierung:
    Läuft bis jetzt über einen init.sqf Eintrag:

    C-Quellcode

    1. call compileFinal preprocessFileLineNumbers "FAR_revive\FAR_revive_init.sqf";

    2. ACE Initialisierung:


    ACE wird in der description.ext definiert:

    C-Quellcode

    1. class ACE_Settings
    2. {
    3. #include "acecfg\CfgACE.hpp"
    4. };

    und im Missionsordner "acecfg" liegt die cfgACE.hpp.

    In der initServer.sqf wird auf einem platziertem Marker bei geladenem ACE eine Medic bzw Supply Kiste gespawnt.

    C-Quellcode

    1. if isServer then {
    2. if isClass (configFile >> "CfgPatches" >> "ace_main") then {
    3. _acebox1 = "ACE_medicalSupplyCrate" createVehicle [(getMarkerpos "ace_medic" select 0),(getMarkerpos "ace_medic" select 1),0];
    4. _acebox1 setPos getMarkerPos "ace_medic";
    5. _acebox2 = "ACE_Box_Misc" createVehicle [(getMarkerpos "ace_misc" select 0),(getMarkerpos "ace_misc" select 1),0];
    6. _acebox2 setPos getMarkerPos "ace_misc";
    7. };
    8. };

    Soweit so gut. Nun möchte ich via description.ext einen parameter einfügen der bei geladenem ACE den Scriptaufruf für Farroqs Revive nicht
    ausführt.
    Hier meine description.ext:

    C-Quellcode

    1. class Params
    2. {
    3. class Revive
    4. {
    5. title = "Revive";
    6. values[] = {0,1};
    7. texts[] = {"Farooq's Revive","ACE Medic System"};
    8. default = 0;
    9. file = "scripts\Revive.sqf";
    10. };
    11. };
    Alles anzeigen

    Das Problem: da meine Script Kenntnisse begrenzt sind, weiß ich nicht wie ich die Abfrage in meiner Revive.sqf gestalten soll. Ich hoffe ein Sachkundiger erbarmt sich meiner und hilft mir ;)
  • 1. Die description.ext-Methode, die ACE-Settings zu setzen, funktioniert ab ACE³-Version 3.12.0 nicht mehr. Da wurde der Wechsel auf die cba-Settings gemacht.
    2. Das Revive-Script sollte tatsächlich so oder so nur dann laufen, wenn ace_medical nicht läuft. Da brauchst du auch keinen Parameter für. Starte das Script also auch nur, wenn ace_medical nicht geladen ist:

    C-Quellcode

    1. if !( isClass (configFile >> "CfgPatches" >> "ace_medical") ) then {
    2. call compileFinal preprocessFileLineNumbers "FAR_revive\FAR_revive_init.sqf";
    3. };
    3. Für den Fall, dass du, aus welchem Grund auch immer, dennoch einen Parameter verwenden willst: Wie du in der Dokumentation für community.bistudio.com/wiki/Arma_3_Mission_Parameters siehst, wird das Script in der class Params, das du über file = "scripts\Revive.sqf"; definierst, automatisch aufgerufen, mit dem Parameter [0] bzw. [1]. Du kannst dir den file-Eintrag allerdings sparen. Stattdessen lässt sich der class Params-Parameter "Revive" in der init.sqf abrufen:

    C-Quellcode

    1. private _revive = ["Revive", 1] call BIS_fnc_getParamValue;
    2. if ( _revive > 0 ) then {
    3. call compileFinal preprocessFileLineNumbers "FAR_revive\FAR_revive_init.sqf";
    4. };
    Ich würde dir aber empfehlen, für die Parameter in der description.ext eher sprechende Namen zu verwenden - damit lassen sich überschneidungen vermeiden. Zum Beispiel sowas wie

    Quellcode

    1. class Params
    2. {
    3. class param_revive
    4. {
    5. title = "Enable Farooq's Revive?";
    6. values[] = {0,1};
    7. texts[] = {"No","Yes"};
    8. default = 0;
    9. };
    10. };
    4. in der initServer.sqf ist ein isServer-Check nicht mehr notwendig.
    5. Wenn ACE³-Objekte gesetzt werden sollen ohne Abhängigkeit zu ACE³ lohnt es sich, auch nach den Addons von ACE³ zu suchen, zu denen die Objekte gehören. ace_main kann vorhanden sein, ohne dass ace_medical oder dergleichen geladen wurde.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Belbo ()

  • Vielen vielen Dank!!

    Belbo schrieb:

    1. Die description.ext-Methode, die ACE-Settings zu setzen funktioniert ab ACE³-Version 3.12.0 nicht mehr. Da wurde der Wechsel auf die cba-Settings gemacht.
    Ok, wusste ich nicht. Die ACE - CBA Settings sagt mir:

    Old mission should still be fully compatible with ACE3 v3.12.0.
    However the old methods of changing settings (Setting Modules and class ace_settings in description.ext) are considered deprecated (old modules will still function, but new ones are no longer placeable).
    All settings are also subject to backwards incompatible changes with future ACE3 versions.
    We recommend switching to changing settings via the CBA Eden Editor interface and deleting any old ACE Setting modules.
    From Eden Editor click on the SETTINGS -> ADDON OPTIONS.

    Fazit: Muss mich wohl mit den CBA Settings auseinander setzen. Bis jetzt noch keine Ahnung was man alles damit anstellen kann und wie ich das möglichst optional und Addonfrei für die Mission gestalten kann.

    2. Ich werde meinen Init.sqf Eintrag nach deinem Vorschlag gestalten und die Parameter Variante verwerfen:

    Belbo schrieb:

    Das Revive-Script sollte tatsächlich so oder so nur dann laufen, wenn ace_medical nicht läuft. Da brauchst du auch keinen Parameter für. Starte das Script also auch nur, wenn ace_medical nicht geladen ist:



    if !( isClass (configFile >> "CfgPatches" >> "ace_medical") ) then {
    call compileFinal preprocessFileLineNumbers "FAR_revive\FAR_revive_init.sqf";
    };