Jump to content

Jak na Tachometr


Guest Mort

Recommended Posts

Čau ...

 

dneska Vám ukážu jak si vyrobit do módu vlastní tachometr.

Tachometr je "věc" která vám ukazuje jakou jedete rychlostí ...

 

Normálně se rychlost zjišťtuje pomocí GetVehicleVelocity, ale kolega ze sa-mp.com nám vytvořil stock se kterým se rychle zjistí Speed ..

Tady máte ten Stock:

stock GetPlayerSpeed(playerid,bool:kmh) // by misko
{
 new Float:Vx,Float:Vy,Float:Vz,Float:rtn;
 if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),Vx,Vy,Vz); else GetPlayerVelocity(playerid,Vx,Vy,Vz);
 rtn = floatsqroot(floatabs(floatpower(Vx + Vy + Vz,2)));
 return kmh?floatround(rtn * 100 * 1.61):floatround(rtn * 100);
}

 

Co znamená ten bool:kmh ???

 

Můžeme použít ve dvou způsobech

Na KM/H

GetPlayerSpeed(playerid,true);

Na MP/H

GetPlayerSpeed(playerid,false);

 

Takže můžeme začít ...

 

Mno, takže si vytvořte kdekoliv jakýkoliv TextDraw, použijte Text Draw Editor

 

Až budete mít TextDraw tak smažte proměnnou new Text:textdrawx;

A místo toho si dejte mimo publicy new Text:textdrawX[MAX_PLAYERS];

TextDraw který máte v OnGameModeInit si přidejte cyklus ..

for(new i;i{
}

Do svorek ({}) si přidejte vás vytvořený textdraw a před každou proměnnou textdrawX si přidejte ..

Takže to bude vypadat nějak takhle ..

textdrawX[i] = TextDrawCreate(...)
TextDrawLetterSize(textdrawX[i],0.500000,1.000000);
TextDrawAlignment(textdrawX[i],0);

......

 

Tak to bysme měli ..

 

Teď si najdeme public OnPlayerEnterVehicle

A tam vložíme:

TextDrawShowForPlayer(playerid,textdrawX[playerid]);

 

A ještě si najdeme public OnPlayerExitVehicle

A tam dáme:

TextDrawHideForPlayer(playerid,textdrawX[playerid]);

 

------------------------------------------------------------------------------------

Teďka tou hlavní částí ...

uděláme si libovolný foward

forward Tachometr();

Do OnGameModeInit si vložíme Timer .. nějaký menší ...

SetTimer("Tachometr",213,true);

A teď na konec módu nebo kamkoliv mimo publicy ...

public Tachometr()
{
for(new i;i{
if(IsPlayerInAnyVehicle(i))
{

 

Nyní začneme dělat ten tacháč takže ..

uděláme si string(20 znaků by mělo stačit))

a uděláme si format kterej bude vypadat asi takhle:

format(.........."Rychlost: %d KM/H",GetPlayerSpeed(i,true);

a nastavíme tento string do TextDrawu ... to nechám na vás..

TextDrawSetString

A potom už jen doděláme to ostatní ...

} else return 0;
return true;
}

 

Snad vše jasné, kdyby ne tak hned pište ...

 

UPOZORNĚNÍ : TENTO TUTORIÁL NENÍ NA ZKOPÍROVÁNÍ A HLÁŠENÍ PRIMITOVNÍCH ERRORŮ

 

PS.: Než začnete dělat tachometr, přečtěte si toto , toto a toto

 

Děkuji za přečtení,

Mort.

Link to comment
Share on other sites

format(.........."Rychlost: %d KM/H",GetPlayerSpeed(playerid,true);

Pokiaľ viem, tak funkcia "GetPlayerSpeed" vracia desatinné číslo, nie celé

 

NN, i takhle mi to funguje ....

Link to comment
Share on other sites

SetTimer ti nepřenáší hodnotu, takže v publicu, který ten timer vyvolal bude parametr playerid vždy 0.

 

Zapínání/Vypínání TD bych dal do OnPlayerStateChange, OnPlayerEnterVehicle se vyvolá už když dáš u vozidla enter a postava teprve běží k autu a nasedá. OnPlayerExitVehicle se mě někdy nevyvolal třeba když se hráč portnul z vozidla do DM.

 

Když použiješ podmínku na IsPlayerInAnyVehicle, proč je i v tom stocku GetPlayerSpeed?

Link to comment
Share on other sites

Petr, lebo ten stock zistuje AJ rýchlosť hráča, ak nieje v aute...

 

if(IsPlayerInAnyVehicle(playerid))GetVehicleVelocity(GetPlayerVehicleID(playerid),Vx,Vy,Vz);

else GetPlayerVelocity(playerid,Vx,Vy,Vz);

Kebyže tam tá podmienka není, aj tak by to prebehlo, lenže by tam bol "player speedmeter" :d

Link to comment
Share on other sites

No jasně, ale když přímo v tom návodu zjišťuje POUZE rychlost ve vozidle, nikoli když jde hráč pěšky, tak je tam ta podmínka zbytečná.

Link to comment
Share on other sites

hm... skús si spraviť

 

public Timer(){

cyklus{

format(.........."Rychlost: %d KM/H",GetPlayerSpeed(i,true);

GameTextForPlayer(i,....)

}

}

a aj keď pôjdeš pešky, bude to ukazovať tvoju rýchlosť

Link to comment
Share on other sites

":133hj0sr]No jasně, ale když přímo v tom návodu zjišťuje POUZE rychlost ve vozidle, nikoli když jde hráč pěšky, tak je tam ta podmínka zbytečná.

} else return 0;
return true;
}

Link to comment
Share on other sites

hm... skús si spraviť

 

public Timer(){

cyklus{

format(.........."Rychlost: %d KM/H",GetPlayerSpeed(i,true);

GameTextForPlayer(i,....)

}

}

a aj keď pôjdeš pešky, bude to ukazovať tvoju rýchlosť

 

Já myslel smazat tu podmínku ve stocku :p

Link to comment
Share on other sites

  • 4 weeks later...

prečo mi to hádže chyby

.pwn(1384) : error 028: invalid subscript (not an array or too many subscripts): "textdrawX"
.pwn(1384) : warning 215: expression has no effect
.pwn(1384) : error 001: expected token: ";", but found "]"
.pwn(1384) : error 029: invalid expression, assumed zero
. "rabbit" pwn(1384) : fatal error 107: too many error messages on one line

mam new new Text:textdrawX;

a riadok :

textdrawX[i] = TextDrawCreate(12,246,"Rychlost: %d KM/H");

čo mi tam chýba??

Ďík

BrUn3S

Link to comment
Share on other sites

  • 4 months later...
Nyní začneme dělat ten tacháč takže ..

uděláme si string(20 znaků by mělo stačit))

a uděláme si format kterej bude vypadat asi takhle:

Přijde tam ta vytvořená proměnná..

Link to comment
Share on other sites

Nyní začneme dělat ten tacháč takže ..

uděláme si string(20 znaků by mělo stačit))

a uděláme si format kterej bude vypadat asi takhle:

Přijde tam ta vytvořená proměnná..

 

 

 

tu udělám jak ?? tohle už fakt nevím na to mam fakt krátký ruce ,pomůžeš mi s tím ??

Link to comment
Share on other sites

Promiňtě že jsem tak blbej :-( ale nevím si rady s těmi to errory

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(110) : error 017: undefined symbol "string"

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(495) : error 035: argument type mismatch (argument 1)

Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

 

 

2 Errors.

 

 

 

1. error

format(string,122,"%d",rychlost);

 

2. error

TextDrawSetString(Textdraw, string);

Link to comment
Share on other sites

no proto se ptám když to dám tak mě to hazí

C:\Users\moje\Desktop\samp03\pawno\include\dutils.inc(28) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\include\dutils.inc(132) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\include\dutils.inc(172) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\include\dutils.inc(267) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\include\dutils.inc(324) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\include\dutils.inc(366) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\include\firma.pwn(346) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(111) : error 017: undefined symbol "rychlost"

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(496) : error 035: argument type mismatch (argument 1)

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(998) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(1024) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(1040) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(1066) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(1090) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(1096) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(1128) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(1200) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(1219) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(1239) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(1270) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(1299) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(1319) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(1338) : warning 219: local variable "string" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(1352) : warning 219: local variable "string" shadows a variable at a preceding level

Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

 

 

2 Errors.

 

 

 

 

a omlouvám se jako,ale ja si nevím rady :-(

Link to comment
Share on other sites

Ty asi neumíš, ani trochu pawn, že?

1) Používej sizeof

2)

new s[15]; format(s,sizeof(s),"%d",rychlost);

3) Víš co je to parametr?

4) Jestli ano tak jdi --> http://wiki.sa-mp.com/wiki/TextDrawSetString

 

 

 

moc ne,omlovám se fakt je mi to líto že vás otravuju

C:\Users\moje\Desktop\samp03\pawno\include\apache.inc(41) : warning 219: local variable "s" shadows a variable at a preceding level

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(113) : error 001: expected token: ";", but found "-identifier-"

C:\Users\moje\Desktop\samp03\pawno\prdel.pwn(497) : error 035: argument type mismatch (argument 1)

Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

 

 

2 Errors.

 

 

prominte ale pomužete mi ??

 

1. warování 40-45

enum SPS
{
   Float:X_r,
   Float:Y_r,
   Float:Z_r
}

 

2. error 109-111

format(s,sizeof(s),"%d",rychlost)
   CreateFirma(638.4723,1684.1838,6.9922,500000);
   CreateFirma(-736.6523,2747.3359,47.2266,500000);

 

3. error 492-495

public OnPlayerConnect(playerid)
{
   TextDrawSetString(Textdraw, string);
   SetPlayerMapIcon(playerid, 1, -1519.3204,2610.3164,55.8359, 52, 0, MAPICON_LOCAL);

 

fakt sorry,budu vděčný když mi stím pomužete

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...