Kekse und andere Gegenstände zum mitnehmen und Essen :>

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
  • Hallöschen,


    Ich möchte mal ein ziemlich Logisches System vorstellen, womit man Kekse, Waffeln, Döner, Pizza oder was einem sonst noch so einfällt im Script benutzen kann.
    Da es nicht sehr kompliziert ist, können auch Unerfahrene Kekse erstellen :D


    1) Wir müssen die Kekse definieren, damit das Script weis das wir Kekse in unserem Script haben^^
    Das machen wir am besten ganz oben im Script.


    new Kekse[MAX_PLAYERS]
    Das [MAX_PLAYERS] steht dafür, das jeder Spieler Kekse für sich hat.


    Würden wir jetzt compilen würde es nicht funktionieren, wir haben war jetzt dem Script gesagt das wir Kekse im Script haben, haber nicht was mit den Keksen passieren/sein soll.
    (Bsp. der Script weis nicht was Kekse sind :D)


    Damit das behoben ist müssen wir Kekse im Script anwenden.
    Zunächst einmal erstellen wir ein Keksladen :D


    2)Ihr sucht in eurem Script nach public OnPlayerCommandText(playerid, cmdtext[])
    Jetzt erstellen wir einen neuen Befehl
    if(strcmp(cmdtext,"/Kaufen",true)==0)
    {
    if(IsPlayerInRangeOfPoint(playerid,Enfernung,X,Y,Z))
    {
    //Das erstmal leer lassen
    }
    else
    {
    SendClientMessage(playerid,Farbcode, "TEXT");
    }
    }
    Mit
    if(IsPlayerInRangeOfPoint(playerid,Enfernung,X,Y,Z))
    Sagen wir, das er den Befehl nur ausführen kann, wenn er nicht ausserhalb der Entfernung von den Koordinaten(X,Y,Z) steht.
    Mit der playerid sagen wir, das der Spieler bei den Koordinaten sein muss.
    Bsp:

    Zitat

    if(IsPlayerInRangeOfPoint(playerid,3.0,31.9374,12.134511,19.97551))


    Zitat

    if(strcmp(cmdtext,"/Kaufen",true)==0)

    heist, er muss den Befehl /kaufen ausführen.




    Zitat

    else
    {
    SendClientMessage(playerid,Farbcode, "TEXT");
    }

    Das else bedeutet, was passiert wenn er (in diesem Fall) nicht im Laden ist, bzw. in den Koordinaten.


    playerid bedeutet diesmal, das der Text an den Spieler gesendet wird, Farbcode ist der Code der Farbe und "Text" ist die Nachricht die kommt wenn der Spieler nicht in den Koordinaten ist.


    Fertiger Befehl:
    if(strcmp(cmdtext,"/Kaufen",true)==0)
    {
    if(IsPlayerInRangeOfPoint(playerid,3.0,19.311354,37.134351,93.4234213))
    {
    //Das erstmal leer lassen
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFFF, "Du bist nicht im Keksladen.");
    }
    }


    Jetzt müssen wir noch dafür sorgen, das er nicht zu viele Kekse besitzen kann.
    if(strcmp(cmdtext,"/Kaufen",true)==0)
    {
    if(IsPlayerInRangeOfPoint(playerid,3.0,19.311354,37.134351,93.4234213))
    {
    if(Kekse[playerid] == 0)
    {
    //Das noch Leer Lassen
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFFF, "Du hast bereits Kekse. Esse deine Kekse mit /kekseessen");
    }
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFFF, "Du bist nicht im Keksladen.");
    }
    }



    mit

    Zitat

    if(Kekse[playerid] == 0)


    sagen wir, das der Spieler den Befehl nur benutzen kann, wenn er noch keine Kekse hat.


    if(strcmp(cmdtext,"/Kaufen",true)==0)
    {
    if(IsPlayerInRangeOfPoint(playerid,3.0,19.311354,37.134351,93.4234213))
    {
    if(Kekse[playerid] == 0)
    {
    GivePlayerMoney(playerid, -150);
    SendClientMessage(playerid,0xFFFFFFFF, "Du hast Kekse gekauft. Esse deine Kekse mit /kekseessen");
    Kekse[playerid] = 1;
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFFF, "Du hast bereits Kekse. Esse deine Kekse mit /kekseessen");
    }
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFFF, "Du bist nicht im Keksladen.");
    }
    }


    Zitat

    GivePlayerMoney(playerid, -150);

    Sagt, das dem Spieler 150$ abgezogen werden, wenn er den Befehl ausführt.


    Zitat

    Kekse(playerid) = 1;


    Sagt, das der Spieler Kekse bekommt


    Gut, jetzt kann der Spieler schonmal Kekse kaufen... jetzt brauchen wir noch das er sie Essen kann.
    Also machen wir einen neuen Befehl.
    if(strcmp(cmdtext,"/Kekseessen",true)==0)
    {
    if(Kekse(playerid) == 1)
    {
    SetPlayerHealth(playerid, 100);
    Kekse[playerid] = 0;
    SendClientMessage(playerid,0xFFFFFFFF, "Du hast deine Kekse gegessen.");
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFFF, "Du hast keine Kekse, kaufe Kekse im Keksladen.");
    }
    }
    SetPlayerHealth(playerid, 100);
    Setzt das Leben des Spielers auf 100



    Zitat

    Kekse(playerid) = 0;


    nimmt die Kekse des Spielers.



    Ich hoffe ich konnte euch helfen =)



    //Edit INk
    Hab den Code mal eingerückt, außerdem war der Fabcode falsch ;)
    //Edit
    Klammern korrigiert...

  • Ok..gutes TUT aber wenn ich das


    new Kekse[MAX_PLAYERS];



    weglasse steht da wenn wunderts:


    undefined symbol "Kekse"



    Wenn ich ich es aber einfüge kommt das:

    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(1027) : error 012: invalid function call, not a valid address
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(1027) : warning 215: expression has no effect
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(1027) : error 001: expected token: ";", but found ")"
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(1027) : error 029: invalid expression, assumed zero
    C:\Users\Beny\Desktop\Game zeug\tutorial.pwn(1027) : 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.


    was mach ich falsch ?

  • Kekse(playerid) = 0;


    Das ist falsch...


    Du musst das so machen:


    Kekse[playerid] = 0;

  • nee...


    genau so kopiert..


    if(strcmp(cmdtext,"/Kaufen",true)==0)
    {
    if(IsPlayerInRangeOfPoint(playerid,3.0,19.311354,37.134351,93.4234213))
    {
    if(Kekse(playerid) == 0)
    {
    GivePlayerMoney(playerid, -150);
    SendClientMessage(playerid,0xFFFFFFFF, "Du hast Kekse gekauft. Esse deine Kekse mit /kekseessen");
    Kekse(playerid) = 1;
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFFF, "Du hast bereits Kekse. Esse deine Kekse mit /kekseessen");
    }
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFFF, "Du bist nicht im Keksladen.");
    }
    }

  • Kekse(playerid)
    Da ist doch etwas falsch .. :)?

    Siehe da:


    /edit:


    Ja, aber im Tutorial ist es schon falsch

  • Ok wenn ich es mit


    Kekse[playerid] = 1;



    mache gibts nur noch 1 Error:


    error 029: invalid expression, assumed zero


    In der Zeile:


    if(strcmp(cmdtext,"/Kaufen",true)==0)
    {
    if(IsPlayerInRangeOfPoint(playerid,3.0,19.311354,37.134351,93.4234213))
    {
    Kekse[playerid] = 0;
    {
    GivePlayerMoney(playerid, -150);
    SendClientMessage(playerid,0xFFFFFFFF, "Du hast Kekse gekauft. Esse deine Kekse mit /kekseessen");
    Kekse[playerid] = 1;


    }
    else // Hier wird Error gezeigt
    {
    SendClientMessage(playerid,0xFFFFFFFF, "Du hast bereits Kekse. Esse deine Kekse mit /kekseessen");
    }
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFFF, "Du bist nicht im Keksladen.");
    }
    }

  • Ist mir ein bisschen zu "einfach", ich würde es so machen:
    if(strcmp(cmdtext,"/Kaufen",true)==0)
    {
    if(IsPlayerInRangeOfPoint(playerid,3.0,19.311354,37.134351,93.4234213))
    {
    if(Kekse(playerid) <= 5)
    {
    new string[128];
    Kekse[playerid] += 1;
    format(string,sizeof(string),"Du hast dir Kekse gekauft. Esse deine Kekse mit /keksessen, du besitzt %d Kekse.",Kekse);
    GivePlayerMoney(playerid, -150);
    SendClientMessage(playerid,0xFFFFFFFF, string);
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFFF, "Du hast schon mehr als 5 Kekse. Esse sie um neue zu kaufen.");
    }
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFFF, "Du bist nicht im Keksladen.");
    }
    }
    if(strcmp(cmdtext,"/Kekseessen",true)==0)
    {
    if(Kekse[playerid]== 5 || Kekse[playerid] == 4 || Kekse[playerid] == 3 || Kekse[playerid] == 2 || Kekse[playerid] == 1)
    {
    new string[128];
    Kekse[playerid] -= 1;
    format(string,sizeof(string),"Du hast einen Keks gegessen. Du hast noch %d Kekse.",Kekse);
    SetPlayerHealth(playerid, 100);
    SendClientMessage(playerid,0xFFFFFFFF, string);
    ApplyAnimation(playerid, "FOOD", "EAT_Burger", 3.0, 0, 0, 0, 0, 0); // Animation (Essen)
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFFF, "Du hast keine Kekse, kaufe Kekse im Keksladen.");
    }
    }


    Ansonsten nettes Tutorial ^^

  • Schau dir deins mal an, Atze:
    if(strcmp(cmdtext,"/Kaufen",true)==0)
    {
    if(IsPlayerInRangeOfPoint(playerid,3.0,19.311354,37.134351,93.4234213))
    {
    Kekse[playerid] = 0;
    { // wofür ist diese klammer?
    GivePlayerMoney(playerid, -150);
    SendClientMessage(playerid,0xFFFFFFFF, "Du hast Kekse gekauft. Esse deine Kekse mit /kekseessen");
    Kekse[playerid] = 1;


    }
    else // Hier wird Error gezeigt
    {
    SendClientMessage(playerid,0xFFFFFFFF, "Du hast bereits Kekse. Esse deine Kekse mit /kekseessen");
    }
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFFF, "Du bist nicht im Keksladen.");
    }
    }

  • Sehr gute erklärtes Tutorial, finde ich nett das du dir die Mühe machst und auch mit Farben arbeitest.

  • if(strcmp(cmdtext,"/Kaufen",true)==0)
    {
    if(IsPlayerInRangeOfPoint(playerid,3.0,19.311354,37.134351,93.4234213))
    {
    if(Kekse[playerid] == 0)
    {
    GivePlayerMoney(playerid, -150);
    SendClientMessage(playerid,0xFFFFFFFF, "Du hast Kekse gekauft. Esse deine Kekse mit /kekseessen");
    Kekse[playerid] = 1;


    }
    else // Hier wird Error gezeigt
    {
    SendClientMessage(playerid,0xFFFFFFFF, "Du hast bereits Kekse. Esse deine Kekse mit /kekseessen");
    }
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFFF, "Du bist nicht im Keksladen.");
    }
    }


    So muss es gehen