Jump to content

Search the Community

Showing results for tags 'lukasz'.

  • Search By Tags

    Oddělujte čárkami
  • Search By Author

Content Type


Fórum

  • Obecné
    • Všeobecné
    • Všechno možné
  • Programování
    • Poradna
    • Návody
    • Tvorba
    • Hledám programátora
  • Herní oblast
    • Poradna
    • Jak na to?
    • Herní kontext
    • Herní zážitky
    • Komunita
  • Grafika
    • Poradna
    • Návody
    • Tvorba
  • Ostatní
    • Hardware a software
    • Hledám/nabízím
    • Archiv
    • 3D Tisk

Calendars

  • Kalendář Pawno.cz

Categories

  • Verze

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Web


Facebook


Jabber


Skype


Steam


Twitter


Github


Pastebin

Found 1 result

  1. [**] Rychlost vozidla Zdravím, v tomto návodu se zaměříme na vytváření jednoduchého tachometru a věcí kolem. Vše bude spíše z teoretické stránky věci. Odkaz na původní topic (zdroj): http://ewolutions.cz/index.php?/topic/1843-rychlost-vozidla/ Obtížnost: Úvod Na fóru se nachází jistě dost návodů a scriptů, které obsahují téma „Tachometr“. Vše ale vzniklo před, troufám si říct, několika lety, a tak nevyužívají nových možností, které SA:MP (0.3z+) nabízí. Nebudeme se zde zabývat vzhledem samotného tachometru (to už je individuální). Vektory Pro výpočet rychlosti budeme používat funkci VectorSize. Ke zjištění rychlosti použijeme funkci GetVehicleVelocity, která vrátí rychlost vozidla na jednotlivých osách. Z těchto hodnot poté musíme zjistit jednu hodnotu. Budeme tedy vypočítávat velikost vektoru se souřadnicemi X, Y, Z. Výpočet velikosti: Nyní se budeme pohybovat kvůli vizualici v rovině. Tento vektor, se souřadnicemi X, Y má nějakou velikost označenou červenou čárou. Z obrázku asi každý pochopí, že na výpočet můžeme použít Pythagorovu větu. Výpočet tedy bude: √(x^2 + y^2) Výpočet velikosti v prostoru je potom obdobný, pouze přidáme další souřadnici. Dostáváme následující: √(x^2 + y^2 + z^2) Starý výpočet: Jak jsem již předesílal, dnešní SA:MP umožňuje lepší způsoby, ale ještě si ukážeme, jak se pořád vypočítává velikost vektoru. new Float:vx, Float:vy, Float:vz; GetVehicleVelocity(vehicleid, vx, vy, vz); vz = floatsqroot(vx * vx + vy * vy + vz * vz); // ve vz nyní máme velikost /* viděl jsem také floatsqroot(floatpower(vx, 2) + floatpower(vy, 2) + floatpower(vz, 2)); a další verze s floatabs a dalšími zbytečnostmi. */ Způsob je to správný, jen je zastaralý a lze využít rychlejší řešení. Výpočet, který není za opicema Na funkci VectorSize asi není nic moc co vysvětlovat, protože název hovoří za vše. Výpočet velikosti vektoru tedy bude následující. new Float:vx, Float:vy, Float:vz GetVehicleVelocity(vehicleid, vx, vy, vz); vz = VectorSize(vx, vy, vz); // ve vz nyní máme velikost Jdeme scriptovat? Nyní se můžeme zaměrit na samotný script. Budeme vycházet z toho, že máme deklarované pole PlayerTextů o velikosti MAX_PLAYERS. Nějak takto: new PlayerText:pSpeed[MAX_PLAYERS]; Samotná pozice, vzhled a barva již bude na vás. Dále budeme potřebovat veřejnou funkci, která bude mít jako parametr playerid (budeme updatovat rychlost každého hráče zvlášť). forward updateSpeed(playerid); public updateSpeed(playerid) { if(IsPlayerInAnyVehicle(playerid)) // pokud je hráč v nějakém vozidle... { // zde proběhne update new str[9]; // 9 znaků stačí (km/h → 4, 123 → 3, mezera → 1) format(str, sizeof(str), "%d km/h", getSpeed(GetPlayerVehicleID(playerid))); PlayerTextDrawSetString(playerid, pSpeed[playerid], str); } } Také nastavíme timer (například v OnPlayerConnect heh) SetTimerEx("updateSpeed", interval, true, "d", playerid); Nezapomeneme podle potřeby ukončovat timer, abychom nepřehltili server. Jako poslední krok tu máme samotnou funkci getSpeed. Jako parametry nám poslouží id vozidla, ale můžete si to zas dle potřeby předělat (zde pracujeme jen s vozidly). stock getSpeed(vehicleid) { new Float:vx, Float:vy, Float:vz; GetVehicleVelocity(vehicleid, vx, vy, vz); return floatround(VectorSize(vx, vy, vz) * 180); } Funkcí floatround zaokrouhlíme velikost vektoru na celá čísla. Celé to násobíme 180 abychom dostali „reálné“ rychlosti. Vozidla se v GTA pohybují nereálnou rychlostí a vynásobením tímto číslem se můžeme alespoň přiblížit k reálným. Pro každé vozidlo je toto číslo jiné, tudíž se používá hodnota okolo 180 jako takové univerzální. Návod označen jako platný Ten to návod byl označen jako platný.Návod může být kdykoli označen jako nevhodný či neplatný
×
×
  • Create New...