Befehle umschreiben..

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
  • Hi Community,


    ich bräuchte jemanden, der mir die folgenden Befehle auf ocmd umschreibt..ein paar habe ich selbst geschafft, jedoch habe ich die unten aufgeführten Befehle nicht umschreiben können.
    Habe nur jeweils die erste Zeile umgeschrieben


    Es ist ein Gangsystem...was auf strcmp geschrieben war.


    Befehl /gang:

    ocmd:gang(playerid,params[]) {
    new gangcmd, Gang;
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) {
    ShowPlayerGangInfo2Dialog(playerid);
    return 1;
    }
    giveplayerid = strval(tmp);
    if(strcmp(tmp, "erstellen", true)==0)
    gangcmd = 1;
    else if(strcmp(tmp, "einladen", true)==0)
    gangcmd = 2;
    else if(strcmp(tmp, "beitreten", true)==0)
    gangcmd = 3;
    else if(strcmp(tmp, "verlassen", true)==0)
    gangcmd = 4;
    tmp = strtok(cmdtext, idx);
    if(gangcmd < 3 && !strlen(tmp)) {
    if(gangcmd==0)
    SendClientMessage(playerid, COLOR_GREY, "{FF7700}Tippe /ganghilfe für die Gangbefehle!");
    else if(gangcmd==1)
    SendClientMessage(playerid, COLOR_GREY, "{FF7700}Tippe: /gang erstellen [Name]");
    else if(gangcmd==2)
    SendClientMessage(playerid, COLOR_GREY, "{FF7700}Tippe: /gang einladen [PlayerID]");
    return 1;
    }
    if(gangcmd==1) {
    if(SpielerGang[playerid]>0) {
    SendClientMessage(playerid, TEAM_LIGHTBLUE_COLOR, "{FF7700}Du bist bereits in einer Gang!");
    return 1;
    }
    for(new i = 1; i < MAXIMALE_GANGS; i++) {
    if(GangInformationen[i][0]==0) {
    format(GangNamen[i], MAXIMALER_GANG_NAME, "%s", tmp);
    GangInformationen[i][0]=1;
    GangInformationen[i][1]=1;
    GangInformationen[i][2]=Farben[playerid];
    GangMitglieder[i][0] = playerid;
    format(string, sizeof(string),"{FF7700}Du hast die Gang '%s' erfolgreich erstellt! [ID: %d]", GangNamen[i], i);
    SendClientMessage(playerid, COLOR_GREY, string);
    GivePlayerMoney(playerid,-1000);
    GameTextForPlayer(playerid,"-1000 $",5000,2);
    SpielerGang[playerid]=i;
    return 1;
    }
    }
    return 1;
    } else if (gangcmd==3) {
    Gang = GangEinladen[playerid];
    if(SpielerGang[playerid]>0) {
    SendClientMessage(playerid, TEAM_LIGHTBLUE_COLOR, "{FF7700}Du bist schon in einer Gang!");
    return 1;
    }
    if(GangEinladen[playerid]==0) {
    SendClientMessage(playerid, TEAM_LIGHTBLUE_COLOR, "{FF7700}Du wurdest zu keiner Gang eingeladen!");
    return 1;
    }
    if(GangInformationen[Gang][0]==0) {
    SendClientMessage(playerid, TEAM_AZTECAS_COLOR, "{FF7700}Diese Gang existiert nicht mehr!");
    return 1;
    }


    if(GangInformationen[Gang][1] < MAXIMALE_GANG_MITGLIEDER) {
    new i = GangInformationen[Gang][1];
    GangEinladen[playerid]=0;
    GangMitglieder[Gang][i] = playerid;
    GetPlayerName(playerid, sendername, MAX_PLAYER_NAME);
    for(new j = 0; j < GangInformationen[Gang][1]; j++) {
    format(string, sizeof(string),"%s {FF7700}hat deine Gang berteten!", sendername);
    SendClientMessage(GangMitglieder[Gang][j], COLOR_GREY, string);
    }
    GangInformationen[Gang][1]++;
    SpielerGang[playerid] = Gang;
    SetPlayerColor(playerid,GangInformationen[Gang][2]);
    format(string, sizeof(string),"{FF7700}Du bist der Gang '%s' beigetreten! [ID: %d]", GangNamen[Gang], Gang);
    SendClientMessage(playerid, COLOR_GREY, string);
    return 1;
    }
    SendClientMessage(playerid, COLOR_GREY, "{FF7700}Keine Leute wurden gesucht!");
    return 1;
    } else if (gangcmd==2) {
    giveplayerid = strval(tmp);
    if(SpielerGang[playerid]==0) {
    SendClientMessage(playerid, COLOR_GREY, "{FF7700}Du bist in keiner Gang!");
    return 1;
    }
    if(IsPlayerConnected(giveplayerid)) {
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string),"{FF7700}Du hast %s in deine Gang eingeladen!", giveplayer);
    SendClientMessage(playerid, COLOR_GREY, string);
    format(string, sizeof(string),"{FF7700}Du bekommst eine Gangeinladung von %s in seine Gang '%s' [ID: %d]", sendername, GangNamen[SpielerGang[playerid]],SpielerGang[playerid]);
    SendClientMessage(giveplayerid, COLOR_GREY, string);
    GangEinladen[giveplayerid]=SpielerGang[playerid];
    } else
    SendClientMessage(playerid, COLOR_GREY, "{FF7700}Spieler ist nicht verfügbar!");
    } else if (gangcmd==4) {
    SpielerGangVerlassen(playerid);
    }
    return 1;
    }



    ----------------------------------------------------------------------------------------------------------------------------------------


    Dieser Befehl ist schon zu 80% umschrieben, nur weiß ich nicht wie ich den Error weg bekomme:
    Die Zeile des Errors habe ich im Befehl ausgeklammert und hier nochmal hingeschrieben
    -> (( //GetPlayerName(GangMitglieder[Gang][i], Gang, sizeof(Gang)); ))



    error 035: argument type mismatch (argument 2)



    ocmd:ganginformationen(playerid,params[])
    {
    new Gang;
    if(sscanf(params,"i",Gang))return SendClientMessage(playerid,COLOR_GREY,"{FF7700}Tippe: /Ganginformationen [Gang-ID]");
    if(GangInformationen[Gang][0]==0)
    {
    SendClientMessage(playerid, COLOR_GREY, "{FF7700}Spieler ist nicht verfügbar!");
    return 1;
    }
    new string[3];
    format(string, sizeof(string),"'%s' Gang Mitglieder [ID: %d]", GangNamen[Gang], Gang);
    SendClientMessage(playerid, COLOR_GREY, string);
    for(new i = 0; i < GangInformationen[Gang][1]; i++)
    {
    //GetPlayerName(GangMitglieder[Gang][i], Gang, sizeof(Gang));
    format(string, sizeof(string),"%s (%d)", Gang, GangMitglieder[Gang][i]);
    SendClientMessage(playerid, 0x83BFBFFF, string);
    }
    return 1;
    }



    MfG

  • Ich empfehle dir,
    sscanf zu nutzen, da dies sehr einfach ist.
    Ich werde mich heute mal die Arbeit machen,
    deine Befehle ins Format OCMD umzuschreiben.


    Mit freundlichen Grüßen
    Saitek | Timo

  • Hast du irgendwelche Kontaktmöglichkeiten?
    Skype oder so?
    Wenn ja, schick mir den Namen mal bitte per PM, damit ich dich adden kann.
    Wenn nicht, schick mir trotzdem ne PM, und sag, dass du kein Skype hast.


    Es wäre aber von Vorteil, wenn ich dir gleich nebenbei erklären kann, was ich genau mit dem Befehl mache.
    Damit man noch was draus lernt.


    Mit freundlichen Grüßen
    Saitek | Timo


    Du hast Probleme beim Programmieren oder mit deinem PC?
    Registriere Dich doch auf PC-Rat-Hilfeforum.de.
    Nach dem Registrieren musst du nur deine E-Mail-Adresse bestätigen,
    dann kann es auch schon losgehen. Also worauf wartest du?


    Erreichbar unter folgender E-Mail-Adresse
    support@pc-rat-hilfeforum.de

  • ok mom..hole mir kurz skype ^^ ..habe ein acc..aber hatte es deinstalliert..schau mal postfach..

  • Jo ok.
    Was du derweil schon machen kannst:


    Füge folgende Zeilen ans Scriptende ein. (! Nicht in einem Callback !)



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


    Das ist der Code den wir benötigen, um ocmd ein Parameter zu setzen.


    Mit freundlichen Grüßen
    Saitek | Timo


    Du hast Probleme beim Programmieren oder mit deinem PC?
    Registriere Dich doch auf PC-Rat-Hilfeforum.de.
    Nach dem Registrieren musst du nur deine E-Mail-Adresse bestätigen,
    dann kann es auch schon losgehen. Also worauf wartest du?


    Erreichbar unter folgender E-Mail-Adresse
    support@pc-rat-hilfeforum.de

  • Jo - also werde das Ganze dann heute Vormittag fertigstellen.


    Mit freundlichen Grüßen
    Saitek | Timo


    Du hast Probleme beim Programmieren oder mit deinem PC?
    Registriere Dich doch auf PC-Rat-Hilfeforum.de.
    Nach dem Registrieren musst du nur deine E-Mail-Adresse bestätigen,
    dann kann es auch schon losgehen. Also worauf wartest du?


    Erreichbar unter folgender E-Mail-Adresse
    support@pc-rat-hilfeforum.de

  • Habe dir das ganze Geschehen zukommen lassen.
    Am /gang-Befehl arbeite ich noch - da will was noch nicht so, wie es soll.


    Mit freundlichen Grüßen
    Saitek | Timo


    Du hast Probleme beim Programmieren oder mit deinem PC?
    Registriere Dich doch auf PC-Rat-Hilfeforum.de.
    Nach dem Registrieren musst du nur deine E-Mail-Adresse bestätigen,
    dann kann es auch schon losgehen. Also worauf wartest du?


    Erreichbar unter folgender E-Mail-Adresse
    support@pc-rat-hilfeforum.de

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