Hilfe mit Floats

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
  • Hey hab da mal ne Frage ,
    wie überprüfe ich die Position eines Spielers der ein bestimmtes Command eingegeben hat ohne seine Playerid zu wissen hier das Problem in meinem Fall :
    CMD:midairrefuel(playerid, params[])
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    SetTimer("refuelpos",100,true);
    }


    return 1;
    }


    public refuelpos(playerid)
    {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && Job[playerid] == 3)
    {

    SetPlayerCheckpoint(i, x, y, z, 3.0);

    }
    }


    return 1;
    }


    CMD:refuelplane(playerid, params[])
    {
    if(IsPlayerInRangeOfPoint(playerid, 10.0, x, y, z))
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && Job[playerid] == 3)
    {
    GivePlayerMoney(playerid, 35000);
    SetPlayerScore(playerid, GetPlayerScore(playerid) + 1);
    SendClientMessage(playerid, 0xFFFFFFFF, "You have surcefully refueled the plane!");
    DisablePlayerCheckpoint(playerid);
    }
    }
    }


    return 1;
    }

    Das x,y und z im 2ten Command soll durch die Position des Players, der das erste Command eingegeben hat ersetzt werden.

  • Das hier:
    new Float:x, Float:y, Float:z;


    Ganz oben im Script rein!


    /edit


    Und das:
    SetTimer("refuelpos",100,true);
    zu das:
    SeTimerEx("refuelpos",100,0,"d",playerid);


    Das "true" heißt, dass das weiter läuft, und nicht aufhört.
    Wenn du aber "0" oder "false" einträgst, dann läuft der Timer nur einmal und bricht danach ab, und du brauchst das ja nur einmal.


  • Aber was muss jetzt hier :
    if(IsPlayerInRangeOfPoint(playerid, 10.0, x, y, z))
    statt x,y,z rein ? Ich will ja nicht selber überprüft werden, sondern ob ich in der Nähe von dem Spieler bin, der /midairrefuel eingegeben hat .

  • Du musst dort x,y,z, lassen.
    Normalerweise, wenn nicht, dann sag bescheid, falls es nicht klappt
    /edit
    Das macht irgendwie kein Sinn, oder?
    public refuelpos(playerid)
    {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && Job[playerid] == 3)
    {

    SetPlayerCheckpoint(i, x, y, z, 3.0);

    }
    }


    return 1;
    }
    Dort fragst du ab, ob ALLE Spieler online sind, und Player den Job 3 hat, wenn ja, zeigt du ihn den Checkpoint an, der genau auf der gleichen Position ist, wo der Spieler sich gerade befindet.

  • Danke :)
    Wie bekomm ich jetzt die Warnings weg ?
    warning 219: local variable "x" shadows a variable at a preceding level
    warning 219: local variable "y" shadows a variable at a preceding level
    warning 219: local variable "z" shadows a variable at a preceding level