Autos Porten mit der Dazugehörigen ID

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
  • Nutze:


    OnPlayerCommandText
    strcmp
    strtok


    Erst selber probieren ;)

    Unkompetent. Das neue dynamisch.



    ihr seit schon lustig postet erros aber nicht die zeilen wo sie sind dann können wir euch auch nicht helfen^^


    Lernt Scripten, Leute, und macht eure Augen auf!


    _______________________________________
    50 Beiträge: [x] 300 Beiträge: [x]
    100 Beiträge: [x] 500 Beiträge: [x]
    150 Beiträge: [x] 1000 Beiträge: [x]
    200 Beiträge: [x]
    2000 Beiträge: []
    250 Beiträge: [X] Boardaktivitäten: Profil


    [size=36]_______________________________________

    /Edit: Schmerzt es dir eigentlich nicht so ein Müll zu schreiben 8|

  • Das steht da doch nirgens drin? Oder?


    ich habs so, benutze aber zcmd


    #include <sscanf>
    #include <zcmd>


    COMMAND:getveh(playerid,params[])
    {
    new ID, Float:vehpos[3];
    if(sscanf(params, "d",ID)) return SendClientMessage(playerid,0x008080FF, "/gotoveh [vehicleid]");
    if(IsPlayerAdmin(playerid)
    {
    GetPlayerPos(playerid, vehpos[0], vehpos[1], vehpos[2]);
    SetVehiclePos(ID, vehpos[0], vehpos[1]-5, vehpos[2]);
    }
    else return SendClientMessage(playerid, 0x008080FF, "Nur für Admins");
    return 1;
    }

  • Da kommt das :



    C:\Program Files (x86)\Rockstar Games\filterscripts\porten.pwn(95) : error 017: undefined symbol "sscanf"
    C:\Program Files (x86)\Rockstar Games\filterscripts\porten.pwn(102) : warning 217: loose indentation
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Was kann ich machen?
    Außerdem habe ich das so abgeändert:



    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/getveh", cmdtext, true, 10) == 0)
    {
    new ID, Float:vehpos[3];
    if(sscanf(params, "d",ID)) return SendClientMessage(playerid,0x008080FF, "/getveh [vehicleid]");
    if(IsPlayerAdmin(playerid))
    {
    GetPlayerPos(playerid, vehpos[0], vehpos[1], vehpos[2]);
    SetVehiclePos(ID, vehpos[0], vehpos[1]-5, vehpos[2]);
    }
    else return SendClientMessage(playerid, 0x008080FF, "Nur für Admins");
    return 1;
    }
    return 0;
    }
    Geht das auch so?


    EDIT: kann ich das auch mit ocmd machen?



    Einmal editiert, zuletzt von Janpeter4 ()

  • Ja das geht mit OCMD...


    Hier mal der Code:


    ocmd:getveh(playerid,params[])
    {
    new ID, Float:vehpos[3];
    if(sscanf(params, "d",ID)) return SendClientMessage(playerid,0x008080FF, "/getveh [vehicleid]");
    if(IsPlayerAdmin(playerid))
    {
    GetPlayerPos(playerid, vehpos[0], vehpos[1], vehpos[2]);
    SetVehiclePos(ID, vehpos[0], vehpos[1]-5, vehpos[2]);
    }
    else return SendClientMessage(playerid, 0x008080FF, "Nur für Admins");
    return 1;
    }


    PS: Ungetestet sollte aber eig. gehen.


    MfG. [SPR]Scripter

  • Ja diese Include habe ich schon muss ich dann:
    #include
    so machen?
    und wo muss das hin unter welcher Public?


    EDIT:


    habe die includes alles richitig aber:


    #include <a_samp>
    #include <ocmd>
    #include <sscanf>



    C:\Program Files (x86)\Rockstar Games\filterscripts\porten.pwn(7) : fatal error 100: cannot read from file: "sscanf"


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

  • Oben:


    #include <sscanf>
    #include <ocmd>


    Dann irgendwo im Script aber nicht in nem Public den COmmand von OCMD.


    MfG. [SPR]Scripter

  • Füg einfach dashier im Script ein:


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


    MfG. [SPR]Scripter

  • Einfach den Command von oben etwas umstellen:


    ocmd:gotoveh(playerid,params[])
    {
    new ID, Float:vehpos[3];
    if(sscanf(params, "i",ID)) return SendClientMessage(playerid,0x008080FF, "/gotoveh [vehicleid]");
    if(IsPlayerAdmin(playerid))
    {
    GetVehiclePos(ID, vehpos[0], vehpos[1], vehpos[2]);
    SetPlayerPos(playerid, vehpos[0], vehpos[1]-5, vehpos[2]);
    }
    else return SendClientMessage(playerid, 0x008080FF, "Nur für Admins");
    return 1;
    }

  • Es funktioniert leidernicht mit dem gotoveh ID
    ist da evt. ein fehler drin?


    EDIT:


    Es klappt halb.
    die id 1 z.B geht Id 30 nicht


    Hast du vll eine Idee, was das sein könnte?


    ist der Fehler vll Hier?:


    new ID, Float:vehpos[3]; //Wenn ich das auto her porte ist das so, aber auch wenn ich hin will.
    //muss da vll playerpos hin??



    2 Mal editiert, zuletzt von Janpeter4 ()