Object - array mit PlayerInRangeOfObject zerstören

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,


    Ich habe folgenden Befehl


    if(strcmp("/aufnehmen", cmdtext, true,10) ==0)
    {
    for(new i = 0; i<= 49; i++)
    {
    if(IsPlayerInRangeOfObject(playerid,trash[i],3.0))
    {
    DestroyDynamicObject(trash[i]);
    SendClientMessage(playerid,COLOR_WHITE,"Müll aufgeladen");
    }
    }
    return 1;
    }


    ich habe mehrere Objecte trash[0] - trash[48] ...


    trash[0] = CreateDynamicObject(...)
    trash[1] = CreateDynamicObject(...)
    trash[2] = CreateDynamicObject(...)


    // bis 48


    Wenn ich den Befehl ausführe erhalte ich die Nachricht : UNKNOWN Command ... alle anderen gehen ...

    Scripter und Mapper Since 2010

  • if(strcmp("/aufnehmen", cmdtext, true,10) ==0)
    {
    for(new i = 0; i<49; i++)
    {
    if(IsPlayerInRangeOfObject(playerid,trash[i],3.0))
    {
    DestroyDynamicObject(trash[i]);
    SendClientMessage(playerid,COLOR_WHITE,"Müll aufgeladen");
    }
    return 1;

    }
    return 1;
    }


    Jetzt erhalte ich zwar kein UNKNOWN command mehr, allerdings wird das object nicht entfernt...




    hier ist IsPlayerInRangeOfObject


    stock IsPlayerInRangeOfObject(playerid, object, Float:distance)
    {
    new Float:X, Float:Y, Float:Z;
    if(!IsValidObject(object)) return false;
    GetObjectPos(object, X, Y, Z);
    if(IsPlayerInRangeOfPoint(playerid, distance, X, Y, Z)) return object;
    return false;
    }



    // Es wird momentan nichts ausgegeben, es scheint aber das der Befehl funktioniert, nur ist wohl die Koordinatenabfrage noch falsch ??

    Scripter und Mapper Since 2010

    Einmal editiert, zuletzt von Home_Edit ()

  • if(strcmp("/aufnehmen", cmdtext, true,10) ==0)
    {
    for(new i = 0; i<49; i++)
    {
    if(IsPlayerInRangeOfObject(playerid,trash[i],3.0))
    {
    DestroyDynamicObject(trash[i]);
    SendClientMessage(playerid,COLOR_WHITE,"Müll aufgeladen");
    return 1;
    }
    }
    return 1;
    }
    So sollte es laufen.

    Ich bin Dittis Signatur.

  • Wenn du schon dynamische Objekte zerstören willst, musst du auch die Funktion anpassen:
    stock IsPlayerInRangeOfDynamicObject(playerid, object, Float:distance)
    {
    new Float:X, Float:Y, Float:Z;
    if(!IsValidDynamicObject(object)) return false;
    GetDynamicObjectPos(object, X, Y, Z);
    return IsPlayerInRangeOfPoint(playerid, distance, X, Y, Z);
    }


    Man beachte, dass ich Object überall mit DynamicObject ersetzt habe.