Tutorial by V01D

Skrilew Započeo V01D
pre 5 godina
6,342
pregleda
41
postova
Ova tema je zaključana. Samo moderatori i administratori mogu odgovarati.
marko077
Underboss
pre 5 godina
Mogao je ovde neki fade za ovo crno kao da otvara oci ? 🙂
Alhemičar
Hustler
pre 5 godina
Da se ne lažemo - ovo i nije baš fino.

Mogao si u jedan enum da staviš sve Timer IDove i onda samo switch timerid unutar tog tajmera i to je to...

Ali ako ipak hoćeš ovako po 9 mini tajmera, ovo je stvarno katastrofa:
Ovo (važi za sve ostale tajmere):
timer OverLordPricaTimer(playerid) 
{
switch(OverLordTimer{playerid})
{
case 5:
{
TutorialMessage(playerid, "OverLord: Bravo-Six ovde OverLord, prijem!");
OverLordTimer{playerid}--;
defer OverLordPricaTimer(playerid);
return 1;
}
case 4:
{
TutorialMessage(playerid, "OverLord: Imam metu na vidiku, prijem!");
OverLordTimer{playerid}--;
TogglePlayerControllable(playerid, 0);
defer OverLordPricaTimer(playerid);
return 1;
}
case 3:
{
TutorialMessage(playerid, "OverLord: Trazim dozvolu za pucanje, prijem!");
OverLordTimer{playerid}--;
defer OverLordPricaTimer(playerid);
return 1;
}
case 2:
{
TutorialMessage(playerid, "Bravo-Six: OverLord ovde Bravo-Six, prijem!");
OverLordTimer{playerid}--;
defer OverLordPricaTimer(playerid);
return 1;
}
case 1:
{
TutorialMessage(playerid, "Bravo-Six: Odobravamo pucanje! Ne zaboravi da pokupis dokumenta, prijem!");
OverLordTimer{playerid}--;
defer OverLordPricaTimer(playerid);
return 1;
}
case 0:
{
TogglePlayerControllable(playerid, 1);
TutorialMessage(playerid, "Dobio si dozvolu za pucanje, upucaj metu!");
SetCameraBehindPlayer(playerid);
return 1;
}
}
return 1;
}

...je moglo i ovako:
timer OverLordPricaTimer(playerid, step) 
{
switch(step)
{
case 1:
{
TutorialMessage(playerid, "OverLord: Imam metu na vidiku, prijem!");
TogglePlayerControllable(playerid, 0);
defer OverLordPricaTimer(playerid, step + 1);
}
case 2:
{
TutorialMessage(playerid, "OverLord: Trazim dozvolu za pucanje, prijem!");
defer OverLordPricaTimer(playerid, step + 1);
}
case 3:
{
TutorialMessage(playerid, "Bravo-Six: OverLord ovde Bravo-Six, prijem!");
defer OverLordPricaTimer(playerid, step + 1);
}
case 4:
{
TutorialMessage(playerid, "Bravo-Six: Odobravamo pucanje! Ne zaboravi da pokupis dokumenta, prijem!");
defer OverLordPricaTimer(playerid, step + 1);
}
case 5:
{
TogglePlayerControllable(playerid, 1);
TutorialMessage(playerid, "Dobio si dozvolu za pucanje, upucaj metu!");
SetCameraBehindPlayer(playerid);
}
default:
{
TutorialMessage(playerid, "OverLord: Bravo-Six ovde OverLord, prijem!");
defer OverLordPricaTimer(playerid, step + 1);
}
}
}

// Ovako koristis
defer OverLordPricaTimer(playerid);


btw mogao je i default case da bude case 0 a poslednji da bude default 😄

I za neke od ovih varijabli poput UTutorialu si mogao da koristiš i PVar jer se koristi jako retko i onda nema potrebe da se pravi varijabla, ovo važi za sve varijable koje ćeš koristiti 2-3 puta 😄

Takodje ne moras posebnu varijablu za svaki delic tutoriala (npr ProveraVojnik{playerid}) nego kreiras jednu varijablu ili PVar za ceo tutorijal i stavljas vrednosti iz enum-a
timer KadaJePaoTimer(playerid)
{
switch(KadaJePao{playerid})
{
case 4:
{
TutorialMessage(playerid, "OverLord: Bravo-Six...");
//TextDrawShowForPlayer(playerid, CrniTD);
//TextDrawBoxColor(CrniTD, 0xFFFFFF15);
KadaJePao{playerid}--;
defer KadaJePaoTimer(playerid);
return 1;
}
case 3:
{
TutorialMessage(playerid, "OverLord: Zaseda..");
//TextDrawBoxColor(CrniTD, 0xFFFFFF30);
KadaJePao{playerid}--;
defer KadaJePaoTimer(playerid);
return 1;
}
case 2:
{
TutorialMessage(playerid, "Bravo-Six: OverLorde ovde Bravo-Six, ponovi, prijem!");
//TextDrawBoxColor(CrniTD, 0xFFFFFF70);
KadaJePao{playerid}--;
defer KadaJePaoTimer(playerid);
return 1;
}
case 1:
{
TutorialMessage(playerid, "Bravo-Six: SVE RASPOLOZIVE JEDINICE NEKA KRENU I IZVUKU DOKUMENTA!");
//TextDrawBoxColor(CrniTD, 0xFFFFFFFF);
KadaJePao{playerid}--;
defer KadaJePaoTimer(playerid);
return 1;
}
case 0:
{
TextDrawShowForPlayer(playerid, CrniTD);
TextDrawShowForPlayer(playerid, TeksticTD);
OcistiChatIgracu(playerid);
TextDrawSetString(TeksticTD, "Nakon par dana..");
defer IdeUBolnicuTimer(playerid);
return 1;
}
}
return 1;
}

Isto i ovaj timer moze da se doda jedna varijabla, razlog je sledeci:

- Manje koristis memorije
- Apstraktna masina radi na taj nacin da koristi look-up table za svaku varijablu sto bi znacilo da on mora 5 puta da u ovom primeru pristupa istoj varijabli u globalnoj tabli umesto da kreiras lokalnu varijablu i da lagano pristupi njoj jer ne mora da pretarzuje celu tablu od npr 500 varijabli nego samo direkt pristupi ovoj.


Nadam se da je bilo jasno 🙂
ShadowMortar
Shot Caller
pre 5 godina
Alhemičar wrote on July 5, 2020, 9:53 pm:
Da se ne lažemo - ovo i nije baš fino.

Mogao si u jedan enum da staviš sve Timer IDove i onda samo switch timerid unutar tog tajmera i to je to...

Ali ako ipak hoćeš ovako po 9 mini tajmera, ovo je stvarno katastrofa:
Ovo (važi za sve ostale tajmere):
timer OverLordPricaTimer(playerid) 
{
switch(OverLordTimer{playerid})
{
case 5:
{
TutorialMessage(playerid, "OverLord: Bravo-Six ovde OverLord, prijem!");
OverLordTimer{playerid}--;
defer OverLordPricaTimer(playerid);
return 1;
}
case 4:
{
TutorialMessage(playerid, "OverLord: Imam metu na vidiku, prijem!");
OverLordTimer{playerid}--;
TogglePlayerControllable(playerid, 0);
defer OverLordPricaTimer(playerid);
return 1;
}
case 3:
{
TutorialMessage(playerid, "OverLord: Trazim dozvolu za pucanje, prijem!");
OverLordTimer{playerid}--;
defer OverLordPricaTimer(playerid);
return 1;
}
case 2:
{
TutorialMessage(playerid, "Bravo-Six: OverLord ovde Bravo-Six, prijem!");
OverLordTimer{playerid}--;
defer OverLordPricaTimer(playerid);
return 1;
}
case 1:
{
TutorialMessage(playerid, "Bravo-Six: Odobravamo pucanje! Ne zaboravi da pokupis dokumenta, prijem!");
OverLordTimer{playerid}--;
defer OverLordPricaTimer(playerid);
return 1;
}
case 0:
{
TogglePlayerControllable(playerid, 1);
TutorialMessage(playerid, "Dobio si dozvolu za pucanje, upucaj metu!");
SetCameraBehindPlayer(playerid);
return 1;
}
}
return 1;
}

...je moglo i ovako:
timer OverLordPricaTimer(playerid, step) 
{
switch(step)
{
case 1:
{
TutorialMessage(playerid, "OverLord: Imam metu na vidiku, prijem!");
TogglePlayerControllable(playerid, 0);
defer OverLordPricaTimer(playerid, step + 1);
}
case 2:
{
TutorialMessage(playerid, "OverLord: Trazim dozvolu za pucanje, prijem!");
defer OverLordPricaTimer(playerid, step + 1);
}
case 3:
{
TutorialMessage(playerid, "Bravo-Six: OverLord ovde Bravo-Six, prijem!");
defer OverLordPricaTimer(playerid, step + 1);
}
case 4:
{
TutorialMessage(playerid, "Bravo-Six: Odobravamo pucanje! Ne zaboravi da pokupis dokumenta, prijem!");
defer OverLordPricaTimer(playerid, step + 1);
}
case 5:
{
TogglePlayerControllable(playerid, 1);
TutorialMessage(playerid, "Dobio si dozvolu za pucanje, upucaj metu!");
SetCameraBehindPlayer(playerid);
}
default:
{
TutorialMessage(playerid, "OverLord: Bravo-Six ovde OverLord, prijem!");
defer OverLordPricaTimer(playerid, step + 1);
}
}
}

// Ovako koristis
defer OverLordPricaTimer(playerid);


btw mogao je i default case da bude case 0 a poslednji da bude default 😄

I za neke od ovih varijabli poput UTutorialu si mogao da koristiš i PVar jer se koristi jako retko i onda nema potrebe da se pravi varijabla, ovo važi za sve varijable koje ćeš koristiti 2-3 puta 😄

Takodje ne moras posebnu varijablu za svaki delic tutoriala (npr ProveraVojnik{playerid}) nego kreiras jednu varijablu ili PVar za ceo tutorijal i stavljas vrednosti iz enum-a
timer KadaJePaoTimer(playerid)
{
switch(KadaJePao{playerid})
{
case 4:
{
TutorialMessage(playerid, "OverLord: Bravo-Six...");
//TextDrawShowForPlayer(playerid, CrniTD);
//TextDrawBoxColor(CrniTD, 0xFFFFFF15);
KadaJePao{playerid}--;
defer KadaJePaoTimer(playerid);
return 1;
}
case 3:
{
TutorialMessage(playerid, "OverLord: Zaseda..");
//TextDrawBoxColor(CrniTD, 0xFFFFFF30);
KadaJePao{playerid}--;
defer KadaJePaoTimer(playerid);
return 1;
}
case 2:
{
TutorialMessage(playerid, "Bravo-Six: OverLorde ovde Bravo-Six, ponovi, prijem!");
//TextDrawBoxColor(CrniTD, 0xFFFFFF70);
KadaJePao{playerid}--;
defer KadaJePaoTimer(playerid);
return 1;
}
case 1:
{
TutorialMessage(playerid, "Bravo-Six: SVE RASPOLOZIVE JEDINICE NEKA KRENU I IZVUKU DOKUMENTA!");
//TextDrawBoxColor(CrniTD, 0xFFFFFFFF);
KadaJePao{playerid}--;
defer KadaJePaoTimer(playerid);
return 1;
}
case 0:
{
TextDrawShowForPlayer(playerid, CrniTD);
TextDrawShowForPlayer(playerid, TeksticTD);
OcistiChatIgracu(playerid);
TextDrawSetString(TeksticTD, "Nakon par dana..");
defer IdeUBolnicuTimer(playerid);
return 1;
}
}
return 1;
}

Isto i ovaj timer moze da se doda jedna varijabla, razlog je sledeci:

- Manje koristis memorije
- Apstraktna masina radi na taj nacin da koristi look-up table za svaku varijablu sto bi znacilo da on mora 5 puta da u ovom primeru pristupa istoj varijabli u globalnoj tabli umesto da kreiras lokalnu varijablu i da lagano pristupi njoj jer ne mora da pretarzuje celu tablu od npr 500 varijabli nego samo direkt pristupi ovoj.


Nadam se da je bilo jasno 🙂

Pvars je sporije od normalnih varijabli, a sto se tice default-a, to je sve stvar navike.
https://wiki.sa-mp.com/wiki/Per-player_variable_system

Ja bih pvar koristio npr kad mi treba neka varijabla iz main GM u FS, al ovako zamijenim neku varijablu s pvar, ja ne bi.
Luka_Scripting
Enforcer
pre 5 godina
V01D wrote on July 5, 2020, 4:34 pm:
Tip: FS
Slike ili Video: KLIKNI ME NEZNO TATICE
Opis i dodatne informacije: Posto mi je pun kurac tutoriala koji se svode na to da se pokazuju jedne te iste stvari i koje svaki jebeni put preskocim i skuvam kafu dok traju, odlucio sam da napravim nesto malcice zanimljivije, sto ce da sluzi kao sam uvod u pricu i server. Zanemarite kod.. Takodje, ovo je potrebno doraditi i uklopiti sa vasim serverom. Ne bih preporucio da se koristi kao FS vec da se ubaci direktno u skriptu, ali mozete i ovako. Testirano je na grandlarc modu!
Download link: NEZAN KLIK BEBO
Scan link: GitHub..
Credits: GordoN(IDEJA), Neki Stranac za mapu

Lep system tutoriala, BRAVO VO1D-E !
Skrilew
Godfather
pre 5 godina
Alhemičar wrote on July 5, 2020, 9:53 pm:
Da se ne lažemo - ovo i nije baš fino.

Mogao si u jedan enum da staviš sve Timer IDove i onda samo switch timerid unutar tog tajmera i to je to...

Ali ako ipak hoćeš ovako po 9 mini tajmera, ovo je stvarno katastrofa:
Ovo (važi za sve ostale tajmere):
timer OverLordPricaTimer(playerid) 
{
switch(OverLordTimer{playerid})
{
case 5:
{
TutorialMessage(playerid, "OverLord: Bravo-Six ovde OverLord, prijem!");
OverLordTimer{playerid}--;
defer OverLordPricaTimer(playerid);
return 1;
}
case 4:
{
TutorialMessage(playerid, "OverLord: Imam metu na vidiku, prijem!");
OverLordTimer{playerid}--;
TogglePlayerControllable(playerid, 0);
defer OverLordPricaTimer(playerid);
return 1;
}
case 3:
{
TutorialMessage(playerid, "OverLord: Trazim dozvolu za pucanje, prijem!");
OverLordTimer{playerid}--;
defer OverLordPricaTimer(playerid);
return 1;
}
case 2:
{
TutorialMessage(playerid, "Bravo-Six: OverLord ovde Bravo-Six, prijem!");
OverLordTimer{playerid}--;
defer OverLordPricaTimer(playerid);
return 1;
}
case 1:
{
TutorialMessage(playerid, "Bravo-Six: Odobravamo pucanje! Ne zaboravi da pokupis dokumenta, prijem!");
OverLordTimer{playerid}--;
defer OverLordPricaTimer(playerid);
return 1;
}
case 0:
{
TogglePlayerControllable(playerid, 1);
TutorialMessage(playerid, "Dobio si dozvolu za pucanje, upucaj metu!");
SetCameraBehindPlayer(playerid);
return 1;
}
}
return 1;
}

...je moglo i ovako:
timer OverLordPricaTimer(playerid, step) 
{
switch(step)
{
case 1:
{
TutorialMessage(playerid, "OverLord: Imam metu na vidiku, prijem!");
TogglePlayerControllable(playerid, 0);
defer OverLordPricaTimer(playerid, step + 1);
}
case 2:
{
TutorialMessage(playerid, "OverLord: Trazim dozvolu za pucanje, prijem!");
defer OverLordPricaTimer(playerid, step + 1);
}
case 3:
{
TutorialMessage(playerid, "Bravo-Six: OverLord ovde Bravo-Six, prijem!");
defer OverLordPricaTimer(playerid, step + 1);
}
case 4:
{
TutorialMessage(playerid, "Bravo-Six: Odobravamo pucanje! Ne zaboravi da pokupis dokumenta, prijem!");
defer OverLordPricaTimer(playerid, step + 1);
}
case 5:
{
TogglePlayerControllable(playerid, 1);
TutorialMessage(playerid, "Dobio si dozvolu za pucanje, upucaj metu!");
SetCameraBehindPlayer(playerid);
}
default:
{
TutorialMessage(playerid, "OverLord: Bravo-Six ovde OverLord, prijem!");
defer OverLordPricaTimer(playerid, step + 1);
}
}
}

// Ovako koristis
defer OverLordPricaTimer(playerid);


btw mogao je i default case da bude case 0 a poslednji da bude default 😄

I za neke od ovih varijabli poput UTutorialu si mogao da koristiš i PVar jer se koristi jako retko i onda nema potrebe da se pravi varijabla, ovo važi za sve varijable koje ćeš koristiti 2-3 puta 😄

Takodje ne moras posebnu varijablu za svaki delic tutoriala (npr ProveraVojnik{playerid}) nego kreiras jednu varijablu ili PVar za ceo tutorijal i stavljas vrednosti iz enum-a
timer KadaJePaoTimer(playerid)
{
switch(KadaJePao{playerid})
{
case 4:
{
TutorialMessage(playerid, "OverLord: Bravo-Six...");
//TextDrawShowForPlayer(playerid, CrniTD);
//TextDrawBoxColor(CrniTD, 0xFFFFFF15);
KadaJePao{playerid}--;
defer KadaJePaoTimer(playerid);
return 1;
}
case 3:
{
TutorialMessage(playerid, "OverLord: Zaseda..");
//TextDrawBoxColor(CrniTD, 0xFFFFFF30);
KadaJePao{playerid}--;
defer KadaJePaoTimer(playerid);
return 1;
}
case 2:
{
TutorialMessage(playerid, "Bravo-Six: OverLorde ovde Bravo-Six, ponovi, prijem!");
//TextDrawBoxColor(CrniTD, 0xFFFFFF70);
KadaJePao{playerid}--;
defer KadaJePaoTimer(playerid);
return 1;
}
case 1:
{
TutorialMessage(playerid, "Bravo-Six: SVE RASPOLOZIVE JEDINICE NEKA KRENU I IZVUKU DOKUMENTA!");
//TextDrawBoxColor(CrniTD, 0xFFFFFFFF);
KadaJePao{playerid}--;
defer KadaJePaoTimer(playerid);
return 1;
}
case 0:
{
TextDrawShowForPlayer(playerid, CrniTD);
TextDrawShowForPlayer(playerid, TeksticTD);
OcistiChatIgracu(playerid);
TextDrawSetString(TeksticTD, "Nakon par dana..");
defer IdeUBolnicuTimer(playerid);
return 1;
}
}
return 1;
}

Isto i ovaj timer moze da se doda jedna varijabla, razlog je sledeci:

- Manje koristis memorije
- Apstraktna masina radi na taj nacin da koristi look-up table za svaku varijablu sto bi znacilo da on mora 5 puta da u ovom primeru pristupa istoj varijabli u globalnoj tabli umesto da kreiras lokalnu varijablu i da lagano pristupi njoj jer ne mora da pretarzuje celu tablu od npr 500 varijabli nego samo direkt pristupi ovoj.


Nadam se da je bilo jasno 🙂


Makenzi is that you 😄 ? Hvala, popravicu se sledeci put 😛
inquisitiveemmett
Shot Caller
pre 5 godina
V01D wrote on July 6, 2020, 4:47 pm:
Makenzi is that you 😄 ? Hvala, popravicu se sledeci put 😛

Koji ga kurac vise otkrivate? Ako vam je nesto korisno napisao, ispostujte to a ne da ga otkrivate i posle on popije ban i opet da pravi novi mail i acc i sve
Skrilew
Godfather
pre 5 godina
inquisitiveemmett wrote on July 6, 2020, 5:05 pm:
Koji ga kurac vise otkrivate? Ako vam je nesto korisno napisao, ispostujte to a ne da ga otkrivate i posle on popije ban i opet da pravi novi mail i acc i sve


Nije ovo Makenzi jbt, sala zato sto on pise slicno na ovaj fazon.. Makenzi je odustao od ovog foruma..
Marshmallow
Shot Caller
pre 5 godina
WOW
Nebojsa_King
Wheel Man
pre 5 godina
Ko sto kaze Baca.Ne kida NEGO GRMI!!!! 10/10
inquisitiveemmett
Shot Caller
pre 5 godina
V01D wrote on July 6, 2020, 5:23 pm:
Nije ovo Makenzi jbt, sala zato sto on pise slicno na ovaj fazon.. Makenzi je odustao od ovog foruma..

Njegov je profil rekao mi je ja msm
Skrilew
Godfather
pre 5 godina
inquisitiveemmett wrote on July 6, 2020, 7:05 pm:
Njegov je profil rekao mi je ja msm


JOOJ EMMETT-E JEBO GA TI.........
Daki_Boss
Hustler
pre 5 godina
Pohvala za trud 😄
Jaksic
Underboss
pre 5 godina
lupam copyright zbog imena, jbg
Shomy Script
Godfather
pre 5 godina
Najs
DzoniX
Hustler
pre 5 godina
Shomyy wrote on July 7, 2020, 12:27 am:
Najs

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava