if(IsPlayerInRangeOfPoint)

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 ahbe ein Problem mit einem Befehl
    scmd(premshop)
    {
    if(IsPlayerInRangeOfPoint(playerid,3.0,2309.4846,-2.2630,26.7422)) return SendClientMessage(playerid,ROT,"Du bist nicht am Premium Shop!!");
    {
    ShowPlayerDialog(playerid,DIALOG_PREMSHOP,DIALOG_STYLE_LIST,"Premium Shop","Premiumpunkte einlösen\nPremiumpunkte aufladen\n","Auswählen","Abbrechen");
    }
    return 1;
    }
    bei dem if(IsPlayerInRangeOfPoint(...
    ist ein Fehler weil wenn ich dann ins Bank Gebäude gehe und in die Range gehe steht da das mann nicht im Premium shop ist das ist übrigends das hier was auch nocht nicht so ganz klappen will.
    if(dialogid==DIALOG_PREMSHOP2)
    {
    if(response == 1)
    switch(listitem)
    {
    case 0:{if(GetPVarInt(playerid,"Prempoints")<100) return SendClientMessage(playerid,ROT,"Du hast zu wenig Premiumpunkte!!");SetPVarInt(playerid,"Prempoints",GetPVarInt(playerid,"Prempoints") - 100);SetPVarInt(playerid,"Bank",GetPVarInt(playerid,"Bank") + 10000);SendClientMessage(playerid,BLAU,"Es wurden 10000euro auf deine Bank eingezahlt.");}
    case 1:{if(GetPVarInt(playerid,"Prempoints")<250) return SendClientMessage(playerid,ROT,"Du hast zu wenig Premiumpunkte!!");SetPVarInt(playerid,"Prempoints",GetPVarInt(playerid,"Prempoints") - 250);SetPVarInt(playerid,"Bank",GetPVarInt(playerid,"Bank") + 26000);SendClientMessage(playerid,BLAU,"Es wurden 26000euro auf deine Bank eingezahlt.");}
    case 2:{if(GetPVarInt(playerid,"Prempoints")<500) return SendClientMessage(playerid,ROT,"Du hast zu wenig Premiumpunkte!!");SetPVarInt(playerid,"Prempoints",GetPVarInt(playerid,"Prempoints") - 500);SetPVarInt(playerid,"Bank",GetPVarInt(playerid,"Bank") + 54000);SendClientMessage(playerid,BLAU,"Es wurden 54000euro auf deine Bank eingezahlt.");}
    case 3:{if(GetPVarInt(playerid,"Prempoints")<1000) return SendClientMessage(playerid,ROT,"Du hast zu wenig Premiumpunkte!!");SetPVarInt(playerid,"Prempoints",GetPVarInt(playerid,"Prempoints") - 1000);SetPVarInt(playerid,"Bank",GetPVarInt(playerid,"Bank") + 26000);SendClientMessage(playerid,BLAU,"Es wurden 116000euro auf deine Bank eingezahlt.");}
    }
    return 1;
    }
    Das ist in dem Fall Geld also und wenn mann nicht in dem Range Point ist geht es mehr oder weniger.


    mfg

  • scmd(premshop)
    {
    if(IsPlayerInRangeOfPoint(playerid,3.0,2309.4846,-2.2630,26.7422)) return SendClientMessage(playerid,ROT,"Du bist nicht am Premium Shop!!");
    {
    ShowPlayerDialog(playerid,DIALOG_PREMSHOP,DIALOG_STYLE_LIST,"Premium Shop","Premiumpunkte einlösen\nPremiumpunkte aufladen\n","Auswählen","Abbrechen");
    }
    return 1;
    }
    Ist ein Logikfehler.
    Kann aber auch sein, dass ich mich irre xD


    Probiers mal mit


    scmd(premshop)
    {
    if(!IsPlayerInRangeOfPoint(playerid,3.0,2309.4846,-2.2630,26.7422)){ return SendClientMessage(playerid,ROT,"Du bist nicht am Premium Shop!!");}
    else{
    ShowPlayerDialog(playerid,DIALOG_PREMSHOP,DIALOG_STYLE_LIST,"Premium Shop","Premiumpunkte einlösen\nPremiumpunkte aufladen\n","Auswählen","Abbrechen");
    }
    return 1;
    }

  • ah thx ^^ jetzt ghet das mit dem inpoint...
    aber jetzt brauche ich nochmal hilfe hierbei


    if(dialogid==DIALOG_PREMSHOP2) { if(response == 1) switch(listitem) { case 0:{if(GetPVarInt(playerid,"Prempoints")<100) return SendClientMessage(playerid,ROT,"Du hast zu wenig Premiumpunkte!!");SetPVarInt(playerid,"Prempoints",GetPVarInt(playerid,"Prempoints") - 100);SetPVarInt(playerid,"Bank",GetPVarInt(playerid,"Bank") + 10000);SendClientMessage(playerid,BLAU,"Es wurden 10000euro auf deine Bank eingezahlt.");} case 1:{if(GetPVarInt(playerid,"Prempoints")<250) return SendClientMessage(playerid,ROT,"Du hast zu wenig Premiumpunkte!!");SetPVarInt(playerid,"Prempoints",GetPVarInt(playerid,"Prempoints") - 250);SetPVarInt(playerid,"Bank",GetPVarInt(playerid,"Bank") + 26000);SendClientMessage(playerid,BLAU,"Es wurden 26000euro auf deine Bank eingezahlt.");} case 2:{if(GetPVarInt(playerid,"Prempoints")<500) return SendClientMessage(playerid,ROT,"Du hast zu wenig Premiumpunkte!!");SetPVarInt(playerid,"Prempoints",GetPVarInt(playerid,"Prempoints") - 500);SetPVarInt(playerid,"Bank",GetPVarInt(playerid,"Bank") + 54000);SendClientMessage(playerid,BLAU,"Es wurden 54000euro auf deine Bank eingezahlt.");} case 3:{if(GetPVarInt(playerid,"Prempoints")<1000) return SendClientMessage(playerid,ROT,"Du hast zu wenig Premiumpunkte!!");SetPVarInt(playerid,"Prempoints",GetPVarInt(playerid,"Prempoints") - 1000);SetPVarInt(playerid,"Bank",GetPVarInt(playerid,"Bank") + 26000);SendClientMessage(playerid,BLAU,"Es wurden 116000euro auf deine Bank eingezahlt.");} } return 1; }

    also ich habe mir die Prempoints gegeben aber er zieht nichts ab und zeigt an das ich nciht genug habe


    mfg

  • Da ist es doch das gleiche innerhalb der Switch-Case Anweisung.
    Du fragst Dinge über if() ab, setzt aber kein else().
    Ob und an welchen Stellen es bei Pawn benötigt wird, weiß ich nicht, aber vom logischen her würde ich sagen: Machs rein.


    Um ein Beispiel zu nennen:
    case 0:{
    if(GetPVarInt(playerid,"Prempoints")<100){
    return SendClientMessage(playerid,ROT,"Du hast zu wenigPremiumpunkte!!");
    }
    else{
    SetPVarInt(playerid,"Prempoints",GetPVarInt(playerid,"Prempoints") - 100);
    SetPVarInt(playerid,"Bank",GetPVarInt(playerid,"Bank") + 10000);
    SendClientMessage(playerid,BLAU,"Es wurden 10000euro auf deine Bank eingezahlt.");
    }
    }
    Das macht den Code zwar wesentlich länger, aber ich denke auch wesentlich übersichtlicher.
    Du kannst es natürlich kürzen wie du willst, es soll dir nur veranschaulichen was ich meine.



    //edit:
    Zusätzlich:
    Wenn du nacher das Problem hast, dass dir beim Kauf nicht die Punkte bei case 0 abgezogen werden, sondern einfach auf -100 gesetzt werden, egal wie viele Punkte du hast,
    probiers mit -= 100, an Stelle von -100.
    Das gleiche beim Geld mit += 10000, und bei allen anderen case-Anweisungen.

    4 Mal editiert, zuletzt von Shine ()