Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: monsterking poslato Avgust 29, 2022, 22:30:31 POSLE PODNE

Naslov: main vs OnGameModeInit
Poruka od: monsterking poslato Avgust 29, 2022, 22:30:31 POSLE PODNE
Pitanje/savjet: Može li neko da mi pojasni razliku između main i OnGameModeInit? Primjetio sam pomoću print naredbe da se po pokretanju servera prvo pozove OGMI pa onda main. Interesuje me za šta praktično služi main u samp gamemodu, za šta se najčešće koristi?
Opširnije:
Dodatno:
Naslov: Odg: main vs OnGameModeInit
Poruka od: V01D poslato Avgust 29, 2022, 23:00:20 POSLE PODNE
Koliko znam apsolutno nicemu, potreban je i neophodan samo da stoji i skuplja prasinu. Pokrece se kada se pokrene mod, mada valjalo bi to proveriti, ja licno nisam nikada koristio za bilo sta
Naslov: Odg: main vs OnGameModeInit
Poruka od: schatzi poslato Avgust 29, 2022, 23:08:59 POSLE PODNE
Citat: V01D poslato Avgust 29, 2022, 23:00:20 POSLE PODNE
Koliko znam apsolutno nicemu, potreban je i neophodan samo da stoji i skuplja prasinu. Pokrece se kada se pokrene mod, mada valjalo bi to proveriti, ja licno nisam nikada koristio za bilo sta
moj odgovor je isti kao i od voida :P
Naslov: Odg: main vs OnGameModeInit
Poruka od: Fr0z3n poslato Avgust 30, 2022, 16:36:36 POSLE PODNE
Sluzi da printas copyright, build, verziju itd.... Takodje to je jedini deo u kome mozes da koristis stare funkcije kao sleep itd...
Naslov: Odg: main vs OnGameModeInit
Poruka od: Bit Frosty poslato Avgust 30, 2022, 20:40:30 POSLE PODNE
Prost odgovor je da je main funkcija ona koja je obavezna u svakom programu i ona je ta koja se pozove kada se pokrece program dok su sve ostale izvedene i pozivaju se iz nje. Kada se zavrsi main funkcija, zavrsava se i program.
Samp je malo specifican posto koristi pawn virtuelnu masinu i ima pristum interpretaciji koda. U sustini main funkcija nikad ne zavrsava zato sto samp server ne dozvoljava to da bi mogao da poziva callbackove.

Direktan odgovor bi bio, da se OnGameModeInit poziva nakon svih inicializacija samp servera to jest kada je server spreman za rad, dok u slucaju sa main funkcijom se moze desiti racing condition to jest da se jednom pozove pre necega, nekad posle (govorim interno o samp serveru to jest stvarima koje mi ne vidimo tipa loadovanje pluginova i slicno).

U sustini koristi OnGameModeInit da bi izbegao razne moguce bagove (recimo da pool za klase igraca nije inicializovan a ti pozivas AddPlayerClass sto ili ce da fail ili ce da crash samp server)