Neue Init.c seit der 1.0 - Alte funktioniert nicht.

  • mir ist aufgefallen, dass es eine neue Init.c gibt, die etwas anders aufgebaut ist, als die bisherigen.


    ZB fehlen jetzt einige Wetterparameter.


    Außerdem ist da eine ziemlich dumme Variable drin, die die Spiel-jahreszeit immer auf den 20.Sept. zwingt.

    Ich spiele ja lieber im Juli, da dort die Nächte nicht so lang sind.


    Dann unten bei der Charakter-Einstellung.

    Ich hatte bisher Keine Probleme den Charakter zuerst mit removeallitems nackig zu machen um ihn dann ein definiertes oder zufälliges Start-gear zu geben.


    Allerdings klappt das jetzt garnicht mehr!


    Habt ihr schon Erfahrungen gemacht, mit welchem Befehl man einem neuen Spieler neue Kleidung verpasst?

    Ich möchte mich für vermutlich unnötige Fragen im Forum, die man sich evtl durch testen usw selber beantworten könnte entschuldigen.

    Leider bin ich beruflich bedingt immer mal für 12 ganze Tage am Stück nicht zuhause!

    Ich arbeite deutschlandweit im Schichtdienst und das gut und gerne auch mal bis zu 16 Stunden.

    Mir steht nicht die Möglichkeit zur Verfügung einen Patch, eine Mod oder etwas anderes auf die schnelle zu testen.

    2 Mal editiert, zuletzt von cj187 ()

  • Mit der neuen Init.c bin ichauch leicht überfordert und erhoffe von einer bestimmten Person noch ein par Tipps und Anregungen, sofern sie den ersten Ansturm seit 1.0 ein wenig überstanden hat ;)

    Man kann zugleich Optimist und Skeptiker sein, darf aber nicht als Pessimist resignieren und kapitulieren (Manès Sperber 1905 - 1984)

  • Welche Probleme habt ihr mit der init.c? Kann euch da gerne weiterhelfen.

    Also wenn möglich postet den Code und schreibt dazu was genau ihr nicht versteht und was ihr ändern möchtet etc.

  • Juicy


    Hier mal meine



    Zum einen hätte ich gerne, dass der Charakter nicht die Standard-Sachen (Hoody/Jeans) trägt, sondern die
    - PrisonerCap

    - PrisonUniformJacket

    - PrisonUniformPants


    Keine Schuhe und sonst nur noch die Rags und die Flare.

    Egal wie ich das dort hinein schreibe, es funktioniert nicht...
    In der Beta hat es noch geklappt.
    Da hatte ich sogar eine Liste mit einer auswahl an möglichen Kopfbedeckungen...

    Ich möchte mich für vermutlich unnötige Fragen im Forum, die man sich evtl durch testen usw selber beantworten könnte entschuldigen.

    Leider bin ich beruflich bedingt immer mal für 12 ganze Tage am Stück nicht zuhause!

    Ich arbeite deutschlandweit im Schichtdienst und das gut und gerne auch mal bis zu 16 Stunden.

    Mir steht nicht die Möglichkeit zur Verfügung einen Patch, eine Mod oder etwas anderes auf die schnelle zu testen.

  • Hallo cj187,


    habs mal ausprobiert. Funktioniert tadellos.


    LG

    Niwjaz

  • Also ich habe dir nun deine gewünschte init.c angepasst.


    Der Char bekommt nun als Start Gear:


    Zum Thema Coding:


    Für die die sich nicht mit Coding auskennen eine kleine Erklärung.

    • Kommentiert wird in C mit //kommentar für ein Zeilenkommentar und mit /* kommentar */ für ein zeilenübergreifendes Kommentar. Kommentare überspringt der Compiler und Code in Kommentaren wird nicht ausgeführt.
    • Eine Funktion ist immer so aufgebaut: Rückgabetyp Funktionsname( Parameter1, Parameter2, ... ){ Code } oder Rückgabetyp Funktionsname( ){ Code }
    • Eine Funktion wie zum Beispiel oben override void StartingEquipSetup(PlayerBase player, bool clothesChosen) muss immer eine offene geschweifte Klammer besitzen und am Ende eine geschlossene.
    • Eine Funktion hat immer einen oder keinen Rückgabetyp. Wenn eine Funktion keinen Rückgabetyp bestitzt, wird sie mit void initialisert, siehe Zeile 60. Ein Rückgabetyp wäre z.B. in Zeile 74 Mission, deshalb wird auch in Zeile 76 return new CustomMission(); zurückgegeben.
    • Override besagt, dass es bereits irgendwo eine Funktion mit demselben Namen gibt diese aber mit override überschrieben wird, sprich die Funktion mit override wird als aktuelle verwendet.
    • Intern in einer Funktion wird jede Zeile mit einem Semikolon abgeschlossen damit der Compiler weiß das die Code Zeile hier endet.
      Ausnahmen sind z.B. if oder if else Anweisungen, z.B. Zeile 42-46. Dasselbe gilt für Schleifen, die sind hier im Bsp aber nicht vorhanden.
    • Aufrufe wie player.RemoveAllItems(); ist auch nichts anderes als ein Funktionsaufruf. Hier wird die Funktion RemoveAllItems() auf den Datentyp player angewendet.
    • Eine Klasse wie z.B. oben class CustomMission: MissionServer muss ebenfalls eine offene und eine geschlossene geschweifte Klammer besitzen, jedoch am Ende der Klasse ein Semikolon, siehe Zeile 72.


    So ich hoffe euch ist das alles ein wenig klarer geworden :) Falls ihr noch Fragen habt schießt los !



  • Vielen Dank für deine Erklärung !!

    Jetzt wird die ganze Sache schon etwas klarer !!


    Jetztb ist nur noch die Frage ob man in der Init.c auf die Server Zeit ändern kann Da es ja in der Zeile heißt

    Code
     GetGame().GetWorld().GetDate(year, month, day, hour, minute);        if (((month <= 2) && (day < 5)) || ((month >= 11) && (day > 20)))    {        month = 6;        day = 15;        GetGame().GetWorld().SetDate(year, month, day, hour, minute);
  • gerne :)

    Vielen Dank für deine Erklärung !!

    Jetzt wird die ganze Sache schon etwas klarer !!


    Jetztb ist nur noch die Frage ob man in der Init.c auf die Server Zeit ändern kann Da es ja in der Zeile heißt

    Code
     GetGame().GetWorld().GetDate(year, month, day, hour, minute);        if (((month <= 2) && (day < 5)) || ((month >= 11) && (day > 20)))    {        month = 6;        day = 15;        GetGame().GetWorld().SetDate(year, month, day, hour, minute);

    Also du kannst auf jedenfall die Serverzeit in der Init.c ändern dazu schaust du dir am besten Mal HowTos & FAQ für Server Admins an. Dort bei Init.c Zeile 28. Allerdings solltest du dann auch den Code den du oben gepostet hast auskommentieren, weil das unter den Bedingungen der If die Zeit überschreibt.


    Und ich muss ehrlich sagen ich hab keine Ahnung wieso Bohemia diese Zeilen so geschrieben hat. Als Kommentar steht dabei:

    //DATE RESET AFTER ECONOMY INIT------------------------ was soviel bedeutet wie: Zeitrücksetzung nach Umweltinitialisierung. Meiner Meinung nach kann der Code auskommentieren werden.

  • Hey Juicy,


    Zu Erst möchte ich mal ein ganz großes Lob für dich aussprechen!

    Bin ein totaler Neuling in Sachen Coding, habe 0 Erfahrung und durch deine Hilfe habe ich es geschafft meinen eigenen Server einzurichten :)

    Ich möchte mich bei dir für deine Hilfe bedanken, du bist ein Ehrenmann :thumbup:


    Ich habe aber noch ein kleines Problem:

    Wie schreibe ich die init.c, sodass beim Starter Gear eine 9V Batterie in dem MRDS Scope attached ist und nicht erstmal manuell hinzugefügt werden muss?


    #Ich benutze deine init.c :evil:^^

  • void main()

    {

    //INIT WEATHER BEFORE ECONOMY INIT------------------------


    //If all is set to null give always sunshine, no fog, and less clouds

    Weather weather = g_Game.GetWeather();


    weather.GetOvercast().SetLimits( 0.0 , 0.0 );

    weather.GetRain().SetLimits( 0.0 , 0.0 );

    weather.GetFog().SetLimits( 0.0 , 0.0 );

    weather.GetOvercast().SetForecastChangeLimits( 0.0, 0.0 );

    weather.GetRain().SetForecastChangeLimits( 0.0, 0.0 );

    weather.GetFog().SetForecastChangeLimits( 0.0, 0.0 );


    weather.GetOvercast().Set( 0, 0, 0);

    weather.GetRain().Set( 0, 0, 0);

    weather.GetFog().Set( 0, 0, 0);


    weather.SetWindMaximumSpeed(0);

    weather.SetWindFunctionParams(0.0, 0.0, 0);

    //INIT ECONOMY--------------------------------------

    Hive ce = CreateHive();

    if ( ce )

    ce.InitOffline();

    GetGame().GetWorld().SetDate(2018, 4, 25, 12, 00); //Set the ingame date and time

    }

    class CustomMission: MissionServer

    {

    void SetRandomHealth(EntityAI itemEnt)

    {

    if ( itemEnt )

    {

    int rndHlt = Math.RandomInt(55,100);

    itemEnt.SetHealth("","",rndHlt);

    }

    }


    //This func can be used or not, it is your choice

    void addMags(PlayerBase player, string mag_type, int count)

    {

    EntityAI mag;


    if (count < 1) return;


    for (int i = 0; i < count; i++)

    {

    mag = player.GetInventory().CreateInInventory(mag_type);

    }

    }

    override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName)

    {

    Entity playerEnt;

    playerEnt = GetGame().CreatePlayer(identity, characterName, pos, 0, "NONE");//Creates random player

    Class.CastTo(m_player, playerEnt);


    GetGame().SelectPlayer(identity, m_player);


    return m_player;

    }


    override void StartingEquipSetup(PlayerBase player, bool clothesChosen)

    {

    EntityAI itemEnt;

    ItemBase itemBs;


    //Entitys

    EntityAI gun_m4a1;

    EntityAI gun_fnx45;

    EntityAI cloth_gorkaHelmet;

    EntityAI cloth_militaryBoots;


    //Get & Save Admin UIDs

    const string admin_uid = "xxxxxxxxxxxxxxx";

    const string admin_uid2 = "xxxxxxxxxxxxxxx";

    string player_uid = player.GetIdentity().GetPlainId();

    //RemoveAllItems

    player.RemoveAllItems();


    //Check if admin or not and choose spawn type

    if(player_uid == admin_uid || player_uid == admin_uid2)

    {


    // ADMIN SPAWN


    //Backpack

    ItemBase.Cast(player.GetInventory().CreateInInventory("HuntingBag"));


    //Clothing

    cloth_gorkaHelmet = player.GetInventory().CreateInInventory("GorkaHelmet");

    //cloth_gorkaHelmet.GetInventory().CreateAttachment("GorkaHelmetVisor"); //not working, don't know why

    cloth_militaryBoots = player.GetInventory().CreateInInventory("MilitaryBoots_Black");

    cloth_militaryBoots.GetInventory().CreateAttachment("CombatKnife"); //attach the knife to the boots

    ItemBase.Cast(player.GetInventory().CreateInInventory("BalaclavaMask_Blackskull"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("TacticalGloves_Black"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("TTsKOJacket_Camo"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("TTSKOPants"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("Armband_White"));


    //Primary Weapon

    gun_m4a1 = player.GetHumanInventory().CreateInHands("M4A1"); //if not working you can try .GetEntityInHands()

    //attach the following attachments to the gun

    gun_m4a1.GetInventory().CreateAttachment("ACOGOptic");

    gun_m4a1.GetInventory().CreateAttachment("M4_Suppressor");

    gun_m4a1.GetInventory().CreateAttachment("M4_RISHndgrd_Black");

    gun_m4a1.GetInventory().CreateAttachment("M4_OEBttstck_Black");

    gun_m4a1.GetInventory().CreateAttachment("Light_Universal");

    //gun_m4a1.GetInventory().CreateAttachment("Mag_STANAG_30Rnd"); BUGGY DONT USE

    //addMags(player, "Mag_STANAG_30Rnd", 2); //addMags(player, "Mag_STANAGCoupled_30Rnd", 2);


    // Secondary Weapon

    gun_fnx45 = player.GetInventory().CreateInInventory("FNX45");

    gun_fnx45.GetInventory().CreateAttachment("PistolSuppressor");

    //gun_fnx45.GetInventory().CreateAttachment("Mag_FNX45_15Rnd"); BUGGY DONT USE


    //Ammunition

    ItemBase.Cast(player.GetInventory().CreateInInventory("Mag_STANAG_30Rnd"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("Mag_STANAG_30Rnd"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("Mag_STANAG_30Rnd"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("Mag_FNX45_15Rnd"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("Mag_FNX45_15Rnd"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("Mag_FNX45_15Rnd"));

    //Food

    ItemBase.Cast(player.GetInventory().CreateInInventory("SodaCan_Pipsi"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("SodaCan_Pipsi"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("SodaCan_Pipsi"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("SpaghettiCan"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("SpaghettiCan"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("SpaghettiCan"));


    // Medical Supplies

    ItemBase.Cast(player.GetInventory().CreateInInventory("Morphine"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("Rag")).SetQuantity(6);

    // Utilities

    ItemBase.Cast(player.GetInventory().CreateInInventory("CanOpener"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("Battery9V"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("Battery9V"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("Battery9V"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("SparkPlug"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("TetracyclineAntibiotics"));

    //CreateQuickbar Shortcuts, 0 is the 1st place, 1 the 2nd etc.

    player.SetQuickBarEntityShortcut(gun_m4a1, 0, true); //you can use without true, true is for forcing player.SetQuickBarEntityShortcut(gun_m4a1, 0);

    player.SetQuickBarEntityShortcut(gun_fnx45, 1, true);

    }

    else

    {


    // DEFAULT SPAWN


    //Backpack

    ItemBase.Cast(player.GetInventory().CreateInInventory("FurImprovisedBag"));


    //Clothing

    ItemBase.Cast(player.GetInventory().CreateInInventory("WorkingGloves_Beige"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("CargoPants_Beige"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("TacticalShirt_Tan"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("SportGlasses_Black"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("MilitaryBoots_Beige"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("BaseballCap_Beige"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("CombatKnife"));


    //Primary Weapon

    gun_fnx45 = player.GetHumanInventory().CreateInHands("FNX45");

    gun_fnx45.GetInventory().CreateAttachment("PistolSuppressor");

    gun_fnx45.GetInventory().CreateAttachment("FNP45_MRDSOptic");


    //Ammunition

    ItemBase.Cast(player.GetInventory().CreateInInventory("Mag_FNX45_15Rnd"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("Mag_FNX45_15Rnd"));


    //Food

    ItemBase.Cast(player.GetInventory().CreateInInventory("SodaCan_Pipsi"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("SodaCan_Pipsi"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("SodaCan_Pipsi"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("SpaghettiCan"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("SpaghettiCan"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("SpaghettiCan"));


    // Medical Supplies

    ItemBase.Cast(player.GetInventory().CreateInInventory("Morphine"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("Rag")).SetQuantity(6);

    // Utilities

    ItemBase.Cast(player.GetInventory().CreateInInventory("CanOpener"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("Flashlight"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("Battery9V"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("Battery9V"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("SparkPlug"));

    ItemBase.Cast(player.GetInventory().CreateInInventory("TetracyclineAntibiotics"));

    //CreateQuickbar Shortcuts

    player.SetQuickBarEntityShortcut(gun_fnx45, 0, true);

    }

    }

    };


    Mission CreateCustomMission(string path)

    {

    return new CustomMission();

    }

  • Hey Juicy,


    Zu Erst möchte ich mal ein ganz großes Lob für dich aussprechen!

    Bin ein totaler Neuling in Sachen Coding, habe 0 Erfahrung und durch deine Hilfe habe ich es geschafft meinen eigenen Server einzurichten :)

    Ich möchte mich bei dir für deine Hilfe bedanken, du bist ein Ehrenmann :thumbup:

    Danke für dein Feedback :) Freut mich das ich dir helfen konnte!


    Zitat von tonyk1x

    Ich habe aber noch ein kleines Problem:

    Wie schreibe ich die init.c, sodass beim Starter Gear eine 9V Batterie in dem MRDS Scope attached ist und nicht erstmal manuell hinzugefügt werden muss?


    #Ich benutze deine init.c :evil:^^

    Das sollte dann so aussehen, dort wo du es haben möchtest fügst du diesen Code hinzu:


    C: init.c
    //Entitys
    EntityAI scope_mrds;
    
    //Optic
    scope_mrds = player.GetInventory().CreateInInventory("FNP45_MRDSOptic");
    scope_mrds.GetInventory().CreateAttachment("Battery9V");
  • Juicy das funktioniert zwar aber ich möchte gerne , dass dieses scope auf meiner waffe spawnt :saint: Jetzt habe ich einmal ein optic ohne batterie, was auf der waffe spawnt und einmal das gemoddete im inventar :sleeping:


    . . .


    //Primary Weapon

    gun_fnx45 = player.GetHumanInventory().CreateInHands("FNX45");

    gun_fnx45.GetInventory().CreateAttachment("PistolSuppressor");

    gun_fnx45.GetInventory().CreateAttachment("FNP45_MRDSOptic");


    //Entitys

    EntityAI scope_mrds;


    //Optic

    scope_mrds = player.GetInventory().CreateInInventory("FNP45_MRDSOptic");

    scope_mrds.GetInventory().CreateAttachment("Battery9V");


    . . .


  • Das sollte klappen :)

  • Moin! :)

    ich hab gesehen, der Juicy ist sehr bewandert in sachen coding und ich find einfach den Fehler in meiner init.c nicht -.-


    Und zwar....

    habe ich zusätzlich zu dem Wetter noch meine selbst erstellte custom map geladen. Bzw. habe ich eine AdminBase gebaut und muss nun zum Serverstart ja die gesetzten Items laden.


    nun habe ich folgende init.c, welche auch so funktioniert.:

    Jedoch wenn ich mein CustomGear hinzufügen wmöchte, lädt das game nicht mehr.

    Ich vermute, ich habe irgendow eine Klammer falsch gesetzt, vergessen oder zu viel?!


    So dachte ich, soll es aussehen:

    kann mir da einer Aushelfen? :D


    Im Grunde möchte ich nur das Wetter wechselhaft so wie eingestellt, dass man mit der Prisoner Kleidung, dem improvisierten Backpack, einer Pistole mit schalli und einem Scope inkl. Batterie spawned, sowie die 2 dazugehörigen Magazine sollten ebenfalls an Board sein.


    UND GANZ wichtig!!! der letzte Absatz BridgePrisonNoWrecks(); muss als allerletztes vor der allerletzten Klammer stehen... damit er die BridgePrisonNoWrecks.c mit lädt.

    Einmal editiert, zuletzt von 0n3Tap2x ()