Započeo letecitanjur
•11. Maj 2024.• ZaključanoProblem sa y_timers
767
pregleda
11
postova
Hustler
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
44 / 100 XP
Početnik(0)
54
Postovi:
7
Teme:
Pridružio se:Maj 2024
11. Maj 2024.
Problem(error/warning): error
Deo skripte:
a hostnamechanger pozivam u jednom timeru koji pokrece sve timere nakon sta ucita sve server stvari.
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log):
Stvar je u tome sta nakon sta pokrene hostnamechanger,svakih 7 sekundi podupla citavu radnju, tipa prvi put dok je pozvan samo jednom promjeni u toj sekundu,pa nakon drugih 7 sekundi pozove 2 puta,i tako sve vise i vise svakih 7 sekundi,nakon 1 minutu server crasha jer pozove tu funkciju jedno 40 puta hahah.
pa eto ako netko zna u cemu grijesim, molim pomoc 🙂
Deo skripte:
//TIMER ZA HOSTNAMECHANGER
timer HostNameChanger()
{
static
index,
str;
if (index == sizeof(g_aServerNames) - 1)
index = 0;
format(str, sizeof(str), "hostname %s", g_aServerNames[index++]);
SendRconCommand(str);
print("TEST: PROMJENIO IME I ZA 7 SEKUNDI OPET MJENJAM");
repeat HostNameChanger();
return 1;
}
a hostnamechanger pozivam u jednom timeru koji pokrece sve timere nakon sta ucita sve server stvari.
defer HostNameChanger();Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log):
Vaš odgovorStvar je u tome sta nakon sta pokrene hostnamechanger,svakih 7 sekundi podupla citavu radnju, tipa prvi put dok je pozvan samo jednom promjeni u toj sekundu,pa nakon drugih 7 sekundi pozove 2 puta,i tako sve vise i vise svakih 7 sekundi,nakon 1 minutu server crasha jer pozove tu funkciju jedno 40 puta hahah.
pa eto ako netko zna u cemu grijesim, molim pomoc 🙂
Hustler
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
44 / 100 XP
Početnik(0)
54
Postovi:
7
Teme:
Pridružio se:Maj 2024
11. Maj 2024.
Ispricavam se radi spama, nisam stigo editat a zaboravio sam ubaciti iz server loga
https://pastebin.com/UTc93hD6
https://pastebin.com/UTc93hD6
Hustler
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
44 / 100 XP
Početnik(0)
54
Postovi:
7
Teme:
Pridružio se:Maj 2024
11. Maj 2024.
Ljubiša wrote on May 11, 2024, 3:17 pm:
Zato sto dodajes repeat u timeru, zato svaki put pozoves dodatne tajmere
U OnGameModeInit stavi
defer HostNameChanger();
U OnGameModeInit stavi
defer HostNameChanger();
Hvala na odgovoru, isprobam kasnije ali ja bi htio da se on ponavlja svakih 7 sekundi, zato sam tamo koristio u timeru repeat, a defer koristim gdje ga pozivam da se pokrene
imam pitanje, kolko mi se isplati imat y_timers ? kolko je on ajmo rec precizniji i brzi od obicnih settimera ? da forsiram na y_timers ( potpuno nova stvar meni ) ili da se vratim na obicno
jel bi mogao to staviti pod neki svoj custom public ?
jer taj timer se pokrece nakon minute nakon sta server pokrenut
Crime Lord
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosAktivan Član
56 / 250 XP
Početnik(1)
990
Postovi:
76
Teme:
Pridružio se:Sep. 2020
11. Maj 2024.
task HostNameChanger()
{
static
index,
str;
if (index == sizeof(g_aServerNames) - 1)
index = 0;
format(str, sizeof(str), "hostname %s", g_aServerNames[index++]);
SendRconCommand(str);
print("(task) : %s", str);
return 1;
}
Task je, sto znaci da ce se pozivati svako 7 sekundi u tvom primjeru.
I ne moras koristiti nikakav defer ili repeat.
Hustler
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
44 / 100 XP
Početnik(0)
54
Postovi:
7
Teme:
Pridružio se:Maj 2024
11. Maj 2024.
noddy_ wrote on May 11, 2024, 3:43 pm:
task HostNameChanger()
{
static
index,
str;
if (index == sizeof(g_aServerNames) - 1)
index = 0;
format(str, sizeof(str), "hostname %s", g_aServerNames[index++]);
SendRconCommand(str);
print("(task) : %s", str);
return 1;
}
Task je, sto znaci da ce se pozivati svako 7 sekundi u tvom primjeru.
ahaaa, ja sam mislio da se task automatski pokrene cim ga definiras, sad mi jasno, znaci task isto moram rucno pozvati?
da objasnim, jer imam u glavi dosta sistema koje bi radio na slicnu semu,
cim pokrenem server, napravio sam prvo da prvu minutu ocitava ,postavlja sta je potrebno ( postavke,kuce ovo ono), i onda nakon tih 1 minutu, on bi krenuo svakih 7 sekundi mjenjati hostname
al sta task nije automatski pozvan? zato koristio timer, i pozovem ga rucno i zato koristio repeat da se odmah on i pozove
Godfather
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosAktivan Član
17 / 250 XP
Početnik(1)
2,272
Postovi:
76
Teme:
Pridružio se:Maj 2014
Hustler
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
44 / 100 XP
Početnik(0)
54
Postovi:
7
Teme:
Pridružio se:Maj 2024
11. Maj 2024.
Evo kako sam ja to sad zamislio,i sada funkconira, jel ovako uredu?
u timer sam stavio kad se timer pozove da pozove opciju public HostNameChangerStarted,a taj isti public opet poziva timer hostnaamechanger.
ako ima tko bolju ideju, slobodno neka napise 🙂
task koristim za druge stvari i ne bih ubacio hostname changer, jer zelim da se pali kasnije,ali imam ideju da ubacim u task, i da definiram kad je server ucitan, i da taj task provjerava jel server ucitan, i ako je ucitan ( definiram tipa ServerLoaded = 1 nakon sta produ sva ucitavanja ) i onda kad je na 1, ovaj sistem bi radio da mjenja ime svakih 7 sekundi
vidio sam englensku verziju i uhvatio se je citat, mislim da sam skuzio sada kako tocno funkconira y timers, cak sam i pronasao kako cu gasiti player timere
evo ovdje cu ubaciti pa ako netko novi u y timers da i on zna kako sta
u timer sam stavio kad se timer pozove da pozove opciju public HostNameChangerStarted,a taj isti public opet poziva timer hostnaamechanger.
ako ima tko bolju ideju, slobodno neka napise 🙂
task koristim za druge stvari i ne bih ubacio hostname changer, jer zelim da se pali kasnije,ali imam ideju da ubacim u task, i da definiram kad je server ucitan, i da taj task provjerava jel server ucitan, i ako je ucitan ( definiram tipa ServerLoaded = 1 nakon sta produ sva ucitavanja ) i onda kad je na 1, ovaj sistem bi radio da mjenja ime svakih 7 sekundi
//TIMER ZA HOSTNAMECHANGER
timer HostNameChanger()
{
static
index,
str;
if (index == sizeof(g_aServerNames) - 1)
index = 0;
format(str, sizeof(str), "hostname %s", g_aServerNames[index++]);
SendRconCommand(str);
print("TEST: PROMJENIO IME I ZA 7 SEKUNDI OPET MJENJAM");
HostNameChangerStarted();
return 0;
}
public HostNameChangerStarted()
{
defer HostNameChanger();
return 1;
}
V01D wrote on May 11, 2024, 4:06 pm:
https://gtablkn.gg/forum/tutorijali-u-vezi-sa-mpa/y-timers#post-728590
vidio sam englensku verziju i uhvatio se je citat, mislim da sam skuzio sada kako tocno funkconira y timers, cak sam i pronasao kako cu gasiti player timere
evo ovdje cu ubaciti pa ako netko novi u y timers da i on zna kako sta
/* Set all cells to -1 */
new Timer:myTimer = {Timer:-1, ...};
/* Start the timer */
CMD:mycommand(playerid, params[])
{
myTimer = repeat MyOwnFunction(playerid);
/* MyOwnFunction will be called 1 second after we type the
command, due the delay parameter from timer, that's how it works. */
return 1;
}
/* Declare MyOwnFunction as a timer */
timer MyOwnFunction(playerid)
{
printf("The player who started timer %d has the ID %d.", _:myTimer, playerid);
// This function will print the same message every second.
}
/* Stop the timer */
COMMAND:stoptimer(playerid, params[])
{
if(myTimer != Timer:-1)
{
stop myTimer;
myTimer = Timer:-1;
}
else
{
// The timer isn't running.
}
return 1;
}
Crime Lord
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosAktivan Član
56 / 250 XP
Početnik(1)
990
Postovi:
76
Teme:
Pridružio se:Sep. 2020
11. Maj 2024.
task HostNameChanger()
{
static
index,
str;
if (index == sizeof(g_aServerNames) - 1)
index = 0;
format(str, sizeof(str), "hostname %s", g_aServerNames[index++]);
SendRconCommand(str);
print("(task) : %s", str);
return 1;
}
Task samo ovako napravis i to je to, task ne moras pozivati jer on je uvijek tu i vrti se.
Hustler
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
44 / 100 XP
Početnik(0)
54
Postovi:
7
Teme:
Pridružio se:Maj 2024
11. Maj 2024.
noddy_ wrote on May 11, 2024, 4:18 pm:
task HostNameChanger()
{
static
index,
str;
if (index == sizeof(g_aServerNames) - 1)
index = 0;
format(str, sizeof(str), "hostname %s", g_aServerNames[index++]);
SendRconCommand(str);
print("(task) : %s", str);
return 1;
}
Task samo ovako napravis i to je to, task ne moras pozivati jer on je uvijek tu i vrti se.
taj task je dobar ako zelis da se odmah mjenja, ubacit cu samo da provjerava jel server ucitan, i ako je ucitan da funkconira hostnamechanger. sad sam totalno skuzio kako sta.
nisam vec par godina bio u pawnu, pa sam zahrdao hahah
hvala puno 🙂
moze lock
Morate biti prijavljeni da biste odgovorili na ovu temu.
Prijava

