Kleines Adminsystem

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
  • Ich habe aus langeweile ein kleines Adminsystem gebastelt :D


    Zudem enthält es ein Umfangreiches Log-System!


    PASTEBIN: http://pastebin.com/yRa1pbd6

    DIE BEFEHLE
    /kick
    /ban
    /goto
    /gethere
    /slap
    /freeze
    /unfreeze


    Wenn etwas nicht geht, hier ins Thema schreiben, das System ist UNGETESTET! Ich werde KEINEN Support per PN leiseten, nur HIER IM THEMA!
    Es ist kein © drinne, bringt eh nix und is eh nur ne 5min Arbeit (für erfahrere Scripter!)


    VIEL SPAß DAMIT!

    Code

    #include <a_samp>
    #include <ocmd>
    #include <mysql>

    Code
    enum playerdata
    {
    aName,
    aadmin,
    abanned
    }
    new aSpieler[MAX_PLAYERS][playerdata];

    Code
    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Kleines Adminsystem");
    print("--------------------------------------\n");
    return 1;
    }

    Code
    public OnFilterScriptExit()
    {
    return 1;
    }

    Code
    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    return 1;
    }

    Code
    public OnPlayerConnect(playerid)
    {
    SpielerLaden(playerid);
    if(aSpieler[playerid][abanned] >= 0)
    {
    SendClientMessage(playerid,0xFF0000FF,"Du bist gebannt!");
    playerkick(playerid);
    }
    return 1;
    }

    Code
    ocmd:gethere(playerid, params[])
    {
    new id, str[128], Float:X, Float:Y, Float:Z;
    if(aSpieler[playerid][aadmin] < 1)return SendClientMessage(playerid, 0xFF0000FF,"Du bist kein Admin!");
    if(sscanf(params,"u",id))return SendClientMessage(playerid,0xFF0000FF,"/gethere <ID/Name>");
    GetPlayerVirtualWorld(playerid);
    SetPlayerVirtualWorld(id,GetPlayerVirtualWorld(playerid));
    GetPlayerPos(playerid,X,Y,Z);
    SetPlayerPos(id,X,Y,Z);
    format(str,sizeof(str),"%s hat %s zu sich geportet",SpielerName(playerid),SpielerName(id));
    return 1;
    }

    Code
    ocmd:goto(playerid, params[])
    {
    new id, str[128], Float:X, Float:Y, Float:Z;
    if(aSpieler[playerid][aadmin] < 1)return SendClientMessage(playerid, 0xFF0000FF,"Du bist kein Admin!");
    if(sscanf(params,"u",id))return SendClientMessage(playerid,0xFF0000FF,"/goto <ID/Name>");
    SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(id));
    GetPlayerPos(id,X,Y,Z);
    SetPlayerPos(playerid,X,Y,Z);
    format(str,sizeof(str),"%s hat %s zu sich geportet",SpielerName(playerid),SpielerName(id));
    return 1;
    }

    Code
    ocmd:ban(playerid,params[])
    {
    new str[128],ID;
    if(aSpieler[playerid][aadmin] < 1)return SendClientMessage(playerid,0xFF0000FF,"Du bist kein Admin des Ranges");
    if(sscanf(params, "uz",ID,str))return SendClientMessage(playerid,0xFF0000FF,"/ban [ID/Name] [Grund]");
    if(!IsPlayerConnected(ID))return SendClientMessage(playerid,0xFF0000FF,"Dieser Spieler ist nicht online");
    if(ID == playerid)return SendClientMessage(playerid,0xFF0000FF,"Du kannst dich nicht selber bannen");
    if(IsPlayerNPC(ID))return SendClientMessage(playerid,0xFF0000FF,"Du kannst keinen NPC bannen");
    {
    new str2[128];
    format(str2,sizeof(str2),"AdmCmd:%s wurde von %s gebannt! Grund: %s",SpielerName(ID),SpielerName(playerid),str);
    SendClientMessageToAll(0xFF0000FF,str2);
    aSpieler[ID][abanned] = 1;
    SpielerSpeichern(ID);
    BanEx(ID,str);
    Log("Logs/ban.txt",str);
    }
    return 1;
    }

    Code
    ocmd:freeze(playerid, params[])
    {
    new id, str[128];
    if(aSpieler[playerid][aadmin] <= 1)return SendClientMessage(playerid, 0xFF0000FF,"Du bist kein Admin!");
    if(sscanf(params,"uz",id,str))return SendClientMessage(playerid,0x0000FFFF,"Benutzung: /freeze <ID/Name> <Grund>");
    TogglePlayerControllable(playerid,false);
    format(str,sizeof(str),"%s wurde von %s eingefroren",SpielerName(id),SpielerName(playerid));
    Log("Logs/freeze.txt",str);
    return 1;
    }

    Code
    ocmd:unfreeze(playerid, params[])
    {
    new id, str[128];
    if(aSpieler[playerid][aadmin] <= 1)return SendClientMessage(playerid, 0xFF0000FF,"Du bist kein Admin!");
    if(sscanf(params,"uz",id,str))return SendClientMessage(playerid,0x0000FFFF,"Benutzung: /unfreeze <ID/Name> <Grund>");
    TogglePlayerControllable(playerid,true);
    format(str,sizeof(str),"%s wurde von %s entfroren",SpielerName(id),SpielerName(playerid));
    Log("Logs/unfreeze.txt",str);
    return 1;
    }

    Code
    ocmd:slap(playerid, params[])
    {
    new id, str[128],Float:X, Float:Y, Float:Z;
    if(aSpieler[playerid][aadmin] <= 1)return SendClientMessage(playerid, 0xFF0000FF,"Du bist kein Admin!");
    if(sscanf(params,"u",id))return SendClientMessage(playerid,0x0000FFFF,"Benutzung: /slap <ID/Name>");
    GetPlayerPos(id,X,Y,Z);
    SetPlayerPos(id,X,Y,Z+7.5);
    format(str,sizeof(str),"%s wurde von %s geslappt");
    Log("Logs/slap.txt",str);
    return 1;
    }

    Code
    ocmd:kick(playerid,params[])
    {
    new str[128],ID;
    if(aSpieler[playerid][aadmin] <= 1)return SendClientMessage(playerid, 0xFF0000FF,"Du bist kein Admin!");
    if(sscanf(params, "uz",ID,str))return SendClientMessage(playerid,0xFF0000FF,"/kick [ID/Name] [Grund]");
    if(!IsPlayerConnected(ID))return SendClientMessage(playerid,0xFF0000FF,"Dieser Spieler ist nicht online");
    if (ID == playerid)return SendClientMessage(playerid,0xFF0000FF,"Du kannst dich nicht selber kciken");
    if(IsPlayerNPC(ID))return SendClientMessage(playerid,0xFF0000FF,"Du kannst keinen NPC kicken");
    if(aSpieler[playerid][aadmin] <= 1)return SendClientMessage(playerid,0xFF0000FF,"Du bist kein Admin");
    {
    new str2[128];
    format(str2,sizeof(str2),"AdmCmd:%s wurde von %s gekickt! Grund: %s",SpielerName(ID),SpielerName(playerid),str[0]);
    SendClientMessageToAll(0xFF0000FF,str2);
    Log("Logs/kick.txt",str2);
    }
    return 1;
    }

    Code
    stock kickplayer(playerid)
    {
    SetTimerEx("playerkick",100,0,"d",playerid);
    }

    Code
    forward playerkick(playerid);
    public playerkick(playerid)
    {
    Kick(playerid);
    }

    Code
    stock sscanf(string[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(string))
    #else
    if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    stringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (string[stringPos] && string[stringPos] <= ' ')
    {
    stringPos++;
    }
    while (paramPos < paramCount && string[stringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = string[stringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = string[++stringPos];
    }
    do
    {
    stringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = string[stringPos];
    do
    {
    stringPos++;
    switch (ch)
    {
    case 'x', 'X':
    {
    num = 0;
    continue;
    }
    case '0' .. '9':
    {
    num = (num << 4) | (ch - '0');
    }
    case 'a' .. 'f':
    {
    num = (num << 4) | (ch - ('a' - 10));
    }
    case 'A' .. 'F':
    {
    num = (num << 4) | (ch - ('A' - 10));
    }
    default:
    {
    return -1;
    }
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, string[stringPos++]);
    }
    case 'f':
    {

    Code
    new changestr[16], changepos = 0, strpos = stringPos;
    while(changepos < 16 && string[strpos] && string[strpos] != delim)
    {
    changestr[changepos++] = string[strpos++];
    }
    changestr[changepos] = '\0';
    setarg(paramPos,0,_:floatstr(changestr));
    }
    case 'p':
    {
    delim = format[formatPos++];
    continue;
    }
    case '\'':
    {
    new
    end = formatPos - 1,
    ch;
    while ((ch = format[++end]) && ch != '\'') {}
    if (!ch)
    {
    return -1;
    }
    format[end] = '\0';
    if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    stringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = stringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = string[++end]) && ch != delim)
    {
    if (num)
    {
    if ('0' <= ch <= '9')
    {
    id = (id * 10) + (ch - '0');
    }
    else
    {
    num = false;
    }
    }
    }
    if (num && IsPlayerConnected(id))
    {
    setarg(paramPos, 0, id);
    }
    else
    {
    #if !defined foreach
    #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
    #define __SSCANF_FOREACH__
    #endif
    string[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - stringPos;
    for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, string[stringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    string[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    stringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = string[stringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = string[stringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    stringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
    {
    stringPos++;
    }
    while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
    {
    stringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }

    Code
    stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }

    Code
    stock Log(filename[],write[])
    {
    new File:LogFile, str[256], mhour, mminute, msecond, myear, mmonth, mday;
    if(fexist(filename))
    {
    LogFile = fopen(filename,io_append);
    }
    else
    {
    LogFile = fopen(filename,io_write);
    }
    gettime(mhour,mminute,msecond);
    getdate(myear,mmonth,mday);
    format(str,sizeof(str),"[d.d.%d] [d:d:d]: %s\n",mday,mmonth,myear,mhour,mminute,msecond,write);
    fwrite(LogFile,str);
    fclose(LogFile);
    }

    Code
    stock mysql_GetString(Table[], Field[], Where[], Is[])
    {
    new query[128], Get[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT %s FROM %s WHERE %s = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    return Get;
    }

    Code
    stock mysql_GetInt(Table[], Field[], Where[], Is[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT %s FROM %s WHERE %s = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    new sqlint = mysql_fetch_int();
    mysql_free_result();
    return sqlint;
    }

    Code
    stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])
    {
    new query[128], Float:sqlfloat;
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT %s FROM %s WHERE %s = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_float(sqlfloat);
    mysql_free_result();
    return sqlfloat;
    }

    Code
    stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Where2, Where2);
    format(query, 128, "UPDATE %s SET %s = '%d' WHERE %s = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }

    Code
    stock mysql_SetString(Table[], Field[], To[], Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(To, To);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Where2, Where2);
    format(query, 128, "UPDATE %s SET %s = '%s' WHERE %s = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }

    Code
    stock mysql_SetFloat(Table[], Field[], Float:To, Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Where2, Where2);
    format(query, 128, "UPDATE `%s` SET `%s` = '%f' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }

    Code
    stock SpielerLaden(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, aSpieler[playerid][aName], MAX_PLAYER_NAME);
    aSpieler[playerid][aadmin] = mysql_GetInt("LittleAdmin", "Admin", "Name", aSpieler[playerid][aName]);
    aSpieler[playerid][abanned] = mysql_GetInt("LittleAdmin", "Gebannt", "Name", aSpieler[playerid][aName]);
    }
    return 1;
    }

    Code
    stock SpielerSpeichern(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    GetPlayerName(playerid, aSpieler[playerid][aName], MAX_PLAYER_NAME);
    mysql_SetInt("LittleAdmin", "Admin", aSpieler[playerid][aadmin], "Name", aSpieler[playerid][aName]);
    mysql_SetInt("LittleAdmin", "Gebannt", aSpieler[playerid][abanned], "Name", aSpieler[playerid][aName]);
    }
    }
    return 1;
    }

    SQL

    Code
    -- phpMyAdmin SQL Dump-- version 3.5.2.2-- http://www.phpmyadmin.net---- Host: 127.0.0.1-- Erstellungszeit: 27. Apr 2013 um 02:41-- Server Version: 5.5.27-- PHP-Version: 5.4.7SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";SET time_zone = "+00:00";-- ------------------------------------------------------------ Tabellenstruktur für Tabelle `accounts`--CREATE TABLE IF NOT EXISTS `LittleAdmin` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `Name` varchar(24) NOT NULL,  `Admin` int(11) NOT NULL DEFAULT '0',  `Gebannt` int(11) NOT NULL DEFAULT '0',  PRIMARY KEY (`id`)) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=225 ;

    SQL


    • Edits

      Virtual Worlds werden bei /goto & /gethere beachtet und gesetzt

  • Sieht soweit ganz gut aus.
    Ist zwar nichts besonderes, aber da können sich die Anfänger sicher mal was abschauen. :P


    Was ich cool finden würde, ist wenn du das ganze nicht mit Befehlen, sondern mit OnPlayerClickPlayer machen würdest. :)


    Gruß,
    Neo. :)


  • Mach ich gerade fertig, danke :)


    Sieht soweit ganz gut aus.
    Ist zwar nichts besonderes, aber da können sich die Anfänger sicher mal was abschauen. :P


    Was ich cool finden würde, ist wenn du das ganze nicht mit Befehlen, sondern mit OnPlayerClickPlayer machen würdest. :)


    Gruß,
    Neo. :)


    Kann ich gerne noch machen :)

  • Die Reihenfolge wie du bestimmte Sachen abfragst gefallen mir gar nicht.


    Ein Besipiel:


    if(sscanf(params,"u",id))return SendClientMessage(playerid,0xFF0000FF,"/gethere <ID/Name>");
    if(aSpieler[playerid][aadmin] <= 1)return SendClientMessage(playerid, 0xFF0000FF,"Du bist kein Admin!");


    Würde wenn ich es richtig in Erinnerung habe, wenn du kein Administartor bist bei einer falsch eingabe erst die Nachricht der Abfrage für sscanf zeigen und dann das er kein Amdinistartor ist.


    Zudem würde dieser Befehl nur funktionieren wenn man Adminrank 2 hat da:


    if(aSpieler[playerid][aadmin] <= 1) bezweckt, dass wenn er kleiner als 1 oder gleich 1 ist die Nachricht returnt wird, sollte der Befehl ab Level eins sein sollen müsstest du:


    if(aSpieler[playerid][aadmin] <1) machen, sollte er ab Level 2 sein, wäre dies einfacher:


    if(aSpieler[playerid][aadmin] <2) da hier einfach nur abgefragt wird ob er einen kleineren Adminrank als 2 hat.


    PS: Habe jetzt nicht das ganze Script durchgeschaut, aber solltest schon von dem was ich sah sehr stark daran arbeiten.

  • Sieht soweit ganz gut aus.
    Ist zwar nichts besonderes, aber da können sich die Anfänger sicher mal was abschauen. :P


    Was ich cool finden würde, ist wenn du das ganze nicht mit Befehlen, sondern mit OnPlayerClickPlayer machen würdest. :)


    Gruß,
    Neo. :)


    Habe jetzt ein bisschen an der Reihenfolge gearbeitet :D


    Script speichert nun in eine MySQL Datenbank!

  • Warum zum Teufel:


    stock Freeze(playerid)
    {
    TogglePlayerControllable(playerid,false);
    }


    stock Unfreeze(playerid)
    {
    TogglePlayerControllable(playerid,true);
    }


    ^Sind sinnlose Zeilen..


    Alt:


    ocmd:freeze(playerid, params[])
    {
    new id, str[128];
    if(aSpieler[playerid][aadmin] <= 1)return SendClientMessage(playerid, 0xFF0000FF,"Du bist kein Admin!");
    if(sscanf(params,"uz",id,str))return SendClientMessage(playerid,0x0000FFFF,"Benutzung: /freeze <ID/Name> <Grund>");
    Freeze(id);
    format(str,sizeof(str),"%s wurde von %s eingefroren",SpielerName(id),SpielerName(playerid));
    Log("Logs/freeze.txt",str);
    return 1;
    }


    ocmd:unfreeze(playerid, params[])
    {
    new id, str[128];
    if(aSpieler[playerid][aadmin] <= 1)return SendClientMessage(playerid, 0xFF0000FF,"Du bist kein Admin!");
    if(sscanf(params,"uz",id,str))return SendClientMessage(playerid,0x0000FFFF,"Benutzung: /unfreeze <ID/Name> <Grund>");
    Unfreeze(id);
    format(str,sizeof(str),"%s wurde von %s entfroren",SpielerName(id),SpielerName(playerid));
    Log("Logs/unfreeze.txt",str);
    return 1;
    }


    Neu:


    ocmd:freeze(playerid, params[])
    {
    new id, str[128];
    if(aSpieler[playerid][aadmin] <= 1)return SendClientMessage(playerid, 0xFF0000FF,"Du bist kein Admin!");
    if(sscanf(params,"uz",id,str))return SendClientMessage(playerid,0x0000FFFF,"Benutzung: /freeze <ID/Name> <Grund>");
    TogglePlayerControllable(playerid,false);
    format(str,sizeof(str),"%s wurde von %s eingefroren",SpielerName(id),SpielerName(playerid));
    Log("Logs/freeze.txt",str);
    return 1;
    }


    ocmd:unfreeze(playerid, params[])
    {
    new id, str[128];
    if(aSpieler[playerid][aadmin] <= 1)return SendClientMessage(playerid, 0xFF0000FF,"Du bist kein Admin!");
    if(sscanf(params,"uz",id,str))return SendClientMessage(playerid,0x0000FFFF,"Benutzung: /unfreeze <ID/Name> <Grund>");
    TogglePlayerControllable(playerid,true);
    format(str,sizeof(str),"%s wurde von %s entfroren",SpielerName(id),SpielerName(playerid));
    Log("Logs/unfreeze.txt",str);
    return 1;
    }


    Zeilenunterschied im Befehl = 0, gesparrte Zeilen da 2 sinnlose Stocks wegfallen = 8.


    PS: Sorry aber du musst GANZ GANZ dringend selber Scripten lernen, da dies für mich immer mehr nach C+P aussieht....

  • Das kann gut sein, aber in der Weiterentwicklung des Scripts brauche ich das so, weil ich sonst durcheinander komme :D


    Willst du mich rollen? Du solltest dir einfach einen Tab mit der Wiki öffnen, dann brauchst du solche hirnlosen und sinnlosen stocks nicht. Wer hat dir den so nen Mist beigebracht? Sorry das ich es so sage aber du solltest wirklich einmal andere Adminsysteme anschauen VOR allem welche vom Englischem Forum. auch da gibt es kleine System welche 1000 Mal besser sind als das was ich hier zu Gesicht bekomme...

  • Willst du mich rollen? Du solltest dir einfach einen Tab mit der Wiki öffnen, dann brauchst du solche hirnlosen und sinnlosen stocks nicht. Wer hat dir den so nen Mist beigebracht? Sorry das ich es so sage aber du solltest wirklich einmal andere Adminsysteme anschauen VOR allem welche vom Englischem Forum. auch da gibt es kleine System welche 1000 Mal besser sind als das was ich hier zu Gesicht bekomme...


    Habs ja schon verbessert... :thumbup:

  • Sorry aber ich find hier mehr und mehr Mist...


    if(aSpieler[playerid][abanned] >= 0)
    {
    SendClientMessage(playerid,0xFF0000FF,"Du bist gebannt!");
    playerkick(playerid);
    }


    Du überprüfst hier ob deine Variable gleich oder größer als 0 ist . Hallo einmal darüber nachgedacht?? Du kickst hier auch Spieler die NICHT gebannt sind.


    Wenn dann so:


    if(aSpieler[playerid][abanned] > 0)
    {
    SendClientMessage(playerid,0xFF0000FF,"Du bist gebannt!");
    playerkick(playerid);
    }


    Oder so:


    if(aSpieler[playerid][abanned] == 1)
    {
    SendClientMessage(playerid,0xFF0000FF,"Du bist gebannt!");
    playerkick(playerid);
    }


    So ich werde jetzt zu meiner Wertung kommen, die Begründungen stehen alle in meinen vorherigen Posts.


    0/10

    Einmal editiert, zuletzt von ulbi1990 ()


  • gettime(mhour,mminute,msecond);
    getdate(myear,mmonth,mday);
    format(str,sizeof(str),"[d.d.%d] [d:d:d]: %s\n",mday,mmonth,myear,mhour,mminute,msecond,write);
    fwrite(LogFile,str);
    fclose(LogFile);

    Du hast bei der Zeitangabe überall die % vor dem d vergessen


  • Bei mir sind die 8|


    Log
    stock Log(filename[],write[])
    {
    new File:LogFile, str[256], mhour, mminute, msecond, myear, mmonth, mday;
    if(fexist(filename))
    {
    LogFile = fopen(filename,io_append);
    }
    else
    {
    LogFile = fopen(filename,io_write);
    }
    gettime(mhour,mminute,msecond);
    getdate(myear,mmonth,mday);
    format(str,sizeof(str),"[%02d.%02d.%d] [%02d:%02d:%02d]: %s\n",mday,mmonth,myear,mhour,mminute,msecond,write);
    fwrite(LogFile,str);
    fclose(LogFile);
    }