Admin Reapair

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 Scripter,


    Ich suche nen Command mit dem ein Rcon Admin wen er /arep eingibt dann die id vom spieler wo im fahrzeug sitzt welches dann repariert werden soll und dann auf wie viel dl das auto ham soll also so
    /arep [id vom spieler dessen auto repariert werden soll in dem er sitzt] [dl was das fahrzeug haben soll und wenn man nix eingibt also das hier freiläst dann soll es 1000 dl sein]


    wäre coll wenn das jemand kann


    Danke an alle im vorraus.


    wenn es auch vereinfachter geht auch gerne einfachen (ich denke zu schwer weil keine antwort)aber wenn auch so geht wie ich geschrieben hab wäre dennoch geil

    Einmal editiert, zuletzt von asdf ()


  • #include <a_samp>
    #define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(arep,4,cmdtext);
    return 0;
    }
    dcmd_arep(playerid,params[])
    {
    if(IsPlayerAdmin(playerid))
    {
    new pID, vID, float:vhealth;
    vID = GetPlayerVehicleID(pID);
    if(sscanf(params,"if",pID,vhealth)) return SendClientMessage(playerid,0xFF0041FF,"Benutze: /arep [ID] [Health]!");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,0xFF0041FF,"Dieser Spieler ist nicht eingeloggt.");
    if(!IsPlayerInAnyVehicle(pID)) return SendClientMessage(playerid,0xFF0041FF,"Der Spieler ist in keinem Auto.");
    SetVehicleHealth(vID,Float:vhealth);
    SendClientMessage(playerid,0x00FF1EFF,"Du hast das Auto des gewünschten Spielers repariert.");
    }
    else
    {
    SendClientMessage(playerid,0xFF0041FF,"Du bist kein Admin.");
    }



    return 1;
    }


    //sscanf


    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;
    }


    So müsste es gehen! Der lange Stock ist damit sscanf geht!


    LG
    petmax113

  • Geht einfacher:


    if(strcmp("/arepair", cmdtext, true) == 0)
    {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,orange,"Diesen Befehl kannst du nicht nutzen.");//Ob er rcon administ
    {
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,rot,"Du bist in keinem Vehicle.");
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    RepairVehicle(vehicleid);
    SetVehicleHealth(vehicleid, 1000.0);
    SendClientMessage(playerid,weiß,"Das Car wurde repariert.");
    return 1;
    }
    }
    }

    Back to the roots!

  • So, hoffe es klappt:


    if(strcmp("/arepair", cmdtext, true) == 0)
    {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,orange,"Diesen Befehl kannst du nicht nutzen.");//Ob er rcon administ
    {
    new Float:Health,ID;
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,rot,"Du bist in keinem Vehicle.");
    if(!strlen(strget(cmdtext,3))) return SendClientMessage(playerid,blau,"Benutzung: /arepair [ID/Name] [Health]");
    {
    ID = strval(strget(cmdtext,1));
    Health = strval(strget(cmdtext,2));

    new vehicleid = GetPlayerVehicleID(ID);
    RepairVehicle(vehicleid);
    SetVehicleHealth(vehicleid,Health);
    SendClientMessage(playerid,weiß,"Das Car wurde repariert.");
    SendClientMessage(playerid,weiß,"Dein Car wurde repairt.");
    return 1;
    }
    }
    }

    Back to the roots!