/carlock - wie weiter machen?

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
    • Offizieller Beitrag

    Abend,
    ich arbeite gerade an einem Carsystem, folglich also auch einem Befehl, um das Fahrzeug abzuschließen.
    Als Autobesitzer soll man immer das Auto das einem gehört und in der unmittelbaren Nähe steht, offen und zuschließen können.
    Der Befehl:

    COMMAND:carlock(playerid,params[])
    {
    new pfad[256];
    new car = GetCarInRangeOfPlayer(playerid,3.0);
    if(car == -1) return 1;
    format(pfad,70,"KL/Cars/%d.txt",car);
    if(!strcmp(CarInfo[car][c_Owner],PlayerName[playerid],false))
    {
    if(CarInfo[car][c_Auf] == 0)
    {
    format(str,144,"~w~%s ~r~abgeschlossen",GetVehicleName(car));
    GameTextForPlayer(playerid,str,3000,3);
    GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(car,engine,lights,alarm,1,bonnet,boot,objective);
    CarInfo[car][c_Auf] = 1;
    }
    else
    {
    format(str,144,"~w~%s ~g~aufgeschlossen",GetVehicleName(car));
    GameTextForPlayer(playerid,str,3000,3);
    GetVehicleParamsEx(car,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(car,engine,lights,alarm,0,bonnet,boot,objective);
    CarInfo[car][c_Auf] = 0;
    }
    }
    return 1;
    }


    Der stock GetCarInRangeOfPlayer():

    stock GetCarInRangeOfPlayer(playerid,Float:range)
    {
    for(new i=0;i<MAX_CARS;i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,range,CarInfo[i][Pos_c][0],CarInfo[i][Pos_c][1],CarInfo[i][Pos_c][2]))
    {
    if(!strcmp(PlayerName[playerid],CarInfo[i][c_Owner],false))
    {
    return i;
    }
    }
    }
    return -1;
    }


    Würde mich über etwas Hilfe freuen, da der Befehl wie ich ihn bereits habe, nicht funktioniert und ich mit meinem Latein am Ende bin.
    Freundliche Grüße,
    DreamZz.



    //edit: Rechtschreibfehler

  • Also benutze zwar ocmd und weiß auch jetzt nicht ob wir das selbe Car Owner System nutzen doch hier mal wie ich es bei mir gelöst habe


    ocmd:carlock(playerid,params[]) //Schließt das Auto ab
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));

    new Autodatei[100], i = Carkey[playerid];
    new Float:carx,Float:cary,Float:carz;
    format(Autodatei,sizeof(Autodatei),"/Cars/%s_Auto_%d.ini",name,i);
    if(dini_Exists(Autodatei))
    {
    if(i == 0) //Fragt ab ob der Spieler den 1 Schlüssel hat
    {
    GetVehiclePos(Spielercar[playerid][0],carx,cary,carz);
    if(IsPlayerInRangeOfPoint(playerid,5,carx,cary,carz) && IsRightCarkey(playerid)) //Fragt ab ob der Spieler am Auto steht und den Schlüssel dafür hat
    {
    if(Autos[playerid][0][Abgeschlossen] == 0) //Fragt ab ob das Auto nicht abgeschlossen ist
    {

    Autos[playerid][0][Abgeschlossen] = 1;
    SetVehicleParamsEx(Spielercar[playerid][0],engine,lights,alarm,VEHICLE_PARAMS_ON,bonnet,boot,objective);
    DisplayTextForPlayer(playerid,"~r~Abgeschlossen", 8, 1, 2);
    return 1;
    }
    else if(Autos[playerid][0][Abgeschlossen] == 1) //Fragt ab ob das Auto abgeschlossen ist
    {
    Autos[playerid][0][Abgeschlossen] = 0;
    SetVehicleParamsEx(Spielercar[playerid][0],engine,lights,alarm,VEHICLE_PARAMS_OFF,bonnet,boot,objective);
    DisplayTextForPlayer(playerid,"~g~Augeschlossen", 8, 1, 2);
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,red,"Du bist nicht an deinem Auto oder hast den falschen Schlüssel.");
    return 1;
    }
    }
    else if(i == 1)//Fragt ab ob der Spieler den 2 Schlüssel hat
    {
    GetVehiclePos(Spielercar[playerid][1],carx,cary,carz);
    if(IsPlayerInRangeOfPoint(playerid,5,carx,cary,carz) && IsRightCarkey(playerid))
    {
    if(Autos[playerid][1][Abgeschlossen] == 0)
    {

    Autos[playerid][1][Abgeschlossen] = 1;
    SetVehicleParamsEx(Spielercar[playerid][1],engine,lights,alarm,VEHICLE_PARAMS_ON,bonnet,boot,objective);
    DisplayTextForPlayer(playerid,"~r~Abgeschlossen", 8, 1, 2);
    return 1;
    }
    else if(Autos[playerid][1][Abgeschlossen] == 1)
    {
    Autos[playerid][1][Abgeschlossen] = 0;
    SetVehicleParamsEx(Spielercar[playerid][1],engine,lights,alarm,VEHICLE_PARAMS_OFF,bonnet,boot,objective);
    DisplayTextForPlayer(playerid,"~g~Augeschlossen", 8, 1, 2);
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,red,"Du bist nicht an deinem Auto oder hast den falschen Schlüssel.");
    return 1;
    }
    }


    return 1;
    }
    return 1;
    }


    Ich weiß das geht auch kürzer doch wollte erstmal das es überhaupt geht ^^