Balkan SA:MP

San Andreas Multiplayer - www.sa-mp.com => Tutorijali u vezi SA-MPa => Temu započeo: Dragi poslato Januar 19, 2025, 22:24:42 POSLE PODNE

Naslov: [Tutorial] Prost MUTE sistem u PAWN-u i MySQL-u
Poruka od: Dragi poslato Januar 19, 2025, 22:24:42 POSLE PODNE
Prost MUTE sistem u PAWN-u i MySQL-u

Uvod
Ovo je standardan i prost sistem zabrane pisanja koji koriste Administratori SA:MP servera razvijen u PAWN jeziku i MySQL-u.
Sistem se sastoji od komande /mute i /unmute. Nisam hteo prenatrpavati logovanjem, listingom baze podataka... Ukoliko izricito zelite, napisite, pa cu u okviru ovoga dodati posebno to. (Npr. /svimutirani > Offline ili Online, logovanje /mute...)

Da bi vam sistem funkcionisao, morate imati login sistem u MySQL-u koji koristi cache, ne orm. Zato se ovde necu bazirati na tome.

Bice nam potrebne 2 varijable, "mute" i "is_muted", obe imaju tip podatka INT, s default vrednostima "0".

Finte:
Primer Dragijevog koda:
if (Player[i][Mute] > 0) {
    Player[i][Mute] = max(0, Player[i][Mute] - 1);
}

Ostalo:
if(Player[i][Mute] != 0) {
    Player[i][Mute]--;
    if(Player[i][Mute] <= 0) {
        Player[i][Mute] = 0;
    }
}
Je li da da je prvi primer mnogo laksi, optimizovaniji i citljiviji? Nemojte uvek gledati daj da sto pre smandrljam. Radice to, ali skarabudz je skarabudz.

Potrebne biblioteke, plugini:

Code
https://pastebin.com/fF1qxk30

Fotografija iz igre
(https://i.ibb.co/kMvjNFT/sa-mp-517.png)

Zakljucak
Nadam se da ste naucili nesto novo danas. Ako niste, procitajte i razmislite dobro, ponovo. Hvala na citanju.
Naslov: Search Prettys Womans from your city for night
Poruka od: Toyo2411 poslato Januar 19, 2025, 23:30:33 POSLE PODNE
 Dating for Sex.  (https://best.datingx.live)
 
 Best realistic sex game (https://en.adultgame.life)
Naslov: Odg: [Tutorial] Prost MUTE sistem u PAWN-u i MySQL-u
Poruka od: markosimic poslato Januar 19, 2025, 23:37:20 POSLE PODNE
Lepo, korisno.

Nisi se lepo izrazio u par slucajeva.

Sistem je razvijen za platformu SAMP koristeci zvanican PAWN jezik za skriptanje istog. Koristi dodatne biblioteke poput sscanf, mysql, zcmd i YSI.

Ne svidja mi se sto nisi dao vise opcija cuvanja, poput YSI kada ga vec koristis.

Zasto zcmd kada vec imas YSI command procesor y_commands.

Ako se pravi nesto, preporucujem da se iskoristi sve iz paketa i ne ubacuju nove nepotrebne biblioteke.

Mogao bih pisati bas dosta oko sitnica nekih, ali glavno sam rekao.

Takodje ovaj sistem moze da se uradi i putem timestamp-ova koji je uzgred brzei i laksi za rad, jer nemas timer koji vrtis stalno da bi uradio check.

Jednostavno kada mutiras igraca postavis timestamp, koji kroz funkciju proveri da li je timestamp u usporedbi sa trenutnim prosao ili nije prosao, te mu skine mute.

No hate, ovde sam da samo rasirim svest sta je sve moguce ukoliko se dovoljno promisli.

Ostavicu ovde ispravku code na moj nacin.

https://pastebin.com/gQsMUYHt
(nisam testirao ali sam uzeo iz svog fajla (modula) tako da je radilo na mom blank gamemode vec (prilagodio sam samo postojecem napisanom sistemu))

Ovde ne koristimo timer, jer apsolutno nije potreban ! Ne koristimo YSI pakete jer nije potrebno. Promisli ubuduce code malo vise i ne pravi ga vise kompleksnim nego sto je potrebno <3

Ovo je najprostiji, najbrzi i najbolji nacin za uraditi nesto ovako.
Naslov: Odg: [Tutorial] Prost MUTE sistem u PAWN-u i MySQL-u
Poruka od: Dragi poslato Januar 20, 2025, 01:34:32 PRE PODNE
Citat: markosimic poslato Januar 19, 2025, 23:37:20 POSLE PODNELepo, korisno.

Nisi se lepo izrazio u par slucajeva.

Sistem je razvijen za platformu SAMP koristeci zvanican PAWN jezik za skriptanje istog. Koristi dodatne biblioteke poput sscanf, mysql, zcmd i YSI.

Ne svidja mi se sto nisi dao vise opcija cuvanja, poput YSI kada ga vec koristis.

Zasto zcmd kada vec imas YSI command procesor y_commands.

Ako se pravi nesto, preporucujem da se iskoristi sve iz paketa i ne ubacuju nove nepotrebne biblioteke.

Mogao bih pisati bas dosta oko sitnica nekih, ali glavno sam rekao.

Takodje ovaj sistem moze da se uradi i putem timestamp-ova koji je uzgred brzei i laksi za rad, jer nemas timer koji vrtis stalno da bi uradio check.

Jednostavno kada mutiras igraca postavis timestamp, koji kroz funkciju proveri da li je timestamp u usporedbi sa trenutnim prosao ili nije prosao, te mu skine mute.

No hate, ovde sam da samo rasirim svest sta je sve moguce ukoliko se dovoljno promisli.

Ostavicu ovde ispravku code na moj nacin.

https://pastebin.com/gQsMUYHt
(nisam testirao ali sam uzeo iz svog fajla (modula) tako da je radilo na mom blank gamemode vec (prilagodio sam samo postojecem napisanom sistemu))

Ovde ne koristimo timer, jer apsolutno nije potreban ! Ne koristimo YSI pakete jer nije potrebno. Promisli ubuduce code malo vise i ne pravi ga vise kompleksnim nego sto je potrebno <3

Ovo je najprostiji, najbrzi i najbolji nacin za uraditi nesto ovako.


Hvala ti na komentaru i deljenju svog koda. Cenim trud koji si uložio u optimizaciju, ali si za..bao debelo stvar i napraivo opasan BUG. Mislim da sam se lepo izrazio jer nisam rekao jezici, ogradio sam MySQL kao poseban sistem.

Moj pristup koristi timer koji se pokreće svake minute, što smanjuje učestalost poziva i opterećenje na serveru. Mislim da je efikasnije za veći broj igrača. (Čak i na 1000ms je bolji)

S druge strane, tvoj kod koristi `OnPlayerUpdate`, što NIKAKO nije dobro! Napravio si opasnu grešku tu, samo zasto što si hteo da uprostiš, kobajagai, nešto što je Dragi vrlo dobro realizovao! A objasniću kasnije šta si uradio...

Svaka složenija skripta mora koristiti tajmere na svakih 1000ms i-ili 60000ms. Ja nisam napravio tajmer specijalno zbog mute sistema. I ne brini, to uopšte ne šteti optimizaciji, jer YSI radi ko Singer, a usput, imaš samo jedan timer, eventualno dva timera na takvim intervalima uzastopno.

Ne znam zašto pojedinci misle da su ti tajmeri BAUK i da to šteti optimizaciji, naprotiv, kad se pravilno koristi, uopšte ne šteti.

Nigde nisam implementirao y_commands. Ne vidim razlog za spominjanje. Od YSI je samo timer implementiran. Ja više volim ZCMD ili Pawn.CMD. Šta bih mogao čuvati u YSI i zašto bih? Sve se roka u MySQL, zašto? Opet kažem hiljaditi put, da bi radilo ko Singer. Dragi = Singer.

Tvoja varijabla se pojavila ko grom iz vedra neba? "MuteTimestamp". Hajde, sredio sam ti kod i šta se desilo? Bugčina baća i to velikih razmera, ali dobro je što si napravio BUG da bih tebi i drugima pokazao koliko nije ispravno koristiti taj tvoj "najbolji, najefikasniji i najbrži način".

(https://i.ibb.co/XCBc1vb/sa-mp-519.png)

Odmah sam uočio tu grešku, jer sam znao da se ne čita šta ja pišem, a lepo sam napisao "Trebace nam zbog obavestenja u tasku." Valjda si skontao sad da ja ne pišem bezveze stvari tek tako... Nije lepo što ne čitaš moje reči. Ovo je dobro što se desilo, jer mi je CPU skočio na 100%... Toliko o tvom callbacku i najboljem načinu koji se 30x ponavlja u jednoj sekundi.

Takođe, ne smatraj da se svađam ili tako nešto. Svakako ja tebe cenim dosta i to će biti tako, ali bih te zamolio da više ne radiš ovakve opaske. "Promisli ubuduce code malo vise i ne pravi ga vise kompleksnim nego sto je potrebno <3".... Ne ide da tako govoriš za mene.

Moj kod je promišljen 10000x i testiran 99999x. I nikad nije namerno napravljen kompleksno osim ako nisam ja to hteo iz dosade ili zabave, ali to naglasim! Retko kad mogu napraviti BUG i objaviti public bez rigoroznih testova. Ja dobro znam šta radim, valjda si dosad video. Ponavljam, moj kod je najbolji način za ovo, to će ti potvridti svaki skripter pri zdravom razumu. Moj kod može da radi na 9999 igrača ko Singer. Veruj Dragiju, bespotrebno si sve to napisao. :) Šta bi bilo da ja s tvojim stavom idem po forumu i svima analiziram kod, ali stvarno analiziram... Ne ide to. :D Razumem da nisi iz ove branše, ali baš zbog toga ne ide da govoriš meni šta je brže, bolje, optimizovanije, koje biblitoeke da koristim, a koje ne. Zamisli mene da govorim o veb developmentu tebi. Zamoliću te da me razumeš samo i ne uvrediš se, jer se i ja nisam uvredio. Sve najbolje ti želim!

P.S. Svaku kritiku koja je na mestu prihvatam. Ljudi smo i grešimo. Da ne pomislite da sam neki namćor.  ;D Ali kad sam u pravu, onda sam u pravu i ne bih pisao referate.
Naslov: Dating for Sex.
Poruka od: _ddivacc_ poslato Januar 20, 2025, 04:02:51 PRE PODNE
 Dating for Sex.  (https://best.datingx.live)
 
 Best Porn Game (https://en.adultgame.life)
Naslov: Uncover Your Desires.
Poruka od: Spaha15 poslato Januar 20, 2025, 06:53:02 PRE PODNE
 Uncover Your Desires.  (https://top.datingx.live)
 
 Best realistic sex game (https://en.adultgame.life)
Naslov: Odg: [Tutorial] Prost MUTE sistem u PAWN-u i MySQL-u
Poruka od: markosimic poslato Januar 20, 2025, 06:54:19 PRE PODNE
Citat: Dragi poslato Januar 20, 2025, 01:34:32 PRE PODNEHvala ti na komentaru i deljenju svog koda. Cenim trud koji si uložio u optimizaciju, ali si za..bao debelo stvar i napraivo opasan BUG. Mislim da sam se lepo izrazio jer nisam rekao jezici, ogradio sam MySQL kao poseban sistem.

Moj pristup koristi timer koji se pokreće svake minute, što smanjuje učestalost poziva i opterećenje na serveru. Mislim da je efikasnije za veći broj igrača. (Čak i na 1000ms je bolji)

S druge strane, tvoj kod koristi `OnPlayerUpdate`, što NIKAKO nije dobro! Napravio si opasnu grešku tu, samo zasto što si hteo da uprostiš, kobajagai, nešto što je Dragi vrlo dobro realizovao! A objasniću kasnije šta si uradio...

Svaka složenija skripta mora koristiti tajmere na svakih 1000ms i-ili 60000ms. Ja nisam napravio tajmer specijalno zbog mute sistema. I ne brini, to uopšte ne šteti optimizaciji, jer YSI radi ko Singer, a usput, imaš samo jedan timer, eventualno dva timera na takvim intervalima uzastopno.

Ne znam zašto pojedinci misle da su ti tajmeri BAUK i da to šteti optimizaciji, naprotiv, kad se pravilno koristi, uopšte ne šteti.

Nigde nisam implementirao y_commands. Ne vidim razlog za spominjanje. Od YSI je samo timer implementiran. Ja više volim ZCMD ili Pawn.CMD. Šta bih mogao čuvati u YSI i zašto bih? Sve se roka u MySQL, zašto? Opet kažem hiljaditi put, da bi radilo ko Singer. Dragi = Singer.

Tvoja varijabla se pojavila ko grom iz vedra neba? "MuteTimestamp". Hajde, sredio sam ti kod i šta se desilo? Bugčina baća i to velikih razmera, ali dobro je što si napravio BUG da bih tebi i drugima pokazao koliko nije ispravno koristiti taj tvoj "najbolji, najefikasniji i najbrži način".

(https://i.ibb.co/XCBc1vb/sa-mp-519.png)

Odmah sam uočio tu grešku, jer sam znao da se ne čita šta ja pišem, a lepo sam napisao "Trebace nam zbog obavestenja u tasku." Valjda si skontao sad da ja ne pišem bezveze stvari tek tako... Nije lepo što ne čitaš moje reči. Ovo je dobro što se desilo, jer mi je CPU skočio na 100%... Toliko o tvom callbacku i najboljem načinu koji se 30x ponavlja u jednoj sekundi.

Takođe, ne smatraj da se svađam ili tako nešto. Svakako ja tebe cenim dosta i to će biti tako, ali bih te zamolio da više ne radiš ovakve opaske. "Promisli ubuduce code malo vise i ne pravi ga vise kompleksnim nego sto je potrebno <3".... Ne ide da tako govoriš za mene.

Moj kod je promišljen 10000x i testiran 99999x. I nikad nije namerno napravljen kompleksno osim ako nisam ja to hteo iz dosade ili zabave, ali to naglasim! Retko kad mogu napraviti BUG i objaviti public bez rigoroznih testova. Ja dobro znam šta radim, valjda si dosad video. Ponavljam, moj kod je najbolji način za ovo, to će ti potvridti svaki skripter pri zdravom razumu. Moj kod može da radi na 9999 igrača ko Singer. Veruj Dragiju, bespotrebno si sve to napisao. :) Šta bi bilo da ja s tvojim stavom idem po forumu i svima analiziram kod, ali stvarno analiziram... Ne ide to. :D Razumem da nisi iz ove branše, ali baš zbog toga ne ide da govoriš meni šta je brže, bolje, optimizovanije, koje biblitoeke da koristim, a koje ne. Zamisli mene da govorim o veb developmentu tebi. Zamoliću te da me razumeš samo i ne uvrediš se, jer se i ja nisam uvredio. Sve najbolje ti želim!

P.S. Svaku kritiku koja je na mestu prihvatam. Ljudi smo i grešimo. Da ne pomislite da sam neki namćor.  ;D Ali kad sam u pravu, onda sam u pravu i ne bih pisao referate.


Zato sam naglasio bas da nisam testirao jer sam uzeo tvoje, ubacio delove mog po nekoj logici koja bi trebala da radi. Kod mene moja verzija koja je napisana radi perfektno, ali bih morao taj sistem da ceo izvucem iz admin sistema koji je uzgred u sqlite, ne u mysql. Dao sam primer da se sve moze uraditi na mnogo prostije nacine, smatram da je bolja opcija usporedba timestamp jer nemas potrebe da imas timer koji se vrti. Radis usporedbu i odobravas pisanje u chatu ili ne odobravas.

Nisam hteo vise i dalje od toga da detaljisem jer sam u obavezama i nisam pri samom racunaru.

U YSI paketima postoji command procesor koji je deo biblioteke, radi isto skoro kao zcmd i nepotrebno je imati zcmd biblioteku kada vec imas u paketu nesto slicno da ne kazem identicno.

Takodje nigde nisi include foreach, a koristis ga. Doduse YSI ima foreach koliko znam u biblioteci svojoj. Foreach kao sam nije deo SAMP-a i nije integrisan u isti koliko znam.

Ovaj sistem po meni mnogo prostije, brze i logicnije radi putem timestamp-ova, a moze se uraditi na jos razne nacine.

Nisam rekao da je los sistem, naveo sam da postoji samo mnogo drugih nacina i da nije promisljeno dovoljno. Ne mozes da kazes da usporedba timestamp-ova nije efikasniji, optimizovaniji i brzi nacin od koriscenja timera.

Takodje naveo sam da si mogao uraditi i u YSI cuvanju, cisto da ima i ta verzija jer ne koriste svi (vecina) mysql.

Zamolicu te da citas moje reci pazljivije takodje.

"(nisam testirao ali sam uzeo iz svog fajla (modula) tako da je radilo na mom blank gamemode vec (prilagodio sam samo postojecem napisanom sistemu))"

"Ako se pravi nesto, preporucujem da se iskoristi sve iz paketa i ne ubacuju nove nepotrebne biblioteke."

"Takodje ovaj sistem moze da se uradi i putem timestamp-ova koji je uzgred brzei i laksi za rad, jer nemas timer koji vrtis stalno da bi uradio check.

Jednostavno kada mutiras igraca postavis timestamp, koji kroz funkciju proveri da li je timestamp u usporedbi sa trenutnim prosao ili nije prosao, te mu skine mute.

No hate, ovde sam da samo rasirim svest sta je sve moguce ukoliko se dovoljno promisli."

Ova zadnja recenica je kljucna. Opet kazem kod mene full sistem mute/unmute zauzima oko 150 linija code, u sqlite je pre svega i ne koristi timere, ali je modul i nece raditi samo ako se ubaci jer prati postojecu skriptu.

Kada budem imao vremena ovih dana rado cu ispraviti link i postaviti full funkcionalan sistem a ne ispravku kao primer kako se jos to moze odraditi, efikasnije i brze.

Takodje koristim napisanu custom funkciju a ne playerupdate, ovde sam ga stavio jer mi se nije dalo prepravljati celu funkciju ili pisati drugu iznova putem telefona.

Ps. Nema ljutnje, sve pet, nisam rekao nista lose, samo prosirio pricu kako se moze jos to napraviti i po meni optimizovaniji nacin (niko ne moze reci da je timer optimizovaniji od usporedbe i brzi od iste), osim ako timer ne ide kroz mnogo mnogo toga u buducnosti i tako ima smisla vise u samoj upotrebi, sto nije naglaseno. Ovakve debate nisu o tome ko je vise ili manje u pravu, nego o sirenju svesti i mogucnosti sta sve moze, ispravkama i edukaciji cak izmedju nas samih. Svakako su to sve neke nijanse, ja u ovo pristupam logikom weba jer sam iz web sveta, dok ti pristupas ipak iz legacy (c) sveta.
Naslov: Dating for Sex.
Poruka od: tedicar123 poslato Januar 20, 2025, 10:46:51 PRE PODNE
 Dating for Sex.  (https://best.datingx.live)
 
 Most realistic sex game (https://en.adultgame.life)
Naslov: Odg: [Tutorial] Prost MUTE sistem u PAWN-u i MySQL-u
Poruka od: Dragi poslato Januar 20, 2025, 14:35:34 POSLE PODNE
Citat: markosimic poslato Januar 20, 2025, 06:54:19 PRE PODNEZato sam naglasio bas da nisam testirao jer sam uzeo tvoje, ubacio delove mog po nekoj logici koja bi trebala da radi. Kod mene moja verzija koja je napisana radi perfektno, ali bih morao taj sistem da ceo izvucem iz admin sistema koji je uzgred u sqlite, ne u mysql. Dao sam primer da se sve moze uraditi na mnogo prostije nacine, smatram da je bolja opcija usporedba timestamp jer nemas potrebe da imas timer koji se vrti. Radis usporedbu i odobravas pisanje u chatu ili ne odobravas.

Nisam hteo vise i dalje od toga da detaljisem jer sam u obavezama i nisam pri samom racunaru.

U YSI paketima postoji command procesor koji je deo biblioteke, radi isto skoro kao zcmd i nepotrebno je imati zcmd biblioteku kada vec imas u paketu nesto slicno da ne kazem identicno.

Takodje nigde nisi include foreach, a koristis ga. Doduse YSI ima foreach koliko znam u biblioteci svojoj. Foreach kao sam nije deo SAMP-a i nije integrisan u isti koliko znam.

Ovaj sistem po meni mnogo prostije, brze i logicnije radi putem timestamp-ova, a moze se uraditi na jos razne nacine.

Nisam rekao da je los sistem, naveo sam da postoji samo mnogo drugih nacina i da nije promisljeno dovoljno. Ne mozes da kazes da usporedba timestamp-ova nije efikasniji, optimizovaniji i brzi nacin od koriscenja timera.

Takodje naveo sam da si mogao uraditi i u YSI cuvanju, cisto da ima i ta verzija jer ne koriste svi (vecina) mysql.

Zamolicu te da citas moje reci pazljivije takodje.

"(nisam testirao ali sam uzeo iz svog fajla (modula) tako da je radilo na mom blank gamemode vec (prilagodio sam samo postojecem napisanom sistemu))"

"Ako se pravi nesto, preporucujem da se iskoristi sve iz paketa i ne ubacuju nove nepotrebne biblioteke."

"Takodje ovaj sistem moze da se uradi i putem timestamp-ova koji je uzgred brzei i laksi za rad, jer nemas timer koji vrtis stalno da bi uradio check.

Jednostavno kada mutiras igraca postavis timestamp, koji kroz funkciju proveri da li je timestamp u usporedbi sa trenutnim prosao ili nije prosao, te mu skine mute.

No hate, ovde sam da samo rasirim svest sta je sve moguce ukoliko se dovoljno promisli."

Ova zadnja recenica je kljucna. Opet kazem kod mene full sistem mute/unmute zauzima oko 150 linija code, u sqlite je pre svega i ne koristi timere, ali je modul i nece raditi samo ako se ubaci jer prati postojecu skriptu.

Kada budem imao vremena ovih dana rado cu ispraviti link i postaviti full funkcionalan sistem a ne ispravku kao primer kako se jos to moze odraditi, efikasnije i brze.

Takodje koristim napisanu custom funkciju a ne playerupdate, ovde sam ga stavio jer mi se nije dalo prepravljati celu funkciju ili pisati drugu iznova putem telefona.

Ps. Nema ljutnje, sve pet, nisam rekao nista lose, samo prosirio pricu kako se moze jos to napraviti i po meni optimizovaniji nacin (niko ne moze reci da je timer optimizovaniji od usporedbe i brzi od iste), osim ako timer ne ide kroz mnogo mnogo toga u buducnosti i tako ima smisla vise u samoj upotrebi, sto nije naglaseno. Ovakve debate nisu o tome ko je vise ili manje u pravu, nego o sirenju svesti i mogucnosti sta sve moze, ispravkama i edukaciji cak izmedju nas samih. Svakako su to sve neke nijanse, ja u ovo pristupam logikom weba jer sam iz web sveta, dok ti pristupas ipak iz legacy (c) sveta.

Ne znam vise stvarno, posaljes netestiran kod, sad jos kazes nisi koristio OnPlayerUpdate, a i njega si poslao u kodu. Kazes onda taj nacin je najbolji, najbrzi. Boze pomozi, ahahaha. Neke stvari ne mogu, Boga mi da ti objasnjavam sad za te biblioteke i timere.

Ako je tako, ona sto sam rekao prethodno za kod pada u vodu ili sta?

Ja sam rekao da nije optimizovaniji tvoj nacin timestampa, za koji sad navodis da nije dobar. Isto ti je na sudu kad imas dve razlcite price, tamo krivicno odgovaras, a ovde j..s mene. 8)

Hajde, rado bih voleo videti tvoj nacin, taman posla. Volim istrazivati.

Jasta, nema ljutnje. Samo razmenjujemo misljenje, a moram biti iskren da tvoj nacin izrazavanja je malo cudan.  :D

Kako zauzima 150k linija mute/unmute sistem? ::) Sistem kao sistem sadrzi dve komande, ostalo su provere varijabli.
Naslov: Odg: [Tutorial] Prost MUTE sistem u PAWN-u i MySQL-u
Poruka od: Dragi poslato Januar 20, 2025, 15:19:10 POSLE PODNE
Evo za one koji zele preko timestampa:

Pod komandom "/mute" zamenite postojecu vrednost varijable Mute s novom:
Player[target_id][Mute] = gettime() + (mute_time * 60);

Deklarisite funkciju za proveru da li je igrac mutovan:
stock is_muted(playerid)
{
    if (Player[playerid][Mute] == 0) return 0; // Nije mutovan

    if (gettime() >= Player[playerid][Mute])
    {
new query[128];
//Isteklo, resetung
Player[playerid][IsMuted] = 0;
Player[playerid][Mute] = 0;
mysql_format(g_SQL, query, sizeof query,
    "UPDATE `players` SET `is_muted` = 0, mute = 0 WHERE `id` = %d LIMIT 1", Player[playerid][ID]);
mysql_tquery(g_SQL, query);
return 0; // nije mutovan
    }
    return 1; // mutovan
}

Pod callbackom OnPlayerText stavite ovo gore:
if (is_muted(playerid))
{
    SendClientMessage(playerid, -1, "Ne mozete koristiti ovu komandu jer ste utisani.");
    return 0; // Blokada, rokada
}
Gde god imate potrebu da proverite da li je mute, koristite taj kod!!!

Ovo ce raditi isto savrseno. Eto da ispunim zelju @markosimic da se ne koriste timeri uzimavsi u obzir da sam stavio "Prost" u naslovu. (Opet to je individualno sta je nekome prosto)  ;D
Naslov: Odg: [Tutorial] Prost MUTE sistem u PAWN-u i MySQL-u
Poruka od: markosimic poslato Januar 20, 2025, 15:19:55 POSLE PODNE
Citat: Dragi poslato Januar 20, 2025, 14:35:34 POSLE PODNENe znam vise stvarno, posaljes netestiran kod, sad jos kazes nisi koristio OnPlayerUpdate, a i njega si poslao u kodu. Kazes onda taj nacin je najbolji, najbrzi. Boze pomozi, ahahaha. Neke stvari ne mogu, Boga mi da ti objasnjavam sad za te biblioteke i timere.

Ako je tako, ona sto sam rekao prethodno za kod pada u vodu ili sta?

Ja sam rekao da nije optimizovaniji tvoj nacin timestampa, za koji sad navodis da nije dobar. Isto ti je na sudu kad imas dve razlcite price, tamo krivicno odgovaras, a ovde j..s mene. 8)

Hajde, rado bih voleo videti tvoj nacin, taman posla. Volim istrazivati.

Jasta, nema ljutnje. Samo razmenjujemo misljenje, a moram biti iskren da tvoj nacin izrazavanja je malo cudan.  :D

Kako zauzima 150k linija mute/unmute sistem? ::) Sistem kao sistem sadrzi dve komande, ostalo su provere varijabli.


Izgleda da opet ne citas.

150 linija koda, ne 150k linija koda.

Naveo sam da sam poslao netestiranu verziju gde sam u bazi uzeo tvoj sistem, izmenio, postavio pod onplayerupdate primer da ne bih davao svoju funkciju koja se poziva u onplayertext zapravo kao update koji radi ispis.

Code kao code sistem (princip koji sam poslao nije jer sadrzi playerupdate) je optimizovaniji jer usporedjujes timestamp i odobravas ili ne odobravas slanje poruke, sto je optimizovanije.

Nisam neki master za objasnjavanje generalno, tako da mi treba dosta vise vremena da objasnim ono sto zapravo gledam i vidim, sto ljudi jako tesko razumeju jer po defaultu uvek mislim da svi mogu videti sta je meni u glavi i mislima sto bas nije realno  :'(

Citat: Dragi poslato Januar 20, 2025, 15:19:10 POSLE PODNEEvo za one koji zele preko timestampa:

Pod komandom "/mute" zamenite postojecu vrednost varijable Mute s novom:
Player[target_id][Mute] = gettime() + (mute_time * 60);

Deklarisite funkciju za proveru da li je igrac mutovan:
stock is_muted(playerid)
{
    if (Player[playerid][Mute] == 0) return 0; // Nije mutovan

    if (gettime() >= Player[playerid][Mute])
    {
new query[128];
//Isteklo, resetung
Player[playerid][IsMuted] = 0;
Player[playerid][Mute] = 0;
mysql_format(g_SQL, query, sizeof query,
    "UPDATE `players` SET `is_muted` = 0, mute = 0 WHERE `id` = %d LIMIT 1", Player[playerid][ID]);
mysql_tquery(g_SQL, query);
return 0; // nije mutovan
    }
    return 1; // mutovan
}

Pod callbackom OnPlayerText stavite ovo gore:
if (is_muted(playerid))
{
    SendClientMessage(playerid, -1, "Ne mozete koristiti ovu komandu jer ste utisani.");
    return 0; // Blokada, rokada
}
Gde god imate potrebu da proverite da li je mute, koristite taj kod!!!

Ovo ce raditi isto savrseno. Eto da ispunim zelju @markosimic da se ne koriste timeri uzimavsi u obzir da sam stavio "Prost" u naslovu. (Opet to je individualno sta je nekome prosto)  ;D

Upravo tako, jako slican sistem imam samo trunku detaljniji i naming naravno drugaciji, malo drugacije cuvanje, uglavnom to je tehnicki to.

Jos da uradis u Yini i vrh :D
Naslov: Dating for Sex.
Poruka od: Leek_Richardson poslato Januar 20, 2025, 16:14:11 POSLE PODNE
 Dating for Sex.  (https://best.datingx.live)
 
 Most realistic porn game (https://en.adultgame.life)
Naslov: Explore Dating for Sex.
Poruka od: yoki poslato Januar 20, 2025, 16:45:56 POSLE PODNE
 Explore Dating for Sex.  (https://top.datingx.live)
 
 Best Sex Game (https://en.adultgame.life)
Naslov: Odg: [Tutorial] Prost MUTE sistem u PAWN-u i MySQL-u
Poruka od: Dragi poslato Januar 20, 2025, 17:38:12 POSLE PODNE
@markosimic Ma sve moze. Oba sistema su podjenako dobra i obavljaju funkciju za koju su namenjeni. Ti samo iskosrcavas vec postojeci timer i tu nema pada performansi...

Jedina prednost timestampa je ta sto nisi uslovljen da svakih minut ili sekund proveravas i dekrementujes varijablu za 1. Moj tempban sistem sam isto radio preko timestampa. Ne kazem ja nista lose za timestamp, nego za tvoj kod koji koristi OnPlayerUpdate, valjda smo se razumeli na kraju. Srdacan pozdrav!  8)
Naslov: Dating for Sex.
Poruka od: Ajdin_Black poslato Januar 20, 2025, 18:38:44 POSLE PODNE
 Dating for Sex.  (https://top.datingx.live)
 
 Most realistic porn game (https://en.adultgame.life)
Naslov: Odg: [Tutorial] Prost MUTE sistem u PAWN-u i MySQL-u
Poruka od: №Grella poslato Januar 20, 2025, 18:45:14 POSLE PODNE
1. Nepotrebno opterećenje servera: task MuteTimer[60000]() se izvršava svake minute. Unutar tog taska, kod iterira kroz sve igrače (foreach(new i : Player)) i provjerava jesu li mutirani. Ovo je vrlo neučinkovito. Čak i ako mali broj igrača ima aktivan mute, server i dalje mora svake minute provjeravati sve igrače.

2. Nepotrebni SQL upiti: Unutar taska se izvršavaju SQL upiti za svakog mutiranog igrača svake minute. To dodatno opterećuje server i bazu podataka. Dovoljno je jednom spremiti vrijeme isteka mute-a u bazu, a ne ga ažurirati svake minute.

Opet moje neko mišljenje...
Naslov: Odg: [Tutorial] Prost MUTE sistem u PAWN-u i MySQL-u
Poruka od: Dragi poslato Januar 20, 2025, 21:51:58 POSLE PODNE
Citat: №Grella poslato Januar 20, 2025, 18:45:14 POSLE PODNE1. Nepotrebno opterećenje servera: task MuteTimer[60000]() se izvršava svake minute. Unutar tog taska, kod iterira kroz sve igrače (foreach(new i : Player)) i provjerava jesu li mutirani. Ovo je vrlo neučinkovito. Čak i ako mali broj igrača ima aktivan mute, server i dalje mora svake minute provjeravati sve igrače.

2. Nepotrebni SQL upiti: Unutar taska se izvršavaju SQL upiti za svakog mutiranog igrača svake minute. To dodatno opterećuje server i bazu podataka. Dovoljno je jednom spremiti vrijeme isteka mute-a u bazu, a ne ga ažurirati svake minute.

Opet moje neko mišljenje...

Ti si samo jedan obican palamud od svih palamuda. Ja volim kad neko mi da kritike, ali to volim od ucenih ljudi i koji znaju bontom donekle. Ne znas ni sta znas ni sta ne znas, kratko receno, a ti se ljuti koliko hoces.

Foreach ne laguje server!

MySQL je dizajniran da efikasno upravlja velikim brojem upita, a ako se pravilno konfigurise, moze da izdrzi znacajno opterecenje.

Jesi li cuo mozda za indexe? A da, palamudi ne znaju to.

Sta je problem sto se proverava svake minute? Objasni razlog? Ne palamudi vec objasni ako znas nesto? Serveri sa 1000 igraca koriste task od 1000ms i 60000ms jer je potreban! Dokle cu ponavljati ko papagaj? Zelite li uopste nauciti nesto novo?

Da nisi palamud, znao bi sta laguje server. Samo mi je krivo sto nemam plugin performance profiler da ti objasnim par stvari, ukinut je.

Ako si pizajzla i gledas performanse, sto se ne otvoris u uzmes lepo jaci CPU da moze da tera normalanu skriptu na 1000 igraca. Koliko para toliko i muzike. $$$

Ovo ti je glavni timer koji skripta koristi za mnogo, mnogo stvari. Nazovi ga GlobalTimer. Pored ovog, imas i na 1000ms i to ti je to od timera s takvim uzastopnim intervalima. I ti hoces da mi kazes da 2 timera laguju server? Jesi li ti normalan, izvini sto te pitam, ali dosadilo mi je objasnjvati onima vise koji nece da otvore dokumentaciju da procitaju JEDNU recenicu samo, a znaju da pisu "svoja neka misljenja s tri tackice...". Pedala samo od mojih stvari i to je to.

Srdacan pozdrav!

P.S. Voleo bih cuti @Vasic sta ima da kaze, jer i u njegovom FG koristi vrlo slican sistem, odakle sam i uzeo za primer kod koji se moze optimizovati za proveru i dekrementaciju. Slobodno ako ima jos neko od skriptera koji koriste ovaj sistem, voleo bih cuti vase misljenje i zasto ga koristite.

(https://i.ibb.co/k6RPr0S/image.png)
Naslov: Odg: [Tutorial] Prost MUTE sistem u PAWN-u i MySQL-u
Poruka od: Dragi poslato Januar 20, 2025, 22:16:21 POSLE PODNE
slucajno poslao
Naslov: Odg: [Tutorial] Prost MUTE sistem u PAWN-u i MySQL-u
Poruka od: markosimic poslato Januar 20, 2025, 22:25:55 POSLE PODNE
Ponovicu jos jednom. Ovaj sistem kao basic se moze napisati na dva optimizovana nacina.

Koriscenje timera - Nece nista uciniti serveru lose jedan timer. Dobro je sto se tice skalabilnosti ukoliko ga koristis pravilno i ne trpas za svaku sitnicu timer koji ce se vrteti i time ces dobiti jako brzo overload server jer vecina hostinga je samo reseller sa minimalnim specifikacijama.

Koriscenje Usporedbe Timestamp - Jako prosto, imas timestamp koji dodeljujes i cuvas, pozivom na onplayertext usporedjujes i ispjsujes ako je mutiran i koliko je ostalo do isteka. Prosta funkcija, prosta upotreba. Jako slican sistem samog rada sistema uz razliku samo upotrebe.

Razlog zbog kog ja preferiram usporedbu naspram timera - jako prosto. Smanjujes broj biblioteka, nemas nepotreban timer koji ce ti biti +1 u samom modu u vecini slucajeva. Iz tog razloga ja volim da svaki sistem bude sto prostiji i sto jednostavniji.

Ako povucemo globalnu crtu - moze se koristiti jedan i dugi nacin. Niti jedan nije manje ispravan. Sve zavisi od toga kako ce neko integrisati taj sistem i koliko je pametan.

Da se ne duzi prica, ukoliko neko misli da sam ja uzeo i rekao da je ovo los nacin - nisam. Rekao sam da ima prostiji i po mom misljenju bolja solucija.

Ukoliko kazete nesto, makar to jako dobro obrazlozite argumentima i cinjenicama.

@Dragi jako cenim tvoj rad. Postujem. Zato si i razumeo da kriika nije u smeru nadmenosti, nego raznovrsnosti. Sam mozes da obrazlozis koja je razlika, stvar preferencije. Ja kao i u webu koji radim volim da imam minimalizam, clean i ne koriscenje nepotrebnih stvari koje ce razlikovati u performansama generalno koje su jako vise primetne nego na samom SAMP-u.

Postujte autora.

Svaki komentar izvan ovog je suvisan.
Naslov: Odg: [Tutorial] Prost MUTE sistem u PAWN-u i MySQL-u
Poruka od: Dragi poslato Januar 20, 2025, 22:44:36 POSLE PODNE
Citat: markosimic poslato Januar 20, 2025, 22:25:55 POSLE PODNEPonovicu jos jednom. Ovaj sistem kao basic se moze napisati na dva optimizovana nacina.

Koriscenje timera - Nece nista uciniti serveru lose jedan timer. Dobro je sto se tice skalabilnosti ukoliko ga koristis pravilno i ne trpas za svaku sitnicu timer koji ce se vrteti i time ces dobiti jako brzo overload server jer vecina hostinga je samo reseller sa minimalnim specifikacijama.

Koriscenje Usporedbe Timestamp - Jako prosto, imas time stamp koji dodeljujes i cuvas, pozivom na onplayertext usporedjujes i ispjsujes ako je mutiran i koliko je ostalo do isteka. Prosta funkcija, prosta upotreba. Jako slican sistem samog rada sistema uz razliku samo upotrebe.

Razlog zbog kog ja preferiram usporedbu naspram timera - jako prosto. Smanjujes broj biblioteka, nemas nepotreban timer koji ce ti biti +1 u samom modu u vecini slucajeva. Iz tog razloga ja volim da svaki sistem bude sto prostiji i sto jednostavniji.

Ako povucemo globalnu crtu - moze se koristiti jedan i dugi nacin. Niti jedan nije manje ispravan. Sve zavisi od toga kako ce neko integrisati taj sistem i kako je pametan.

Da se ne duzi prica, ukoliko neko misli da sam ja uzeo i rekao da je ovo los nacin - nisam. Rekao sam da ima prostiji i po mom misljenju bolja solucija.

Ukoliko kazete nesto, makar to jako dobro obrazlozite argumentima i cinjenicama.

@Dragi jako cenim tvoj rad. Postujem. Zato si i razumeo da kriika nije u smeru nadmenosti, nego raznovrsnosti. Sam mozes da obrazlozis koja je razlika, stvar preferencije. Ja kao i u webu koji radim volim da imam minimalizam, clean i ne koriscenje nepotrebnih stvari koje ce razlikovati u performansama generalno koje su jako vise primetne nego na samom SAMP-u.

Postujte autora.

Svaki komentar izvan ovog je suvisan.

Ma razumem te u potpunosti. Sve si lepo rekao. I rezimirao si kako treba. Aplauz.

Ja nikad ne lazem, ono sto jeste i kazem. Zato moram da kazem da sam timestamp jeste bolje resenje za ovaj sistem. Ne moras da pratis stalno varijablu i da dekrementujes istu, cuvas u bazi i slicno... Kroz timestamp samo uporedis trenutno vreme s sacuvanim podatkom iz baze. Sve ja razumem. Zbog nekih drugih stvari sam se iznervirao...

Doslo je do nekih nesuglasica povodm OnPlayerUpdate i ovog clana koji prica u prazno nesto... Verujem da nije jedini, jer ne bi neki drugi clanovi da ih ne imenujem sad pisali da je forum propao u tom pogledu...

Citat: markosimic poslato Januar 20, 2025, 22:25:55 POSLE PODNEjako cenim tvoj rad. Postujem.
Veruj da je uzajamno.

Najbolje da @Edo ukloni ovaj tutorial, a ja cu novi napraviti s oba nacina i nece me videti komentari vise osim "Tako je, gospodine/gospodjo." Uopste mi nije bila namera pisati referate, ako postoje neke korisne informacije, hajde neka ostane onda, ali cisto sumnjam, ko ce citati referate sad.
Naslov: Odg: [Tutorial] Prost MUTE sistem u PAWN-u i MySQL-u
Poruka od: markosimic poslato Januar 20, 2025, 22:51:13 POSLE PODNE
Citat: Dragi poslato Januar 20, 2025, 22:44:36 POSLE PODNEMa razumem te u potpunosti. Sve si lepo rekao. I rezimirao si kako treba. Aplauz.

Ja nikad ne lazem, ono sto jeste i kazem. Zato moram da kazem da sam timestamp jeste bolje resenje za ovaj sistem. Ne moras da pratis stalno varijablu i da dekrementujes istu, cuvas u bazi i slicno... Kroz timestamp samo uporedis trenutno vreme s sacuvanim podatkom iz baze. Sve ja razumem. Zbog nekih drugih stvari sam se iznervirao...

Doslo je do nekih nesuglasica povodm OnPlayerUpdate i ovog clana koji prica u prazno nesto... Verujem da nije jedini, jer ne bi neki drugi clanovi da ih ne imenujem sad pisali da je forum propao u tom pogledu...
Veruj da je uzajamno.

Najbolje da @Edo ukloni ovaj tutorial, a ja cu novi napraviti s oba nacina i nece me videti komentari vise osim "Tako je, gospodine/gospodjo." Uopste mi nije bila namera pisati referate, ako postoje neke korisne informacije, hajde neka ostane onda, ali cisto sumnjam, ko ce citati referate sad.

Nema potrebe, sve ove diskusije treba da ostanu, jer su bas to - diskusije (edukacija)

Ps. Navikni se da ces videti dosta glupih nelogicnosti kada radim reformat dva code u jedan, uglavnom samo uradim primer principa i iskoristim bilo sta sto mi prvo naleti na dokumentaciji i ne trazim dalje.

<3
Naslov: Odg: [Tutorial] Prost MUTE sistem u PAWN-u i MySQL-u
Poruka od: markosimic poslato Januar 23, 2025, 16:16:59 POSLE PODNE
Jadan @Dragi i njegova tema.
Naslov: Odg: [Tutorial] Prost MUTE sistem u PAWN-u i MySQL-u
Poruka od: Dragi poslato Januar 23, 2025, 16:18:53 POSLE PODNE
Citat: markosimic poslato Januar 23, 2025, 16:16:59 POSLE PODNEJadan @Dragi i njegova tema.

Hahahahah, taman pomislim ko li je sad sta komentarisao, kad ono mućak.  ;D Bilo bi poželjno da reše to što pre, zbog korisničkog iskustva.
Naslov: Odg: [Tutorial] Prost MUTE sistem u PAWN-u i MySQL-u
Poruka od: ogil poslato Januar 23, 2025, 22:08:19 POSLE PODNE
Braco, bodete se. Ovolika polemika oko mute sistema?

Tajmeri na fiksnim intervalima se koriste u svim modovina, proveravaju i apdejtuju one stvari koje traze minutno ili satno azuriranje. Oba nacina su ok i oba nacina sam i sam licno koristio
Naslov: Odg: [Tutorial] Prost MUTE sistem u PAWN-u i MySQL-u
Poruka od: markosimic poslato Januar 25, 2025, 08:12:14 PRE PODNE
Citat: ogil poslato Januar 23, 2025, 22:08:19 POSLE PODNEBraco, bodete se. Ovolika polemika oko mute sistema?

Tajmeri na fiksnim intervalima se koriste u svim modovina, proveravaju i apdejtuju one stvari koje traze minutno ili satno azuriranje. Oba nacina su ok i oba nacina sam i sam licno koristio

Da. Razlog jeste ovakvih stvari uci dublje i razloziti - zasto ?

Vecina ljudi ne zna da uradi proveru putem timestampa, ne zna da je to efikasan nacin i za ovako nesto bolji (ne mnogo vise ali bolji nacin) i prakticniji. Sto se vise prica o necemu, sto se vise "drami" ljudima je zanimljivo, sto sam primetio. Ovo sve je tu da zainteresuje masu da se zapita za sve ostalo i zapravo malo reaktivira forum.

Ideja je viseg cilja.