Dobrý den Súdruhovia, súdružky ale hlavne občania tohto fóra. Veľa krát a stále častejšie vidím že niektoré módy majú aj 10 timerov a nieje raritou že častokrát je aj viac timerov na jednu sekundu. Asi vyšlo z módy ale stále o timeroch platí "čím menej tím lepšie". Je to tak, v následujúcich textoch si ukážeme niekoľko spôsobov ako naplno využiť jeden timer.
Môže mód fungovať na jednom timery ?
Áno, môže. Ide iba oto, aby ste ho vedeli využiť.
Kedže už v úvode som hovoril otom že vám ukážem niekoľko spôsobov tak ich aj pomenujem[Varianta A (skrátene V.A, V.B...)] a na konci ohodnotím.
Teoretická čast:
Ako to vlastne funguje ?
V.A By mohla fungovať tak že mód bude využívať 2 timery, jeden sekundový + druhý 2,5 sekundový (alebo iný, aký uznáte za vhodné/potrebné). Všetky scripty by sa dávali do tých dvoch publicoch.
Výhody:
+ Môžete to využiť a použiť iba 1x ForConneted
+ Môžete rozumne nakladať zo stringom
Nevýhody:
- Ak ste :prase: tak je možné že tam bude bordel a nikto iný okrem vás sa tam nevyzná
- Náročnejšie hladanie chyby
V.B By mohla fungovať tak že mód bude využívať 1 timer (hlavný sekundový) a ak by niekto potreboval npr. tip tak cez premeny. Všetky scripty by sa dávali do toho publicu
Výhody:
+ Možnosť využívať aj iný čas (npr. 10 sekund)
+ Možno rozumne nakladať zo stringom
Nevýhody:
- Ak ste :prase: tak je možné že tam bude bordel a nikto iný okrem vás sa tam nevyzná
- Náročnejšie hladanie chyby
- Viac premenných -> vačšia záťaž na RAM
V.C By mohla fungovať tak že mód bude využívať 2 timery jeden sekundový + druhý 2,5 sekundový (alebo iný, aký uznáte za vhodný/potrebný). Scripty by sa nedávali rovno do publicu ale by sa "rozmnožili" do viacerých stockov/publicov.
Výhody:
+ Jednoduchšie hľadanie chýb
+ Priehľadný kód
(Ak zvládnete, + môžete 1x použiť ForConnected)
Nevýhody:
- Viac stringov
V.D By mohla fungovať že mód bude využívať 1 timer (hlavný sekundový). Script by sa nedával rovno do publicu ale by sa "rozložil" do viacerých stockov/publicov a využívali by sa premenné, aby sa mohlo docieliť že sa npr. public tip spustí za 5 sekund
Výhody:
+ Možnosť využívať aj iný čas (npr. 10 sekund)
+ Priehľadnejší kód
+ Jednoduchšie hľadanie chýb
(Ak zvládnete, + môžete 1x použiť ForConnected)
Nevýhody:
- Viac premenných -> vačšia záťaž na RAM
- Viac stringov
V.E By mohla fungovať tak, že mód bude využívať 1 timer (hlavný sekundový). Script by sa "rozložil" do viacerých stockov/publicov a využívali by sa booly + 1 premenná
Výhody:
+ Možnosť využívať aj iný čas (npr. 10 sekund)
+ Priehľadnejší kód
+ Jednoduchšie hľadanie chýb
+ Iba Jedena 32 bitová premena
(Ak zvládnete, + môžete 1x použiť ForConnected)
Nevýhody:
- Viac stringov
- Veľká šanca že timer nepôde ako švajciarske hodinky
Praktická časť:
Kedže už v úvode a v teoretickej časti hovoril o tom že vám ukážem niekoľko spôsobov tak aby ste sa nezľakli, nepremenoval som ich.
Upozornenie ! Toto sú iba názorné ukážky ! Preto tam nepoužijem forward a vynechávam ";" a pod.
V.A Máte v móde
Spôsob hodnotím na: 1/5
Vyjadrenie: "Tento spôsob sa hodí na menšie módy ako napríklad race alebo mini dm/tdm"
V.B medzi new dáme npr.
new reklama;
new antiping;
v ongamemodeinit by bolo
Spôsob hodnotím na: 2/5
Vyjadrenie: "Tento spôsob sa hodí začiatočníkom ktorý sa iba učia"
V.C Fujha, už som pri C , takže do tretice, všetko náučné
aj hľadanie chýb je jednoduchšie
Spôsob hodnotím na: 4/5
Vyjadrenie: "Tento spôsob je vhodný pre stredne pokročilých ale aj pre snaživcov, kedže sa vdaka nim naučíte čaro stockov"
V.D Viz Teória, "zase jeden timer , ak ti to vadí nečítaj návod "Timer a jeho plné využitie ""
takže medzi new
new reklama;
new antiping;
v ongamemodeinit by bolo
a potom iba
Spôsob hodnotím na: 4/5
Vyjadrenie: "Tento spôsob je vhodný na naučenie sa kladných premenných no aj vzhľad je dobrý"
V.E No Comment xD (konečne)
Ako teória hovorí, budeme pužívať 1 premenu + booly čo zaručí že nebudeme toľko zaťažovať RAM-ku
Medzi new dáme
new Timer;
a potom booly npr.
new bool:antiping;
new bool:reklama;
spravíme si timer
Spôsob hodnotím na: 4/5
Vyjadrenie: "Spôsob je nepresný, ale zato sa dá povedať že "najoptimalizovanejší" z týchto 5 variant"
Pochopenie:
Všade som povačšinou dával Timer na ktorom som ukazoval prax, spúštal sa každú sekundu takže npr. pri V.D ! To funguje tak že každú sekundu sa premenné v publicu zvyšujú o 1 takže za 30 sekund tam má premenná hodnotu 30 a kedže tam je
if(antiping == 30)
to podmienka, "to sa stane ak je premena antiping na 30"
čiže sme docielili že public AHP sa spustí každých 30 sekund
Niekde v 1/3 som písal
"(Ak zvládnete, + môžete 1x použiť ForConnected)"
Je to pre lepších a kedže viem že viac ako 3/4 súdruhov tu, na fóre mi budú písať ako na to, je to jednoduché v stockoch nebudeme používať cyklus for ale iba playerid viz.
Dakujem za prečítanie môjho Návodu, a dúfam že ste si ho prečítali celý, ak nie odporúčam vám si ho prečítať min. 2x.
S pozdravom váš milovaný a zároven nenávidený socialisticky založený
QWER
Môže mód fungovať na jednom timery ?
Áno, môže. Ide iba oto, aby ste ho vedeli využiť.
Kedže už v úvode som hovoril otom že vám ukážem niekoľko spôsobov tak ich aj pomenujem[Varianta A (skrátene V.A, V.B...)] a na konci ohodnotím.
Teoretická čast:
Ako to vlastne funguje ?
V.A By mohla fungovať tak že mód bude využívať 2 timery, jeden sekundový + druhý 2,5 sekundový (alebo iný, aký uznáte za vhodné/potrebné). Všetky scripty by sa dávali do tých dvoch publicoch.
Výhody:
+ Môžete to využiť a použiť iba 1x ForConneted
+ Môžete rozumne nakladať zo stringom
Nevýhody:
- Ak ste :prase: tak je možné že tam bude bordel a nikto iný okrem vás sa tam nevyzná
- Náročnejšie hladanie chyby
V.B By mohla fungovať tak že mód bude využívať 1 timer (hlavný sekundový) a ak by niekto potreboval npr. tip tak cez premeny. Všetky scripty by sa dávali do toho publicu
Výhody:
+ Možnosť využívať aj iný čas (npr. 10 sekund)
+ Možno rozumne nakladať zo stringom
Nevýhody:
- Ak ste :prase: tak je možné že tam bude bordel a nikto iný okrem vás sa tam nevyzná
- Náročnejšie hladanie chyby
- Viac premenných -> vačšia záťaž na RAM
V.C By mohla fungovať tak že mód bude využívať 2 timery jeden sekundový + druhý 2,5 sekundový (alebo iný, aký uznáte za vhodný/potrebný). Scripty by sa nedávali rovno do publicu ale by sa "rozmnožili" do viacerých stockov/publicov.
Výhody:
+ Jednoduchšie hľadanie chýb
+ Priehľadný kód
(Ak zvládnete, + môžete 1x použiť ForConnected)
Nevýhody:
- Viac stringov
V.D By mohla fungovať že mód bude využívať 1 timer (hlavný sekundový). Script by sa nedával rovno do publicu ale by sa "rozložil" do viacerých stockov/publicov a využívali by sa premenné, aby sa mohlo docieliť že sa npr. public tip spustí za 5 sekund
Výhody:
+ Možnosť využívať aj iný čas (npr. 10 sekund)
+ Priehľadnejší kód
+ Jednoduchšie hľadanie chýb
(Ak zvládnete, + môžete 1x použiť ForConnected)
Nevýhody:
- Viac premenných -> vačšia záťaž na RAM
- Viac stringov
V.E By mohla fungovať tak, že mód bude využívať 1 timer (hlavný sekundový). Script by sa "rozložil" do viacerých stockov/publicov a využívali by sa booly + 1 premenná
Výhody:
+ Možnosť využívať aj iný čas (npr. 10 sekund)
+ Priehľadnejší kód
+ Jednoduchšie hľadanie chýb
+ Iba Jedena 32 bitová premena
(Ak zvládnete, + môžete 1x použiť ForConnected)
Nevýhody:
- Viac stringov
- Veľká šanca že timer nepôde ako švajciarske hodinky
Praktická časť:
Kedže už v úvode a v teoretickej časti hovoril o tom že vám ukážem niekoľko spôsobov tak aby ste sa nezľakli, nepremenoval som ich.
Upozornenie ! Toto sú iba názorné ukážky ! Preto tam nepoužijem forward a vynechávam ";" a pod.
V.A Máte v móde
- kód:
SetTimer("SecondTimer",1000,1)
SetTimer("MinuteTimer",60000,1)
- kód:
public SecondTimer(){
ForConneted(i,GetMaxPlayers()){
GetPlayerHealth(i,health)
if(health > 100) BanEx(i,"Health-Hack")
if(GetPlayerMoney(i) > 99999999) ResetPlayerMoney(i)
}}
- kód:
public MinuteTimer(){
ForConneted(i,GetMaxPlayers()){
if(GetPlayerWeapon(i) == 35) BanEx(i,"Weapon-Hack")
if(GetPlayerPing(i) > 500) Kick(i);
}}
- kód:
public SecondTimer(){
ForConneted(i,GetMaxPlayers()){
GetPlayerHealth(i,health)
print("Health")
if(health > 100) BanEx(i,"Health-Hack")
print("Money")
if(GetPlayerMoney(i) > 99999999) ResetPlayerMoney(i)
}}
Spôsob hodnotím na: 1/5
Vyjadrenie: "Tento spôsob sa hodí na menšie módy ako napríklad race alebo mini dm/tdm"
V.B medzi new dáme npr.
new reklama;
new antiping;
v ongamemodeinit by bolo
- kód:
SetTimer("SecondTimer",1000,1)
- kód:
public SecondTimer(){
reklama++;
antimoney++;
if(reklama == 60){
SCMTA(c,"TUT By QWER");
reklama = 0;
}
if(antiping == 30){
ForConnected(i,GetMaxPlayers()) if(GetPlayerPing(i) > 500) Kick(i)
antiping = 0;
}
}
- kód:
public SecondTimer(){
reklama++;
antimoney++;
print("reklama")
if(reklama == 60){
SCMTA(c,"TUT By QWER");
reklama = 0;
}
print("ping")
if(antiping == 30){
ForConnected(i,GetMaxPlayers()) if(GetPlayerPing(i) > 500) Kick(i)
antiping = 0;
}
}
Spôsob hodnotím na: 2/5
Vyjadrenie: "Tento spôsob sa hodí začiatočníkom ktorý sa iba učia"
V.C Fujha, už som pri C , takže do tretice, všetko náučné
- kód:
SetTimer("SecondTimer",1000,1)
SetTimer("MinuteTimer",60000,1)
- kód:
public SecondTimer(){
GiveMoneyAll()
ResetAllWeapons()
}
- kód:
stock GiveMnoeyAll(){
ForConnected(i,GetMaxPlayers()) GivePlayerMnoey(i,500)
}
dá sa aj public využiť
forward ResetAllWeapons()
public ResetAllWeapons(){
ForConnected(i,GetMaxPlayers()) ResetPlayerWeapons(i)
}
aj hľadanie chýb je jednoduchšie
- kód:
public SecondTimer(){
print("GiveMoney")
GiveMoneyAll()
print("ResetMoney")
ResetAllWeapons()
}
Spôsob hodnotím na: 4/5
Vyjadrenie: "Tento spôsob je vhodný pre stredne pokročilých ale aj pre snaživcov, kedže sa vdaka nim naučíte čaro stockov"
V.D Viz Teória, "zase jeden timer , ak ti to vadí nečítaj návod "Timer a jeho plné využitie ""
takže medzi new
new reklama;
new antiping;
v ongamemodeinit by bolo
- kód:
SetTimer("SecondTimer",1000,1)
- kód:
public SecondTimer(){
reklama++;
antiping++;
if(reklama == 60){
TIP()
reklama = 0;
}
if(antiping == 30){
AHP()
antiping = 0;
}
}
a potom iba
- kód:
stock TIP(){
SCMTA(c,"TUT By QWER");
}
dá sa aj public využiť
forward AHP()
public AHP(){
ForConnected(i,GetMaxPlayers()){
if(GetPlayerPing(i) > 500) Kick(i)
}
}
- kód:
public SecondTimer(){
reklama++;
antiping++;
if(reklama == 60){
print("TIP")
TIP()
reklama = 0;
}
if(antiping == 30){
print("PING")
AHP()
antiping = 0;
}
}
Spôsob hodnotím na: 4/5
Vyjadrenie: "Tento spôsob je vhodný na naučenie sa kladných premenných no aj vzhľad je dobrý"
V.E No Comment xD (konečne)
Ako teória hovorí, budeme pužívať 1 premenu + booly čo zaručí že nebudeme toľko zaťažovať RAM-ku
Medzi new dáme
new Timer;
a potom booly npr.
new bool:antiping;
new bool:reklama;
spravíme si timer
- kód:
SetTimer("SecondTimer",1000,1)
- kód:
public SecondTimer(){
Timer++;
if(Timer == 30) antiping = true;
if(Timer == 60){ reklama = true; // POZOR ak už nemáte viac boolov (ten stock/public ktorý sa má spustiť po npr. 60 sekundách musí vynulovať premenu Timer ! )
Timer = 0;
}
if(reklama == true){
TIP();
reklama = false;
}
if(antiping == true){
AHP();
antiping = false;
}
}
- kód:
stock TIP(){
SCMTA(c,"TUT By QWER");
}
dá sa aj public využiť
forward AHP()
public AHP(){
ForConnected(i,GetMaxPlayers()){
if(GetPlayerPing(i) > 500) Kick(i)
}
}
- kód:
public SecondTimer(){
Timer++;
if(Timer == 30) antiping = true;
if(Timer == 60){ reklama = true;
Timer = 0;
}
if(reklama == true){
print("TIP")
TIP();
reklama = false;
}
if(antiping == true){
print("AHP")
AHP();
antiping = false;
}
}
Spôsob hodnotím na: 4/5
Vyjadrenie: "Spôsob je nepresný, ale zato sa dá povedať že "najoptimalizovanejší" z týchto 5 variant"
Pochopenie:
Všade som povačšinou dával Timer na ktorom som ukazoval prax, spúštal sa každú sekundu takže npr. pri V.D ! To funguje tak že každú sekundu sa premenné v publicu zvyšujú o 1 takže za 30 sekund tam má premenná hodnotu 30 a kedže tam je
if(antiping == 30)
to podmienka, "to sa stane ak je premena antiping na 30"
čiže sme docielili že public AHP sa spustí každých 30 sekund
Niekde v 1/3 som písal
"(Ak zvládnete, + môžete 1x použiť ForConnected)"
Je to pre lepších a kedže viem že viac ako 3/4 súdruhov tu, na fóre mi budú písať ako na to, je to jednoduché v stockoch nebudeme používať cyklus for ale iba playerid viz.
- kód:
stock GiveAllMoney(playerid){
GivePlayerMoney(playerid)
}
- kód:
forward ChcekHealth(playerid);
public ChcekHealth(playerid){
GetPlayerHealth(playerid,health)
if(health > 100) BanEx(playerid,"Health-Hack")
}
- kód:
public timer(){
ForConnected(i,GetMaxPlayers()){
GiveAllMoney(i)
ChcekHealth(i)
}
//a sem veci ktoré niesu pre všetkých hráčov npr. menenie textdrawu a pod.
}
Dakujem za prečítanie môjho Návodu, a dúfam že ste si ho prečítali celý, ak nie odporúčam vám si ho prečítať min. 2x.
S pozdravom váš milovaný a zároven nenávidený socialisticky založený
QWER