Scripting Admin - K.a

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
  • Hey.
    Ich habe grad ein Freeroam Script bis in die Alpha Version gescriptet.
    Nur gerade weiß ich leider nicht wie ich admin systeme erstellen kann.
    Ich frage mich nur wie ich diese if[PlayerInfo] bla bla wisse.
    Hier mein Code:
    stock Register(playerid,key[])//Wir benötigen die Parameter Playerid, sowie key, wobei key das passwort des Users sein soll.....)
    {
    new Spielerdatei[64];//Wir erstelllen uns eine neue Spielerdatei, in der die Daten des Spielers gespeichert werden sollen
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",SpielerName(playerid)); //Wir formatieren die Spielerdatei um, und sagen so dem Script , dass die Daten in dem Scriptfiles Ordner unseres Servers im Ordner "Accounts" gespeichert werden sollen....(Man kann auch /Accounts/%s.txt nehmen,wobei ich .ini jedoch schöner finde..%s ist der String zum Abfragen des Spielernamens...
    dini_Create(Spielerdatei); //Hier wird die Dini-datei erstellt
    dini_Set(Spielerdatei,"Passwort",key); //In die Spielerdatei soll das Passwort gesetzt werden
    SendClientMessage(playerid,0xFFFFFFFF,"Du hast dich erfolgreich registriert."); //Die Message die kommt ,wenn man sich erfolgreich registriert hat.....
    dini_IntSet(Spielerdatei,"Score",0); //Wir setzen in die Datei das Score 0
    dini_IntSet(Spielerdatei,"Banned",0); //Wir setzen Banned auf 0 = Nicht gebannt 1=Gebannt
    dini_IntSet(Spielerdatei,"Adminlevel",0); //Wir setzen das Adminlevel auf 0
    dini_IntSet(Spielerdatei,"Points",0); //Wir setzen die Fraktion auf 0 = Zivilisten bzw. keine Fraktion
    dini_IntSet(Spielerdatei,"Geld",0); //Wir setzen das Geld auf 0
    SetPVarInt(playerid,"loggedin",1); //Hier setzen wir die Variable, ob der Spieler eingeloggt ist auf 1, um Sie später wieder abfragenzukönnen...
    return 1;
    }


    stock SpielerLaden(playerid)
    {
    new Spielerdatei[128]; //Wie immer
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",SpielerName(playerid));
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Score")); //Level wird aus der Userdatei abgefragt und ihm dann gegeben
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld")); //Genauso das Geld
    SetPVarInt(playerid,"Points",dini_Int(Spielerdatei,"Points")); //Genauso die Fraktion
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel")); //Genauso das Admin-Level
    SetPVarInt(playerid,"loggedin",1); //Loggedin wird wieder auf 1 gesetzt ...
    SetPVarInt(playerid,"Banned",dini_Int(Spielerdatei,"Banned")); //Genauso mit Banned
    if(GetPVarInt(playerid,"Banned")==1) //Falls der User gebannt ist
    {
    SendClientMessage(playerid,ROT,"Du kannst mit diesem Account nicht spielen, da du gebannt bist.\nBei Fragen oder Einwänden melde dich bei einem Admin"); //Nachricht an User
    Kick(playerid); //wird er beim Login vom Server gekickt...
    return 1;
    }
    return 1;
    }


    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1) //Falls er eingeloggt war, um nicht unnötig Ressourcen zu verbrauchen....
    {
    new Spielerdatei[128]; //Spielerdatei
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.ini",SpielerName(playerid));
    dini_IntSet(Spielerdatei,"Score",GetPlayerScore(playerid)); //In die Userdatei wird das abgefrage Level gespeichert
    dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel")); //Das Adminlevel
    dini_IntSet(Spielerdatei,"Points",GetPVarInt(playerid,"Points")); //Die Points
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid)); //das Geld
    dini_IntSet(Spielerdatei,"Banned",GetPVarInt(playerid||playerid,"Banned"));
    return 1;
    }
    return 1;
    }


    Was muss ich ganz oben bei /kick einstellen dass nur ein Admin /kick benutzen kann?? :?


    Danke im vorraus.



    MfG

  • wie kann man ein ganzes Script scripten wenn man dieses Basiswissen nicht verwendet hat?
    Soll jetzt keine blöde anmache sein oder so. Ist halt nur ne Frage


    Ich kann scripten. Nur halt habe ein Tutorial fürs login register genommen weil ich keine Zeit hatte.
    Und da hatten die nicht gezeigt was ich benutzen soll.


    edit:
    jetzt bekomme ich ein warning:
    C:\Users\Home\Desktop\It's you Freeroam\gamemodes\IyF.pwn(2069) : warning 209: function "ocmd_restart" should return a value
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.


    Code:
    ocmd:restart(playerid,params[])
    {
    if(GetPVarInt(playerid,"Adminlevel") >1)
    {
    new time, name[MAX_PLAYER_NAME], string[100];
    GetPlayerName(playerid,name,sizeof(name));
    if(sscanf(params,"i",time)) return SendClientMessage(playerid,-1,"Nutzung: /restart [Zeit in Sekunden]");
    format(string,sizeof(string),"Der Server wird in %i Sekunden von %s restartet.",time, name);
    SetTimer("RestartTime",time*1000,false); // Warum x1000? Ganz einfach. Pawno nimmt Timer nur als Millisekunden "wahr". Und da ja SEKUNDEN im Befehl eingeben werden, müssen wir diese wiederrum mit 1000 mal nehmen. Sollte verständlich sein.
    SendClientMessageToAll(-1,string); // Sollte sich auch von selbst erklären. Die Nachricht mit dem Inhalt des Formatierten Strings wird an alle Spieler gesendet.
    return 1;
    }
    }

  • ocmd:restart(playerid,params[])
    {
    if(GetPVarInt(playerid,"Adminlevel") >1)
    {
    new time, name[MAX_PLAYER_NAME], string[100];
    GetPlayerName(playerid,name,sizeof(name));
    if(sscanf(params,"i",time)) return SendClientMessage(playerid,-1,"Nutzung: /restart [Zeit in Sekunden]");
    format(string,sizeof(string),"Der Server wird in %i Sekunden von %s restartet.",time, name);
    SetTimer("RestartTime",time*1000,false); // Warum x1000? Ganz einfach. Pawno nimmt Timer nur als Millisekunden "wahr". Und da ja SEKUNDEN im Befehl eingeben werden, müssen wir diese wiederrum mit 1000 mal nehmen. Sollte verständlich sein.
    SendClientMessageToAll(-1,string); // Sollte sich auch von selbst erklären. Die Nachricht mit dem Inhalt des Formatierten Strings wird an alle Spieler gesendet.
    }
    return 1;
    }
    das return 1; kommt vor die letzte klammer