Suche ein Auto-System

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 Leute.


    Ich überlege seit längerem, wie ich scripten könnte, dass Admins Autos zu sich SPAWNEN (nicht holen) können.
    Weiß aber nicht wie ich es schreiben soll :(
    Es sollte so gemacht sein:
    -Admins können Autos spawnen (z.B.: /veh [VEH-ID] )
    -Jeder kann damit fahren
    -Admins können das Fahrzeug mit /respawn [vehc-id] neu spawnen
    -Admins können das Fahrzeúg z.B. mit /destroy [VEH-ID] zerstören (also das es nicht mehr existiert)


    Man findet im i-net ja die veh´s IDs. Vielleicht könnte man diese ja im script definieren und somit spawnen (also die selben nummern wie im i-net).
    Und vielleicht könnte man ja auch einen Befehl machen, das man ALLE Fahrzeuge usw neuspawnen kann (z.B: /carrespawn).


    Bitte Hilfe o.o

    Liebe Grüße


    Marcel

  • new Adminauto[MAX_VEHICLES];


    dcmd_v(playerid,params[])
    {
    new vID;
    if(sscanf(params, "d", vID)) return SendClientMessage(playerid,grau,"Benutzung: /v [modelid]");
    if(vID < 400 || vID > 611) return SendClientMessage(playerid,grau,"Nur Vehicle-ID's von 400-611 benutzen!");
    if(Spieler[playerid][Admin] < 3) return 0;
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    new cv = CreateVehicle(vID, x, y, z, 0, 117, 117, -1);
    Adminauto[cv] = 1;
    SetVehicleNumberPlate(cv,"Admin Car");
    SetVehicleHealth(cv,1000.0);
    SetVehicleVirtualWorld(cv,GetPlayerVirtualWorld(playerid));
    PutPlayerInVehicle(playerid,cv,0);
    return 1;
    }


    dcmd_vweg(playerid,params[])
    {
    #pragma unused params
    if(Spieler[playerid][Admin] <= 0) return 0;
    new plv = GetPlayerVehicleID(playerid);
    if(Adminauto[plv] == 1)
    {
    OnVehicleDestroy(plv,playerid);
    DestroyVehicle(plv);
    }
    else
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    SendClientMessage(playerid,grau,"Dieses Fahrzeug kann nur gespawnt werden!");
    }
    else
    {
    SendClientMessage(playerid,grau,"Du sitzt in keinem Fahrzeug!");
    }
    }
    return 1;
    }


    musst du deinem System anpassen, wenn du Hilfe brauchst beim einfügen von dcmd commands, helfe ich dir dabei gerne.


    LG
    Simon

  • 2 Warnings o.o abba danke schonmal.


    Woran liegts? :
    C:\Users\Marcel\Desktop\Reallifeaufbauserver\gamemodes\Reallifeneuaufbau.pwn(3744) : warning 203: symbol is never used: "dcmd_v"
    C:\Users\Marcel\Desktop\Reallifeaufbauserver\gamemodes\Reallifeneuaufbau.pwn(3744) : warning 203: symbol is never used: "dcmd_vweg"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Warnings.

    Liebe Grüße


    Marcel

  • OnPlayerCommandText(playerid,cmdtext[])
    {
    dcmd(v,1,cmdtext);
    dcmd(vweg,4,cmdtext);
    return 1;
    }


    #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1


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

  • Das letzte, ist diese Sscanf das normale sscanf? habe auch eins.


    //edit
    Habe die sachen bei OnPlayerCommandText eingefügt. nun kommt das raus:
    C:\Users\Marcel\Desktop\Reallifeaufbauserver\gamemodes\Reallifeneuaufbau.pwn(1481) : error 017: undefined symbol "grau"
    C:\Users\Marcel\Desktop\Reallifeaufbauserver\gamemodes\Reallifeneuaufbau.pwn(1482) : error 017: undefined symbol "grau"
    C:\Users\Marcel\Desktop\Reallifeaufbauserver\gamemodes\Reallifeneuaufbau.pwn(1483) : error 017: undefined symbol "Spieler"
    C:\Users\Marcel\Desktop\Reallifeaufbauserver\gamemodes\Reallifeneuaufbau.pwn(1483) : warning 215: expression has no effect
    C:\Users\Marcel\Desktop\Reallifeaufbauserver\gamemodes\Reallifeneuaufbau.pwn(1483) : error 001: expected token: ";", but found "]"
    C:\Users\Marcel\Desktop\Reallifeaufbauserver\gamemodes\Reallifeneuaufbau.pwn(1483) : error 029: invalid expression, assumed zero
    C:\Users\Marcel\Desktop\Reallifeaufbauserver\gamemodes\Reallifeneuaufbau.pwn(1483) : fatal error 107: too many error messages on one line


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



    6 Errors.


    //PS: Das mit den fabren (grau) habe ich behoben

    Liebe Grüße


    Marcel

  • wenn du eins hast dann brauchste das nicht. wenn keine errors kommen ist alles richtig.


    unter deinen includes kommt die definierung von dcmd hin und unter OnPlayerCommandText das, was ich gepostet habe. Wenn du bereits stock/pupblic sscanf oder das sscanf 2.0 plugin hast, dann brauchste das nicht mehr.


    //edit: Du musst es deinem Script anpassen!!!


    Die variable "Spieler" ist in deinem script garnicht definiert! das ist eine Admin abfrage. wenn du ein admin system hast, musst du es anpassen.


    ansonsten einfach löschen.


    oben im script folgendes definieren:


    #define grau 0xAFAFAFAF

  • Okay habe eine Sscanf - Stock. Nun kommen abba die errors:
    C:\Users\Marcel\Desktop\Reallifeaufbauserver\gamemodes\Reallifeneuaufbau.pwn(1481) : error 017: undefined symbol "grau"
    C:\Users\Marcel\Desktop\Reallifeaufbauserver\gamemodes\Reallifeneuaufbau.pwn(1482) : error 017: undefined symbol "grau"
    C:\Users\Marcel\Desktop\Reallifeaufbauserver\gamemodes\Reallifeneuaufbau.pwn(1483) : error 017: undefined symbol "Spieler"
    C:\Users\Marcel\Desktop\Reallifeaufbauserver\gamemodes\Reallifeneuaufbau.pwn(1483) : warning 215: expression has no effect
    C:\Users\Marcel\Desktop\Reallifeaufbauserver\gamemodes\Reallifeneuaufbau.pwn(1483) : error 001: expected token: ";", but found "]"
    C:\Users\Marcel\Desktop\Reallifeaufbauserver\gamemodes\Reallifeneuaufbau.pwn(1483) : error 029: invalid expression, assumed zero
    C:\Users\Marcel\Desktop\Reallifeaufbauserver\gamemodes\Reallifeneuaufbau.pwn(1483) : fatal error 107: too many error messages on one line


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



    6 Errors.

    Liebe Grüße


    Marcel

  • Alles behoben. 1 Error:


    C:\Users\Marcel\Desktop\Reallifeaufbauserver\gamemodes\Reallifeneuaufbau.pwn(1502) : error 017: undefined symbol "OnVehicleDestroy"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

    Liebe Grüße


    Marcel

  • dcmd_veh(playerid,params)...


    OnPlayerCommandText(playerid,cmdtext[])
    {
    dcmd(veh,3,cmdtext);
    return 1;
    }


    du musst unter OnPlayerCommandText immer den befehl reinschreiben, die länge des befehls und dahinter cmdtext.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen