Funktion nimmt immer die erste Fahrzeug ID

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,


    ich hab ein Abschleppsystem für das OAmt gemacht, nun wen ich /tow mache (und dabei z.b. bei VehicleID 5) bin hängt aufeinmal das Fahrzeug mit der ID 1 an meinem haken?...
    Code:
    if(strcmp("/tow", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 525)
    {
    if(IsTrailerAttachedToVehicle(VehID))
    {
    DetachTrailerFromVehicle(VehID);
    } else {
    if(IsPlayerInRangeOfVehicle(playerid))
    {
    AttachTrailerToVehicle(IsPlayerInRangeOfVehicle(playerid), VehID);
    }
    }
    }
    }
    return 1;
    }
    stock IsPlayerInRangeOfVehicle(playerid)
    {
    for(new v; v < MAX_VEHICLES; v++)
    {
    GetVehiclePos(v, vPosX, vPosY, vPosZ);
    if(IsPlayerInRangeOfPoint(playerid, 3.0, vPosX, vPosY, vPosZ)) continue;
    }
    return 1;
    }


    Danke für jede Hilfe ^^

  • Ist doch kein Wunder wo lässt du die Variable die Fahrzeug ID vom Fahrzeug das in der nähe steht zuweißen ?
    Machs so:



    stock IsPlayerInRangeOfVehicle(playerid)
    {
    for(new v; v < MAX_VEHICLES; v++)
    {
    GetVehiclePos(v, vPosX, vPosY, vPosZ);
    if(IsPlayerInRangeOfPoint(playerid, 3.0, vPosX, vPosY, vPosZ))
    {
    return v;
    }
    }
    return -1;
    }


    Befehl:



    if(strcmp("/tow", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 525)
    {
    if(IsTrailerAttachedToVehicle(VehID))
    {
    DetachTrailerFromVehicle(VehID);
    } else {
    VehID = IsPlayerInRangeOfVehicle(playerid);
    if(VehID != -1)
    {
    AttachTrailerToVehicle(IsPlayerInRangeOfVehicle(playerid), VehID);
    }
    else{//befindet sich bei keinem Fahrzeug
    }
    }
    }
    }
    return 1;
    }

    RFT

  • Jetzt funktionierts garnicht mehr ^^


    if(strcmp("/tow", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 525)
    {
    if(IsTrailerAttachedToVehicle(VehID))
    {
    DetachTrailerFromVehicle(VehID);
    } else {
    new NearCar = IsPlayerInRangeOfVehicle(playerid);
    if(NearCar != -1)
    {
    AttachTrailerToVehicle(IsPlayerInRangeOfVehicle(playerid), VehID);
    }
    }
    }
    }
    return 1;
    }
    (stock ist der selbe wie deiner)

  • Erhöh mal den Radius von 3.0 auf 10.0.



    if(IsPlayerInRangeOfPoint(playerid, 3.0, vPosX, vPosY, vPosZ))


    Und mach ne kleine Debug Funktion im Script.



    new NearCar = IsPlayerInRangeOfVehicle(playerid);
    printf("Carid: %d", NearCar);

    RFT

  • stock IsPlayerInRangeOfVehicle(playerid)
    {
    for(new v; v < MAX_VEHICLES; v++)
    {
    GetVehiclePos(v, vPosX, vPosY, vPosZ);
    if(IsPlayerInRangeOfPoint(playerid, 10.0, vPosX, vPosY, vPosZ)) return v;
    }
    return INVALID_VEHICLE_ID;
    }



    Edit: Radius vergrößert

  • Stock
    stock IsPlayerInRangeOfVehicle(playerid)
    {
    for(new v; v < MAX_VEHICLES; v++)
    {
    GetVehiclePos(v, vPosX, vPosY, vPosZ);
    if(IsPlayerInRangeOfPoint(playerid, 10.0, vPosX, vPosY, vPosZ))
    {
    printf("Gefundene ID: %i", v);
    return v;
    }
    }
    return -1;
    }

    CMD
    if(strcmp("/tow", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 525)
    {
    if(IsTrailerAttachedToVehicle(VehID))
    {
    DetachTrailerFromVehicle(VehID);
    } else {
    new NearCar = IsPlayerInRangeOfVehicle(playerid);
    printf("Du befindest dich bei FahrzeugID: %i", NearCar);
    if(NearCar != -1)
    {
    AttachTrailerToVehicle(IsPlayerInRangeOfVehicle(playerid), VehID);
    }
    }
    }
    }
    return 1;
    }

  • Probiere es doch mal so:


    if(strcmp("/tow", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    new vid = GetPlayerVehicleID(playerid);
    if(GetVehicleModel(vid) != 525) return 1;
    if(IsTrailerAttachedToVehicle(vid)) DetachTrailerFromVehicle(VehID);
    else
    {
    new Float: X, Float: Y, Float: Z;
    for(new v; v<MAX_VEHICLES; v++)
    {
    GetVehiclePos(v, X, Y, Z);
    if(!IsPlayerInRangeOfPoint(playerid, 10.0, X, Y, Z)) continue;
    AttachTrailerToVehicle(v, vid);
    break;
    }
    }
    }
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S