Script Problem Bitte helft mir

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
  • Ich brauche einen Startbonus befehl den der Admin macht also wo man als Admin nur eingeben muss: /startbonus [ID/Name] und das das nur geht wenn der player lvl 1 ist.
    der startbonus soll sein 30.000$ und lvl 3 oder 4 gucken ;) .
    Kann mir da einer pls weiter helfen wäre echt nett ich bekomme das einfach nicht hin ich habe es schon voll oft versucht.
    Ich habe noch eine frage ist das richtig das das unter OnGameInit kommt? und ich muss dazu sagen das ich das mit ocmd nicht hin bekomme.
    Bitte helft mir




    Danke!


    MFG. pr094m3r

  • Bitteschön aus meinem German Next Era:


    //============STARTBONUS===================//
    /* if(strcmp(cmd, "/startbonus", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pAdmin] >= 2)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "BENUTZUNG: /startbonus [playerid/PartOfName]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    if(PlayerInfo[giveplayerid][pLevel] != 1)
    {
    SendClientMessage(playerid, COLOR_GRAD2, " Dieser Spieler ist kein Anfänger mehr!");
    return 1;
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), "* Du hast Spieler %s den Startbonus gegeben (Level: 3, Geld: +$50.000). *",giveplayer);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, "*Ein Admin hat dir einen Startbonus gegeben. (Level: 3, Geld: +$30.000).");
    GivePlayerMoney(playerid,PlayerInfo[playerid][pCash] = 30000);
    PlayerInfo[giveplayerid][pLevel] = 3;
    PlayerInfo[giveplayerid][gPupgrade] = 30;
    return 1;
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du bist nicht berechtigt, diesen Befehl zu benutzen !");
    return 1;
    }
    }
    return 1;
    }*/
    //==========Startbonus================
    /* if(strcmp(cmd, "/givestartbonus", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if (PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pSupporter] >= 1)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "BENUTZUNG: /startbonus [playerid/SpielerName]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    if(PlayerInfo[giveplayerid][pLevel] != 1)
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Dieser Spieler ist kein Anfänger mehr!");
    return 1;
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    format(string, sizeof(string), "* Du hast Spieler %s den Startbonus gegeben (Level: 3, Geld: +$30.000). *",giveplayer);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "* Admin %s hat dir einen Startbonus gegeben. (Level: 3, Geld: +$30.000).",sendername);
    SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "* Wir wünschen dir weiterhin viel Spaß beim Spielen auf German Next Era Life!",sendername);
    SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
    GivePlayerMoney(giveplayerid, 30000); /// Geld was der Spieler bekommt
    PlayerInfo[giveplayerid][pLevel] = 3; // Level was der Spieler bekommt
    */
    /* Admin Info */
    /*new admwarnung[256];
    new iyear, imonth,iday;
    getdate(iyear, imonth, iday);
    format(admwarnung, sizeof(admwarnung), "AdmCmd: %s hat %s den Startbonus gegeben! (%d.%d.%d)", sendername, giveplayer,iday,imonth,iyear);
    ABroadCast(COLOR_LIGHTRED, admwarnung, 1);
    return 1;
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Du bist nicht berechtigt, diesen Befehl zu benutzen !");
    return 1;
    }
    }
    return 1;
    }*/
    if(strcmp(cmd, "/startbonus", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pLevel] == 1 || PlayerInfo[playerid][pLevel] == 2)
    {
    format(string, sizeof(string), "* Du hast den Startbonus bekommen. (Level: 3, Geld: +$30.000).");
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    format(string, sizeof(string), "* Wir wünschen dir weiterhin viel Spaß beim Spielen auf Dark-City-Reallife!",sendername);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    GivePlayerMoney(playerid, 30000); /// Geld was der Spieler bekommt
    PlayerInfo[playerid][pLevel] = 3; // Level was der Spieler bekommt
    }
    else {
    SendClientMessage(playerid, COLOR_GRAD2, "Du bist kein Anfänger (Level 1/2) mehr!");
    return 1;
    }


    }
    return 1;
    }


    Also teste mal alle 3 ^^

  • Das ist zwar nett gemeint... aber wird wohl alles nicht funktionieren. ;)
    Die Variablen sind nicht in jedem Gamemode gleich, außerdem sind dort viele unnötige Abfragen eingebaut und manche Codeteile unnötig in die länge gezogen was im Endeffekt nachher den server bei einer gewissen Spieleranzahl unnötig belastet.
    Ich meine z.b.

    if(IsPlayerConnected(playerid))


    Wenn der Spieler nicht online wäre hätte er den befehl wohl nicht ausgeführt. Die Abfrage braucht man in einem Befehl nur bei einer Schleife.
    Anstatt dir alles zu kopieren solltest du einfach mal kurz im Wiki nachschauen, dir den Syntax klarmachen und anschließend eben schauen welche Möglichkeiten du hast (Funktionen & callbacks ).

  • Ich habe das letzte genommen da hatte ich am wenigsten errors aber immer noch welche kann mir jemand helfen hier diese hatte ich:


    : error 017: undefined symbol "cmd"
    : undefined symbol "playerid"
    : undefined symbol "playerid"
    : error 017: undefined symbol "playerid"
    : error 017: undefined symbol "sendername"
    : error 017: undefined symbol "playerid"
    : error 017: undefined symbol "playerid"
    : undefined symbol "playerid"
    : undefined symbol "playerid"




    9 Errors.

  • Brauchst das include ocmd einfach download und oben ins Script
    #include <ocmd>


    so der Befehl


    ocmd:startbonus(playerid,params[])
    {
    new plid;
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    new string[128];
    if(!istPlayerAdmin(playerid,1))return SendClientMessage(playerid,FARBE,"Du bist kein Admin");//Deine Admin abfrage und rang hin
    if(sccanf(params,"u",plid))return SendClientMessage(playerid,FARBE,"Tippe: /startbonus [Id/Name]");
    format(string,sizeof(string),"%s hat dir einen Startbonus gegeben",name);
    SendClientMessage(plid,FARBE,string);
    GivePlayerMoney(plid,5000);
    //und deine anderen sachen halt Licensen etc einfach auf dein Script anpassen
    //ist ungetestet
    return 1;
    }


    und falls du noch kein sccanf hast das hier einfach ganz unten ins Script also unter KEINEM public einfach rein ganz unten am besten


    stock sscanf(sstring[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(sstring))
    #else
    if (sstring[0] == 0 || (sstring[0] == 1 && sstring[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    sstringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (sstring[sstringPos] && sstring[sstringPos] <= ' ')
    {
    sstringPos++;
    }
    while (paramPos < paramCount && sstring[sstringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = sstring[sstringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = sstring[++sstringPos];
    }
    do
    {
    sstringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = sstring[sstringPos];
    do
    {
    sstringPos++;
    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 = sstring[sstringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, sstring[sstringPos++]);
    }
    case 'f':
    {


    new changestr[16], changepos = 0, strpos = sstringPos;
    while(changepos < 16 && sstring[strpos] && sstring[strpos] != delim)
    {
    changestr[changepos++] = sstring[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(sstring, format[formatPos], false, sstringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    sstringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = sstringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = sstring[++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
    sstring[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - sstringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, sstring[sstringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    sstring[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    sstringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = sstring[sstringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = sstring[sstringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    sstringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (sstring[sstringPos] && sstring[sstringPos] != delim && sstring[sstringPos] > ' ')
    {
    sstringPos++;
    }
    while (sstring[sstringPos] && (sstring[sstringPos] == delim || sstring[sstringPos] <= ' '))
    {
    sstringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }

    [tabmenu][tab='Angebote','http://cdn3.iconfinder.com/data/icons/glyph/227/Tag-48.png']

    + Die Preise liegen bei 5-100+€ Ablauf:
    + Entweder ihr addet mich in Skype (PN vorher Schreiben) oder Ihr schreibt eine PN an mich (Betreff - Euer Wunsch z.B. Filterscript)
    + So nun schreibt ihr mir was ihr alles in dem Script haben wollt ich werd euch dann sagen ob ich es hinbekomme.
    + Dann machen wir ein groben Preis aus. Ich werde das Script erstellen und es zusammen mit dem Kunden Testen.



    [tab='Kontakt','http://cdn3.iconfinder.com/data/icons/line/36/person_add-48.png']
    edmix23

    + Bitte beim Adden angeben wer ihr seit oder per PN bescheid sagen!
    [tab='Zahlungs Methoden','https://cdn3.iconfinder.com/data/icons/line/36/check_money-32.png']
    +Paypal!
    +Direkte Banküberweisung

  • Ich habe das getestet und es kommen 4 errors



    : warning 217: loose indentation
    : error 029: invalid expression, assumed zero
    : error 017: undefined symbol "ocmd_startbonus"
    : error 029: invalid expression, assumed zero
    : fatal error 107: too many error messages on one line


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



    4 Errors.

    Einmal editiert, zuletzt von pr094m3r ()

  • Ja danke aber das funzt bei mir im script nicht


    Dies musst du ja auch an dein Script anpassen mit die Admin Abfrage e.t.c

  • kannst du mir zu den errors was sagen?



    Oder um das einafcher zu sagen oder machen ich habe das SoL Script aber wie ihr seht ich möchte das stark editieren ist fast komplett editiert nur hier bei habe ich probleme

  • kannst du mir zu den errors was sagen?


    Ne grad nicht wirklich, Da ich ja die Fehler zeilen/Fehler Code nicht kenne. :S