[Selfmade] Wie speichere/lade ich ein Lager?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo Community,
    ich bin echt an meinem Selfmade Reallife Script verzweifelt.
    Einen Monat habe ich jetzt schon versucht, das selber hinzubekommen, aber es will einfach nicht klappen!
    Nun brauche ich eure Hilfe...


    Bei meiner Fraktion " Sanitäter ", möchte ich ein 'Ausrüstungslager' erstellen, wo Defibrillatoren und sonstige Verbandsmittel für die komplette Fraktion gespeichert werden.
    Aus dem Lager kann sich dann halt jeder Sanitäter nach belieben die nötige Ausrüstung nehmen.


    Nun ist meine Frage, wie ich sowas speichere/lade bei jedem Server Neustart bzw. erstelle ?!
    Kann mir jemand ein Beispiel geben?


    Wäre euch so sehr dankbar! :)


    mfg :thumbup:

    Einmal editiert, zuletzt von CroXx16 ()

  • Ich würde dir da empfehlen mit PVar zu arbeiten...
    Also einmal die PVar setten wenn einer was wegnimmt und wenn einer was reinpackt.
    Und dann mit GetPVarInt etc. anzeigen lassen beispielsweise im Dialog
    Und dann wenn du Beispielsweise Dini nutzt eine Extra Datei machen ka Ausrüstungslager oder so...
    Verstehst du wie ich das meine ?


    Mfg

  • Lösungsweg:
    du erstellst ein paar Variablen
    -Defi
    -Verband
    -HatDefi
    -HatVerband



    nun mach folgende Befehle:
    /takeverband
    /takedefi
    /buyverband
    /buydefi
    /useverband
    /usedefi
    Nenn sie wie du willst.


    beim TakeVerband Ziehst du der Verbands Variable eine ab.
    also z.b. 2 - 1
    Dann gibst noch einen Defi.
    überprüfe vorher aber auch ob noch genug da sind.
    beim Verband genausP.
    Beim /buyverband bzw. /buydefi
    Nimmst du einen Parameter fuer die Anzahl hinzu.
    zieh dem Spieler Geld ab und erhöhe die Defi bzw. Verbands Variable um die anzahl.
    Beim /verband Befehle überprüfe per HatVerband ob der Spieler einen verband dabei hat.
    falls ja, erhöhe die Hp des Ziels.
    beim Defi Befehl musst du zu einem Toten gehen, sofern sie bei seinem Script liegen bleiben und dann einfach seine hp höher setzen, schon lebt er wieder.


    ich hoffe dieser riesen Ansatz reicht die ;)

  • Okay schonmal vielen Dank Big_Ben und Dominik.!
    @ Dominik.: Dein Ansatz war mir sehr hilfreich :)


    Das mit dem Abziehen von den Defibrillatoren im Lager und dem Hinzufügen des Spielers habe ich ja schon hinbekommen.
    Habe das in einem Dialog gemacht, oder sollte ich lieber Befehle dafür benutzen?


    Aber wie erstelle ich denn die Datei mit PVars, wenn der Server startet?
    Dann soll er ja die Variablen, z.B.: Defibrillatoren: 4 Stk., Verbände: 2 Stk., erstellen.


    Könnte mir das vllt. einer zeigen?

  • Lass das mit den Spielervariablen einfach.
    Was willst du denn mit Spielervariablen wenn du eine globale Variable für z.B. die Defi Anzahl willst.
    Da hatte BigBen etwas unrecht.


    Laden tust du es in etwa so:


    INI_Open(Dein_Dateiname);
    defi = INI_ReadInt("Defibrilatoren");
    INI_Close();


    Speichern halt so:
    INI_Open(Dein_Dateiname);
    INI_WriteInt("Defibrilatoren,defi);
    INI_Save();
    INI_Close();


    Sofern du SII nutzt und nicht diesen dini crap ;)

  • Also ich habe die Datei nun erstellt.
    Die Defibrillatoren Anzahl sollen jetzt im Dialog dargestellt werden.
    Die Variable "fDefibrillator" wird in der Datei angezeigt.


    if(!fexist("/ausruestung/sani.ini"))
    {
    dini_Create("/ausruestung/sani.ini");
    dini_IntSet("/ausruestung/sani.ini","fDefibrillator",4);
    }


    Mit
    format(string,sizeof(string),"Defibrillator (Anzahl: %d)",GetPVarInt(playerid,"fDefibrillator"));
    funktioniert das nicht.


    Im Dialog erscheint bei Anzahl immer 0 ! Wie geht das?
    Brauche dringend Hilfe :S

    5 Mal editiert, zuletzt von CroXx16 ()

  • ##Ungetestet!


    new ausruestungstring[64];
    format(ausruestungstring,sizeof(ausruestunstring),"/ausruestung/sani.ini");
    if(!fexist(ausruestungstring))
    {
    dini_Create(ausruestungstring);
    dini_IntSet(ausruestungstring,"fDefibrillator",4);
    }
    format(string,sizeof(string),"Defibrillator (Anzahl: %d)",dini_Int(ausruestungstring,"fDefibrillator"));


  • Yea danke hat schonmal funktioniert :)
    Weißt du auch, wenn ich einen Defibrillator wegnehme, die Anzahl einer weniger wird?


    Also einfach einen subtrahieren :S Mit
    SetPVarInt(playerid,"fDefibrillator",GetPVarInt(playerid,"fDefibrillator") -1);
    geht das nicht.. :\

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen