Ins Auto ziehen ohne Bedingung

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
  • Abend Leute
    Ich hätte gerne dass man mit /put eine Person in mein Auto ziehen kann.
    Dazu sollte man kein Cop sein müssen & er auch nicht in der Nähe.


    Also keine konkreten Bedingungen. Einfach ins Auto ziehen.


    lg.Mario

  • Ist doch leicht!;)


    ocmd:put(playerid,params[])
    {
    new pID;
    if(sscanf(params,"u",pID))
    {
    return SendClientMessage(playerid,COLOR_GREY,"Bitte gebe die PlayerID ein!");
    }
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,COLOR_GREY,"Spieler ist nicht online!");
    }
    PutPlayerInVehicle(pID,GetPlayerVehicleID(playerid),1);
    return 1;
    }


    Hab ich grad von Freihand geschrieben also ungetestet!
    Dürfte aber funktionieren sofern Du ocmd und sscanf benutzt!


    Mfg, Hardcore


    //Edit:
    Code verbessert
    //Edit2:
    Code nochmal verbessert..sry

  • Wenn ich das so mach kann ich nicht die Playerid auswählen oder?
    Kann ich das so lassen?
    if(strcmp(cmdtext,"/put",true)==0) { new carid = GetPlayerVehicleID(playerid); PutPlayerInVehicle(playerid,carid, 1); }

  • Falke
    1. Doppelpost ist verboten!
    2. Ich hab's Dir doch geschrieben wie es funktioniert!



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


    Und hier ocmd --> KLICK
    Pastebin: KLICK

  • kürzer:


    ocmd:put(playerid,params[])
    {
    new pID;
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,COLOR_GREY,"Bitte gebe die PlayerID ein!");
    else if(IsPlayerConnected(pID)) return SendClientMessage(playerid,COLOR_GREY,"Spieler ist nicht online!");
    else
    {
    PutPlayerInVehicle(pID,GetPlayerVehicleID(playerid),1);
    }
    return 1;
    }



    Ab in den Supporter's Club und einfach nichts Wissen
    Sowas nennt sich Supporter
    :thumbdown:

  • Besser:



    if(strcmp(cmd, "/put", true) == 0)
    {


    tmp = strtok(cmdtext, idx);
    if(!tmp[0])return SendClientMessage(playerid, DEINE_FARBE, "Verwendung: /put [playerid/Name]");
    new pId = ReturnUser(tmp);
    if(!IsPlayerConnected(pId))return SendClientmessage(playerid, DEINE_FARBE, "Dieser Spieler ist offline.");
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, DEINE_FARBE, "Du sitzt in keinem Fahrzeug.");
    PutPlayerInVehicle(pId, GetPlayerVehicleID(playerid), 1);
    return true;
    }

    RFT