Beiträge von Martino_Bullentino

    Nimm am besten eine Funktion, da du die "AdminNachricht" denke ich mal noch häufig brauchen wirst ;D



    public AdminNachricht(color,const string[],level)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if (PlayerInfo[i][pAdmin] >= level)
    {
    SendClientMessage(i, color, string);
    }
    }
    }
    return 1;
    }

    Doch SetPlayerAttachedObject() hilft dir sehr wohl weiter. Du musst ledeglich die Object ID dieser Maske finden und fertig.



    ocmd:maske(playerid,params[])
    {
    if(Maske[playerid] == 0)
    {
    for(new i = 0; i < MAX_PLAYERS; i++) ShowPlayerNameTagForPlayer(i, playerid, 0);
    SendClientMessage(playerid,gelb,"Du hast dir eine Maske aufgesetzt");
    SetPlayerAttachedObject(playerid, 1, ~~~, 2); //Fügt dem Spieler auf Slot 1, auf dem [Kopf ein Objekt hinzu.
    Maske[playerid] = 1;
    }
    else if(Maske[playerid] == 1)
    {
    for(new i = 0; i < MAX_PLAYERS; i++) ShowPlayerNameTagForPlayer(i, playerid, 1);
    SendClientMessage(playerid,gelb, "Du hast deine Maske abgesetzt");
    RemovePlayerAttachedObject(playerid, 1); // Entfernt das Objekt auf Slot 1 vom Spieler
    Maske[playerid] = 0;
    }
    return 1;
    }


    Hier alle Objekte
    und hier alle Stellen an denen du ein Objekt anheften kannst

    Du fragst ab ob er gebannt ist und wenn ja kickst du ihn? Du musst die Variable auf 1 setzten und dann bannen



    ocmd:ban(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,ROT,"[ERROR] Du bist kein Admin Rang 2!");
    new pID, reason[128], string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,BLAU,"[ERROR] Eingeben: /ban [ID] [Grund]");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gebannt. Grund: %s",pSpielerName(pID),pSpielerName(playerid),reason);
    SendClientMessageToAll(ROT,string);
    GetPlayerName(pID,string,sizeof(string));
    mysql_SetInt("accounts", "Banned",1, "Name",pSpielerName(pID));
    Kick(pID);
    return 1;
    }


    Dir wird das hier helfen ;D GetVehicleModel()


    SetPlayerScore(playerid,dini_Get(Spieler,"Level"));
    sSpieler[playerid][Adminlevel] = dini_Get(Spieler,"Adminlevel");
    sSpieler[playerid][Level] = dini_Get(Spieler,"Level");


    Fehlte eine Klammer!
    SetPlayerScore(playerid,dini_Get(Spieler,"Level"));

    Hier die Funktion Name()
    Die kommt ca. ans Ende vom Script.


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



    Und hier die SSCANF Funktion



    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':
    {


    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;
    foreach (Player, 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;
    }

    ...




    ocmd:supp(playerid,params[])
    {
    new pID,text[256], string[256];
    if (PlayerInfo[playerid][pAdmin] >= 1)
    {
    if(sscanf(params,"us",pID,text)) return SendClientMessage(playerid,weiß,"/supp [ID] [Nachricht]");
    format(string,sizeof(string),"[Admin] %s sagt: %s",Name(playerid),text);
    SendClientMessage(pID,orange,string);
    SendClientMessage(playerid,orange,string);
    }
    return 1;
    }


    Sollte eig. das sein was du willst