IchNar 0 Odesláno: 1. Září, 2017 Share Odesláno: 1. Září, 2017 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 More sharing options...
0 Quiter 99 Odesláno: 1. Září, 2017 Share Odesláno: 1. Září, 2017 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ý 4 Link to comment Share on other sites More sharing options...
0 IchNar 0 Odesláno: 1. Září, 2017 Author Share Odesláno: 1. Září, 2017 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 More sharing options...
0 Globální moderátor Hip 191 Odesláno: 1. Září, 2017 Globální moderátor Share Odesláno: 1. Září, 2017 a kde máš ten timer? Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 1. Září, 2017 Share Odesláno: 1. Září, 2017 Protože to počítáš v metrech, vyděl to 1000. Distance měj jako pole floatů, ne integerů. 1 Link to comment Share on other sites More sharing options...
0 IchNar 0 Odesláno: 1. Září, 2017 Author Share Odesláno: 1. Září, 2017 Distance[playerid] = GetDistance(x,y,z,Px[playerid],Py[playerid],Pz[playerid]) / 1000; Keď som to vydelil 1000 tak stále 0,aj keď som prešiel z LV do LS stále 0. Link to comment Share on other sites More sharing options...
0 Lukasz 336 Odesláno: 1. Září, 2017 Share Odesláno: 1. Září, 2017 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 More sharing options...
0 Globální moderátor HighPrint 177 Odesláno: 1. Září, 2017 Globální moderátor Share Odesláno: 1. Září, 2017 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... 1 Link to comment Share on other sites More sharing options...
0 IchNar 0 Odesláno: 1. Září, 2017 Author Share Odesláno: 1. Září, 2017 Distance som prerobil na float a teraz to pripočítavam += ale stále 0.00..Stále prešiel som dosť ďaleko a stále 0.00. Link to comment Share on other sites More sharing options...
0 Quiter 99 Odesláno: 1. Září, 2017 Share Odesláno: 1. Září, 2017 http://wiki.sa-mp.com/wiki/GetPlayerDistanceFromPoint Distance[playerid] += GetPlayerDistanceFromPoint(playerid, Px[playerid],Py[playerid],Pz[playerid]); A ako už bolo spomenuté, prerob Distance[MAX_PLAYER] na Float:Distance[MAX_PLAYER]; 1 Link to comment Share on other sites More sharing options...
0 IchNar 0 Odesláno: 1. Září, 2017 Author Share Odesláno: 1. Září, 2017 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 More sharing options...
0 Quiter 99 Odesláno: 2. Září, 2017 Share Odesláno: 2. Září, 2017 Tak pošli celý kód ako to máš spravené... PS: Spawn si si opravil? Nie, ten spawn tam nebol zmienený zbytočne... 1 Link to comment Share on other sites More sharing options...
0 IchNar 0 Odesláno: 2. Září, 2017 Author Share Odesláno: 2. Září, 2017 Aha ,Ako som opravil ten spawn tak to funguje .Som zabudol to predtým spravit prepáčte ..Ďakujem za všetko ...Môžte LOCK. Link to comment Share on other sites More sharing options...
Dotaz
IchNar 0
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