Jump to content
  • 0

pomoc KM


IchNar

Dotaz

Popis problému:

Ako mám spraviť kontrolu,že koľko má hráč najazdené km??

 

Chyby/varování kompilátoru a při běhu:

--

 

Kód:

 

--

 

 

 

Dodatečné poznámky:

--

Link to comment
Share on other sites

12 odpovědí na tuto otázku

Recommended Posts

  • 0

timer + ukladanie poslednej pozície + zisťovanie aktualnej pozície + výpočet vzdialenosti 2 bodov + ukladanie do dát hráča

 

1) Vytvor si premenné pre hráča - najlepšie PosX, PosY, PosZ najlepšie na začiatku modu

2) Vytvori si timer, napr. na 1 sekundu, prípadne ak to nechceš až tak presné a odlahčiť serveru tak na 5-10 sekund.

3 V timery zisti hráčovu pozíciu

4) V timery zisti vzdialenosť medzi aktuálnou pozíciou a súradnicami PosX, PosY, PosZ

5) Ulož vzdialenosť do nejakej svojej premennej

6) Prepíš PosX, PosY, PosZ aktuálnou pozíciou

7) V OnPlayerSpawn nastav premenné PosX, PosY, PosZ na aktuálnu pozíciu hráča

 

PS: odporúčam si timer ošetriť na kontrolu, či bol už hráč spawnutý

  • Líbí se mi to! (+1) 4
Link to comment
Share on other sites

  • 0

Spravil som to tak jak si mi napísal,ale má to chybičku a tú že to neni v kilometroch lebo prejdem pár metrov a ukáže mi 6 atd...

Tu máš kód:

public najazdenekm(playerid)
{
	 if(IsPlayerInAnyVehicle(playerid))
	 {
			 new vehicle = GetPlayerVehicleID(playerid);
			 new string[128];
			 new Float:x,Float:y,Float:z;
			 GetVehiclePos(vehicle,x,y,z);
			 Distance[playerid] = GetDistance(x,y,z,Px[playerid],Py[playerid],Pz[playerid]);
			 format(string,sizeof(string),"%i",Distance[playerid]);
			 Px[playerid] = x;
			 Py[playerid] = y;
			 Pz[playerid] = z;
			 SendClientMessage(playerid,-1,string);
	 }
	 return 1;
}

stock GetDistance( Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2 )
{
	return floatround( floatsqroot( ( ( x1 - x2 ) * ( x1 - x2 ) ) + ( ( y1 - y2 ) * ( y1 - y2 ) ) + ( ( z1 - z2 ) * ( z1 - z2 ) ) )  );
}

Link to comment
Share on other sites

  • 0

 

Distance měj jako pole floatů, ne integerů.

 

 

Protože máš špatný datový typ Distance.

 

Pro lepší přesnost bych použil funkci VectorSize místo GetDistance (nebo alespoň odebral zaokrouhlení a vracel float).

Link to comment
Share on other sites

  • 0
  • Globální moderátor

Tak tu vzdálenost chceš pokaždé sečíst... takhle si furt přepisuješ mezi x,y,z a poslední px,py,pz. A taky pak jak říkal Lukasz s tím floatem

 

Distance[playerid] += GetDist...

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0

Už mi to funguje už teraz vám ďakujem,ale je tam ešte jedna malička chyba.Tá chyba spočíva v tom že to nezačína od 0.00,ale hned keď vstúpim do auta mi píše 2.37.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...