Player heilen + Geld abzug beim BSN

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,
    ich versuche jetzt schon stundenlang in meinem BSN etwas einzubauen.
    ich habe es bereits so gemacht, dass wenn man rein geht sich drinnen ein donut dreht und man mit "/essen" ein dialog menü aufruft wo man sich dann beliebiges essen aussuchen kann. es kkostet unterschiedlich viel und dementsprechend sollte es auch die energie heilen.
    z.B.:
    man kauft pommes für 25$ und bekommt dafür +25 energie.
    und genau da ist mein problem. das dialogfenster erscheint doch wenn man sich ein essen auswählt geschieht nichts. keine energie, kein geld abzug, und auch kein text.
    hier mal das script:



    #define ESSENmenu 512
    #define WEISS 0xF0F0F0FF
    #define BLAU 0x0023FFFF
    #define command(%0) !strcmp(cmd,%0,true)


    new Donutenter;
    new Float:PlayerHealth;






    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == ESSENmenu)
    {
    if(response)
    {



    if(listitem == 0) //Pommes
    {
    if(GetPlayerMoney(playerid) >= 25)
    {


    GetPlayerHealth(playerid,PlayerHealth);
    SetPlayerHealth(playerid,PlayerHealth + 25);
    GivePlayerMoney(playerid,-25);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihre Pommes = +25 Lebensenergie.");
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für Pommes!");
    }


    }
    if(listitem == 1) //Chickennuggets
    {
    if(GetPlayerMoney(playerid) >= 50)
    {
    SetPlayerHealth(playerid,50);
    GivePlayerMoney(playerid,-50);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihre Chickennuggets = +50 Lebensenergie.");
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für Chickennuggets!");
    }


    }
    if(listitem == 2) //Cheeseburger
    {
    if(GetPlayerMoney(playerid) >= 75)
    {
    SetPlayerHealth(playerid,75);
    GivePlayerMoney(playerid,-75);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihr Cheeseburger = +75 Lebensenergie.");
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für einen Cheeseburger!");
    }
    }



    if(listitem == 3) //XXLBurger
    {
    if(GetPlayerMoney(playerid) >= 100)
    {
    SetPlayerHealth(playerid,100);
    GivePlayerMoney(playerid,-100);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihr XXLBurger = +100 Lebensenergie.");
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für einen XXLBurger!");
    }
    }
    }
    }
    return 1;
    }




    wäre um eure hilfe echt sehr dankbar. ist bestimmt nur ne kleinigkeit die ich übersehe aber weder im forum noch bei google finde ich eine lösung.


    MfG
    RevengerWolf

    2 Mal editiert, zuletzt von Lykanon ()

  • Könntest du das ganze evtl. mal in den PAWN Quelltext machen ?

  • Den ganzen Code markieren und auf das "PWN" Zeichen drücken.

  • #define ESSENmenu 512
    #define WEISS 0xF0F0F0FF
    #define BLAU 0x0023FFFF
    #define command(%0) !strcmp(cmd,%0,true)


    new Donutenter;
    new Float:PlayerHealth;






    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == ESSENmenu)
    {
    if(response)
    {



    if(listitem == 0) //Pommes
    {
    if(GetPlayerMoney(playerid) >= 25)
    {


    GetPlayerHealth(playerid,PlayerHealth);
    SetPlayerHealth(playerid,PlayerHealth + 25);
    GivePlayerMoney(playerid,-25);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihre Pommes = +25 Lebensenergie.");
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für Pommes!");
    }


    }
    else if(listitem == 1) //Chickennuggets
    {
    if(GetPlayerMoney(playerid) >= 50)
    {
    SetPlayerHealth(playerid,50);
    GivePlayerMoney(playerid,-50);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihre Chickennuggets = +50 Lebensenergie.");
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für Chickennuggets!");
    }


    }
    else if(listitem == 2) //Cheeseburger
    {
    if(GetPlayerMoney(playerid) >= 75)
    {
    SetPlayerHealth(playerid,75);
    GivePlayerMoney(playerid,-75);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihr Cheeseburger = +75 Lebensenergie.");
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für einen Cheeseburger!");
    }
    }



    else if(listitem == 3) //XXLBurger
    {
    if(GetPlayerMoney(playerid) >= 100)
    {
    SetPlayerHealth(playerid,100);
    GivePlayerMoney(playerid,-100);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihr XXLBurger = +100 Lebensenergie.");
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für einen XXLBurger!");
    }
    }
    }
    }
    return 1;
    }

  • hab deines jetzt kopiert und bei mir eingefügt....klappt immer noch nicht? :(
    ich stell jetzt mal alles rein vielleicht hab ich den fehler ja anderweitig:



    #include <a_samp>
    #include <dini>


    #define ESSENmenu 9997 //Gehört zu Dialog's
    #define WEISS 0xF0F0F0FF
    #define BLAU 0x0023FFFF
    #define command(%0) !strcmp(cmd,%0,true)


    new Donutenter;
    new Float:PlayerHealth;


    public OnGameModeInit()
    //====DONUT PickUp==============================================================
    {


    Donutenter=CreatePickup(2222,1,376.4398,-68.2524,1001.5151); // Pickup erstellen BSN Donut



    Create3DTextLabel("Bestellen mit /essen",BLAU,376.4398,-68.2524,1001.5151,10,0); // Text für Pickup erstellen BSN Donut



    return 1;
    }




    //====DONUT PickUp ENDE=========================================================







    public OnPlayerPickUpPickup(playerid, pickupid)


    {
    {
    if (pickupid==Donutenter)
    {
    GameTextForPlayer(playerid, "Tippe /essen um zu bestellen",3000,3);
    }
    return 1;
    }
    }






    public OnPlayerCommandText(playerid, cmdtext[])


    //====ESSEN Dialogfenster=======================================================
    {
    if (strcmp("/essen", cmdtext, true) == 0)
    {
    ShowPlayerDialog(playerid, ESSENmenu, DIALOG_STYLE_LIST, "Essen", "Pommes\nChickennuggets\nCheeseburger\nXXLBurger", "Auswählen", "Abbrechen");
    if(!IsPlayerInRangeOfPoint(playerid, 1,376.4398,-68.2524,1001.5151))


    return 1;
    }
    return 1;
    }



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == ESSENmenu)
    {
    if(response)
    {



    if(listitem == 0) //Pommes
    {
    if(GetPlayerMoney(playerid) >= 25)
    {


    GetPlayerHealth(playerid,PlayerHealth);
    SetPlayerHealth(playerid,PlayerHealth + 25);
    GivePlayerMoney(playerid,-25);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihre Pommes = +25 Lebensenergie.");
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für Pommes!");
    }


    }
    else if(listitem == 1) //Chickennuggets
    {
    if(GetPlayerMoney(playerid) >= 50)
    {
    SetPlayerHealth(playerid,50);
    GivePlayerMoney(playerid,-50);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihre Chickennuggets = +50 Lebensenergie.");
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für Chickennuggets!");
    }


    }
    else if(listitem == 2) //Cheeseburger
    {
    if(GetPlayerMoney(playerid) >= 75)
    {
    SetPlayerHealth(playerid,75);
    GivePlayerMoney(playerid,-75);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihr Cheeseburger = +75 Lebensenergie.");
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für einen Cheeseburger!");
    }
    }



    else if(listitem == 3) //XXLBurger
    {
    if(GetPlayerMoney(playerid) >= 100)
    {
    SetPlayerHealth(playerid,100);
    GivePlayerMoney(playerid,-100);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihr XXLBurger = +100 Lebensenergie.");
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für einen XXLBurger!");
    }
    }
    }
    }
    return 1;
    }


    bitte nicht wundern weil es so komisch aussieht ich arbeite gemeinsam mit einem freund daran und damit alles flüssig läuft arbeitet er am hauptscript und ich mache sozusagen die "test filterscripts"...wenn diese einwandfrei laufen werden sie ins hauptscript übernommen ;)

  • mach unter anderem am ende immer ein return 1; rein dann wird nämlich diese abfrage erfolgreich beendet


    mach bei den anderen listitems auch noch die GetPlayerHealth sache dann werden die auch richtig geaddet

  • sieht nun so aus:


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == ESSENmenu)
    {
    if(response)
    {



    if(listitem == 0) //Pommes
    {
    if(GetPlayerMoney(playerid) >= 25)
    {


    GetPlayerHealth(playerid,PlayerHealth);
    SetPlayerHealth(playerid,PlayerHealth + 25);
    GivePlayerMoney(playerid,-25);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihre Pommes = +25 Lebensenergie.");
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für Pommes!");
    return 1;
    }


    }
    else if(listitem == 1) //Chickennuggets
    {
    if(GetPlayerMoney(playerid) >= 50)
    {
    GetPlayerHealth(playerid,PlayerHealth);
    SetPlayerHealth(playerid,50);
    GivePlayerMoney(playerid,-50);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihre Chickennuggets = +50 Lebensenergie.");
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für Chickennuggets!");
    return 1;
    }


    }
    else if(listitem == 2) //Cheeseburger
    {
    if(GetPlayerMoney(playerid) >= 75)
    {
    GetPlayerHealth(playerid,PlayerHealth);
    SetPlayerHealth(playerid,75);
    GivePlayerMoney(playerid,-75);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihr Cheeseburger = +75 Lebensenergie.");
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für einen Cheeseburger!");
    return 1;
    }
    }



    else if(listitem == 3) //XXLBurger
    {
    if(GetPlayerMoney(playerid) >= 100)
    {
    GetPlayerHealth(playerid,PlayerHealth);
    SetPlayerHealth(playerid,100);
    GivePlayerMoney(playerid,-100);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihr XXLBurger = +100 Lebensenergie.");
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für einen XXLBurger!");
    return 1;
    }
    }
    }
    }
    return 1;
    }


    aber leider immer noch deto wie oben. nichts funzt?
    irgendetwas muss doch falsch sein bzw fehlen da ich ja weder errors noch warnings habe...

  • Bitte nachdenken, wie soll das denn funktionieren wenn du kein leben addest?


    und außerdem auch bei der if abfrage noch am ende return 1;




  • SetPlayerHealth(playerid,PlayerHealth + Menge des Healths vom Essen);
    //Rest
    return 1;
    }
    else
    { //geschichte usw...



    Wie gesagt du hast sogar eines also bitte -.-


    Nachdenken..


    MfG NicoAiko

  • okay vielen dank hab das nun so gemacht.
    aber ingame rührt sich immer noch nichts. weder energie,noch geld abzug, noch der text kommen...



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == ESSENmenu)
    {
    if(response)
    {



    if(listitem == 0) //Pommes
    {
    if(GetPlayerMoney(playerid) >= 25)
    {


    GetPlayerHealth(playerid,PlayerHealth);
    SetPlayerHealth(playerid,PlayerHealth + 25);
    GivePlayerMoney(playerid,-25);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihre Pommes = +25 Lebensenergie.");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für Pommes!");
    return 1;
    }


    }
    else if(listitem == 1) //Chickennuggets
    {
    if(GetPlayerMoney(playerid) >= 50)
    {
    GetPlayerHealth(playerid,PlayerHealth);
    SetPlayerHealth(playerid,PlayerHealth +50);
    GivePlayerMoney(playerid,-50);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihre Chickennuggets = +50 Lebensenergie.");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für Chickennuggets!");
    return 1;
    }


    }
    else if(listitem == 2) //Cheeseburger
    {
    if(GetPlayerMoney(playerid) >= 75)
    {
    GetPlayerHealth(playerid,PlayerHealth);
    SetPlayerHealth(playerid,PlayerHealth +75);
    GivePlayerMoney(playerid,-75);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihr Cheeseburger = +75 Lebensenergie.");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für einen Cheeseburger!");
    return 1;
    }
    }



    else if(listitem == 3) //XXLBurger
    {
    if(GetPlayerMoney(playerid) >= 100)
    {
    GetPlayerHealth(playerid,PlayerHealth);
    SetPlayerHealth(playerid,PlayerHealth +100);
    GivePlayerMoney(playerid,-100);
    SendClientMessage(playerid,0xFFFA00FF,"Hier Ihr XXLBurger = +100 Lebensenergie.");
    }
    else
    {
    SendClientMessage(playerid,0xFF0037FF,"Du hast nicht genug Geld für einen XXLBurger!");
    return 1;
    }
    }
    }
    }
    return 1;
    }


    hab es mit meinem navi verglichen und das stimmt auch überein. und beim navi klappts einwandfrei (mit dialogfenster und durch draufklicken des ortes wird der punkt markiert). ist im prinzip ja gleich aufgebaut.
    vielleicht liegt der fehler ja woanders??
    irgendetwas vergessen?? oder etwas nicht definiert??

    2 Mal editiert, zuletzt von Lykanon ()

  • NicoAiko: Das mit dem return 1 ist total unnötig, da du am Ende des Callbacks sowieso alles returnst.

  • habs nun direkt aus deiner datei rausgeholt und eingefügt (also copy & paste) aber klappt immer noch nicht.


    kann es sein dass irgendetwas fehlt da der BSN nen interior hat der unten niergends angeführt ist?? oder ist das nicht relevant?


    kann mir bitte jemand weiterhelfen??

    Einmal editiert, zuletzt von Lykanon ()

  • C:\Users\Cranka12\Desktop\Ordner Datein\Server\gamemodes\tutorial.pwn(1241) : error 010: invalid function or declaration
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    error Hilfe bitte so schnell wie möglich per pn oder so :)