Tanksystem Fill funktioniert nicht! - Was muss in die eckigen Klammern?

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
  • Hi Leute,
    ich habe mir gestern n Tanksystem gemacht aber ich habe folgendes Problem: Ich weiss nicht was ich in die eckigen Klammern schreiben soll!?


    Mein Code:



    ocmd:fill(playerid,params[])
    {
    if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return SendClientMessage(playerid,COLOR_RED,"Du befindest dich in keinem Fahrzeug oder bist nicht der Fahrer!");
    if(!IsPlayerInRangeOfPoint(playerid, 2, gInfo[][t_x],gInfo[][t_y], gInfo[][t_z]));
    return 1;
    }

  • Du willst doch Abfragen ob er bei einer Tanke ist Oder?


    if(!IsPlayerInRangeOfPoint(playerid,7.0,x,y,z))return SendClientMessage(playerid,FARBE,"Du bist an keiner Tanke.");


    Oder hast du die Tanken oben Globalisiert?

  • Hi,
    mach es so:


    new Float:aTanken[][2] = {
    {1004.2952,-934.2335,41.9007}, // Los Santos North Tankstelle
    {1009.0100,-938.4545,41.9005} // San Fierro ?
    };


    Bei der Abfrage:
    new bool:bIsNear = false;


    if(IsPlayerInRangeOfPoint(playerid, 6.0, aTanken[i][0], aTanken[i][1]))
    {
    bIsNear = true;
    break;
    }


    Funktion returnen natürlich nicht Vergessen.

  • Ich habs anders gemacht und es klappt auch trzdem danke! Aber ich hab jetzt n anderes Problem:


    Er meint ich wäre immernoch nicht an der Tankstelle 8|


    ocmd:fill(playerid,params[])
    {
    if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return SendClientMessage(playerid,COLOR_RED,"Du befindest dich in keinem Fahrzeug oder bist nicht der Fahrer!");
    for(new i=0; i<sizeof(gInfo); i++)
    {
    if(!IsPlayerInRangeOfPoint(playerid, 2, gInfo[i][t_x],gInfo[i][t_y], gInfo[i][t_z]))return SendClientMessage(playerid,COLOR_RED,"Du bist nicht in der Nähe einer Tankstelle!");
    ShowPlayerDialog(playerid, DIALOG_LITERTANKEN, DIALOG_STYLE_INPUT, gInfo[i][gas_name], "Gebe hier bitte die Menge an Liter an die du Tanken möchtest:", "Tanken", "Abbrechen");
    }
    return 1;
    }


  • ocmd:fill(playerid,params[])
    {
    if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return SendClientMessage(playerid,COLOR_RED,"Du befindest dich in keinem Fahrzeug oder bist nicht der Fahrer!");
    for(new i=0; i<sizeof(gInfo); i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 2, gInfo[i][t_x],gInfo[i][t_y], gInfo[i][t_z]))return
    ShowPlayerDialog(playerid, DIALOG_LITERTANKEN, DIALOG_STYLE_INPUT, gInfo[i][gas_name], "Gebe hier bitte die Menge an Liter an die du Tanken möchtest:", "Tanken", "Abbrechen");
    }
    return SendClientMessage(playerid,COLOR_RED,"Du bist nicht in der Nähe einer Tankstelle!");
    }

  • Schwachsinn.
    Er hat die Funktion schon richtig returnt...

    • Offizieller Beitrag

    Schwachsinn.
    Er hat die Funktion schon richtig returnt...

    Schau mal genau hin...
    wenn er nicht an der ersten Tankstelle steht wird die Schleife und somit die Funktion nicht aufgerufen.

    if(!IsPlayerInRangeOfPoint(playerid, 2, gInfo[i][t_x],gInfo[i][t_y], gInfo[i][t_z]))return SendClientMessage(playerid,COLOR_RED,"Du bist nicht in der Nähe einer Tankstelle!");


  • ocmd:fill(playerid,params[])
    {
    if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return SendClientMessage(playerid,COLOR_RED,"Du befindest dich in keinem Fahrzeug oder bist nicht der Fahrer!");
    new bool:found = false;
    for ( new i=0;i<sizeof gInfo;i++) {
    if( IsPlayerInRangeOfPoint(playerid, 2.0, gInfo[i][t_x],gInfo[i][t_y], gInfo[i][t_z]) ) { found = true; break; }
    }
    if ( found == true ) {
    // Fill Code
    }
    return 1;
    }

    So sollte es funktionieren...