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
  • Moin,


    Ich wollte vor einem Haus einen Pfeil machen (Der sich so dreht^^). Das hab ich auch geschafft. Dann wollte ich, dass wenn der Spieler einem bestimmten Radius von diesem Pfeil ist, man dann in ein Interior geportet wird.


    Ich hab das dann so gemacht:


    Ganz oben noch new pickup;


    public OnFilterScriptInit(playerid)//Hier ist der Erste Error Zeile 14
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0, 1318, 732.9096,-2704.9937,15.1482))
    {
    SetPlayerInterior(playerid, 5);
    SetPlayerPos(playerid, 1267.663208,-781.323242,1091.906250);
    }


    Weiter unten der Pickup:
    pickup = CreatePickup(1318, 1318, 732.9096,-2704.9937,15.1482, -1);//Das hier ist Zeile 272



    Hier die Errors:



    C:\Users\Vince\Desktop\LS Derby\LS.pwn(14) : error 025: function heading differs from prototype
    C:\Users\Vince\Desktop\LS Derby\LS.pwn(272) : warning 204: symbol is assigned a value that is never used: "pickup"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Was ist hier falsch?^^


    Mfg Vince


    Edit: Was vergessen
    Edit: Edit vergessen :D
    Edit: Zeilen

  • Wenn man keine Ahnung hat einfach nichts hier rein schreiben bitte.
    OnFilterscript hat keinen parameter playerid, da dort nur alle gamemode relevanten Sachen geladen werden.


    Wenn du dort oben aber einfach nur playerid rausmachst bekommst du wieder neue Fehler.



    Deine Teleports müssen in eine extra Funktion mit for Schleife, die dann alle X Sekunden aufgerufen wird per Timer. Und der gehört dann unter OnFilterScriptInit.



    Und zu dem Error mit pickup: Du erstellst die Variable pickup und weißt ihr auch etwas zu, verwendest sie dann aber nicht weiter.
    Dafür gibt es das Callback OnPlayerPickUpPickup, dort könntest du dann abfrragen ob die pickupid übereinstimmt und den Spieler dann teleportieren, dann bräuchstes du nichtmal eine extra Funktion + Timer erstellen.


  • new pickup;
    forward inhouse();


    public OnFilterScriptInit(playerid)
    {
    pickup = CreatePickup(1318, 1318, 732.9096,-2704.9937,15.1482, -1);
    SetTimer("inhouse",5000,1);
    return 1;
    }


    public inhouse()
    {
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerInRangeOfPoint(i, 7.0, 1318, 732.9096,-2704.9937,15.1482))
    {
    SetPlayerInterior(i, 5);
    SetPlayerPos(i, 1267.663208,-781.323242,1091.906250);
    }
    }
    return 1;
    }


    Alle 5 Sekunden wird abgefragt, ob der der Spieler 1 an der Position ist und dann wird er geportet.
    danach , praktisch im Millisekundenbereich
    wird abgefragt, ob der der Spieler 2 an der Position ist und dann wird er geportet.

  • 3 Errors:



    C:\Users\Vince\Desktop\LS Derby\LS.pwn(15) : error 025: function heading differs from prototype
    C:\Users\Vince\Desktop\LS Derby\LS.pwn(17) : error 017: undefined symbol "pickup"
    C:\Users\Vince\Desktop\LS Derby\LS.pwn(22) : warning 225: unreachable code
    C:\Users\Vince\Desktop\LS Derby\LS.pwn(272) : error 017: undefined symbol "pickup"
    C:\Users\Vince\Desktop\LS Derby\LS.pwn(2395) : warning 235: public function lacks forward declaration (symbol "inhouse")
    C:\Users\Vince\Desktop\LS Derby\LS.pwn(2399) : warning 202: number of arguments does not match definition
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    3 Errors.


    EDIT:


    Irgendwie ist das voll komisch.


    Beim Compiler steht:


    Zeile (18) : Unbenutzte Variable: "Pfeil"


    Und grad wieter unten steht dann im Script


    new Pfeil;
    Pfeil = CreatePickup(1318, 1318, 732.9096,-2704.9937,15.1482, -1);


    Die Variable ist doch benutzt.. Da steht doch Pfeil =-.-

    Einmal editiert, zuletzt von Vince ()

  • Du hast die da erst erstellt. Benutzt (Abfragen o,ä) wird sie aber nicht, was aber auch nicht schlimm ist.


    Wichtig ist, dass du oben new pickup; hast und dann auch unter OnFilterScriptInit auch pickup = machst. Weil wenn du oben unter die includes nicht new pickup , sondern new pfeil machst, dann kann er die Pickupid natürlich auch nicht in die Variable pickup schreiben, da diese nicht existiert.

  • Versuchs doch mal mit "pickuppickup", also net mit InRangeOfPoint sondern, "if(pickupid = test)".


    lg


    pS

  • ich denke eher eine klammer zu wenig / zu viel


    MFG


    Me


    Boar... Wieder so ein Spammer...


    Könntest du mal aufhören, dir deine 10 Beiträge zu erspammen ?


    Danke.


    PS: Würde dir auch raten es nicht mir ner Abfrage zu machen sondern mit OnPlayerPickupPuckip, also wenn er in das Pickup reinläuft.


    Gruß Deo


  • Tut mir leid, aber deine Antwort erscheint mir wirklich nicht logisch-.-
    Und ausserdem wurde das schon einmal erwähnt:


    Ich vermute irgendwo eine Klammer zuwenig oder ein Return vergessen.


    Edit: Silverdark. Danke, ich werds mal probieren.


    Edit: OK, 0 Errors 0 Warnings. Ich hoffe es geht. Nur leider kann ich das im Moment nicht testen, da aus irgendwelchen unerklärlichen Gründen mein Server down ist-.-


    Edit: Habs auf dem Localserver getestet. Funktioniert wuunderbar. Ich bin jetz drinn, aber wie komm ich wieder raus?^^ Im Haus auch ein Pickup und dann einfach die Koords vom Haus?

    2 Mal editiert, zuletzt von Vince ()