Beiträge von shorty123

    hey


    weis jemand warum das nich geht oder obs ne andere zeile gibt um spieler rauszuschmeißen


    hier die stelle



    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(vehicleid == fs1)
    {
    if(drivelesson[playerid] == 1)
    {
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,rot,"Du bist kein Fahrschüler");
    }


    }
    }

    hi


    ich bräuchte schnell die ispassenger abfrage


    also es soll halt bei
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)


    abgefragt werden ob der spieler ein beifahrer ist ich brauch das für mein führerschein system


    thx


    EDIT:


    hat sich erledigt xD


    if(ispassenger)


    einfacher gehts nich oder ;)

    hey


    kann man bei der user.ini auch nach dem key abfragen?


    also praktisch eine if-abfrage (oder so) bei der nur abgefragt ob zb. bei admin=1338 steht, oder ob admin=0 steht..


    sollte es doch geben oder?


    thx

    danke ich werd das noch testen


    ja ich versteh das genau das mit dem string hat mir gefehlt schätz ich


    EDIT: danke gold jetzt gehts perfekt


    EDIT vom EDIT: kann mir noch jemand die abfrage sagen, also eine if abfrage oder so bei der eben überprüft wird ob bei admin 1338 oder 0 steht

    so das problem is großteils behoben


    wenn ich die zeile


    dini_Set("/Spieler/[LSDR]Bl4der.ini", "Admin", "1338");


    schreibe wird in der userdatei von [LSDR]Bl4der Admin=1338 gespeichert...


    aber dann hab ich ja eine bestimmte datei.
    ich will aber dass das admin=1338 immer in der userdatei von dem user gespeichert wird, der zum admin gewählt werden soll, also von der angegebenen id...


    kann mir das jemand posten?


    ausserdem wäre noch gut zu wissen wie die abfrage aussieht also wo abgefragt wird ob admin=1338 da drin steht


    thx


    EDIT:


    dcmd_makeadmin(playerid,params[])
    {


    if(!strlen(params))
    {
    return SendClientMessage(playerid,rot,"Nutze: /makeadmin [playerid]");
    }
    new
    pID=strval(params);
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,rot,"Kein Spieler mit angegebener ID Online");
    }
    dini_Set("/Spieler/[LSDR]Bl4der.ini", "Admin", "1338");
    SendClientMessage(playerid,grün,"Der spieler wurde zum Admin gemacht");
    return 1;
    }


    das is mein makeadmin command

    hi breadfischer...


    ich möcht mir grad ein adminsystem zusammenscripten...


    das sollte so aussehen das ich beim makeadmin command in die user datei admin=1338 reinschreibe und danach bei den befehlen halt abfrage ob das da drin steht.


    hier is mein scriptausschnitt



    dcmd_makeadmin(playerid,params[])
    {


    if(!strlen(params))
    {
    return SendClientMessage(playerid,rot,"Nutze: /makeadmin [playerid]");
    }
    new
    pID=strval(params);
    if(!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid,rot,"Kein Spieler mit angegebener ID Online");
    }
    dini_IntSet("/Spieler/file.ini", "Admin", "1338");
    SendClientMessage(playerid,grün,"Der spieler wurde zum Admin gemacht");
    return 1;
    }



    das einzige problem damit ist, dass es immer wieder in die user datei admin=0 reinschreibt...weis jemand wieso würd mir echt weiterhelfen

    wie baue ich die dcmd und sccanf in den gm ein? also es funktioniert wenn ich es als filterscript unter onplayercommandtext mach, aber wenn ichs in den gm reinmachen will muss ichs ja irgendwie unter die commands ohne parameter bekommen...kann da jemand ein scriptbeispiel posten, oder sonst helfen?


    hab auch schon überlegt ein eigenes public dafür zu erstellen public dcmd oder so ähnlich


    thx

    die dcmd's funktionieren dann nich...


    hab immer jeweils die eine dcmd zeile ins onplayercommand public unten reingeschrieben, und den rest des dcmds ausserhalb eines publics...so geht es aber nicht


    wie kann ich das dcmd in mein gm einbauen?

    ja ich probier das jetzt gleich mal es gibt mal keine errors..


    die normalen commands sind ja dann oben drüber, und von jedem dcmd command is nur noch 1 zeile im public


    EDIT: So gehts leider nicht

    also wenn ich das richtig verstehe hp, dann muss ich nur die zeile dcmd(kick,4,cmdtext); unter das commandpublic einfach reinschreiben und den rest zum kick dcmd irgendwo ins script reinmachen?

    hä?


    ich hatte das immer so



    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(kick,4,cmdtext);
    return 0;
    }


    dcmd_kick(playerid,params[]) {
    new
    sGrund[128],
    pID;
    if(sscanf(params, "ds",pID,sGrund)) {
    return SendClientMessage(playerid,COLOR_RED,"USAGE: /kick [playerid] [grund]");
    }
    if(!IsPlayerConnected(pID)) {
    return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");
    }
    new
    ThePlayer[MAX_PLAYER_NAME],
    string[128];
    GetPlayerName(pID,ThePlayer,sizeof(ThePlayer));
    format(string,sizeof(string),"%s (ID %d) wurde vom Server gekickt,Grund: %s",ThePlayer,pID,sGrund);
    Kick(pID);
    return 1;
    }


    wo kann ich sie sonst reinmachen?

    hey


    also ich hab ein kleines problem


    ich benutze in meinem selfmade 1. die ganzen normalen commands...und für die parameter benutze ich dcmd
    das problem ist wie bekomme ich beides in das onplayercommandtext public rein?


    deswegen wollte ich ein neues public erstellen...
    onplayerdcmdcommand oder sowas ähnliches


    ich hab nämlich keine lust mehr auf blöde fiterscripts


    kann mir jemand erklären wie man ein solches public erstellt

    hi


    also ich bräuchte bitte schnelle hilfe für meinen selfmade


    ich hab im script drinne dass der spieler nach seinem tod ans krankenhaus kommt,



    public OnPlayerDeath(playerid, killerid, reason)
    {
    SetPlayerPos(playerid,1108.6257,-1796.3427,16.5938);
    SendClientMessage(playerid,COLOR_RED,"Dein Arztbesuch kostet dich $200");
    SetPlayerHealth(playerid, 100.0);
    GivePlayerMoney(playerid,-200);


    SetPlayerWantedLevel(killerid,2);
    return 1;
    }



    es funktioniert soweit, also die nachricht wird angezeigt, das leben aufgefüllt, die 200 euro abgezogen...


    blos kommt der spieler immer wieder zurück zu dem spawn seiner fraktion...


    kennt das problem jemand oder kann mir helfen?


    danke schonmal
    shorty

    das untere hat damit nichts zu tuhn...wenn du den oberen teil genau so drin hast wie du ihn gepostet hast, haste nur die klammer vergessen




    {
    dcmd(kick,4,cmdtext);
    return 0;
    }




    noch ein tipp...


    mach die commands bei denen mann die id angeben muss in ein filterscript...ich bekomme auch errors wenn ichs in meinen gm reinmach..

    das is nich schwehr



    unter onplayercommandtext



    {
    dcmd(kick,4,cmdtext);
    return 0;
    }
    dcmd_kick(playerid,params[]) {
    new
    sGrund[128],
    pID;
    if(sscanf(params, "ds",pID,sGrund)) {
    return SendClientMessage(playerid,COLOR_RED,"USAGE: /kick [playerid] [grund]");
    }
    if(!IsPlayerConnected(pID)) {
    return SendClientMessage(playerid,COLOR_RED,"Kein Spieler mit angegebener ID Online");
    }
    new
    ThePlayer[MAX_PLAYER_NAME],
    string[128];
    GetPlayerName(pID,ThePlayer,sizeof(ThePlayer));
    format(string,sizeof(string),"%s (ID %d) wurde vom Server gekickt,Grund: %s",ThePlayer,pID,sGrund);
    Kick(pID);
    return 1;
    }
    */



    und um dcmd zu definieren noch das einfach ganz unten ins script reinkopieren das is die definierung



    /*----------------------------------------------------------------------------*-
    Function:
    sscanf
    Params:
    string[] - String to extract parameters from.
    format[] - Parameter types to get.
    {Float,_}:... - Data return variables.
    Return:
    0 - Successful, not 0 - fail.
    Notes:
    A fail is either insufficient variables to store the data or insufficient
    data for the format string - excess data is disgarded.
    A string in the middle of the input data is extracted as a single word, a
    string at the end of the data collects all remaining text.
    The format codes are:
    c - A character.
    d, i - An integer.
    h, x - A hex number (e.g. a colour).
    f - A float.
    s - A string.
    z - An optional string.
    pX - An additional delimiter where X is another character.
    '' - Encloses a litteral string to locate.
    u - User, takes a name, part of a name or an id and returns the id if they're connected.
    Now has IsNumeric integrated into the code.
    Added additional delimiters in the form of all whitespace and an
    optioanlly specified one in the format string.
    -*----------------------------------------------------------------------------*/
    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 zu den defines noch



    #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



    das waS ICH jetzt geschrieben hab, kannsch reinkopieren und schon hast n kickbefehl