UVL - Ultimate Vehicle Library - v1.0

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

  • Beschreibung/Vorwort:
    UVL ist eine kleine aber feine Include die, wie der name schon vermuten lässt, fie funktionen für fahrzeuge ein wenig erweiter bzw erleichtert.
    Es ist sicherlich nichts großes, aber meiner meinung nach sehr nützlich und deshalb habe ich mich dazu entschieden es mit der Community zu teilen.
    Damit alle funktionen im vollen umfang genutzt werden können, ist es wichtig das ihr die zur verfügung gestellten Funktionen benutzt. Ich habe extra keine Makros benutzt die die standart funktionen von SA-MP zu denen in dieser Include kompatibel machen. Wer ein bisschen ahnng hat und vor hat diese Include zu verwenden wird das sicherlich auch schnell selbst schaffen.


    CreateVehicleEx muss benutzt werden, da sonst die anderen funktion nicht/nur teilweise funktionieren!
    Funktionen:

    CreateVehicleEx(modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawn_delay = -1, paintjobid = 0, interiorid = 0, virtualworld = 0, nummernschild[] = "")
    DestroyVehicleEx(vehicleid)
    ResetVehicleStats(vehicleid) // !!! NICHT BENUTZEN !!!
    SetVehicleInterior(vehicleid, interiorid)
    SetVehicleToVirtualWorld(vehicleid, virtualworld)
    GetVehicleVirtualWorldEx(vehicleid)
    GetVehicleInteriorEx(vehicleid)
    GetVehiclePosEx(vehicleid, &Float:x, &Float:y, &Float:z)
    SetVehiclePosEx(vehicleid, Float:x, Float:y, Float:z)
    GetVehicleAngle(vehicleid, &Float:angle)
    SetVehicleAngle(vehicleid, Float:angle)
    SetvehicleArea(vehicleid, Float:x, Float:y, Float:z, Float:angle, interiorid, virtualworld)
    SetVehicleEngine(vehicleid, bool:status)
    GetVehicleEngine(vehicleid)
    SetVehicleLights(vehicleid, bool:status)
    GetVehicleLights(vehicleid)
    SetVehicleAlarm(vehicleid, bool:status, time)
    GetVehicleAlarm(vehicleid)
    SetVehicleDoors(vehicleid, bool:status)
    GetVehicleDoors(vehicleid)
    SetVehicleBonnet(vehicleid, bool:status)
    GetVehicleBonnet(vehicleid)
    SetVehicleBoot(vehicleid, bool:status)
    GetVehicleBoot(vehicleid)
    ChangeVehicleColorEx(vehicleid, color1, color2)
    GetVehicleColor(vehicleid, &color1, &color2)
    ChangeVehiclePaintjobEx(vehicleid, paintjobid)
    GetVehiclePaintJob(vehicleid)
    SetVehicleHealthEx(vehicleid, Float:health)
    GetVehicleHealthEx(vehicleid, &Float:health)
    Float:GetVehicleHealthEx2(vehicleid)
    RepairVehicleEx(vehicleid)
    GetFreeVehicleSeat(vehicleid)
    GetVehicleModelEx(vehicleid)
    SetVehicleNumberPlateEx(vehicleid, numberplate[])
    GetVehicleNumberPlate(vehicleid, numberplate[])
    SetVehicleGodMode(vehicleid, bool:status)
    IsVehicleInGodMode(vehicleid)
    GetVehicleNameByVehicleID(vehicleid)
    GetVehicleNameByModelID(modelid)
    SetVehicleToRespawnEx(vehicleid)
    IsVehicleDrivingBackwards(vehicleid)
    ReturnVehicleSpeed(vehicleid,type)
    GetRandomVehicle()

    Callbacks:

    forward OnVehicleRespawn(vehicleid);
    forward OnVehicleChangeVirtualWorld(vehicleid,newvirtualworld,oldvirtualworld);
    forward OnVehicleChangeInterior(vehicleid,newinteriorid,oldinteriorid);
    forward OnVehicleChangeColor(vehicleid, oldcolor1, oldcolor2, newcolor1, newcolor2);
    forward OnVehicleChangePaintJob(vehicleid, oldpaintjob, newpaintjob);
    forward OnVehicleParamsChange(vehicleid, param_id, toggle, time);

    Hinweis:

    • Bei allen funktionen, wo bool:status vorkommt, kann entweder true(1) oder false(0) eingesetzt werden. true = Aktivieren, false = Deaktivieren.
    • SetVehicleNumberPlateEx benötigt weiterhin einen Respawn des Fahrzeugs nach dem verändern des Nummernschildes.
    • Der GodMode läuft über einen Timer (100 MS). Wem das zu viel ist, der kann diesen auch erhöhen. Dazu einfach im script nach der Zeile "#define GODMODE_TIMER" suchen und die Zahl verändern.
    • Bei OnVehicleParamsChange gibt es folgende Param ID's:

      • VEHICLE_PARAMS_ENGINE (1)
      • VEHICLE_PARAMS_LIGHTS (2)
      • VEHICLE_PARAMS_ALARM (3)
      • VEHICLE_PARAMS_DOORS (4)
      • VEHICLE_PARAMS_BONNET (5)
      • VEHICLE_PARAMS_BOOT (6)
      • VEHICLE_PARAMS_GODMODE (7)


      Der time parameter wird nur bei SetVehicleAlarm benutzt und sagt aus für wie viele MS der Alarm aktiviert wurde.

    • UVL ist foreach kompatibel. Das heisst, wenn ihr UVL & foreach benutzt steht euch ein "Vehicle" parameter zur verfügung, mit dem ihr durch Alle fahrzeuge loopen könnt die erschaffen wurden. Beispiel s.u.


    Beispiele:
    Ich werde nicht zur jeder funktion ein beispiel machen, da ich denke das die meisten klar sein sollten. Auf anfrage werde ich das aber gerne nachholen.

    public OnVehicleParamsChange(vehicleid, param_id, toggle, time)
    {
    if(toggle)
    {
    if(time == -1)
    {
    printf("Vehicle (%d) Params ID '%d' changed ON!",vehicleid, param_id);
    }
    else
    {
    printf("Vehicle (%d) Params ID '%d' changed ON! Time = %d",vehicleid, param_id, time);
    }
    }
    else printf("Vehicle (%d) Params ID '%d' changed OFF!",vehicleid, param_id);
    return 1;
    }


    public OnVehicleChangePaintJob(vehicleid, oldpaintjob, newpaintjob)
    {
    printf("Vehicle (%d) Paintjob Changed! Old: '%d' New: '%d'!",vehicleid, oldpaintjob, newpaintjob);
    return 1;
    }


    public OnVehicleChangeColor(vehicleid, oldcolor1, oldcolor2, newcolor1, newcolor2)
    {
    printf("Vehicle (%d) Color Changed! Old: '%d|%d' New: '%d|%d'!",vehicleid, oldcolor1, oldcolor2, newcolor1, newcolor2);
    return 1;
    }


    public OnVehicleRespawn(vehicleid)
    {
    printf("Vehicle %d respawned!",vehicleid);
    return 1;
    }


    public OnVehicleChangeVirtualWorld(vehicleid,newvirtualworld,oldvirtualworld)
    {
    printf("Vehicle (%d) VW Changed! Old: '%d' New: '%d'!",vehicleid,newvirtualworld,oldvirtualworld);
    return 1;
    }


    public OnVehicleChangeInterior(vehicleid,newinteriorid,oldinteriorid)
    {
    printf("Vehicle (%d) Interior Changed! Old: '%d' New: '%d'!",vehicleid,newinteriorid,oldinteriorid);
    return 1;
    }


    //foreach funktionen:
    Iter_Count(Vehicle); //returnt die Anzahl an erschaffenen Fahrzeugen


    if(strcmp(cmd, "/respawncars", true) == 0)
    {
    foreach (Vehicle, vID)
    {
    SetVehicleToRespawnEx(vID);
    }
    printf("Es wurden %d Fahrzeuge respawnt!",Iter_Count(Vehicle));
    return 1;
    }

    Download:


    Viel Spass damit. Falls ihr Bugs findet oder Verbesserungs vorschläge habt immer her damit.
    Credits werde ich keine dazu schreiben da das alles über einen längeren zeitraum entstanden ist. Wer also irgendwas von sich wiederfindet, und es nicht mit seinem gewissen ausmachen kann das er nicht namentlich erwähnt wurde, kann mir ja eine PN schreiben.


    Mfg.

    The fact is, I am right. And if you think I'm wrong, you are wrong.

    Einmal editiert, zuletzt von maddin () aus folgendem Grund: Präfix geändert

  • Dein Script ist richtig gut und nützlich, dein Logo ist auch richtig gut, deine BB-Codes und Textaussehen ist auch sehr gut.
    Aber das mit dem "[ FILTERSCRIPT ] [INCLUDE]" macht mich irgendwie traurig.. x)


    Spaß beiseite, ich gebe dir 8/10, da man manche sachen eben besser scripten könnte ^^

  • public GetVehicleAlarm(vehicleid) return VehicleInfo[vehicleid][VD_VEHICLE_ALARM];
    Das hier finde ich irgendwie besser und schneller:


    #define GetVehicleAlarm(%0) VehicleInfo[%0][VD_VEHICLE_ALARM]
    ^^


    Oder das hier:
    public GetVehiclePaintJob(vehicleid) return VehicleInfo[vehicleid][VD_VEHICLE_PAINTJOB];


    ...zu...:


    #define GetVehiclePaintJob(%0) VehicleInfo[%0][VD_VEHICLE_PAINTJOB]

  • Geschwindigkeit ist schon drin^^
    ReturnVehicleSpeed(vehicleid,type)
    Type 1 = kmh
    Type 2 = mph


    Mit den Kilometern ist ne nette funktion, werd ich mal bei gelegenheit nachreichen^^


    Und ob ichs jetzt per makro machen, oder so wie es jetzt schon ist macht doch wirklich keinen unterschied^^

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • sieht gut aus ;), nützlich für Anfänger und auch für Fortgeschrittene


    lg

  • Zitat

    Mit Makros programmieren ist nicht immer sinnvoll und es können schnell Fehler entstehen ;D (Betonung auf können)


    Können sie garnicht, wenn man weis was man tut.


    #define GetVehicleAlarm(%0) VehicleInfo[%0][VD_VEHICLE_ALARM]


    Wenn du das in deinem Script so einsetzt..:
    if(GetVehicleAlarm(vehid) == 0)


    Wirds beim Compilen so kompiliert:
    if(VehicleInfo[vehid][VD_VEHICLE_ALARM] == 0)


    Also, können da keine Fehler entstehen, außer du machst es absichtlich.

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