Hali.
Volna egy olyan gondom, hogy NPC csatlakozáskor megbolondul valamiét a timer és szívritmuszavara lesz
Ez alatt azt kell érteni, hogy a folyamatosan 5 másodpercenként ismétlõdõ timernél ez a szindróma lép fel:
[03:31:00] Incoming connection: IP
[03:31:00] [join] [LM]SnooP has joined the server (IP-m)
[03:31:02] Incoming connection: IP
[03:31:02] [npc:join] asd has joined the server (NPC IP)
[03:31:02] Incoming connection: IP
[03:31:05] [part] [LM]SnooP has left the server (0:1)
[03:31:07] 5 -ik masodperc 2 torlese
[03:31:08] 10-ik masodperc 3-4 torlese
[03:31:12] 15-ik masodperc, 5-os torlese
[03:31:13] 20-ik mp 6-7 torlese
[03:31:18] 25-ik mp 7-8 torlese
[03:31:18] 30-ik mp 10 torlese
Itt aki nem vette volna észre a logban a másodperceket kell nézni.
Namár most, mivel én trükkösnek éreztem magam ezért emiatt megírtam egy stockot magamnak ami lekérdezi a másodperceket ez így néz ki:
stock GetSeconds()
{
new Hour, Minute, Second;
gettime(Hour, Minute, Second);
printf(\"%d Second\", Second);
return Second;
}
A célom az volna, hogy minden ötödik másodpercben ami a timernél fel van osztva (mindjárt lent bemásolom) lekérdezi az idõt, majd akkor jeleníti meg a következõ textdrawot, ha az újból lekérdezett idõ megegyezik a régebben lekérdezett idõ +5-el. Bár ez kissé bonyolultnak tûnik így leírva, ám scriptben könnyebben érthetõ:
public szovegtimer(playerid)
{
Szamlalo++;
new mp, mp2;
if(Szamlalo == 1)
{
TextDrawHideForPlayer(playerid, Textdraw2);
print(\"5 -ik masodperc 2 torlese\");
TextDrawShowForPlayer(playerid,Textdraw3);
TextDrawShowForPlayer(playerid,Textdraw4);
mp = GetSeconds();
return 1;
}
if(GetSeconds() == mp+6)
{
TextDrawHideForPlayer(playerid, Textdraw3);
TextDrawHideForPlayer(playerid, Textdraw4);
print(\"10-ik masodperc 3-4 torlese\");
TextDrawShowForPlayer(playerid,Textdraw5);
mp2 = GetSeconds();
return 1;
}
if(GetSeconds() == mp2+6)
{
TextDrawHideForPlayer(playerid, Textdraw5);
print(\"15-ik masodperc, 5-os torlese\");
TextDrawShowForPlayer(playerid,Textdraw6);
TextDrawShowForPlayer(playerid,Textdraw7);
return 1;
}
// Itt még van ezután pár ugyan ilyen felépítésû Textdraw
return 1;
}
Amit kell tudni, hogy a timer egy SetTimerEx pontosan így néz ki:
myTimer = SetTimerEx(\"szovegtimer\", 5000, true, \"i\", playerid);
És az NPC is OnPlayerSpawn-nál van meghívva
Probléma
A fõ probléma ugyebár az, hogy a timer buggol, ám ezt nem lehet megjavítani. A timer eljárásánál az, hogy a Szamlalo++ switchelem és casekre bontom nem mûködik próbáltam így ez az egyetlen módja amit felvázoltam, hogy hogyan lehetne leellenõrizni az idõt. Igen, ám csak valamiért ez sem akar mûködni. Le ellenõrzi, ki is írja ám valamiért nem akar átlépni a dolgokon.
Lásd:
[14:49:45] 5 -ik masodperc 2 torlese
[14:49:45] 45 Second
[14:49:46] 46 Second
[14:49:46] 46 Second
[14:49:51] 51 Second
[14:49:51] 51 Second
[14:49:51] 51 Second
[14:49:51] 51 Second
[14:49:56] 56 Second
[14:49:56] 56 Second
[14:49:57] 57 Second
[14:49:57] 57 Second
Nem tudom, hogy mit ronthattam el ezért gondoltam megkérdezem itt, hátha valaki véletlenül ráeszmélt a hibámra és ezáltal valahogy tovább juthatnék ezen a téren. Valamint aki tudd valami más megoldást ezeknek a textdrawoknak 5 másodpercenkénti váltásairól annak szívesen várom az ötletét
Köszönöm, hogy elolvastátok.
Üdv RusH.