Wysłany: 2015-04-26, 15:52
Tomakan
Człowiek
Wiek: 26 Na forum: 4061 dni Posty: 94
Nick w MP: Tomakan
Piwa : 5
Mojego ostatniego posta nikt si? nie podj??,
dotyczy? on wyp?at, poniewa? zrobi?em wyp?aty co godzin? poprzez onClientRender, poniewa? chodzi?o mi o wyp?aty zgodne z naszym zegarkiem, gdy 12 wyp?ata, gdy 18 wyp?ata, jednak jedna taka wyp?ata wykonuje si? oko?o 20 razy, poniewa? jest to event onClientRender, chc? to naprawi?, jakiego zdarzenia u?y?? Czy mo?e p?tli?
To kod:
addEventHandler ( "onClientRender" , root ,
function()
local time = getRealTime ()
local hours = time . hour
local minutes = time . minute
local seconds = time . second
if ( hours == 0 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 1 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 2 and ( minutes == 0 )) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 3 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 4 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 5 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 6 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 7 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 8 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 9 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 10 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 11 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 12 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 13 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 14 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 15 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 16 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 17 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 18 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 19 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 20 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 21 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 22 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
elseif ( hours == 23 ) and ( minutes == 0 ) and ( seconds == 0 ) then
triggerServerEvent ( "update" , localPlayer )
end
end
)
Wysłany: 2015-04-26, 15:54
KukiX
Wiek: 34 Na forum: 6718 dni Posty: 567
Piwa : 17560
U?yj funkcji setTimer.
onClientRender nie u?ywa si? do takich rzeczy.
Wysłany: 2015-04-26, 16:09
Tomakan
Człowiek
Wiek: 26 Na forum: 4061 dni Posty: 94
Nick w MP: Tomakan
Piwa : 5
Nie mog? u?y? setTimer, bo wyp?aty maj? by? r?wno co godzin?, a gdy odpal? serwer o 18:31 to wyp?ata b?dzie o 19:31, dlatego tam jest tyle warunk?w.
Wysłany: 2015-04-26, 21:53
zabijaka2000
Wiek: 26 Na forum: 4983 dni Posty: 147
Nick w MP: aleks556
Piwa : 13
Ustawiasz timer, kt?ry wykonuje si? co minut? i dajesz te warunki na t? r?wn? godzin?.
Wysłany: 2015-04-27, 13:41
MeeShuffle
Programista/Grafik
Wiek: 32 Na forum: 4394 dni Posty: 2758
Nick w MP: Shuffle
Piwa : 8575
sekunda = 60000
godzina = sekunda * 60
setTimer ( funkcja , godzina , 0 )
Po co warunki?
Wysłany: 2015-04-27, 14:28
Piorun
Wiek: 32 Na forum: 6712 dni Posty: 1837
Nick w MP: Piorun
Piwa : 516
To jak odpalisz serwer o 18:30 to oblicz ile czasu zosta?o do pe?nej godziny, ustaw taki timer, a potem jak on si? wykona ustaw timer cykliczny co 60000 ms. Mo?e przyk?ad:
addEventHandler ( "onResourceStart" , resourceRoot ,function()
local rt = getRealTime ()
setTimer (function()
-- tutaj kolejny setTimer tylko z odpowiednim parametrem
end , TUTAJ_WRZUCASZ_ODPOWIEDNIE_OBLICZENIE_CZASU , 1 )
end
W tym TUTAJ_WRZUCASZ_ODPOWIEDNIE_OBLICZENIE CZASU wrzucasz r??nic? mi?dzy czasem 00, a aktualn? godzin? (mam na my?li zar?wno minuty jak i sekundy). Czyli powiedzmy jak odpalasz o 18:30:33 to do 19:00:00 masz 30:27. Przeliczasz na ms i masz.
Wysłany: 2015-04-27, 17:30
Tomakan
Człowiek
Wiek: 26 Na forum: 4061 dni Posty: 94
Nick w MP: Tomakan
Piwa : 5
No dobra, wiem ?e mog? to wyliczy? w ten spos?b,
x = time . minute
xy = 60 - x
Tylko ?e to ma sw?j minus, bo ju? si? pogubi?em, bo to tylko oblicza ile minut zosta?o do nast?pnej godziny, ale nie wiem jak zsynchronizowa? to z aktualn? godzin?.
Wysłany: 2015-04-27, 17:33
Piorun
Wiek: 32 Na forum: 6712 dni Posty: 1837
Nick w MP: Piorun
Piwa : 516
Na kij Ci godzina ? Po prostu jak zegar dobije do pe?nej godziny (oboj?tnie kt?rej) to funkcja podpi?ta do timera si? wykona. Tyle.
Wysłany: 2015-04-27, 17:44
Tomakan
Człowiek
Wiek: 26 Na forum: 4061 dni Posty: 94
Nick w MP: Tomakan
Piwa : 5
local x = time . minute
local xy = 60 - x
local xy = xy * 1000
No dobra, no to tak, czyli to Up, +
addEventHandler ( "onResourceStart" , resourceRoot ,function()
local time = getRealTime ()
local x = time . minute
local xy = 60 - x
local xy = xy * 1000
setTimer (function()
setTimer (function()
triggerServerEvent () -- To tak ma wygl ? da ?? : x
end , 5000 , 1 )
end , xy , 1 )
end
I jak zrobi? by to si? np wykonywa?o cyklicznie,
[ Dodano : 2015-04-27, 17:45 ]
blee w sumie ten timer w ?rodku nie potrzebny
Wysłany: 2015-04-28, 00:53
Tey
Wiek: 31 Na forum: 4876 dni Posty: 155
Nick w MP: l0nger
Piwa : 280
Nie lepiej skonstruowa? funkcje tak, ze timer wykonuje sie co minute, a w tej funkcji pobierana i sprawdzana jest minuta jezeli 0 to inaczej pelna godzina po czym wykonujemy kod dalej?
setTimer (function()
local time = getRealTime ()
if time . minute == 0 and time . second == 0 then
-- dla przykladu trigger dla wszystkich graczy
triggerClientEvent ( 'wyplata' , root )
end
end , 60 * 1000 , 0 )
@Down Teraz powinno byc ok.
Ostatnio zmieniony przez Tey 2015-04-28, 12:51, w całości zmieniany 1 raz
Wysłany: 2015-04-28, 08:35
Piorun
Wiek: 32 Na forum: 6712 dni Posty: 1837
Nick w MP: Piorun
Piwa : 516
Co si? stanie wg. twojego algosa jak uruchomisz serwer o powiedzmy 19:59:45 ?
Funkcja wykona si? dopiero o 20:00:45. Niby ma?a r??nica ale wiele os?b si? zastanowi .
Wysłany: 2015-04-28, 22:14
Tomakan
Człowiek
Wiek: 26 Na forum: 4061 dni Posty: 94
Nick w MP: Tomakan
Piwa : 5
Znaczy, okej, tylko chcia?bym wiedzie? jak zrobi? to by po wykonaniu jednej wyp?aty odliczy?o czas do drugiej, mam da? return? i zn?w do tej funkcji?
Wysłany: 2015-04-29, 18:41
Piorun
Wiek: 32 Na forum: 6712 dni Posty: 1837
Nick w MP: Piorun
Piwa : 516
Nie, po prostu w funkcji podpi?tej do tego timera deklarujesz nowy, cykliczny (czyli taki, ktory sie bedzie powtarzal w nieskonczono??).
Wysłany: 2015-04-29, 22:24
Tomakan
Człowiek
Wiek: 26 Na forum: 4061 dni Posty: 94
Nick w MP: Tomakan
Piwa : 5
M?g?by? da? przyk?ad?
Przecie? to by wygl?da?o w ten spos?b,
function x ()
setTimer (function()
setTimer (function()
-- Przecie musia ? bym ty wypisywa ? to 24 razy , ale wiem ? e mo ? na to inaczej zrobi ? ale jak ; x
end , tutenwynikse , 1 )
end , tutenwynikse , 1 )
end
Staram si? to ogarn?? uwierz mi ale kompletnie nie wiem jak zrobi? to by to odtwarza?o si? w niesko?czono??, gdybym wiedzia? tego tematu by nie by?o, og??em samo pytanie dotyczy?o r?wnie? tego.
Wysłany: 2015-04-29, 23:20
Piorun
Wiek: 32 Na forum: 6712 dni Posty: 1837
Nick w MP: Piorun
Piwa : 516
Prawie dobrze tyle, ?e usu? w 2 timerze jedynk?, kt?ra oznacza, ?e timer ma si? powt?rzy? tylko raz.
Tagi: pętla :: warunek
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: