DiniAdmin - Connect hilfe

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
  • Heyy Leute.
    Da ich nun ein KOMPLETTES Selfmade mache, möchte ich natürlich auch ein "1 Level admin-System" haben.
    So, beim Connect wird mit Dini ja alles geladen, dafür benutzt man für score & geld ja die normalen CMD's ...
    aber wie mache ich das für den admin level?


    Habe alles definiert, jedoch weiß ich nicht wie ich das admin level laden sollte 0o
    Hier mein derzeitiges script-teil.
    SendClientMessage(playerid, 0x33CCFFAA, "Willkommen bei SA:MP 0.3 Server");
    SendClientMessage(playerid, 0xFFFFFFAA, "Dein Account wurde wiedererkannt.");
    SendClientMessage(playerid, 0xFFFFFFAA, "Du kannst dich jetzt einloggen.");
    SendClientMessage(playerid, 0xFFFFFFAA, "Benutze dazu /login [passwort].");
    GivePlayerMoney(playerid,dini_Int(save,"Geld"));
    SetPlayerScore(playerid, dini_Int(save,"Score"));
    }


    /edit:
    Failed, hatte erst SetPlayerScore(playerid, dini_Int(save,"Score)); statt SetPlayerScore(playerid, dini_Int(save,"Score"));

  • über all wo zb: dini hast und zb "geld" hast machst neues mit ADmin :thumbup:

  • (Wow, wieder sinnloser Kommentar. *hust*)
    Nichts gegen dich, hehe, aber du hast nicht ganz verstanden was ich will.^^


    /edit:
    Warte, ich erkläre es nochmal detailierter:
    SetPlayerScore(playerid, dini_Int(save,"Score"));

    Dort einfach "Admin" hinzuklatschen würde nicht gehen, da er ja den SCORE vom Spieler abruft, siehe "SetPlayerScore".
    Was muss ich ändern, damit nicht "SetPlayerScore", sondern zb. "SetPlayerLevel" steht?

  • Achso du willst das wen ich "Tab" drücke das da steht welche Admin level der jenige ist?

  • Erstell dir doch einfach ne Variable


    IsAdmin[MAX_PLAYERS]


    Und die speicherst du für jeden User und lädst sie beim connecten..und die Befehle für Admins dürfen nur ausgeführt werden wenn die Variable des jeweilgen Spieers auf Eins/True gesetzt ist.

  • ...
    Komm, vergiss es, ich warte auf BlackFoX, Walker, der nur hier rumlungert xD, bzw. jemand anderen der bescheid weiß.


    /edit:
    Bloody, ich teste es kurz, ich weiß echt nicht wieso mir sowas nicht einfällt, ich bin zu blöd >_>
    Wartet! ^^


    /edit,
    ich frosch habe was zu meckern ;P

    new GetPlayerLevel[MAX_PLAYERS];
    würde nicht gehen, da er ja nicht "Admin" benutzt, ich checke das nicht gerade 0.o
    H-hilfe?

  • Nichts böses, aber ein ernst gemeinter Tipp: Um einen Selfmade-Gamemode zu erstellen, sollte man schon das System von globalen Arrays verstanden haben und sie anwenden können, da man in der Regel etliche Werte für jeden Spieler speichern muss.
    Fang lieber mit was kleinerem an und arbeite dich hoch. Das ist nicht böse gemeint, sondern ein gut gemeinter Tipp.

  • Gut gemeinter Tipp?
    Ich verstehe zwar das du mir helfen willst, ich habe nur langsam den Papp auf, das ich schon seid 2 Jahren nur, auf gut deutsch, scheiß Scripts mache, besser gesagt verdammte Copy&Paste Scripts, nie ein Reallife, dann frage ich was ich amchen soll, dann kommt: Mach lieber ein Selfmade-RL Script, dann kommt zum Schluss aber, zb. von dir;
    Fang lieber mit das kleinerem an.


    Ich habe den Papp auf! XD


    /edit:
    Wo kann man ich die Array's verstehen ( auf gut deutsch: Wiki Link o.ä? )?

  • Bloody, ich kann mir das nicht vorstellen ... BIN ICH ZU BLÖD? XD


    Mensch, kann doch nicht so schwer zu verstehen sein, GAWD! :(


    /edit:
    So stelle ich mit das vor:
    SendClientMessage(playerid, 0x33CCFFAA, "Willkommen bei SA:MP 0.3 Server");
    SendClientMessage(playerid, 0xFFFFFFAA, "Dein Account wurde wiedererkannt.");
    SendClientMessage(playerid, 0xFFFFFFAA, "Du kannst dich jetzt einloggen.");
    SendClientMessage(playerid, 0xFFFFFFAA, "Benutze dazu /login [passwort].");
    GivePlayerMoney(playerid,dini_Int(save,"Geld"));
    SetPlayerScore(playerid, dini_Int(save,"Score"));
    if(IsAdmin[playerid]==1))
    {
    GetPlayerLevel(playerid, dini_Int(save,"Level));
    }
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Zitat

    So, beim Connect wird mit Dini ja alles geladen, dafür benutzt man für score & geld ja die normalen CMD's ...
    aber wie mache ich das für den admin level?

    Das verstehe ich nicht sowirklich deshalb ^^

  • Da ist nen Denkfehler drin. Mach es anders.


    Unter OnPlayerConnect:


    if(DEIN DINI KRAM, WO IRGENDWO DRIN STEHT, DASS DER SPIELER ADMIN IST ODER NICHT) == 1)
    IsAdmin[playerid]=1;


    Oben natürlich noch IsAdmin[MAX_PLAYERS] definieren.


    Unter OnPlayerDisconnect dann noch


    IsAdmin[playerid]=0;


    Und du brauchst eine Funktion, um andere Spieler zu Admins zu machen. Da dann mit DINI in die Datei schreiben, dass der Spieler Admin ist und IsAdmin[pid]=1. Das war es schon.

  • /me findet das BlattPapier nicht helfen kann wenn er nicht mal das versteht aber, der Wille ist was zählt :D


    @Topi, bzw. @ Bloody:


    Achso, das prinzip habe ich ja verstanden, aber wenn ich ja WÄREND DES SPEICHERN's .. nee warte ...
    Ich schreibe gerade auf wie ich denke:
    wenn ich doch eingeloggt BIN als Admin ...
    Dann kann ich ja DOCH abfragen ob ich schon admin BIN ....
    ACHSOOOOO!!!!!!!!!!!!!1
    GEISTESBLITZ!!
    Ich glaube ich habe es gecheckt! XD


    /edit:
    Habe dein Beitrag zu spät gelesen, hier mein Edit:
    Also so?
    if((IsAdmin[playerid]) ==1 )
    GetPlayerLevel(playerid, dini_Int(save,"Level));

  • Ja dann erklär mic das mal für Ein Doof kopf. dann kann ich dir auch helfen. Willst cmd für admin machen oder wie?

  • Nahezu.


    Du musst dir in die Datei des Spielers per DINI (kann ich dir nicht helfen, benutz ich nicht, sorry) irgendne Variable speichern, ob der Spieler Admin ist oder nicht und die in der If-Abfrage auslesen.


    if(DINIBLABLA==1)
    IsAdmin[playerid]=1;

  • oh noez, ich verstehe es nicht mehr, FISSION MAILED.
    Erm ...
    Ich verstehe die erste Zeile nicht, was soll dort denn abgefragt werden?
    Wenn ich den SAVE command von Dini rein mache, also zb. SO:
    Kurzer Breain-Breaker, wieder schreibe ich was ich denke:
    WTF, geht ja nicht warte ...
    Ich kann das doch dann nur abfragen, wenn ich GetPlayerLevel mache, oder nicht?


    und wenn GetPlayerLevel == 1 ist wird es dann gespeichert, und genau DA muss dann der Knackpunkt sein - das speichern - ich habe keine ahnung, jetzt gerade, wie ich DAS machen soll ... fuu-


    /edit:
    ich denke das genau so bis jetzt:
    if(GetPlayerLevel==1)
    IsPlayerAdmin[playerid]=1;
    //dann hier die Zeilen zum speichern... wie soll das gehen sh** ..

  • Versuch dein GetPlayerLevel mal völlig aus deinen Gedanken zu verbannen, das brauchst du hier nicht.


    Als logischer Text sehen wir das mal so:


    Prozedur Spieler meldet sich an



    Spieler connected:


    Per DINI wird aus der Spielerdatei ausgelesen, ob irgendeine Variable in dieser Datei aussagt, dass dieser Spieler Admin ist (zB in der ini steht Admin=1).
    Ist die Abfrage positiv; der Wert in der Datei ist 1 wird IsAdmin[playerid] auch auf 1 gesetzt.


    Spieler will Adminbefehl ausführen:


    Script überprüft, ob IsAdmin[playerid]==1 ist. Wenn ja wird der Befehl ausgeführt, wenn nein nicht.



    Klick gemacht ? ;)


    Du könntest es theoretisch auch ohne IsAdmin machen und immer auf die Datei zugreifen, aber ich finde es so praktischer und unkomplizierter.

  • Per DINI wird aus der Spielerdatei ausgelesen


    und genau DA stockt es gerade!


    so sieht es ja normalerweiße aus
    SetPlayerScore(playerid, dini_Int(save,"Score"));
    Aber das geht soeinfach ja beim IsAdmin nicht! :/


    /edit:
    Achja, SONST hat es JA KLICKT gemacht, nur DORT ist es am rattern!^^


    //EDIT:
    AAH
    enum Save
    {
    Passwort[128],
    Geld,
    Score,
    Admin==IsAdmin[MAX_PLAYERS],
    };


    Admin ist imer das VALUE von IsAdmin, dann kann ich ja es so machen: ( kjurz warten, ich edtiere kurz ).


    So, ist nun da das edit:
    if(Admin==1)
    IsPlayerAdmin[playerid]=1;
    }


    Richtig??


    /edit:
    geht ja nicht, da admin ja == IsAdmin ist, wenn es dann Admin==1 wäre, wäre es ja nicht mehr IsAdmin ..
    War denn die RICHTUNG richtig?

  • So wird es im DINI Beispiel gemacht, keine Ahnung ob das einfach so funktioniert, probier es aus:


    if(dini_Int(DATEI, "AdminLevel") == 1)


    EDIT1:


    if(Admin==1)
    {
    IsPlayerAdmin[playerid]=1;
    }


    Das ist richtig so, das muss so in OnPlayerConnect. Aber das Admin muss vorher (wie oben beschrieben) per DINI aus der Datei ausgelesen werden.