Cum rezolv sa nu creasca viteza masini in cadere?
#1

Cum as putea sa rezolv cand o masina este in cadere, sa nu creasca viteza?

De ex, pe gm bigzone, cand sari dupa chiliad cu o masina si este in cadere iti creste viteza cu o gramada si apar warnning-uri la admini pe chat aiurea, am vazut ca pe alte servere mari acest bug nu exista, cum as putea sa il rezolv si eu?
Reply
#2

Viteza va creste, nu ai ce sa ii faci.

Si in viata reala, daca scapi un obiect de la intaltime foarte mare, acesta va accelera pana cand va intampina destula rezistenta din partea aerului incat sa ramana la viteza constanta.
Diferenta dintre viata reala si GTASA este faptul ca in GTASA nu exista rezistenta aerului, ci pur si simplu o limita fixa a vitezei (care e foarte mare).

Nu poti opri accelerarea vehiculului, dar poti face serverul sa analizeze datele mai atent inainte sa trimita avertismentele.
Ai doua optiuni (cel putin atatea am gasit eu):

1. Faci o exceptie in zona chilliad-ului cand vine vorba de scanarea vitezei.
Practic ignori playerii care au viteze exagerate, daca in momentul in care sunt inregistrate valorile, se afla in acea zona.
Partea proasta aici e ca in zona aia ar putea juca cu cheat-uri.

2. Cand se inregistreaza o viteaza care e mai mare decat vitexa maxima a oricarui vehicul, masori si valoarea coordonatei z (inaltimea) a player-ului.
dupa o secunda o mai masori odata si daca inaltimea e considerabil mai mica decat cea masurata precedent, atunci ar trebui sa fie clar ca vehiculul e in cadere.
In caz contrar, poti trimite un avertisment catre admini/moderatori.
Metoda asta e mai eficienta, dar daca nu ai grija cum o implementezi, poate solicita serverul aiurea.
Reply
#3

As vrea sa fac cu GetVehicleVelocity, insa nu stiu cum sa pun conditia, adica gen, vreau ca mai inainte sa trimita mesajul sa verifice daca jucatorul e pe strada (si nu in aer) doar atunci cand nu se afla in aer sa dea acel warnning,

Daca ai putea sa ma ajuti sa o implementez in cod-ul meu?

Код:
if(GetPlayerState(i) == PLAYER_STATE_DRIVER && !IsAPlane(idcar))
			{
				new speed = Carspeed(i),
					antispeed[300],
					sendername[25];
				GetPlayerName(i,sendername,sizeof(sendername));
				if(speed > 222)
				{
        			format(antispeed, sizeof(antispeed), "(N) %s (%d, level %d) may be cheating: speed-hack | %s | speed: %d.",sendername,i,PlayerInfo[i][pLevel],aVehicleNames[GetVehicleModel(GetPlayerVehicleID(i))-400],speed);
        			ABroadCast(COLOR_RED2,antispeed,1);
				}
			}
Reply
#4

Nu te pot ajuta cu codul, pentru ca nu am mai scriptat de foarte mult timp si acum ma si mut cu resedinta si am o gramada de alte chestii pe cap.
Am cateva minute sa mai intru pe internet, asa ca pot in schimb sa iti explic cum functioneaza lucrurile, ca sa incerci sa iti dai seama pe cont propriu ce e de facut.

Serverul nu poate decat sa ia coordonata z, care practic e inaltimea playerului fata de punctul de origine al hartii (din cate stiu, originea e putin sub nivelul marii, dar poate ma insel).
Ca serverul sa poata vedea daca playerul e pe pamant sau in aer, trebuie sa folosesti plugin-ul Map Andreas, cu care serverul va "sti" tot relieful hartii din joc.
Pluginul asta poate folosi coordonatele x si y ale playerului ca sa returneze inaltimea solului in acel punct. In acelasi timp trebuie citita si coordonata z a playerului.

Astea doua trebuie sa le compari ca sa trimiti acel warning. Nu uita ca trebuie sa faci reguli speciale in zona chilliad-ului si in alte zone in care playerii pot sari cu masinile de la inaltime mare.
Reply
#5

Salut, Helion_Prime nu prea stie ce zice acolo (te incarca aiurea cu functii inutile care iti pot incarca serverul degeaba), viteza nu poate creste in cadere daca ai codurile corect scrise.

Foloseste asta pentru a calcula viteza unui vehicul.

Код HTML:
new Float:FSPE[3];
Код HTML:
#define  SpeedCheck(%0,%1,%2,%3,%4)  floatround(floatsqroot(%4?(%0*%0+%1*%1+%2*%2):(%0*%0+%1*%1) ) *%3*1.7)
Код HTML:
stock GetPlayerSpeed(playerid, get3d) return GetVehicleVelocity(pInfo[playerid][aVar][1], FSPE[0], FSPE[1], FSPE[2]), SpeedCheck(FSPE[0], FSPE[1], FSPE[2], 100.0, get3d);
Cum se foloseste? =>
Код HTML:
GetPlayerSpeed(playerid, 0);
Reply
#6

https://*********/nLzqOoldZwU - uite un tutorial , daca descarci gamemode-ul ro-streets o ai implementata direct
Reply
#7

Quote:
Originally Posted by KessMan
Посмотреть сообщение
viteza nu poate creste in cadere daca ai codurile corect scrise.
Viteza in cadere o sa creasca atata timp cat nu impui tu o limita mai joasa decat cea maxima. Tine de mecanica jocului.
Vor varia valorile inregistrate daca, vorba ta, ai codurile scrise corect.
Reply
#8

E ok, am rezolvat la warnning sa numai dea aiurea , insa, tot la fel, cand masina se afla in cadere ii creste viteza...
Reply
#9

Quote:
Originally Posted by RedGun2015
Посмотреть сообщение
E ok, am rezolvat la warnning sa numai dea aiurea , insa, tot la fel, cand masina se afla in cadere ii creste viteza...
Nu vad unde mai e problema, daca nu mai ai false warnings... Asta tine deja de mecanica jocului.
Reply
#10

Era o problema de la textdraw, totul s-a rezolvat.
Multumesc mult pentru ajutor!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)