Beiträge von Kaliber

    Naja, wenn du schon ein Registrierungssystem bzw Loginsystem hast, dann besitzt du ja bereits den Grundstein.


    Dann einfach in das bereits existierende Enum eine Variable packen, wie z.B. pAdmin


    Und dann kannst du überall so prüfen:



    C
    if(SpielerInfo[playerid][pAdmin] >= 5)
    {
        //Hier hätte der Spieler jetzt ein Adminlevel größer gleich 5
    }

    Und da du bereits ein MySQL System hast, packst du das einfach nur ins Query...im Sinne von: `Admin`='%d'


    Ich weiß nicht genau, wo deine Problematik bei diesem Thema ist.


    Im Endeffekt ist es nur eine Variable..die du dann einfach durch ein query in der Datenbank speicherst.

    Hast du eine Multiplayer Modifikation mit 50.000> Spieler gemacht? Oder einen 08/15 SA:MP Server mit 5 Spielern wo mal 2 kleine Sachen kommen?


    Da ist aber jemand bissig drauf :D


    Schlechten Tag gehabt? :)

    Nur nicht immer ¯\_(ツ)_/¯

    ...doch natürlich F5 funktioniert genauso gut wie deine Lösung?!


    Das sieht man schon ziemlich genau an der Zeilen-Zahl-Angabe am Rand

    Genau..sowas wie Kommentare existieren natürlich nicht.


    Und man kann es auch einfach an das Objekt machen, was zuletzt erstellt wird..unabhängig von seinem Ort...


    Und in fast allen Anwendungsfällen ist deine "Lösung" nur halbgar, daher bezeichne ich diese als schlecht.

    Allet klar das macht natürlich voll Sinn

    Das klappt beim Streamer aber nicht bzw. nur bedingt.

    Das soll auch gar nicht beim Streamer klappen, deshalb sagte ich, er soll ans Ende der Map gehen da dort alle Streamer Objekte zerstört wurden.


    Warum sollte man Objekte nur bei OnGameModeInit erstellen? Es gibt genügend Fälle, Objekte irgendwann zu erstellen und auch wieder zu löschen.

    Jo...aber ich denke diese Menge kann er einkalkulieren, ich denke es ging ihm um seine Map. Die man unter OnGameModeInit normalerweise erstellt


    Wie dem auch sei...du musst nicht sagen, dass das schlechte Methoden sind...denn diese funktionieren genauso gut wie deine...und die eine sogar ohne zusätzlichen Code...

    Das ist eine schlechte Lösung, vor allem dann, wenn man ein Objekt löscht, dann klappt das nämlich nicht.

    Ja natürlich unter OnGameModeInit löscht man direkt ein Objekt...


    und das unter F5 zeigt die aktuellen Objekte an.


    GetObjectCount()

    Wenn man ein Objekt löscht..wird es hier auch nicht angezeigt.


    Zudem sollte noch erwähnt werden, dass diese Funktion aufgerufen werden sollte, nachdem die Objekte erstellt wurden...

    Huch, hatte einen Fehler in der Funktion getPlayerSpeed, schreib sie so:


    C
    stock getPlayerSpeed(playerid)
    {
        new Float:x,Float:y,Float:z,v=GetPlayerVehicleID(playerid);
        if(!v) GetPlayerVelocity(playerid,x,y,z);
        else GetVehicleVelocity(v,x,y,z);
        return floatround(VectorSize(x,y,z) * 161.0);
    }

    Wie meinst du das genau? Mit Filterscripts oder ohne?


    Wenn du alle CreateObjects an einem Fleck hast, dann sieht das ja so aus:



    C
    CreateObject(...);
    CreateObject(...);
    CreateObject(...);
    CreateObject(...);
    //Und bei dem letzten CreateObject
    new objects = CreateObject(...);
    printf("Anzahl der Objekte: %d",objects);

    Allerdings solltest du CreateDynamicObject verwenden. (Also einen Streamer)


    Ingame kannst du dir das eig auch ganz schnell anzeigen lassen...fliege ans Ende der Map wo keine Objekte mehr sind und dann drück F5.
    Dort siehst du dann ObjectSlotsUsed und das sind auch die Anzahl deiner CreateObjects (da CreateDynamicObjects gelöscht werden würden).

    Da sollte wohl noch jemand gründlicher ins Wiki schauen und sich das in Ruhe durchlesen.


    wie soll ich bitte einen Timer erstellen der sich alle 250ms aktualisiert

    Ich würde fast sagen mit [wiki]SetTimer[/wiki] oder [wiki]SetTimerEx[/wiki], je nachdem wie du es nutzen willst.


    Willst du von mir, dass ich dir den ganzen Code auf einem Silber-Tablett serviere oder wie? :D


    Dann hier ein Beispiel:


    aber wie

    ...da gibt es bestimmt tausende von Tutorials etc zu.


    Grobe Richtung...du brauchst einen Timer...der sich ca alle 250ms aktualisiert, je nachdem wie flüssig du es haben willst.


    Anschließend prüfst du ob der Spieler sich in einem Fahrzeug befindet.


    Wenn ja, verwendest du format & getPlayerSpeed und zeigst es dem Spieler mit: [wiki]PlayerTextDrawSetString[/wiki] an.


    und fertig :)


    //Edit auf dein Edit:
    Dann aktualisierst du den String nicht :)

    Deine Fehler waren, dass du die Funktionen falsch geschrieben hattest & du rtn nicht deklariert hattest.


    Dennoch empfehle ich es dir, das so zu machen:


    C
    stock getPlayerSpeed(playerid)
    {
        new Float:x,Float:y,Float:z,v=GetPlayerVehicleID(playerid);
        if(!v) GetVehicleVelocity(v,x,y,z);
        else GetPlayerVelocity(playerid,x,y,z);
        return floatround(VectorSize(x,y,z) * 161.0);
    }

    Wenn du eine TextSize von 0 angibst kann das ja auch nicht funktionieren, weil das bedeuten würde, dass dein TextDraw eine Höhe von 0 hat..
    Also ist es nicht existent...


    Versuch mal:


    PlayerTextDrawTextSize(playerid,LoginLabel[playerid], 280.0, 210.0);

    Sehr geehrte Herrschaften,


    wenn ich Sie bitten dürfte doch die Konversation Funktion hier im Forum zu verwenden.


    Sie ziehen das Smalltalk Niveau zu sehr in die Höhe.


    Verbittlichsten Dank die Herren.
    Ihr Kaliber von und zu Brotfisch