Hilfe bei Rcon cmd's

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
  • Hey liebe Brodfische,


    Ich habe viele Objekte auf meinem server aber die Objekte sind in einem Filterscript gespeichert,
    wenn ich den server starte werden alle diese objekte geladen.


    und ich möchte halt mit einem befehl die sachen einmal unloaden und einmal reloaden.
    es geht aber nicht, aber warum, ich bitte um hilfe.


    Wie ich es im Script habe:
    /Reload befehl:
    if(strcmp(cmd, "/reloadobjekte", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if (SpielerInfo[playerid][pAdmin] >= 6)
    {
    SendRconCommand("unloadfs obs");
    format(string,sizeof(string),"Die Gesamten Objekte auf RG-Network wurden neu geladen");
    SendClientMessageToAll(0xFFFF00FF,string);
    SendRconCommand("loadfs obs");
    }
    else
    {
    SCM(playerid, COLOR_GRAD1, "Du Kannst keine Objekte neu laden.");
    }
    }
    return 1;
    }



    Und einmal das UNLOAD
    if(strcmp(cmd, "/unloadobjekte", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if (SpielerInfo[playerid][pAdmin] >= 6)
    {
    SendRconCommand("unloadfs obs");
    format(string,sizeof(string),"Die Gesamten Objekte wurden auf RGNetwork entfernt.");
    SendClientMessageToAll(0xFFFF00FF,string);
    }
    else
    {
    SCM(playerid, COLOR_GRAD1, "Du Kannst keine Objekte entfernen.");
    }
    }
    return 1;
    }




    Danke im vorraus.

  • Du entlädst ja auch nur das Filterscript, das diese Objekte erstellt hat, nicht aber die Objekte.
    Wenn das so funktionieren soll, müsstest Du im Filterscript im Callback OnFilterscriptExit() die Objekte nochmal zerstören.
    Dafür musst Du beim Erstellen jedem Objekt eine ID zuweisen und diese in einem Array speichern.


    Beim Callback OnFilterscriptExit() wirst Du dieses Array dann mittels einer For-Schleife durchlaufen und jedes Objekt anhand der ID's zerstören (DestroyObject())


    BTW: Präzisier am Besten nächstes Mal den Threadtitel. So etwas wie "Objekte aus einem Filterscript mit dem RCON Command unloadfs zerstören" würde viel mehr Aufschluss über das Problem geben.


  • Du entlädst ja auch nur das Filterscript, das diese Objekte erstellt hat, nicht aber die Objekte.
    Wenn das so funktionieren soll, müsstest Du im Filterscript im Callback OnFilterscriptExit() die Objekte nochmal zerstören.
    Dafür musst Du beim Erstellen jedem Objekt eine ID zuweisen und diese in einem Array speichern.


    Beim Callback OnFilterscriptExit() wirst Du dieses Array dann mittels einer For-Schleife durchlaufen und jedes Objekt anhand der ID's zerstören (DestroyObject())


    BTW: Präzisier am Besten nächstes Mal den Threadtitel. So etwas wie "Objekte aus einem Filterscript mit dem RCON Command unloadfs zerstören" würde viel mehr Aufschluss über das Problem geben.


    Ok. und das geht wie? :=0

  • new Object[MAX_OBJECT]
    Object[0] = CreateObject();
    etc....


    bei OnGameModeExit
    DestroyObject(Object[0]);
    etc....

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ich habe jetzt noch 1 problem und zwar kommt wenn ich Compilen will ein Error: error 017: undefined symbol "Object" könnt ihr mir da nochmal helfen? //e denke gelöst
    //e: Habe jetzt einen neuen: error 022: must be lvalue (non-constant)


    PWN COde vergessen o.o
    Object(1755) = CreateObject(8947, 288.40039, -1193.5996, 78.4, 0, 359.608, 42.605);

  • Was genau hast du vor?


    So?
    Object[1755] = CreateObject(8947, 288.40039, -1193.5996, 78.4, 0, 359.608, 42.605)


    Wie hast du denn "Object" deklariert, und wie verwendest du es noch im Code? Bzw, was willst du genau damit machen? Alle Objekte speichern, damit du sie löschen kannst?

  • Ja genau das wollte ich machen.



    So habe ich es gemacht
    Object[1755] = CreateObject(8947, 288.40039, -1193.5996, 78.4, 0, 359.608, 42.605)


    public OnFilterscriptExit()
    {
    DestroyObject(Object[1];
    }


    Wenn ich dann Compile kommt das:


    (1754) : error 017: undefined symbol "Object"
    (1754) : warning 215: expression has no effect
    (1754) : error 001: expected token: ";", but found "]"
    (1754) : error 029: invalid expression, assumed zero
    (1754) : fatal error 107: too many error messages on one line

  • Ok, das war was ich wissen wollte.


    Du brauchst zuerst ein Array, in dem du die erstellten Objekt IDs speicherst.
    Oben im Filterscript:
    new bool:ObjectCreatedInFS[MAX_OBJECTS];


    Dies ist zu Anfang in jedem Index ([INDEX]) auf false (=0), nicht erstellt.



    Beim Erstellen der Objekte machst du dann:
    ObjectCreatedInFS[CreateObject(8947, 288.40039, -1193.5996, 78.4, 0, 359.608, 42.605)] = true;


    oder:
    id = CreateObject(8947, 288.40039, -1193.5996, 78.4, 0, 359.608, 42.605); ObjectCreatedInFS[id] = true;


    Wie du willst.
    Bei letzterer Methode musst du noch "new id;" unter den Includes einfügen.



    Und bei OnFilterScriptExit löschen wir die Objekte, die im Filterscript erstellt worden sind:
    for(new i=0; i<MAX_OBJECTS; i++)
    {
    if(ObjectCreatedInFS[i] == true)
    {
    DestroyObject(i);
    ObjectCreatedInFS[i] = false;
    }
    }



    Ich hoffe das hilft dir.
    Bei Fragen kannst du gerne nachfragen.

  • Habe noch folgende Errors:


    (1758) : error 022: must be lvalue (non-constant)
    (1758) : error 032: array index out of bounds (variable "ObjectCreatedInFS")
    (2034) : error 032: array index out of bounds (variable "ObjectCreatedInFS")
    (2035) : error 032: array index out of bounds (variable "ObjectCreatedInFS")


    Das habe ich bei Filterscriptexit eingetragen


    public OnFilterScriptExit()
    {
    for(new i=0; i<MAX_OBJECTS; i++)
    {
    if(ObjectCreatedInFS[i] == true)
    {
    DestroyObject(ObjectCreatedInFS[1762]);
    ObjectCreatedInFS[1762] = false;
    }


    }
    }
    (Zeile: 7 = 2034)
    (Zeile: 8 = 2035)




    1758 = CreateObject(8947, 288.40039, -1193.5996, 78.4, 0, 359.608, 42.605); ObjectCreatedInFS[1758] = true;
    (1758) : error 022: must be lvalue (non-constant)
    (1758) : error 032: array index out of bounds (variable "ObjectCreatedInFS")


    Bräuchte da noch was hilfe

  • Was machst du denn da?


    Du brauchst das "id" und das "i" nicht durch Werte ersetzen.
    Lasse das einfach so stehen, wie ich es dir gegeben habe. ;)
    Das sind Variablen, die bekommen ihren Wert direkt von CreateObject zugewiesen.


    Versuch es nochmal, und poste gegebenenfalls nochmal den Code, falls du wieder Errors hast.



    EDIT:
    [RSA]MaiexHD: Brauchst dich nicht zu entschuldigen, dafür sind wir ja hier. :good:

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()