Brauche Hilfe mit Admin system

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 Liebe Comunity,
    Ich habe ein Problem. Unzwar versuche ich seit 6 Wochen ein eigenes Adminsystem zu erstellen.
    Nunja ist ja eigentlich auch nicht besonders schwer. Nur wird bei mir das Adminlevel als Zahl gespeichert.
    Das heißt also ich müsste warscheinlich ein switsch und case einbauen da meine Adminränge


    Supporter
    Modderator
    1337Admin usw sein sollen


    Nur wie mache ich das ? Hoffe es kann mir jemand Helfen


    Klick meh !! du

  • Du arbeitest 6 Wochen an einem dummen Adminsystem?
    Das hat maximal (im Grundgerüst,ohne Befehle) 500 Zeilen!?!?
    Aber inwiefern möchtest du case switch einbauen?
    Und zur Hölle gib die verdammten Variablen wenn du das haben willst (XD)

  • Hy ja also ich bin noch recht neu in der scripting welt.
    Also ich gehe mal von aus das du die Variablen meinst wie ich das Adminlevel speichere oder ?
    Und ob man das Switchen muss weiß ich auch nicht genau war halt nur eine vermutung.
    Naja ich gebe dir mal das ganze script als paste da ich nicht wirklich weiß was du für variablen haben möchtest.


    Klick meh !! du

  • Och Mensch wieso gibst du uns dein Adminsystem,
    Du hättest einfach dein enum benutzen sollen ,also
    Befehl deiner Wahl
    string[128] bla bla bla;
    format(string,sizeof(string),"Dein Adminlevel %i (interger),dein enum);
    fertig!Lösch den Pastebin link

  • Forbidden ich habe den Pastebin von mir reingemacht weil ich dir vertraue.
    Nur ich kapiere deine Antwort gerade nicht also das mit enum ect bei mir gibt es kein enum :(
    Hast du Timeviewer ? dann könntest du es mir evt zeigen wäre dir echt danckbar


    Klick meh !! du

  • Du hast doch ein enum oder Variablen die du irgentwie in ein Ini reader speicherst ,oder?
    also wenn du eine Variable hast ,die abfragt welche Level der Admin hat ,kannst du die mit einem Interger vergleichen ,bischen kompliziert für einen Anfänger ,also ein Beispiel:
    format(string,sizeof(string),"Adminlevel = i%(für interger),dann deine Variable die den Adminlevel abfragt ,also ich nehme kurz an PlayerInfo[playerid,[pAdmin]);der fragt ab welches Level der Admin ist ,habe leider kein Teamviewer ,ich kann das auch nicht installieren ,entschuldige!

  • Also 1.) Schon mal ein riesen Lob an dich das du so freundlich hilfst.
    Hätte ich nicht gedacht das es noch so welche hier gibt. 2.) Ja du hast recht das ist sehr verwierend für mich gerade:(
    Alles was in dem script steht von A bis Z habe ich mir müsamm zusammengescriptet mit hilfe von MR.Monat und euch.
    Und nun ärgere ich mich seit 6 Wochen mit einen Adminsystem rumm. Ich bekomme das einfach nicht hin.
    Also ich möchte ein Adminsystem das die Ränge


    Supporter auf Probe
    Supporter
    Moderator
    Super Moderator
    1337 Admin
    Stv. Projektleiter
    Projektleiter


    hat. Nur habe ich dem Mr.Monat nachgescriptet und habe nun ein Adminscript das so ausitt.


    stock LoadAccount(playerid)
    {
    new Userfiles[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Userfiles,sizeof(Userfiles),"/Accounts/%s.ini",name);
    SetPlayerScore(playerid,dini_Int(Userfiles,"Level"));
    GivePlayerMoney(playerid,dini_Int(Userfiles,"Geld"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Userfiles,"Adminlevel"));
    SetPVarInt(playerid,"Fraktion",dini_Int(Userfiles,"Fraktion"));
    SetPVarInt(playerid,"loggedin",1);
    //UserInfo[playerid][Adminlevel]=dini_Int(Userfiles,"Adminlevel");
    //UserInfo[playerid][Fraktion]=dini_Int(Userfiles,"Fraktion");
    return 1;
    }


    stock UserSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    }
    return 1;
    }


    //Adminabfrage
    stock isPlayerAnAdmin(playerid,rang)
    {
    if(GetPVarInt(playerid,"Adminlevel")>=rang)return 1;
    return 0;
    }


    Klick meh !! du

  • Ich mache alles damit ich helfen kann :)
    wie es da schon steht

    stock isPlayerAnAdmin(playerid,rang)
    {
    if(GetPVarInt(playerid,"Adminlevel")>=rang)return 1;
    return 0;
    }
    Damit kannst du abfragen welches Level ein Admin hat ,das hat Mrmonat nicht erwähnt (Pöser ,pöser Bube!)
    also du kannst eine Abfrage zudem hier starten
    [dein Befehl]


    {


    if(GetPVarInt(playerid,"Adminlevel",z.B level 5);


    Dein code


    {


    else //besagt dass der spieler keine Adminlevel 5 hat


    }


    SendClientMessage(playerid,0xFFFFFFFF,"Du bist keine Adminlevel 5!");


    {


    }


  • naja,
    wenn du noch sehr große Probleme hast kannst dich an mir wenden
    ich aknn dir dan auch etwas helfen

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ja so kannst du das mit einem string anwenden,
    Nur ich arbeite nicht mit PVar´s,aber ich kenne mich damit auch ein wenig aus,
    Also musste den Interger also i% eingeben ,und dann zuletzt GetPVarInt("Adminlevel",5 Besipielsweise);

  • Ehm....nein?


    1. Hinter einer If Abfrage kommt KEIN Simikolon.
    2. Die Funktion GetPVarInt(...,...) , kann nur mit 2 Werten verändert werden.


    Es sollte dann eig. so aussehen



    [dein Befehl]


    {


    if(GetPVarInt(playerid,"AdminLevel")==5)
    {
    code
    }


    else //Was passieren soll wenn die If Abfrage nicht stimmt. (Spieler hat nicht Admin Level 5)


    {


    SendClientMessage(playerid,0xFFFFFFFF,"Du bist keine Adminlevel 5!");


    }


    }



    //E:


    Wofür willst du das als Worte gefasst haben? Wenn das als Worte gefasst werden soll, dann könntest du Switch verwenden



    Maddin is my Lord and Master :D
    Musel my one and only b0wm
    Bisafloah is the pokemon that pwns a lot of goddamn ponys.

  • Meine Güte diese sein Gleichzeichen ,sry bin heute bischen Fail ,naja was solls,
    Ich meine ich bin der einzigste der Hilft ,und dann müssen wieder Schlaumeier kommen und meinen Mich koriegieren zu müssen ,
    dann helft ihr doch!

  • Sorry aber ich kapiere das einfach nicht :(
    Ich möchte doch nur das ich anstat zb in den Stats Adminlevel 1 Supporter stehen habe.
    Oder wenn ich /admins mache das dann Alle Admins angezeigt werden mit den rängen Supporter ect und nicht Christof Adminlevel 1


    Klick meh !! du

  • Oh man ich habe dir das 3 mal gesagt ,ich weiß nicht wie ich dir das sonst erklären sollte ...
    Um Admins online sehen zu können ,kannst du z.B ein stock erstellen namens AdminOnline
    Aber das ist einwenig kompliziert für dich ,da müsstest du ein Loop benutzen ,
    also for(new x;x = 0; <MAX_PLAYERS;x++) ungetestet aber so muss es aussehen
    dann den code in den Loop schreiben

  • Für so welche Sachen verwende ich Stocks ,ist mir auch pille palle wie du das machst ,
    Für mich sind stocks für diese Sachen einfach perfekt!
    Naja wenn du den Code schreibst ...Ich mache heute nichts mehr!

  • Ich weiß erlich gesagt nicht mehr was ich machen soll das ihr versteht was ich meine.
    Ich bin kurz davor mein Selfmade Script in die Tonne zu hauen und die sache scripten mir aus den Kopf zu schlagen.
    So eine sch.... eh 6 Verdammte wochen stress pur und nix passiert keiner peilt nur ansatzweise was ich möchte.


    Punkt 2)


    Ich habe Gestern angefangen Fraktionen zu erstellen.
    Ich habe wie immer MrMonat nachgemacht. Ich habe mir eine Fraktion namens Cripz erstellt.
    Und der Fraktion autos zugewissen. Anschliessen habe ich under


    public OnPlayerStateChange eine abfrage gemacht ob ein spieler in einen Frakcar ist als zivi also das er aus dem auto gekickt wird. Das ganze sitt so aus.


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    //Cripz Fahrzeugabfrage
    if(newstate==PLAYER_STATE_DRIVER)
    {
    for(new i=0; i<sizeof(Cripzcar); i++)
    {
    if(GetPlayerVehicleID(playerid)==Cripzcar[i])
    {
    if(GetPVarInt(playerid,"Fraktion")!=1)
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,MRot,"Du bist nicht bei den Cripz.");
    }
    }
    }
    }
    return 1;
    }


    Und einen nuen stock erstellt der so aussit


    stock isPlayerInFrakt(playerid,fraktid)
    {
    if(GetPVarInt(playerid,"Fraktion")==fraktid)return 1;
    return 0;
    }


    Nun habe ich aber das Problem das wenn ich eine weitere Fraktion mache zb Cripz nicht aus dem Cripzcar geschmissen werde wenn ich ein Pasant bin. Wie kann ich machen das ich als Zivi aus allen Fraktionsautos gekikt werde ?


    Klick meh !! du

  • Zu deinem Admin Problem.


    (Ich weiß nicht obs klappt.)


    if(strcmp(cmdtext,"/admins",true)==0)
    {
    ShowAdmins(playerid);
    return 1;
    }



    stock ShowAdmins(playerid)
    {
    new Level[64],string[128];
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(isPlayerAnAdmin(i,1))
    {
    switch(GetPVarInt(i,"AdminLevel"))
    {
    case 1:{Level="Supporter";}
    case 2:{Level="Moderator";}
    case 3:{Level="Admin";}
    case 4:{Level="Super Admin";}
    case 5:{Level="Serverleitung";}
    }
    format(string,sizeof(string),"%i*%s | %s",GetPVarInt(i,"AdminLevel"),SpielerName(i),Level);
    SendClientMessage(playerid,FARBE," ________[Admins]________");
    SendClientMessage(playerid,Farbe,string);
    }
    }
    }
    return 1;
    }



    Maddin is my Lord and Master :D
    Musel my one and only b0wm
    Bisafloah is the pokemon that pwns a lot of goddamn ponys.