Tutorial by V01D

Započeo V01D, Jul 05, 2020, 18:34:07 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 4 gostiju pregledaju ovu temu.

Mogao je ovde neki fade za ovo crno kao da otvara oci ? :)

One And Only
Old Member
Since AVGUST 2013. :)
GAME OVER - SCRIPTING
SINCE 2009 - 2020

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):
[pawn]timer OverLordPricaTimer[5000](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;
}[/pawn]
...je moglo i ovako:
[pawn]timer OverLordPricaTimer[5000](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);[/pawn]

btw mogao je i default case da bude case 0 a poslednji da bude default :D

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 :D

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

[pawn]timer KadaJePaoTimer[5000](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;
}[/pawn]
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 :)



Rust, Python, TypeScript, Kotlin, WebAssembly, Swift, Clojure, Elixir, Go, SQL

Citat: Alhemičar poslato Jul 05, 2020, 23:53:32 POSLE PODNE
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):
[pawn]timer OverLordPricaTimer[5000](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;
}[/pawn]
...je moglo i ovako:
[pawn]timer OverLordPricaTimer[5000](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);[/pawn]

btw mogao je i default case da bude case 0 a poslednji da bude default :D

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 :D

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

[pawn]timer KadaJePaoTimer[5000](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;
}[/pawn]
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.
Citat: CheezItFollow your heart and own style.
Citat: PottusThat is perfectly fine, I'm just pointing out where you made mistakes what does hearing "good job" get you? Absolutely nothing. You need to hear the problems otherwise you'll keep making the same mistakes :)

Citat: V01D poslato Jul 05, 2020, 18:34:07 POSLE PODNE
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 !

Citat: Alhemičar poslato Jul 05, 2020, 23:53:32 POSLE PODNE
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):
[pawn]timer OverLordPricaTimer[5000](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;
}[/pawn]
...je moglo i ovako:
[pawn]timer OverLordPricaTimer[5000](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);[/pawn]

btw mogao je i default case da bude case 0 a poslednji da bude default :D

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 :D

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

[pawn]timer KadaJePaoTimer[5000](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;
}[/pawn]
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 :D ? Hvala, popravicu se sledeci put :P

Citat: V01D poslato Jul 06, 2020, 18:47:26 POSLE PODNE
Makenzi is that you :D ? Hvala, popravicu se sledeci put :P
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

Citat: inquisitiveemmett poslato Jul 06, 2020, 19:05:51 POSLE PODNE
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..

WOW
klizim po mahali skrolam instagram


Citat: V01D poslato Jul 06, 2020, 19:23:57 POSLE PODNE
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


PRX

*


lupam copyright zbog imena, jbg