[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • Jeffry:


    Hast Recht, hat eine Klammer gefehlt und musste die Admin Variable umändern habe nicht drauf geachtet aber funktioniert wie gewollt, danke dir :).


    Wie stelle ich das an das ALLE Admins die es auf dem Server gibt angezeigt werden, auch wenn die Offline sind?


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Jeffry:
    Funktioniert schon mal!


    Habe jetzt versucht, dass Objekte gelöscht werden falls diese in der nähe sich befinden.
    Klappt leider nicht ganz^


    SetTimer("IsPlayerNearObject", 800, true);


    forward IsPlayerNearObject(playerid, objectid, Float:range);
    public IsPlayerNearObject(playerid, objectid, Float:range)
    {
    new Float:X, Float:Y, Float:Z;
    GetObjectPos(objectid, X, Y, Z);
    if(IsPlayerInRangeOfPoint(playerid, 3.0, X, Y, Z)) return DestroyObject(objectid);
    return false;
    }

  • Das müsste dann so aussehen:
    forward IsPlayerNearObject();
    public IsPlayerNearObject()
    {
    new Float:X, Float:Y, Float:Z;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    for(new o=0; o<50; o++)
    {
    if(treeObj[o] == -1) continue;
    GetObjectPos(treeObj[o], X, Y, Z);
    if(IsPlayerInRangeOfPoint(i, 3.0, X, Y, Z))
    {
    DestroyObject(treeObj[o]);
    treeObj[o] = -1;
    }
    }
    }
    return false;
    }

  • forward IsPlayerNearObject();
    public IsPlayerNearObject()
    {
    new Float:X, Float:Y, Float:Z;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    for(new o=0; o<50; o++)
    {
    if(689[o] == -1) continue; // Fehler
    GetObjectPos(689[o], X, Y, Z);
    if(IsPlayerInRangeOfPoint(i, 3.0, X, Y, Z))
    {
    DestroyObject(689[o]);
    689[o] = -1;
    }
    }
    }
    return false;
    }


    Fehler:
    error 029: invalid expression, assumed zero
    error 029: invalid expression, assumed zero
    warning 215: expression has no effect
    error 001: expected token: ";", but found "]"
    fatal error 107: too many error messages on one line

  • Danke, ich hab jetzt noch eine abfrage vorm einloggen gemacht. Das wenn die 60 sek noch nicht um sind das man sich nicht einloggen kannst. Nur steht das jetzt bei jedem Spieler der sich einloggen möchte, das er sich nicht einloggen kann weil die 60 sek noch nicht um sind obwohl sie sich davor nicht ausgeloggt haben.


    public Logout(playerid)
    {
    SpielerInfo[playerid][sLogout] = 0;
    DestroyPickup(logpickup[playerid]);
    Delete3DTextLabel(logoutlabel[playerid]);
    SavePlayer(playerid);
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    new Float:x, Float:y, Float:z, string[80], hour, mins, sec;
    SetTimerEx("Logout", 60000, 0, "d", playerid);
    SpielerInfo[playerid][sLogout] = 1;
    GetPlayerPos(playerid, x, y, z);
    gettime(hour, mins, sec);
    logpickup[playerid] = CreatePickup(1272, 2, x, y, z, -1);
    format(string, sizeof(string), "*%s*\n**%d.%d.%d", SpielerInfo[playerid][sName], hour, mins, sec);
    logoutlabel[playerid] = Create3DTextLabel(string, COLOR_WHITE, x, y, z, 40.0, 0, 0);
    SavePlayer(playerid);
    return 1;
    }


    if(SpielerInfo[playerid][sLogout] == 1) return SendClientMessage(playerid, COLOR_WHITE, "Dein Logout Pickup ist noch nicht verschwunden!");

  • Das was du da vor hast klappt so nicht, weil die playerid nach OnPlayerDisconnect ja nicht mehr online ist, sprich nach den 60 Sekunden SavePlayer aufzurufen klappt nicht.
    Wie genau willst du es denn haben?


    Spieler geht offline -> Pickup wird erstellt (wird nach 60 Sekunden entfernt) -> Spieler kommt online -> Falls 60 Sekunden rum kann er spawnen, ansonsten muss er warten. Ist das richtig so?

  • Ok, dann musst du mit dem Timestamp den gettime zurück gibt arbeiten.


    public Logout(label, pickup)
    {
    DestroyPickup(pickup);
    Delete3DTextLabel(Text3D:label);
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    new Float:x, Float:y, Float:z, string[80], hour, mins, sec;
    SpielerInfo[playerid][sLogout] = gettime()+60;
    GetPlayerPos(playerid, x, y, z);
    gettime(hour, mins, sec);
    new pickup = CreatePickup(1272, 2, x, y, z, -1);
    format(string, sizeof(string), "*%s*\n**%d.%d.%d", SpielerInfo[playerid][sName], hour, mins, sec);
    new Text3D:label = Create3DTextLabel(string, COLOR_WHITE, x, y, z, 40.0, 0, 0);
    SetTimerEx("Logout", 60000, 0, "dd", _:label, pickup);
    SavePlayer(playerid);
    return 1;
    }


    if(SpielerInfo[playerid][sLogout] > gettime()) return SendClientMessage(playerid, COLOR_WHITE, "Dein Logout Pickup ist noch nicht verschwunden!");

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • C:\Users\Eddy\Desktop\GTA\GTA - Selfmade\gamemodes\NLG.pwn(390) : warning 213: tag mismatch
    C:\Users\Eddy\Desktop\GTA\GTA - Selfmade\gamemodes\NLG.pwn(1171) : error 017: undefined symbol "pickup"
    C:\Users\Eddy\Desktop\GTA\GTA - Selfmade\gamemodes\NLG.pwn(1172) : error 017: undefined symbol "label"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.

  • was hat _: das zu bedeuten?


    damit kannst du den Tag einer Variable entfernen


    bsp:
    new Text3D:Label;


    SendClientMessage(Label,...);
    würde einen warning ausspucken.


    entfernst du den Tag mit _:
    SendClientMessage(_:Label,...);
    gibt es keinen Warning


    Die Tags sind dafür da, das sowas, wie es jetzt getan habe, nicht passiert.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski