Jednostavan sistem MINI PD radara by tayloR

Započeo _tayloR, Jun 25, 2021, 03:35:06 PRE PODNE

prethodna tema - sledeća tema

0 članova i 5 gostiju pregledaju ovu temu.

Tip: FilterSkripta
Slike ili Video: https://imgur.com/a/gYZAFT4 ali eto ima i dole
Opis i dodatne informacije: Sistem PD radara sa AttachObjectToObject, PS: Nemojte zamjeriti na greskicama na brzinu je uradjeno
Download link: https://pastebin.com/7C4SbgrJ
Scan link: Pastebin je
Credits: tayloR

Lep sistem, samo proradi malo na kodu ovako sve full
Vandals Project OGC
[size=11.25pt]Vandals Project OGC[/size][/font]
[/color]

Citat: Skorpija_026 poslato Jun 25, 2021, 04:16:45 PRE PODNE
Lep sistem, samo proradi malo na kodu ovako sve full
smirio si se od proslog puta drago mi je

Mozda i poradim na kodu kad bi mi reko sta konkretno ima dosta toga sto bi se moglo ali eto sta ti je zapalo za oko bas

Gledo sam preko telefona, tako da ima vjerovatno nesto da mi je promaklo.

Imenovanje varijabli i funkciju, neka budu na eng, a povratne poruke na kojem god oces jeziku.
"skracenice" kao sto su scm i ostalo na sta ste navikli zaboravite, pisite puno ime funkcije koje jasno kaze sta radi.
Vidio sam da dosta imas return true, ali zasto se koristi return true/false?
Za boolean, a koliko sam vidio, nemas razloga za return true/false.

Citat: Galardo poslato Jun 25, 2021, 07:46:24 PRE PODNE
Gledo sam preko telefona, tako da ima vjerovatno nesto da mi je promaklo.

Imenovanje varijabli i funkciju, neka budu na eng, a povratne poruke na kojem god oces jeziku.
"skracenice" kao sto su scm i ostalo na sta ste navikli zaboravite, pisite puno ime funkcije koje jasno kaze sta radi.
Vidio sam da dosta imas return true, ali zasto se koristi return true/false?
Za boolean, a koliko sam vidio, nemas razloga za return true/false.
Uredu sve to ali ovo za imenovanje varijabli vas ne kontam kakve to veze ima isacim

Citat: Taylor Morelli poslato Jun 25, 2021, 09:59:26 PRE PODNE
Uredu sve to ali ovo za imenovanje varijabli vas ne kontam kakve to veze ima isacim
Sta mislis da neki stranac uzme neki tvoj code i mora da pogleda citav kod da bi pokusao shvatiti cemu ta varijabla sluzi. Ni jedan ozbiljniji programer nece imenovati varijablu na nekom trecem jeziku.

Citat: Galardo poslato Jun 25, 2021, 11:13:38 PRE PODNE
Sta mislis da neki stranac uzme neki tvoj code i mora da pogleda citav kod da bi pokusao shvatiti cemu ta varijabla sluzi. Ni jedan ozbiljniji programer nece imenovati varijablu na nekom trecem jeziku.
razumijem ja to sve za npr neki ozbiljniji projelat u cpp ili drugom programskom jeziku a sad za ovo skriptanje manje vise, glupo mi rec da je programiranje xD

Kada pises bilo kakav kod potrudi se da bude profesionalan, bez obzira ko ce gledati i koji je programski jezik.
Kada objavljujes nesto, objavi bez errora.


[pawn]

// Normalno na diskonektu dodajte ovo
PostavioPDRadar[playerid] = -1;
Kaznjen[playerid] = false;
[/pawn]


U FilterScript-i mozes da korisits
[pawn]
public OnPlayerDisconnect
[/pawn]
Nece se pojebati glavni kod.




Ne stavljaj ovakve razmake veoma lose izgleda
[pawn]
if( sscanf( params, "i", kazna ) ) return SCM( playerid, -1, "/postaviradar (kazna)" ); // kad upise nesto drugo sem ovog
[/pawn]


primjer kako bi trebalo izgledati
[pawn]
if (sscanf(params, "i", kazna)) return SCM(playerid, -1, "/postaviradar (kazna)" ); // kad upise nesto drugo sem ovog
[/pawn]


Takodjer


[pawn]
// kada kreiras radar setas mu ovu varijablu pa zasto je ne iskoristis ?


// PostavioPDRadar[playerid] = id;



CMD:pokupiradar(playerid, params[]) { // Komanda je tek tako bezveze dodana jer ce se svakako unistiti kad se udalji

   for(new r; r < MAX_PDRADARA; r++) {
if(IsPlayerInRangeOfPoint(playerid, 3.0, PDR[r][pdradarPos][0], PDR[r][pdradarPos][1], PDR[r][pdradarPos][2]) && PDR[r][pdradarPostavljen] == 1) {
[/pawn]
[pawn]
CMD:pokupiradar(playerid) {
       if (IsPlayerInRangeOfObject(playerid, 3.0, PDR[PostavioPDRadar][pdradarPos][0], PDR[PostavioPDRadar][pdradarPos][1], PDR[PostavioPDRadar][pdradarPos][2])
}
[/pawn]

Imas dosta viska varijabli tipa pdradarPostavljen, umjesto te varijable mogao si da provjeris samo da li su mu kordinate X i Y == 0.0 Ukoliko jesu radar nije kreiran.


Koristi Streamer, a ne obican CO


Umjesto ovih provjera da li je u range-u bla bla, mogao si da kreiras jedan rectangle i da provjeris kada udje u taj rectangle (jer to je povrsina oko radara) da ga detekuje, ima tu jos dosta sto bi moglo da se malo rewrite-a ali samo nastavi i probaj da poboljsas pisanje koda. Nadam se da ce izaci na dobro

Citat: __vedran.xyz77 poslato Jun 25, 2021, 11:41:57 PRE PODNE
Kada pises bilo kakav kod potrudi se da bude profesionalan, bez obzira ko ce gledati i koji je programski jezik.
Kada objavljujes nesto, objavi bez errora.


[pawn]

// Normalno na diskonektu dodajte ovo
PostavioPDRadar[playerid] = -1;
Kaznjen[playerid] = false;
[/pawn]


U FilterScript-i mozes da korisits
[pawn]
public OnPlayerDisconnect
[/pawn]
Nece se pojebati glavni kod.




Ne stavljaj ovakve razmake veoma lose izgleda
[pawn]
if( sscanf( params, "i", kazna ) ) return SCM( playerid, -1, "/postaviradar (kazna)" ); // kad upise nesto drugo sem ovog
[/pawn]


primjer kako bi trebalo izgledati
[pawn]
if (sscanf(params, "i", kazna)) return SCM(playerid, -1, "/postaviradar (kazna)" ); // kad upise nesto drugo sem ovog
[/pawn]


Takodjer


[pawn]
// kada kreiras radar setas mu ovu varijablu pa zasto je ne iskoristis ?


// PostavioPDRadar[playerid] = id;



CMD:pokupiradar(playerid, params[]) { // Komanda je tek tako bezveze dodana jer ce se svakako unistiti kad se udalji

   for(new r; r < MAX_PDRADARA; r++) {
if(IsPlayerInRangeOfPoint(playerid, 3.0, PDR[r][pdradarPos][0], PDR[r][pdradarPos][1], PDR[r][pdradarPos][2]) && PDR[r][pdradarPostavljen] == 1) {
[/pawn]
[pawn]
CMD:pokupiradar(playerid) {
       if (IsPlayerInRangeOfObject(playerid, 3.0, PDR[PostavioPDRadar][pdradarPos][0], PDR[PostavioPDRadar][pdradarPos][1], PDR[PostavioPDRadar][pdradarPos][2])
}
[/pawn]

Imas dosta viska varijabli tipa pdradarPostavljen, umjesto te varijable mogao si da provjeris samo da li su mu kordinate X i Y == 0.0 Ukoliko jesu radar nije kreiran.


Koristi Streamer, a ne obican CO


Umjesto ovih provjera da li je u range-u bla bla, mogao si da kreiras jedan rectangle i da provjeris kada udje u taj rectangle (jer to je povrsina oko radara) da ga detekuje, ima tu jos dosta sto bi moglo da se malo rewrite-a ali samo nastavi i probaj da poboljsas pisanje koda. Nadam se da ce izaci na dobro
Hvala na savjetima

Trebo si zaglavlje u pastebinu procitat gdje sam sve objasnio

A sto se tice tih razmaka to je stvar ukusa sta znam to je neko moje misljenje

Za radarPostavljen isto dobra optimizacija isto tako i za pokupi radar nije trebala for slazem se iako bi u tvojoj komandi trebala jedna provjera i nisi dobro upiso var PostavioPDRadar

A sto se tice dynamicobj nisam siguran jel ima uopste AttachDynamicObjectTo..

Eto neka moja objasnjena vrv sam nesto zaboravio pisem preko fona i jos jednom hvala na savjetima :D

Ima izgleda izvinjavam se nisam mogo provjerit jer pisem preko fonajer me ne zbunjivalo malo AttachDynamicObjectTOOBJECT

Odlicno! Uradio sam isti sistem pre par meseci, ali jedan objekat. Mada sluzi svrsi.

Imas par greskica u kodu, sve ovo sto je gore navedeno, ali da se popraviti! Sve pohvale

Citat: V01D poslato Jun 25, 2021, 12:10:39 POSLE PODNE
Odlicno! Uradio sam isti sistem pre par meseci, ali jedan objekat. Mada sluzi svrsi.

Imas par greskica u kodu, sve ovo sto je gore navedeno, ali da se popraviti! Sve pohvale
hvalaaa

Ima streamer sve i još više, kod nas se streamer ne koristi ni 3% s obzirom koliko funkcija ima
https://github.com/samp-incognito/samp-streamer-plugin/wiki

Kao što je Vedran rekao napraviti rectangle da se generiše oko radara i kada neko uđe u tu areu da provjeri brzinu ili neki player timer da provjerava par puta u sekundi pa kad izađe da ga destroya

Također radarPostavljen kako već i for loop glupost, koristi y_iterate/foreach brže je 10x
new Iterator:RADARI<MAX_RADAR>;
Kad kreiraš ideš Iter_Free pronađeš slobodan slot, ako nema returnat će -1
onda Iter_Add, kad hoćeš da obrišeš Iter_Remove
i da loopaš ideš foreach(new i : RADARI)
i to je sve što trebaš znat (valjda je ovako išlo i ostalo još uvijek hehe)

Također bolje da si za objekte array nego poziciju, ima tu još šta bi se moglo popravit al ajde :D

Svakako dobra ideja za ovakav radar :)


Mrzi me iskreno umro sam sinoc, ali ovo

CitatNe stavljaj ovakve razmake veoma lose izgleda
Pawno Code: [Izaberi]
if( sscanf( params, "i", kazna ) ) return SCM( playerid, -1, "/postaviradar (kazna)" ); // kad upise nesto drugo sem ovog


primjer kako bi trebalo izgledati
Pawno Code: [Izaberi]
if (sscanf(params, "i", kazna)) return SCM(playerid, -1, "/postaviradar (kazna)" ); // kad upise nesto drugo sem ovog


Ovde ne da ne treba da se koristi sscanf nego...
sscanf je bukvalno isto sto i split tako da nema potrebe za njim