DestroyObject funkt nicht

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
  • Tag, Bei mir funktioniert das DestroyObject nicht....
    Wenn ich denn Cmd eingebe geht das Object nicht weg, es bleibt..


    if (strcmp("/ernten", cmdtext, true, 10) == 0)
    {
    if(HanfPflanzen == 1)
    {
    DestroyObject(19473);
    SendClientMessage(playerid,GRUN,"Du hast deine ( 6 g ) Pflanze erfolgreich geerntet");
    Hanfbesitz = 6;
    return 1;
    }
    if(HanfPflanzen == 0)
    {
    SendClientMessage(playerid,ROT,"Du hast keine Pflanze gepflanzt");
    }
    }


    new Float:X, Float:Y, Float:Z, Float: FZ;
    if(GetPlayerPos(playerid,X,Y,Z))
    {
    if(HanfPflanzen == 0)
    {
    CreateObject(19473,X,Y,Z,FZ,0,0,0);
    SendClientMessage(playerid,GRUN,"Du Hast deine Samen Gepflanzt");
    HanfPflanzen = 1;
    return 1;
    }
    Das Pflanzen ist ebenfalls als Command.

  • Vergleich deine Version zu meiner Version. Wie mein Vorredner schon sagte benötigst du die objektid. Desweiteren empfiehle ich dir Spielerbezogene Variablen näher anzusehen, weil so würdest du dich nur auf einen Spieler konzentrieren.



    #define MAX_PFLANZEN (3) // Wieviele Pflanzen ein Spieler pflanzen kann.


    new HanfPflanze[MAX_PLAYERS];
    new Hanfbesitz[MAX_PLAYERS];


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/ernten", cmdtext, true, 7) == 0)
    {
    if(HanfPflanze[playerid] == 1)
    {
    DestroyObject(HanfPflanze[playerid]);
    SendClientMessage(playerid,GRUN,"Du hast deine ( 6 g ) Pflanze erfolgreich geerntet");
    HanfPflanze[playerid] = 0;
    Hanfbesitz[playerid] = 6;
    return 1;
    }
    if(HanfPflanze[playerid] == 0)
    {
    SendClientMessage(playerid,ROT,"Du hast keine Pflanze gepflanzt");
    }
    }
    if (strcmp("/pflanzen", cmdtext, true, 9) == 0)
    {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    if(HanfPflanze[playerid] == 0)
    {
    // Sicherheitshalber +1, weil es in einem ganz seltenen Fall auch eine Objekt ID 0 gäben könnte.
    HanfPflanze[playerid] = CreateObject(19473,X,Y,Z,0,0,0) + 1;
    SendClientMessage(playerid,GRUN,"Du Hast deine Samen Gepflanzt");
    return 1;
    }
    }
    }


    EDIT: Die Lösung von Jeffry würde nur für einen Server laufen können, wo maximal nur ein Spieler verbunden ist.

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • // Sicherheitshalber +1, weil es in einem ganz seltenen Fall auch eine Objekt ID 0 gäben könnte.
    Templer:
    Du kannst auch einfach oben new HanfPflanze[MAX_PLAYERS] = {-1,...}; machen, dann steht HanfPflanze auf -1. So brauchst du nicht +1 zu rechnen, und beim löschen des Objektes einfach wieder auf -1 stellen, so hat Jeffry das auch gemacht.

    Einmal editiert, zuletzt von AirM4X ()

  • Manne:
    So geht das nicht. Wenn dann so
    new HanfPflanze[MAX_PLAYERS] = {-1,...};


    Templer
    MAX_PFLANZEN
    Wird zwar deklariert aber nie benutzt.
    Und wenn du bei CreateObject plus 1 machst, dann auch beim Löschen wieder abziehen, sonst bleibt das Objekt.
    DestroyObject(HanfPflanze[playerid]-1);

  • Wollt zuerst die Möglichkeit machn mehrere Pflanzen zu pflanzen xD


    Bei meiner Verson noch "-1" abziehen bei DestroyObject.


    ob mit -1 initialisieren oder nicht ist Geschmackssache

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!