FunRace LiveEvent

Započeo V01D, April 18, 2020, 08:55:33 PRE PODNE

prethodna tema - sledeća tema

0 članova i 3 gostiju pregledaju ovu temu.

Tip: FS
Slike ili Video: KLIKNI ME VIDEO
Opis i dodatne informacije: Video sam na fejsu lika koji je rekao kako bi voleo videti ovako nesto. Da nije samo klasican event gde vozis nesto sve vreme. Pa sam dosao na ideju da realizujem to, poenta je pratiti checkpointe, malo plivate u pocetku, zatim trcite jako malo, dobijate vozilo bandito, krenete na Mount Chiliad peske, malo kasnije dobijate biciklu i sa isto do vrha. Moguca su 3 pobednika, nazalost sam mogao samo predstaviti samo prvo mesto posto nemam prijatelja sa kojima mogu testati. Tesko je bilo predstaviti ovo slikama, tako da pogledajte video, prebacite na brzinu 2x da se ne smorite :D
Download link: KLIKNI ME NEZNO
Scan link: GitHub
Credits: Andrija "V01D" Terzic


Ništa posebno. Samo kada igrač uđe u checkpoint gdje dobija vozilo da mu angle bude prema cp-u a ne na drugu stranu.  :)
You'll be always in my heart, the end and thanks for amazing times. #WeAreLords

Citat: Spooky. poslato April 18, 2020, 13:12:00 POSLE PODNE
Ništa posebno. Samo kada igrač uđe u checkpoint gdje dobija vozilo da mu angle bude prema cp-u a ne na drugu stranu.  :)

Prvo sam stavio tako, ali onda sam skontao, bolje ne, ovako kada ga okrene na desnu stranu, proci ce malo vremena dok se okrene na pravi put. Po meni je tako bolje i namerno je tako :D

Fino odradjeno ;)
AKO ZNAS ZA BOGA I ZA GLAVU ZIVU NE BRANI MI DOKTORE RAKIJU I PIVU


Odbrojavanje si mogao odraditi sa jednim tajmerom nema potrebe za tolikim tajmerima
Perfect Life <3

Citat: PauLJ poslato April 18, 2020, 22:39:03 POSLE PODNE
Odbrojavanje si mogao odraditi sa jednim tajmerom nema potrebe za tolikim tajmerima

Znam, iz nekog razloga nije radilo prvi put, drugi put nisam imao igraca da testam da li radi(kada ima vise igraca pojebe se iz bog zna kog razloga), tako da sam samo ostavio ovako :/


Citat: PauLJ poslato April 18, 2020, 22:39:03 POSLE PODNE
Odbrojavanje si mogao odraditi sa jednim tajmerom nema potrebe za tolikim tajmerima
Naravno da je mogao i sa tajmerima, naravno, ali je mogao i sa drugim stvarima ne ovako.
Nemoj vise ovako da radis sine, pogledaj na koje sve nacine mozes da radis, a ne da loopas kroz igrace.
Plus, ovo za mene nije fs jer nema OnFilterScriptInit, ali dobro to je neka moja politika sad, necu ja da se mesam tebi. Ovo ostalo je okej, plus ove varijable na pocetku mogu drugacije da se uradi, al samo cepaj. I fali ti y_hooks :)
Unkovic.
- Ex. BlackStorm Founder, Owner & Developer
- Ex. Underground Developer.

Citat: Unkovic poslato April 18, 2020, 22:54:45 POSLE PODNE
Naravno da je mogao i sa tajmerima, naravno, ali je mogao i sa drugim stvarima ne ovako.
Nemoj vise ovako da radis sine, pogledaj na koje sve nacine mozes da radis, a ne da loopas kroz igrace.
Plus, ovo za mene nije fs jer nema OnFilterScriptInit, ali dobro to je neka moja politika sad, necu ja da se mesam tebi. Ovo ostalo je okej, plus ove varijable na pocetku mogu drugacije da se uradi, al samo cepaj. I fali ti y_hooks :)

Mozes mi pokazati nacin, ili makar poslati link xD ?

Kontao sam da niko nece ubacivati kao FS, vec direktno u mod, mada nebitna stvar

Koji?

Hvala na kritici, ako mozes ostavi link od toga sto si nabrojao tako da mogu da se popravim :D

Citat: Unkovic poslato April 18, 2020, 22:54:45 POSLE PODNE
Naravno da je mogao i sa tajmerima, naravno, ali je mogao i sa drugim stvarima ne ovako.
Nemoj vise ovako da radis sine, pogledaj na koje sve nacine mozes da radis, a ne da loopas kroz igrace.
Plus, ovo za mene nije fs jer nema OnFilterScriptInit, ali dobro to je neka moja politika sad, necu ja da se mesam tebi. Ovo ostalo je okej, plus ove varijable na pocetku mogu drugacije da se uradi, al samo cepaj. I fali ti y_hooks :)

Sry za DP, ali skontao sam sta si hteo reci, hvala, potrudicu se vise i probacu bolje sledeci put :D <3

Citat: V01D poslato April 18, 2020, 23:17:55 POSLE PODNE
Mozes mi pokazati nacin, ili makar poslati link xD ?

Kontao sam da niko nece ubacivati kao FS, vec direktno u mod, mada nebitna stvar

Koji?

Hvala na kritici, ako mozes ostavi link od toga sto si nabrojao tako da mogu da se popravim :D

Pa  y hooks ti treba pri vrhu gore, ne mozes hook callback OnPlayerConnect na taj nacin bez y hooksa includovanog.
Na nacin da ne loopas kroz sve igrace, to se moze na drugacije nacine odraditi, al zamisli da loopas 1000 igraca, znas ono, vec.
Unkovic.
- Ex. BlackStorm Founder, Owner & Developer
- Ex. Underground Developer.

Dobra zamisao, samo imam par saveta koji bi ti mozda koristili.

Ako pravis FS, nema veze sto ce neko mozda prebaciti u mod, trebao bi dodati inicijalizaciju(def filterscript i cb) i za korisnike koji ce ubaciti samo filterskriptu radi testiranja.

Kada pravis filterskripte postaraj se da svaka varijabla ima veze za filterskriptom i da ne prave probleme sa glavnom skriptom. Na primer ZauzetoMesto1 moze imati prefix fr_ i ime Mesto1 radi urednosti.

Na pocetku filterskripte obavezno stavi include fajlove koje ce koristiti filterskripta.

Posto vidim da koristis foreach umesto prolaska kroz sve igrace mogao bi napraviti iterator u koji ces ubacivati ID-eve igraca koji udju na event(i kada izadju na primer sa servera obrises id iz iteratora) i onda koristis taj iterator u foreach-u da prodjes kroz sve igrace koji su na eventu umesto da prolazis kroz bas sve.

Ne moras koristiti pet tajmera, u y_timers imas solidne stvari mada se uvek da resiti i na default nacin. Primer: mozes napraviti jedan timer od 1000 ms koji ce eto raditi kada zapocnes count i neku variablu od koliko sekundi zelis na primer 5 i onda svake sekunde ce ti smanjivati vreme i kada dodje do 0 pokrenes event i unistis tajmer.

Mogao bi dodati i komandu za izlazak sa eventa kada neko ne zeli nastaviti.

Kada se pokrene event(cmd: joinfunrace) kreiraju se objekti za one kapije, ali kada se event zavrsi one nece biti unistene i svaki put ce se kreirati ponovo tako da bi mozda bilo dobro da stavis hook OGMI koji kreira te objekte tada i posle radis sa njima umesto da ih kreiras/unistavas uzastopno.

Takodje, imas redudansu u kodu(u cmd joinfunrace), elem u ovom switchu:

[pawn]
   switch(FunRacePokrenut)
   {
      case 1: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2677.8455,-2646.6814,8.5866); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
      case 2: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2678.4250,-2643.7983,8.1130); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
      case 3: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2680.8767,-2641.5916,7.5605); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
      case 4: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2683.9041,-2641.6577,7.2835); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
      case 5: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2684.1782,-2644.1833,7.6243); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
      case 6: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2684.2847,-2646.4609,7.9450); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
      case 7: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2686.9932,-2646.7605,7.7321); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
      case 8: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2689.6938,-2644.4905,7.1467); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
      case 9: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2690.0769,-2641.4307,6.6661); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
      case 10: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2691.7625,-2647.8364,7.4368); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
   }
[/pawn]

Posto u gornjem switchu skoro svaka stavka je ista osim pozivanja SetPlayerPos funkcije, mozes uraditi ovako:
[pawn]
   SetPlayerVirtualWorld(playerid, 1);
   FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!");
   FunRace[playerid] = true;
   switch(FunRacePokrenut)
   {
      case 1: {  SetPlayerPos(playerid, -2677.8455,-2646.6814,8.5866); }
      case 2: {  SetPlayerPos(playerid, -2678.4250,-2643.7983,8.1130);  }
      case 3: {  SetPlayerPos(playerid, -2680.8767,-2641.5916,7.5605);  }
      case 4: {  SetPlayerPos(playerid, -2683.9041,-2641.6577,7.2835);  }
      case 5: {  SetPlayerPos(playerid, -2684.1782,-2644.1833,7.6243);  }
      case 6: {  SetPlayerPos(playerid, -2684.2847,-2646.4609,7.9450);  }
      case 7: {  SetPlayerPos(playerid, -2686.9932,-2646.7605,7.7321);  }
      case 8: {  SetPlayerPos(playerid, -2689.6938,-2644.4905,7.1467);  }
      case 9: {  SetPlayerPos(playerid, -2690.0769,-2641.4307,6.6661);  }
      case 10: {  SetPlayerPos(playerid, -2691.7625,-2647.8364,7.4368);  }
   }
   FunRacePokrenut++;
[/pawn]

Mozda bi bilo zanimljivo da dodas jezicku lokalizaciju u svoje radove i da ih objavljujes na raznim forumima mada sve ovo sto sam napiso su samo saveti i na tebi je da li ces ih praktikovati, jer svako ima svoje principe i nacine rada.
Uzgred, ako ti zatreba pomoc oko testiranja slobodno mi pisi, rado cu ti pomoci, lep pozdrav.


Poslednja Izmena: April 19, 2020, 06:48:45 PRE PODNE od algorhitmically
[Include] > Optidraw
[Include] > Model-Sizes-SQL

Citat: algorhitmically poslato April 19, 2020, 06:47:24 PRE PODNE
Dobra zamisao, samo imam par saveta koji bi ti mozda koristili.

Ako pravis FS, nema veze sto ce neko mozda prebaciti u mod, trebao bi dodati inicijalizaciju(def filterscript i cb) i za korisnike koji ce ubaciti samo filterskriptu radi testiranja.

Kada pravis filterskripte postaraj se da svaka varijabla ima veze za filterskriptom i da ne prave probleme sa glavnom skriptom. Na primer ZauzetoMesto1 moze imati prefix fr_ i ime Mesto1 radi urednosti.

Na pocetku filterskripte obavezno stavi include fajlove koje ce koristiti filterskripta.

Posto vidim da koristis foreach umesto prolaska kroz sve igrace mogao bi napraviti iterator u koji ces ubacivati ID-eve igraca koji udju na event(i kada izadju na primer sa servera obrises id iz iteratora) i onda koristis taj iterator u foreach-u da prodjes kroz sve igrace koji su na eventu umesto da prolazis kroz bas sve.

Ne moras koristiti pet tajmera, u y_timers imas solidne stvari mada se uvek da resiti i na default nacin. Primer: mozes napraviti jedan timer od 1000 ms koji ce eto raditi kada zapocnes count i neku variablu od koliko sekundi zelis na primer 5 i onda svake sekunde ce ti smanjivati vreme i kada dodje do 0 pokrenes event i unistis tajmer.

Mogao bi dodati i komandu za izlazak sa eventa kada neko ne zeli nastaviti.

Kada se pokrene event(cmd: joinfunrace) kreiraju se objekti za one kapije, ali kada se event zavrsi one nece biti unistene i svaki put ce se kreirati ponovo tako da bi mozda bilo dobro da stavis hook OGMI koji kreira te objekte tada i posle radis sa njima umesto da ih kreiras/unistavas uzastopno.

Takodje, imas redudansu u kodu(u cmd joinfunrace), elem u ovom switchu:

[pawn]
   switch(FunRacePokrenut)
   {
      case 1: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2677.8455,-2646.6814,8.5866); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
      case 2: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2678.4250,-2643.7983,8.1130); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
      case 3: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2680.8767,-2641.5916,7.5605); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
      case 4: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2683.9041,-2641.6577,7.2835); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
      case 5: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2684.1782,-2644.1833,7.6243); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
      case 6: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2684.2847,-2646.4609,7.9450); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
      case 7: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2686.9932,-2646.7605,7.7321); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
      case 8: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2689.6938,-2644.4905,7.1467); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
      case 9: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2690.0769,-2641.4307,6.6661); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
      case 10: { SetPlayerVirtualWorld(playerid, 1); SetPlayerPos(playerid, -2691.7625,-2647.8364,7.4368); FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!"); FunRace[playerid] = true; FunRacePokrenut++; }
   }
[/pawn]

Posto u gornjem switchu skoro svaka stavka je ista osim pozivanja SetPlayerPos funkcije, mozes uraditi ovako:
[pawn]
   SetPlayerVirtualWorld(playerid, 1);
   FunRaceMessage(playerid, "Usao si u Fun Race!Igra uskoro pocinje, srecno!");
   FunRace[playerid] = true;
   switch(FunRacePokrenut)
   {
      case 1: {  SetPlayerPos(playerid, -2677.8455,-2646.6814,8.5866); }
      case 2: {  SetPlayerPos(playerid, -2678.4250,-2643.7983,8.1130);  }
      case 3: {  SetPlayerPos(playerid, -2680.8767,-2641.5916,7.5605);  }
      case 4: {  SetPlayerPos(playerid, -2683.9041,-2641.6577,7.2835);  }
      case 5: {  SetPlayerPos(playerid, -2684.1782,-2644.1833,7.6243);  }
      case 6: {  SetPlayerPos(playerid, -2684.2847,-2646.4609,7.9450);  }
      case 7: {  SetPlayerPos(playerid, -2686.9932,-2646.7605,7.7321);  }
      case 8: {  SetPlayerPos(playerid, -2689.6938,-2644.4905,7.1467);  }
      case 9: {  SetPlayerPos(playerid, -2690.0769,-2641.4307,6.6661);  }
      case 10: {  SetPlayerPos(playerid, -2691.7625,-2647.8364,7.4368);  }
   }
   FunRacePokrenut++;
[/pawn]

Mozda bi bilo zanimljivo da dodas jezicku lokalizaciju u svoje radove i da ih objavljujes na raznim forumima mada sve ovo sto sam napiso su samo saveti i na tebi je da li ces ih praktikovati, jer svako ima svoje principe i nacine rada.
Uzgred, ako ti zatreba pomoc oko testiranja slobodno mi pisi, rado cu ti pomoci, lep pozdrav.




Hvalaa ti punoo, znaci mi tvoj komentar! Ovo sve sto si rekao, istina, potrudicu se bolje sledeci put :D <3