Jump to content

Využití funkcí pro auta - Tajný tuning


Veron

Recommended Posts

Po dlouhé době jsem se rozhodl opět něco přihodit. Jedná se o věc spíše pro začátečníky, tudíž skušenější pawner si zajisté dokáže takovouto věc udělat sám. I přes to, že se jedná o tutoriál pro začátečníky se budu snažit, aby nebyl pouze typu CTRL+C a CTRL+V ..

 

VÝSLEDNÁ FUNKCE

Uděláme si z auta jakési skryté "rychlé vozítko" nebo-li "tajný tuning". Auto bude postavené například na rohu ulice a teprve po nasednutí do něj se změní v tuning. Po vysednutí z auta se z něj opět stane "obyčejné vozidlo".

 

Nejdříve si nahoru do mode nadefinujeme "tuningauto" které nám bude vytvářet a upravovat náš tuning. Jako druhé si nadefinujeme "tuningautosedi" - globální proměna která nám ukáže, jestli v tuningautě někdo sedí, nebo ne. Mělo by to vypadat takto:

new tuningauto;
new tuningautosedi;

 

Nyní se přesuneme k publicu public OnGameModeInit() kde si tentokrát vytvoříme vozidlo. To se nám tedy díky tomuto publicu oběví ve hře ihned po zapnutí serveru. Vložíme tedy do publicu toto:

tuningauto = AddStaticVehicle(model, X, Y, Z, ZAngel, barva1, barva2); // vytvoří samotné auto
SetVehicleHealth(tuningauto, 300); // 300 = "životy" auta - 1000 životů je 100%, při nastavených 300 životech se autu z motoru kouří
tuningautosedi = 0; // nastaví, aby hned po zapnutí mode byla globální proměna 0

 

Po tomto kroku se přesuneme k publicu public OnPlayerStateChange(playerid, newstate, oldstate) kde nastavíme, aby se hned po usednutí za volant stala námi určená věc ( přidání tuningu, život autu atp. ). Mělo by to vypadat asi takto:

 

public OnPlayerStateChange(playerid, newstate, oldstate)
{
if (IsPlayerInVehicle(playerid, tuningauto) && tuningautosedi == 0) // proměnné - IsPlayerInVehicle = je li hráč v autě tuningauto; tuningautosedi - je-li proměna 0
{
AddVehicleComponent(tuningauto,1010); // přidá 10x nitro ( další komponenty lze nalézt na www.wiki.sa-mp.com
tuningautosedi = 1; // nastaví proměnou na 1
SetVehicleHealth(tuningauto, 1000); // nastaví autu plnou životnost
ChangeVehiclePaintjob(tuningauto ,2); // nastaví autu kresbu
}
return 1;
}

 

Nakonec si přidáme do public OnPlayerExitVehicle(playerid, vehicleid) toto:

public OnPlayerExitVehicle(playerid, vehicleid) // když hráč auto opustí
{
if(vehicleid == tuningauto) // proměnná - jedná se-li o "tuningauto"
{
RemoveVehicleComponent(tuningauto,1010); // odstraní nitro z auta
ChangeVehiclePaintjob(tuningauto ,3); // smaže autu kresbu
SetVehicleHealth(tuningauto, 300); // nastaví autu zpátky 300 životů
tuningautosedi = 0; // nastaví proměnnou na nulu - v autě nikdo nesedí
}
return 1;
}

 

A to je vše. Doufám že jsem vám s něčím pomohl. Budu rád za vaše připomínky a opravy.

Link to comment
Share on other sites

Neřešil bych to přes OnPlayerUpdate, zlaguje pak akorat server kdyz bude mit i dalsi kod v OnPlayerUpdate, doporučuje se tam nehazet zbytečnosti a tudiz i hodne kodu. Protoze se to prakticky vola každejch par milisekund. Udelej to treba na OnPlayerStateChange.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...