Id Verschiebung verhindern

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
  • Guten Tag


    Da ich häufig das Problem der ID Verschiebung hatte, erstelle ich für jede funktion die etwas zerstört ein eigenen stock, um die ID wieder auf -1 zu setzen.


    Beispiel:
    stock j_DestroyDynamicMapIcon(&mapconid)
    {
    DestroyDynamicMapIcon(mapconid);
    mapconid = -1;
    }


    stock j_PlayerTextDrawDestroy(playerid, &PlayerText:text)
    {
    PlayerTextDrawDestroy(playerid, text);
    text = PlayerText:INVALID_TEXT_DRAW;
    }


    stock j_TextDrawDestroy(&Text:text)
    {
    TextDrawDestroy(text);
    text = Text:INVALID_TEXT_DRAW;
    }


    Klappt super :)
    Das selbe versuche ich nun mit 3DTextLables:
    stock j_DestroyDynamic3DTextLabel(&Text3D:textid)
    {
    DestroyDynamic3DTextLabel(textid);
    textid = Text3D:INVALID_3DTEXT_ID;
    }
    Hier bekomme ich aber das Warning, das diese Funktion einen Wert zurückgeben sollte:

    Zitat

    C:\Program Files (x86)\Pawno\gamemodes\Server.pwn(22321) : warning 209: function "j_DestroyDynamic3DTextLabel" should return a value
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.


    Ist aber vom Aufbau genauso wie die anderen und durch das '&' soll ja automatisch der Wert INVALID_3DTEXT_ID zurückgegeben werden.

  • Zunächst zu meinem Fehler:


    Wenn ich da ein return ein setze ergibt die Funktion doch gar keinen Sinn mehr.


    bei folgendem code:
    new Variable = 5;
    Funktion(Variable);


    stock Funktion(&Parameter)
    {
    Parameter = 3;
    }
    Wird durch die Funktion Variable auf 3 gesetzt, da durch das & der Wert des parameters direkt für die eingesetze Variable gesetzt wird. Das ist der Sinn solcher Funktionen, genauso wie bei gettime, getdate, GetPlayerHealth, etc.


    Deine Art eine ID verschiebung zu verhindern ist aber sehr mühsam


    Und wie soll man das denn anders lösen?
    Mein beispiel der Id Verschiebung:


    new car[2];
    new bike{2];
    Angenommen ich habe jeweils car[0] und bike[0] erstellt. nun zerstöre ich bike[0] und erstelle car[1]. nun haben die variablen bike[0] und car[1] den selben Wert, da ich zwar das Fahrzeug zerstört habe, die Variable dabei aber unverändert bleibt.
    Dies wird durch die Funktionen halt gemacht. Was ist denn noch besser?

    Einmal editiert, zuletzt von Simon ()