Problem mit /carlock

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 Leutz,
    ich hab ein Problem mit /carlock und zwar, ich möchte es so machen, das nur wenn der Spieler in der Nähe von "5.0" das Auto auf schließen kann ..
    wenn er weiter weg ist als "5.0" dann nicht mehr.
    (Ich bin müde, da ich unbedingt noch was fertig kriegen wollte, also deswegen kann es sein das ich viel falsch mache ^^)



    CMD:carlock(playerid,params[]){
    //if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1, "Du bist in keinem Fahrzeug.");
    //if(GetPlayerVehicleSeat(playerid) != 0)return SendClientMessage(playerid,-1, "Du bist kein Fahrer eines Fahrzeugs.");
    new veh = GetPlayerVehicleID(playerid),id = getSlotID(veh),Float:x,Float:y,Float:z;
    if(strcmp(PlayerName(playerid),sCarInfo[id][sName]) != 0)return SendClientMessage(playerid,-1,"Dieses Fahrzeug gehört nicht dir.");
    if(id == -1)return SendClientMessage(playerid,-1,"Du besitzt kein Fahrzeug!");
    GetVehiclePos(veh,x,y,z);
    if(!IsPlayerInRangeOfPoint(playerid,5.0,x,y,z)) return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe deines Fahrzeuges!");
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(sCarInfo[id][CarLock] == 0){
    sCarInfo[id][CarLock] = 1;
    SetDoors(sCarInfo[id][VehID], true);
    soundHorn(sCarInfo[id][VehID]);
    SendClientMessage(playerid,-1,"Fahrzeug abgeschlossen");
    }else if(sCarInfo[id][CarLock] == 1){
    sCarInfo[id][CarLock] = 0;
    SetDoors(sCarInfo[id][VehID], false);
    soundHorn(sCarInfo[id][VehID]);
    SendClientMessage(playerid,-1,"Fahrzeug aufgeschlossen");
    }
    return 1;
    }
    return 1;
    }

  • CMD:carlock(playerid,params[]){
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Du bist in keinem Fahrzeug!");
    if(GetPlayerVehicleSeat(playerid))return SendClientMessage(playerid,-1,"Du bist kein Fahrer eines Fahrzeuges!");
    new veh = GetPlayerVehicleID(playeird),id=getSlotID(veh),Float:Pos[3];
    if(strcmp(PlayerName(playerid),sCarInfo[id][sName]))return SendClientMessage(playerid,-1,"Dieses Fahrzeug gehört nicht dir!");
    if(id == -1)return SendClientMessage(playerid,-1,"Du besitzt kein Fahrzeug!");
    GetVehiclePos(veh,Pos[0],Pos[1],Pos[2]);
    if(!IsPlayerInRangeOfPoint(playerid,5,Pos[0],Pos[1],Pos[2]))return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe deines Fahrzeuges!");
    if(!sCarInfo[id][CarLock])return sCarInfo[id][CarLock]=1,SetDoors(sCarInfo[id][VehID],true),soundHorn(sCarInfo[id][VehID]),SendClientMessage(playerid,-1,"Fahrzeug abgeschlossen!");
    return sCarInfo[id][CarLock]=0,SetDoors(sCarInfo[id][VehID],false),soundHorn(sCarInfo[id][VehID]),SendClientMessage(playerid,-1,"Fahrzeug aufgeschlossen!");
    }
    Du hast es doch bereits eingebaut 8|
    EDIT: Außerdem ist die Schleife unnötig. ^^

  • Upsi ... <.< danke dir trtz. für die Mühe!
    EDIT:
    @[NGD]Manne:
    Also, ich hab das jetzt getestet, ich steh NEBEN meinem Fahrzeug &' trtz. kommt "Du bist nicht in der Nähe deines Fahrzeuges!"

  • CMD:carlock(playerid,params[]){
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Du bist in keinem Fahrzeug!");
    if(GetPlayerVehicleSeat(playerid))return SendClientMessage(playerid,-1,"Du bist kein Fahrer eines Fahrzeuges!");
    new veh = GetPlayerVehicleID(playeird),id=getSlotID(veh),Float:Pos[3];
    if(strcmp(PlayerName(playerid),sCarInfo[id][sName]))return SendClientMessage(playerid,-1,"Dieses Fahrzeug gehört nicht dir!");
    if(id == -1)return SendClientMessage(playerid,-1,"Du besitzt kein Fahrzeug!");
    GetVehiclePos(id,Pos[0],Pos[1],Pos[2]);
    if(!IsPlayerInRangeOfPoint(playerid,5,Pos[0],Pos[1],Pos[2]))return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe deines Fahrzeuges!");
    if(!sCarInfo[id][CarLock])return sCarInfo[id][CarLock]=1,SetDoors(sCarInfo[id][VehID],true),soundHorn(sCarInfo[id][VehID]),SendClientMessage(playerid,-1,"Fahrzeug abgeschlossen!");
    return sCarInfo[id][CarLock]=0,SetDoors(sCarInfo[id][VehID],false),soundHorn(sCarInfo[id][VehID]),SendClientMessage(playerid,-1,"Fahrzeug aufgeschlossen!");
    }
    Natürlich muss das so ;)

  • Irgendwie, will das immer noch nicht (jetzt kein Scherz), ich mach neben dem Fahrzeug /carlock .. "Du bist nicht in der Nähe von deinem Fahrzeug!"

  • Zeig mir mal eben deine Funktion getSlotID.
    Ich muss das mit der GetPlayerVehicleID tauschen, weil du ja in keinem Fahrzeug sitzt.

  • CMD:carlock(playerid,params[]){
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Du bist in keinem Fahrzeug!");
    if(GetPlayerVehicleSeat(playerid))return SendClientMessage(playerid,-1,"Du bist kein Fahrer eines Fahrzeuges!");
    new id,Float:Pos[3];
    for(new i; i != MAX_VEHICLES; ++i)id=getSlotID(i);
    if(strcmp(PlayerName(playerid),sCarInfo[id][sName]))return SendClientMessage(playerid,-1,"Dieses Fahrzeug gehört nicht dir!");
    if(id == -1)return SendClientMessage(playerid,-1,"Du besitzt kein Fahrzeug!");
    GetVehiclePos(id,Pos[0],Pos[1],Pos[2]);
    if(!IsPlayerInRangeOfPoint(playerid,5,Pos[0],Pos[1],Pos[2]))return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe deines Fahrzeuges!");
    if(!sCarInfo[id][CarLock])return sCarInfo[id][CarLock]=1,SetDoors(sCarInfo[id][VehID],true),soundHorn(sCarInfo[id][VehID]),SendClientMessage(playerid,-1,"Fahrzeug abgeschlossen!");
    return sCarInfo[id][CarLock]=0,SetDoors(sCarInfo[id][VehID],false),soundHorn(sCarInfo[id][VehID]),SendClientMessage(playerid,-1,"Fahrzeug aufgeschlossen!");
    }
    Versuch das mal so.


  • Klappt leider immer noch nicht :/
    Jetzt kommt gar keine Meldung zurück...

  • CMD:carlock(playerid,params[]){
    print("1");
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Du bist in keinem Fahrzeug!");
    if(GetPlayerVehicleSeat(playerid))return SendClientMessage(playerid,-1,"Du bist kein Fahrer eines Fahrzeuges!");
    new id,Float:Pos[3];
    for(new i; i != MAX_VEHICLES; i++)id=getSlotID(i),print(id);
    if(strcmp(PlayerName(playerid),sCarInfo[id][sName]))return SendClientMessage(playerid,-1,"Dieses Fahrzeug gehört nicht dir!");
    if(id == -1)return SendClientMessage(playerid,-1,"Du besitzt kein Fahrzeug!");
    GetVehiclePos(id,Pos[0],Pos[1],Pos[2]);
    print("3");
    if(!IsPlayerInRangeOfPoint(playerid,5,Pos[0],Pos[1],Pos[2]))return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe deines Fahrzeuges!");
    if(!sCarInfo[id][CarLock])return sCarInfo[id][CarLock]=1,SetDoors(sCarInfo[id][VehID],true),soundHorn(sCarInfo[id][VehID]),SendClientMessage(playerid,-1,"Fahrzeug abgeschlossen!");
    return print("Ende"),sCarInfo[id][CarLock]=0,SetDoors(sCarInfo[id][VehID],false),soundHorn(sCarInfo[id][VehID]),SendClientMessage(playerid,-1,"Fahrzeug aufgeschlossen!");
    }
    Füg das mal ein, und schaue nachdem du den Befehl eingegeben hast, was in die Konsole geschrieben wurde.


  • Es wird nur "1" geprintet !

  • for(new i; i != MAX_VEHICLES; i++)
    zu
    for(new i; i < MAX_VEHICLES; i++)
    Sonst weiß ich es selber nicht mehr.

  • if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Du bist in keinem Fahrzeug!");
    if(GetPlayerVehicleSeat(playerid))return SendClientMessage(playerid,-1,"Du bist kein Fahrer eines Fahrzeuges!");


    Nimm das mal raus... Immerhin lässt du ihm die ClientMessage returnen wenn du nicht in einem Fahrzeug sitzt.. Wenn du also daneben stehst und es aufmachen willst ? ^^ Bist du ja in keinem.. Nimm die beiden Zeilen mal raus.

  • if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Du bist in keinem Fahrzeug!");
    if(GetPlayerVehicleSeat(playerid))return SendClientMessage(playerid,-1,"Du bist kein Fahrer eines Fahrzeuges!");


    Nimm das mal raus... Immerhin lässt du ihm die ClientMessage returnen wenn du nicht in einem Fahrzeug sitzt.. Wenn du also daneben stehst und es aufmachen willst ? ^^ Bist du ja in keinem.. Nimm die beiden Zeilen mal raus.

    Danke, so schlau war ich auch schon :b ich hab es immer raus genommen, trotzdem geht dass nicht.

  • Es wird nur 1 geprintet. ^^


    Sollte so funktionieren


    stock IsNextToHisCar(playerid,Float:radius){
    new i, Float:Pos[3];
    for(; i != MAX_VEHICLES; ++i){
    if(!sCarInfo[i][sName][0])continue;
    if(strcmp(PlayerName(playerid),sCarInfo[i][sName],false) == 0){
    GetVehiclePos(i,Pos[0],Pos[1],Pos[2]);
    if(IsPlayerInRangeOfPoint(playerid,radius,Pos[0],Pos[1],Pos[2])return i;
    }
    }
    return -1;
    }



    CMD:carlock(playerid, params[]){
    new id = IsNextToHisCar(playerid,5.0);
    if(id == -1)return SendClientMessage(playerid,-1,"Du bist nicht in der Nähe eines deiner Fahrzeuge.");
    sCarInfo[id][CarLock] = (!sCarInfo[id][CarLock])?(1):(0);
    new str[64];
    format(str,64,"Du hast dein Fahrzeug %s.",(!sCarInfo[id][CarLock])?("{21DD00}aufgeschlossen"):("{FF0000}abgeschlossen"));
    return SendClientMessage(playerid,-1,str);
    }

  • Danke dir auch, aber ab der Abfrage geht nichts mehr.
    -> Wenn ich mein /carlock z.B. ohne dieses if(IsPlayerInRangeOfPoint..........) mache, geht es aber wenn das drin ist geht nichts mehr!

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen