[Problem] mit /vehiclelock

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 Brotfische,


    Mein /vehiclelock Befehl, um Autos abzuschließen geht nicht.


    Codes:


    enum carEnum{
    id_x,
    model,
    besitzer,
    fraktion,
    Float:c_x,
    Float:c_y,
    Float:c_z,
    Float:c_r,
    db_id,
    Locked[MAX_VEHICLES],
    kennzeichen[20],
    frakid,
    rang
    }
    ocmd:vehiclelock(playerid,params[])
    {
    new veh = GetOwnVehicle(playerid);
    if(veh == INVALID_VEHICLE_ID) return SendClientMessage(playerid,COLOR_RED,!"Es befindet sich keines deiner Fahrzeuge in der Nähe.");
    new engine,lights,alarm,bonnet,boot,objective;
    GetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    GameTextForPlayer(playerid, (vehdoor)?("~w~Fahrzeug ~g~aufgeschlossen"):("~w~Fahrzeug ~g~abgeschlossen"), 3000, 5);
    PlaySoundForPlayer(playerid,1147);
    SetTimerEx("PlaySoundForPlayer",500,0,"id",playerid,1147);
    SetVehicleParamsEx(veh,engine,lights,alarm,!vehdoor,bonnet,boot,objective);
    for(new i; i<MAX_PLAYERS; i++) SetVehicleParamsForPlayer(veh,i,0,!vehdoor);
    vehdoor = !vehdoor;
    return 1;
    }


    stock GetOwnVehicle(playerid) {
    new t;
    for(new i,Float:p[3],Float:tmp=999.0,Float:z; i<sizeof(cInfo); i++) {
    if(cInfo[i][besitzer]!=sInfo[playerid][db_id]) continue;
    GetVehiclePos(cInfo[i][id_x],p[0],p[1],p[2]);
    z = GetPlayerDistanceFromPoint(playerid,p[0],p[1],p[2]);
    if(z < tmp) tmp=z,t=i;
    }
    return (!t)?INVALID_VEHICLE_ID:t;
    }


    Ich hoffe es kann mir jemand helfen :D


    MFG German_ScripterHD


    Mit freundlichen Grüßen
    German_ScripterHD

  • Versuch es so:
    ocmd:vehiclelock(playerid,params[])
    {
    new veh = GetOwnVehicle(playerid);
    if(veh == INVALID_VEHICLE_ID) return SendClientMessage(playerid,COLOR_RED,!"Es befindet sich keines deiner Fahrzeuge in der Nähe.");
    new engine,lights,alarm,bonnet,boot,objective;
    GetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    GameTextForPlayer(playerid, (vehdoor)?("~w~Fahrzeug ~g~aufgeschlossen"):("~w~Fahrzeug ~g~abgeschlossen"), 3000, 5);
    PlaySoundForPlayer(playerid,1147);
    SetTimerEx("PlaySoundForPlayer",500,0,"id",playerid,1147);
    if(vehdoor!=0) vehdoor = 1;
    else vehdoor = 0;
    SetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    for(new i; i<MAX_PLAYERS; i++) SetVehicleParamsForPlayer(veh,i,0,vehdoor);
    return 1;
    }

  • Was wird dir so geprintet?
    ocmd:vehiclelock(playerid,params[])
    {
    new veh = GetOwnVehicle(playerid);
    if(veh == INVALID_VEHICLE_ID) return SendClientMessage(playerid,COLOR_RED,!"Es befindet sich keines deiner Fahrzeuge in der Nähe.");
    new engine,lights,alarm,bonnet,boot,objective;
    GetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    GameTextForPlayer(playerid, (vehdoor)?("~w~Fahrzeug ~g~aufgeschlossen"):("~w~Fahrzeug ~g~abgeschlossen"), 3000, 5);
    PlaySoundForPlayer(playerid,1147);
    SetTimerEx("PlaySoundForPlayer",500,0,"id",playerid,1147);
    printf("vehdoor war: %d", vehdoor);
    if(vehdoor!=0) vehdoor = 1;
    else vehdoor = 0;
    printf("vehdoor ist: %d (veh: %d)", vehdoor, veh);
    SetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    return 1;
    }

  • Ich habe den Befehl 3 mal eingegeben, und das hat die Console mir geprintet :)


    vehdoor war: -1
    vehdoor ist: 1 (veh: 3)
    vehdoor war: 1
    vehdoor ist: 1 (veh: 3)
    vehdoor war: 1
    vehdoor ist: 1 (veh: 3)


    Und es wird immernoch nicht abgeschlossen...


    Mit freundlichen Grüßen
    German_ScripterHD

  • Ohh, was ein Denkfehler von mir. :pinch:


    ocmd:vehiclelock(playerid,params[])
    {
    new veh = GetOwnVehicle(playerid);
    if(veh == INVALID_VEHICLE_ID) return SendClientMessage(playerid,COLOR_RED,!"Es befindet sich keines deiner Fahrzeuge in der Nähe.");
    new engine,lights,alarm,bonnet,boot,objective;
    GetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    PlaySoundForPlayer(playerid,1147);
    SetTimerEx("PlaySoundForPlayer",500,0,"id",playerid,1147);
    printf("vehdoor war: %d", vehdoor);
    if(vehdoor!=0) vehdoor = 0, GameTextForPlayer(playerid,"~w~Fahrzeug ~g~aufgeschlossen", 3000, 5);
    else vehdoor = 1, GameTextForPlayer(playerid, "~w~Fahrzeug ~g~abgeschlossen", 3000, 5);
    printf("vehdoor ist: %d (veh: %d)", vehdoor, veh);
    SetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    return 1;
    }

  • stock GetOwnVehicle(playerid)
    {
    new t;
    for(new i,Float:p[3],Float:tmp=999.0,Float:z; i<sizeof(cInfo); i++) {
    if(cInfo[i][besitzer]!=sInfo[playerid][db_id]) continue;
    GetVehiclePos(cInfo[i][id_x],p[0],p[1],p[2]);
    z = GetPlayerDistanceFromPoint(playerid,p[0],p[1],p[2]);
    if(z < tmp) tmp=z,t=i;
    }
    return (!t)?INVALID_VEHICLE_ID:t;
    }


    Mit freundlichen Grüßen
    German_ScripterHD

  • new veh=GetPlayerVehicleID(playerid);
    zu:
    new veh = INVALID_VEHICLE_ID;
    if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
    {
    new Float:Pos[3];
    for(new i=0;i<MAX_VEHICLES; i++)
    {
    GetVehiclePos(i, Pos[0], Pos[1], Pos[2]);
    if(IsPlayerInRangeOfPoint(playerid, 5.0, Pos[0], Pos[1], Pos[2]))
    {
    veh = i;
    break;
    }
    }
    }
    else if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    veh = GetPlayerVehicleID(playerid);
    }

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Vielen Dank :D


    Es geht jetzt :)

    aber eine Frage habe ich noch ^^


    Ich will das Admins auch die Autos von anderen Öffnen können, aber wie mache ich das?


    Nochmal die neusten Codes:


    ocmd:vehiclelock(playerid,params[])
    {
    new veh = INVALID_VEHICLE_ID;
    if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
    {
    new Float:Pos[3];
    for(new i=0;i<MAX_PLAYERS; i++)
    {
    GetVehiclePos(i, Pos[0], Pos[1], Pos[2]);
    if(IsPlayerInRangeOfPoint(playerid, 5.0, Pos[0], Pos[1], Pos[2]))
    {
    veh = i;
    break;
    }
    }
    }
    else if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    veh = GetPlayerVehicleID(playerid);
    }
    if(veh == INVALID_VEHICLE_ID) return SendClientMessage(playerid,COLOR_RED,!"Es befindet sich keines deiner Fahrzeuge in der Nähe.");
    new engine,lights,alarm,bonnet,boot,objective;
    GetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    GameTextForPlayer(playerid, (vehdoor)?("~w~Fahrzeug ~g~aufgeschlossen"):("~w~Fahrzeug ~g~abgeschlossen"), 3000, 5);
    PlaySoundForPlayer(playerid,1147);
    SetTimerEx("PlaySoundForPlayer",500,0,"id",playerid,1147);
    if(vehdoor!=0) vehdoor = 0;
    else vehdoor = 1;;
    SetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    return 1;
    }


    Mit freundlichen Grüßen
    German_ScripterHD

  • Aus PN:

    Zitat

    wie kann ich das jetzt in kombiniren ? :D
    So das ein Admin alle Autos öffnen kann?


    ocmd:vehiclelock(playerid,params[])
    {
    new veh = INVALID_VEHICLE_ID;
    if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
    {
    new Float:Pos[3];
    for(new i=0;i<MAX_VEHICLES; i++)
    {
    GetVehiclePos(i, Pos[0], Pos[1], Pos[2]);
    if(IsPlayerInRangeOfPoint(playerid, 5.0, Pos[0], Pos[1], Pos[2]))
    {
    veh = i;
    break;
    }
    }
    }
    else if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    veh = GetPlayerVehicleID(playerid);
    }
    if(veh == INVALID_VEHICLE_ID) return SendClientMessage(playerid,COLOR_RED,"Es befindet sich keines deiner Fahrzeuge in der Nähe.");
    if(pInfo[playerid][pAdmin] > 0 || cInfo[veh][besitzer] == playerid)
    {
    new engine,lights,alarm,bonnet,boot,objective;
    GetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    GameTextForPlayer(playerid, (vehdoor)?("~w~Fahrzeug ~g~aufgeschlossen"):("~w~Fahrzeug ~g~abgeschlossen"), 3000, 5);
    PlaySoundForPlayer(playerid,1147);
    SetTimerEx("PlaySoundForPlayer",500,0,"id",playerid,1147);
    if(vehdoor!=0) vehdoor = 0;
    else vehdoor = 1;;
    SetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    }
    else
    {
    return SendClientMessage(playerid,COLOR_RED,"Das Auto gehört dir nicht.");
    }
    return 1;
    }


    Unter der Bedingung dass du in "cInfo[veh][besitzer]" die playerid des Besitzers speicherst. Gegebenenfalls musst du das abändern.

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Danke geht zwar jetzt alles, aber ich möchte, das das näheste Auto im Umkreis von 20 Metern aufgeschlossen wird.... da IsPlayerInRangeOfPoint (Zeile: ) nicht so gut ist... :D


    Neueste Codes:


    ocmd:vehiclelock(playerid,params[])
    {
    new veh = INVALID_VEHICLE_ID;
    if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
    {
    new Float:Pos[3];
    for(new i=0;i<MAX_PLAYERS; i++)
    {
    GetVehiclePos(i, Pos[0], Pos[1], Pos[2]);
    if(IsPlayerInRangeOfPoint(playerid, 5.0, Pos[0], Pos[1], Pos[2]))
    {
    veh = i;
    break;
    }
    }
    }
    else if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    veh = GetPlayerVehicleID(playerid);
    }
    if(veh == INVALID_VEHICLE_ID) return SendClientMessage(playerid,COLOR_RED,"Es befindet sich keines deiner Fahrzeuge in der Nähe.");
    if(sInfo[playerid][alevel] > 0 || cInfo[veh][besitzer] == playerid)
    {
    new engine,lights,alarm,bonnet,boot,objective;
    GetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    GameTextForPlayer(playerid, (vehdoor)?("~w~Fahrzeug ~g~aufgeschlossen"):("~w~Fahrzeug ~g~abgeschlossen"), 3000, 5);
    PlaySoundForPlayer(playerid,1147);
    SetTimerEx("PlaySoundForPlayer",500,0,"id",playerid,1147);
    if(vehdoor!=0) vehdoor = 0;
    else vehdoor = 1;
    SetVehicleParamsEx(veh,engine,lights,alarm,vehdoor,bonnet,boot,objective);
    }
    else
    {
    return SendClientMessage(playerid,COLOR_RED,"Das Auto gehört dir nicht.");
    }
    return 1;
    }


    Mit freundlichen Grüßen
    German_ScripterHD

    Einmal editiert, zuletzt von German_ScripterHD ()