Jump to content
_SIRIUS_

[Tutorial] - Modificarea vitezei vehiculelor.

Recommended Posts

Salut, dupa muuult timp de inactivitate si leneveala m-am gandit sa ofer un simplu si banal sistem de modificare a vitezei vehiculelor.

Practic acest "sistem" este baza sistemului stage de pe b-hood.

Incepem prin a defini variabilile de care ne vom folosi:

Adaugati tot de mai jos undeva la inceputul gamemode-ului.

#define SPEED_MULTIPLIER 1.025
#define SPEED_THRESHOLD  0.4
#define  SpeedUPCheck(%0,%1,%2,%3,%4)  floatround(floatsqroot(%4?(%0*%0+%1*%1+%2*%2):(%0*%0+%1*%1) ) *%3*1.7)
new g_SpeedUpTimer = -1, Float:g_SpeedThreshold, maxSpeed[MAX_VEHICLES];

Adaugati tot de mai jos in OnGameModeInit().

g_SpeedThreshold = SPEED_THRESHOLD * SPEED_THRESHOLD;
g_SpeedUpTimer = SetTimer("SpeedUP", 250, true);

Adaugati tot de mai jos undeva prin gamemode.

forward SpeedUP();
public SpeedUP[250]() {
	foreach(new playerid : Player) {
        new vehicleid = GetPlayerVehicleID(playerid), Float:vx, Float:vy, Float:vz, viteza = GetPlayerSpeedUP(playerid, 0);
		if(IsPlayerInAnyVehicle(playerid)) {
     		GetVehicleVelocity(vehicleid, vx, vy, vz);
            if(vx * vx + vy * vy < g_SpeedThreshold)
                continue;

            vx *= SPEED_MULTIPLIER;
            vy *= SPEED_MULTIPLIER;

            if (vz > 0.04 || vz < -0.04)
            vz -= 0.020;
			if(viteza < maxSpeed[vehicleid])
				SetVehicleVelocity(vehicleid, vx, vy, vz);
		}
    }
}

Adaugati tot de mai jos undeva prin gamemode.

stock GetPlayerSpeedUP(playerid, get3d) {
	new veh = GetPlayerVehicleID(playerid), Float:FlSP[3];
	GetVehicleVelocity(veh, FlSP[0], FlSP[1], FlSP[2]), SpeedUPCheck(FlSP[0], FlSP[1], FlSP[2], 100.0, get3d);
	return 1;
}

Adaugati comanda undeva prin gamemode.

CMD:maxspeedup(playerid, params[]) {
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "** Nu te afli intr-un vehicul.");
	new speed, veh = GetPlayerVehicleID(playerid), string[51];
    if(sscanf(params, "i", speed)) return SendClientMessage(playerid, -1, "/maxspeedup [speed]");
    switch(speed) {
        case 0: return SendClientMessage(playerid, -1, "** Max speed-ul a fost eliminat!"), maxSpeed[veh] = 0, 0;
    }
    maxSpeed[veh] = speed;
    format(string, sizeof string, "** Vehiculul #%d detine acum maxSpeed-ul #%d.", veh, maxSpeed[veh]);
	SendClientMessage(playerid, -1, string);
	return 1;
}

Pentru a elimina max speed-ul de pe un vehicul tastati comanda:

[/maxspeedup 0]

 

Asta a fost "sistemul", daca cunosti cat de cat limbajul pwn poti dezvolta foarte usor un sistem stage ca pe fratie.

Cine doreste sistemul stage il pot scrie la comanda cu tot cu TD-uri/Mapping pe orice gamemode pentru suma de 25 lei/5 euro.

Daca ai probleme/nelamuriri imi poti lasa PM.

BFT ALL, NE AUZIM LA URMATORUL TUT.

PS: UN +1 M-AR MOTIVA ENORM :D

PSx2: TIMERUL ESTE CEL DEFAULT, AM DECIS SA NU POSTEZ CU Y_TIMERS DEOARECE MULTI NU STIU SA IL FOLOSEASCA. PENTRU CUNOSCATORI ADAUGATI TASK-UL VOI. :D

Edited by _SIRIUS_
  • Like 1

Share this post


Link to post
Share on other sites
La 14.04.2019 la 5:13, #Yudin a spus:

De optimizatie ai auzit?

Surprinde-ma cu ideea ta geniala de a optimiza o amarata functie :)))

Aaa da ii adaugi un task si e optimizat? :)))

E un simpu tutorial baa, e dedicat incepatorilor si iti spun eu unui incepator nu-i sta gandul la optimizare..

Rautacios mai esti ma..e din samanta?

Share this post


Link to post
Share on other sites
On 4/16/2019 at 5:54 PM, _SIRIUS_ said:

Surprinde-ma cu ideea ta geniala de a optimiza o amarata functie :)))

Aaa da ii adaugi un task si e optimizat? :)))

E un simpu tutorial baa, e dedicat incepatorilor si iti spun eu unui incepator nu-i sta gandul la optimizare..

Rautacios mai esti ma..e din samanta?

Faci un timer global in care faci un loop pe toti jucatorii conectati, asta la 250 ms. Nu ti se pare ca ceva nu-i deloc ok?

2 solutii care-mi vin acum, fara sa ma gandesc:
Aplici ceea ce ai facut tu, dar iti faci un iterator in care incluzi doar jucatorii care-s in vehicule "modificare" pe scaunul soferului si faci loop doar pe astia
sau te folosesti de OnPlayerUpdate in loc de  acel timer.

Share this post


Link to post
Share on other sites
Chiar acum, Lunoxx a spus:

Faci un timer global in care faci un loop pe toti jucatorii conectati, asta la 250 ms. Nu ti se pare ca ceva nu-i deloc ok?

2 solutii care-mi vin acum, fara sa ma gandesc:
Aplici ceea ce ai facut tu, dar iti faci un iterator in care incluzi doar jucatorii care-s in vehicule "modificare" pe scaunul soferului si faci loop doar pe astia
sau te folosesti de OnPlayerUpdate in loc de  acel timer.

Bun, deci vad ca tu stii cu ce se mananca.

Deci sa fie clar..am zis ca asta-i un tutorial deci ce-l care il v-a folsi v-a fi la alegera lui daca il v-a optimiza sau nu.

Si eu sunt de acord cu iteratorul, asa as face si eu.

Pe de'o alta parte nu sunt deloc de acord cu onplayerupdate deoarece acest callback este apelat de aprox. 30 de ori pe secunda.

Timerul pe care l-am setat este apelat doar de 4 ori pe secunda..si avand si un iterator care verifica jucatorii care conduc un vehcul nu v-a afecta serverul.

Edited by _SIRIUS_

Share this post


Link to post
Share on other sites
3 hours ago, _SIRIUS_ said:

Bun, deci vad ca tu stii cu ce se mananca.

Deci sa fie clar..am zis ca asta-i un tutorial deci ce-l care il v-a folsi v-a fi la alegera lui daca il v-a optimiza sau nu.

Si eu sunt de acord cu iteratorul, asa as face si eu.

Pe de'o alta parte nu sunt deloc de acord cu onplayerupdate deoarece acest callback este apelat de aprox. 30 de ori pe secunda.

Timerul pe care l-am setat este apelat doar de 4 ori pe secunda..si avand si un iterator care verifica jucatorii care conduc un vehcul nu v-a afecta serverul.

OnPlayerUpdate este apelat oricum, chiar daca tu adaugi alea acolo sau nu.

Share this post


Link to post
Share on other sites

nu vad nimic util din asta adica sa te folosesti de o comanda anume  este aiurea zic eu.

 

Share this post


Link to post
Share on other sites
Chiar acum, Lunoxx a spus:

OnPlayerUpdate este apelat oricum, chiar daca tu adaugi alea acolo sau nu.

Normal ca este apelat insa de ce sa il ingreunezi cu inca o functie cand tu ai avea nevoie doar de un timer spre exeplu 250 ms..avand in vedere ca onplayerupdate se apeleaza de aproximativ 30 de ori pe secunda...

Eu unul nu ma folosesc de onplayerupdate in gamemode-ul meu...ma folosesc de timere de 250ms, 500ms si o seunda...si cu iteratori adaugati sunt mai mult decat multumit :D

Share this post


Link to post
Share on other sites
Chiar acum, Geani a spus:

nu vad nimic util din asta adica sa te folosesti de o comanda anume  este aiurea zic eu.

 

Poti seta viteza direct la spawnarea vehiculului...fara acea comanda nu vad cum tu ca utilizator de sistem ai putea testa dracovenia.

Share this post


Link to post
Share on other sites
Acum 11 ore, _SIRIUS_ a spus:

Bun, deci vad ca tu stii cu ce se mananca.

Deci sa fie clar..am zis ca asta-i un tutorial deci ce-l care il v-a folsi v-a fi la alegera lui daca il v-a optimiza sau nu.

Si eu sunt de acord cu iteratorul, asa as face si eu.

Pe de'o alta parte nu sunt deloc de acord cu onplayerupdate deoarece acest callback este apelat de aprox. 30 de ori pe secunda.

Timerul pe care l-am setat este apelat doar de 4 ori pe secunda..si avand si un iterator care verifica jucatorii care conduc un vehcul nu v-a afecta serverul.

Tocmai de asta se ajunge unde se ajunge ... din cauza desteptilor ca voi, nu vad rostul sa faci un TUTORIAL daca nu esti in stare sa-l faci calumea.

Tocmai de asta se numeste tutorial, ca incepatorii sa invete ceva din codul ala sau macar sa retina metoda prin care a fost scris, nu vi tu si spui " pe incepatori nu ii intereseaza optimizare ", probabil ca e adevarat, dar dupa cacatul tau de cod pe care il scri unul din 10 incepatori care citesc topicul asta o sa retina o framtura macar din codul scris de tine mai sus si cand o sa vrea sa aplice intr-un cod de al lui de exemplu treaba cu timerul, el o sa puna tot 250 acolo, fara sa aiba macar putin habar ce inseamna .. 

Daca postai la filterscript sau orice alta sectiune era ok, as fi considerat ca atat te-a dus pe tine mintea sa faci si probabil ti-as fi sugerat cum sa lucrezi mai optim si te-as fi felicitat, dar aici sunt tutoriale, special facute pentru incepatori care vor sa invete ceva ok .. 

 

Share this post


Link to post
Share on other sites
Acum 1 oră, Dennis12. a spus:

Tocmai de asta se ajunge unde se ajunge ... din cauza desteptilor ca voi, nu vad rostul sa faci un TUTORIAL daca nu esti in stare sa-l faci calumea.

Tocmai de asta se numeste tutorial, ca incepatorii sa invete ceva din codul ala sau macar sa retina metoda prin care a fost scris, nu vi tu si spui " pe incepatori nu ii intereseaza optimizare ", probabil ca e adevarat, dar dupa cacatul tau de cod pe care il scri unul din 10 incepatori care citesc topicul asta o sa retina o framtura macar din codul scris de tine mai sus si cand o sa vrea sa aplice intr-un cod de al lui de exemplu treaba cu timerul, el o sa puna tot 250 acolo, fara sa aiba macar putin habar ce inseamna .. 

Daca postai la filterscript sau orice alta sectiune era ok, as fi considerat ca atat te-a dus pe tine mintea sa faci si probabil ti-as fi sugerat cum sa lucrezi mai optim si te-as fi felicitat, dar aici sunt tutoriale, special facute pentru incepatori care vor sa invete ceva ok .. 

 

Prietene, uite de asta se duce sa-mp-ul si noii scripteri unde se duce...Da posibil ca am gresit categoria dar intenția a fost tot un tut. Nu e nimeni obligat sa citeasca sau sa aplice tot ce am oferit eu.

Si cand se mai posteaza un tut, fs sau include sar 2, 3 pulache de'al de tine de nu-i mai vine bietului om sa mai posteze în viața lui. 

Eu nu va inteleg...codul pe care eu l- am scris e prost optimizat..întocmai pentru ca daca era sa il postez cât de cât optimizat trebuia sa adaug si librăria YSI întrucât il zăpăceam pe bietul om de nu-i mai venea sa mai scripteze.

Stiu nu am fost explicit deloc...timpul pe care l-am avut la dispoziție a fost mic si m-am grăbit am zis ca revin cu un edit dar eu nu vad unde am gresit cand eu incerc sa ofer o mână de ajutor.

Si nu vad de ce mi-ai jigni codul.."cacatul tau de cod" un om civilizat si cu capul pe umeri nu gaseste ca tine, iti spun sincer. Nu ma dau deștept doamne fereste însă din partea ta ca membru al comunității vechi ma asteptam la mai multă susținere pentru noile ideii. Puteai sa spui un simplu "băiatu' ai gresit topicul", nu sa arunci cu vorbe pe care presupun ca le-ai spus din frustrare.

O sa revin cu un edit :).

 

Share this post


Link to post
Share on other sites

@_SIRIUS_ pai, faci 2 modele, unu-l pt incepatori si altul cu spoiler pt "avansati" in acelasi topic  ca sa multumesti orice persoana xD

 

Spoiler

p.s: tot o sa fie oameni care nu le vor placea ceea ce ai postat..

 

Share this post


Link to post
Share on other sites
Chiar acum, Kiran a spus:

@_SIRIUS_ pai, faci 2 modele, unu-l pt incepatori si altul cu spoiler pt "avansati" in acelasi topic  ca sa multumesti orice persoana xD

 

  Reafișează conținuturi ascunse

p.s: tot o sa fie oameni care nu le vor placea ceea ce ai postat..

 

Cred ca asta ar fi ce-a mai ok solutie :))

Share this post


Link to post
Share on other sites
Acum 20 ore, _SIRIUS_ a spus:

Prietene, uite de asta se duce sa-mp-ul si noii scripteri unde se duce...Da posibil ca am gresit categoria dar intenția a fost tot un tut. Nu e nimeni obligat sa citeasca sau sa aplice tot ce am oferit eu.

Si cand se mai posteaza un tut, fs sau include sar 2, 3 pulache de'al de tine de nu-i mai vine bietului om sa mai posteze în viața lui. 

Eu nu va inteleg...codul pe care eu l- am scris e prost optimizat..întocmai pentru ca daca era sa il postez cât de cât optimizat trebuia sa adaug si librăria YSI întrucât il zăpăceam pe bietul om de nu-i mai venea sa mai scripteze.

Stiu nu am fost explicit deloc...timpul pe care l-am avut la dispoziție a fost mic si m-am grăbit am zis ca revin cu un edit dar eu nu vad unde am gresit cand eu incerc sa ofer o mână de ajutor.

Si nu vad de ce mi-ai jigni codul.."cacatul tau de cod" un om civilizat si cu capul pe umeri nu gaseste ca tine, iti spun sincer. Nu ma dau deștept doamne fereste însă din partea ta ca membru al comunității vechi ma asteptam la mai multă susținere pentru noile ideii. Puteai sa spui un simplu "băiatu' ai gresit topicul", nu sa arunci cu vorbe pe care presupun ca le-ai spus din frustrare.

O sa revin cu un edit :).

 

Am revizuit ceea ce eu am spus, in mare parte imi sustin ideea, consider ca am avut dreptate cand am spus ca daca creezi un tutorial ai nevoie si de timp si de chef, sa oferi ceva bun, iar totodata tin sa mentionez ca nu sunt de acord cu ce ai spus ca i-ai fi ametit cu YSI & altele, aici e treaba pentru un tutorial, sa nu ii ametesti, sa nu se piarda, sa il inteleaga, sa invete.

Tin sa mentionez ca imi cer scuze pentru jignirile adresate, ce-i drept atunci aveam o zi naspa, dar asta nu conteaza :) 

Dupa cum am spus, scuzele mele, daca vrei sa le accepti foarte bine, daca nu, nu.

 

Share this post


Link to post
Share on other sites
La 18.04.2019 la 23:05, _SIRIUS_ a spus:

Poti seta viteza direct la spawnarea vehiculului...fara acea comanda nu vad cum tu ca utilizator de sistem ai putea testa dracovenia.

o vad foarte bine, era bine, macar daca faceai sa se salveze undeva  Anume.  

Edited by FiveGame

Share this post


Link to post
Share on other sites
Chiar acum, FiveGame a spus:

o vad foarte bine, era bine, macar daca faceai sa se salveze undeva  Anume.  

E doar "baza" restul depinde de tine, dupa cum am spus il optimizezi sau il dezvolti dupa bunul plac.

Share this post


Link to post
Share on other sites
Acum 1 minut, _SIRIUS_ a spus:

E doar "baza" restul depinde de tine, dupa cum am spus il optimizezi sau il dezvolti dupa bunul plac.

mie unul nu imi trebuie finca am deja unul facut de mine mult mai avansat ma refeream la incepatori bro,

Share this post


Link to post
Share on other sites
Chiar acum, FiveGame a spus:

mie unul nu imi trebuie finca am deja unul facut de mine mult mai avansat ma refeream la incepatori bro,

Poate voi dezvolta ceva mai ok pe viitor.

Share this post


Link to post
Share on other sites
Acum 6 minute, _SIRIUS_ a spus:

Poate voi dezvolta ceva mai ok pe viitor.

ok bro asa sa faci !

Share this post


Link to post
Share on other sites
On 4/14/2019 at 3:13 PM, K H A I N said:

De optimizatie ai auzit?

optimizatie:)))) optimizare mai asta :))))))))))

  • Haha 1

Share this post


Link to post
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

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

This site uses cookies. By continuing browsing, you agree to the use of this information. For more details, see Terms of Use and Privacy Policy.