Godzina z serwera
Potatek
22.04.2010
sbstn
22.04.2010
(aczkolwiek nie sprawdzałem)
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Funkcja 8:00-10:00"
#define VERSION "1.0"
#define AUTHOR "AMXX.pl"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
set_task(1.0,"checker",_,_,_,"b")
}
public checker()
{
new timer[9]
new clock=get_time("%H",timer,8)
if(8<=clock<10)
{
funkcja()
}
}
public funkcja()
{
// Whatever u like
}
EDIT: W sumie lepiej będzie raz na rundę sprawdzać, niż raz na 1s
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Funkcja 8:00-10:00"
#define VERSION "1.0"
#define AUTHOR "AMXX.pl"
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("HLTV", "checker", "a", "1=0", "2=0")
}
public checker()
{
new timer[9]
new clock=get_time("%H",timer,8)
if(8<=clock<10)
{
funkcja()
}
}
public funkcja()
{
// Whatever u like
}
Edited by sbstn, 22.04.2010 18:43.
Potatek
22.04.2010
Edited by Potatek, 22.04.2010 20:29.
sbstn
22.04.2010
Hmm... Wiele sposobów jest moim zdaniem, ale ja przytoczę taki jeden (chociaż i tak nie mam warunków do sprawdzenia):A jeśli np miało być w konsoli wpisywana komenda np. o godzinie 5 w nocy na sayu informuje graczy że mamy właśnie tą godzine, jak powinien wyglądać kod ?
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "5 nad ranem"
#define VERSION "1.0"
#define AUTHOR "AMXX.pl"
new bool:zrobione
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("HLTV", "checker", "a", "1=0", "2=0")
zrobione=false
}
public checker()
{
new timer[9]
new clock=get_time("%H",timer,8)
if(clock==5 && zrobione==false)
{
funkcja()
}
}
public funkcja()
{
console_print(0,"*********************************")
console_print(0,"[AMXX] Jest godzina 5:00... Co tak wczesnie?!")
console_print(0,"*********************************")
zrobione=true
return PLUGIN_HANDLED
}
EDIT: Zapomniałem o minusach tego kodu. Przypuśćmy, że mapa właśnie się zaczęła. Jest godzina 4:50. Gramy 10min. I w konsoli wszystkim się pokazuje (plaplaplapla). Mapa trwa 20min (ex.). Na następnej mapce również pokaże (plaplaplapla). I tak aż do godziny 5:59. Reasumując to tłumaczenie, plugin działa non stop od godziny 5:00 do 5:59, raz na mapę
Edited by sbstn, 22.04.2010 20:55.
Potatek
22.04.2010
sbstn
22.04.2010
O kurde Trzeba to jakoś zamknąć, nie może przez całą godzine pisać mi pewnej komendy... musi to zrobić raz
Nie zrozumiałeś mnie. Co mapę od godziny 5:00 do 5:59 1 raz wywoła komendę!
EDIT:
Np.:
godz. 4:50 de_dust 2 ->funkcja nie działa (OFF)
godz. 5:00 de_dust -> funkcja wywoływana raz na mapę!
godz. 5:25 de_nuke -> funkcja wywoływana raz na mapę!
godz. 5:59 de_inferno -> funkcja wywoływana raz na mapę!
godz. 6:00 de_inferno -> OFF
Edited by sbstn, 22.04.2010 21:35.
Potatek
22.04.2010
EDIT: Po co jest: new bool:zrobione ?? Niezbyt rozumiem tą zmienną po co ona wogóle jest
Edited by Potatek, 22.04.2010 21:39.
sbstn
22.04.2010
Scripting>Tutoriale>Zmienne- co i jak?Bool:
Tzw. zmienna logiczna, która przechowuje tylko wartość true(1), lub false(0). Zazwyczaj używane do tego, żeby określić czy coś jest włączone, lub nie.
Deklaracja:
new bool:zmienna;
Jak napisane w poradniku @up, można ją porównać do przełącznika on/off. Poczytaj troszkę tutoriali! AMXX.pl ma nawet dobry zbiór!
Potatek
22.04.2010
Ale nadal nie wiem co zrobić by ta komenda była tylko jeden raz w ciągu godziny
sbstn
22.04.2010
@topic: nie da sie wywolac raz na godzine, chyba ze ustawisz czas mapy na 60min. funkcja 'public plugin_init' dziala zawsze po zmianie mapy.
Pozdrawiam, sbstn aka siwy. (Pisze z tel, wiec wybaczcie brak polskich znakow)
Potatek
22.04.2010
Dzięki za pomoc, można zamknąć
sbstn
23.04.2010
Jesli w tym kodzie uzyjesz plugin_init, to pamietaj ze funkcja bedzie wykonywana po zmianie mapy. Wiec musisz inaczej to wykombinowac... Nie mam pomyslu. (latwiej jest robic funkcje trwajace od czasu x do czasu x...)Podstaw ucze się z praktyki, pomocy kolegów i czytaniu + analiza gotowców... Jak znajde czas to zobacze podstawy, w weekend zajme się tutorialami z forum. Hmm a może by tak zrobić żeby o godz 6 zmieniało zmienną na true. Jutro zobacze jak to w praktyce zadziała.
Dzięki za pomoc, można zamknąć
«tel»
Portek
23.04.2010
public checker()
{
new timer[9]
new hour = get_time("%H",timer,8)
new timerm[9]
new minut = get_time("%M",timerm,8)
if(hour==5 && minut==00 && zrobione==false)
{
funkcja()
}
}
albo w zasadzie, to powinno dać podobny efekt:
public checker()
{
new godzina, minuta
time(godzina,minuta)
if(godzina==5 && minuta==00 && zrobione==false)
{
funkcja()
}
}
sbstn
23.04.2010
Potatek
23.04.2010
23 kwiecień 2010 - 14:38:
#include <amxmodx> #include <amxmisc> #include <cstrike> #define PLUGIN "Funkcja 8:00-10:00" #define VERSION "1.0" #define AUTHOR "AMXX.pl" new bool:zrobione public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) set_task(1.0,"checker",_,_,_,"b") zrobione=false } public checker() { new godzina, minuta time(godzina,minuta) if(godzina==15 && minuta==30 && zrobione==false) { funkcja() } } public funkcja() { client_print(0, print_chat, "*******") client_print(0, print_chat, "15:30") client_print(0, print_chat, "*******") zrobione=true return PLUGIN_HANDLED }
To jest poprawne? bo nie wyświetliło godziny Chciałem zrobić test i nie działa
Edited by Potatek, 23.04.2010 13:56.
sbstn
23.04.2010
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "15:30"
#define VERSION "1.0"
#define AUTHOR "AMXX.pl"
new bool:zrobione
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
zrobione=false
set_task(30.0,"checker",_,_,_,"b")
}
public checker()
{
new time_h[9]
new time_m[9]
new hour=get_time("%H",time_h,8)
new minutes=get_time("%M",time_m,8)
if(hour==15 && minutes==30 && zrobione==false)
{
funkcja()
return PLUGIN_CONTINUE
}
return PLUGIN_HANDLED
}
public funkcja()
{
client_print(0, print_chat, "*******")
server_cmd("wait")
client_print(0, print_chat, "15:30")
server_cmd("wait")
client_print(0, print_chat, "*******")
server_cmd("wait")
zrobione=true
return PLUGIN_CONTINUE
}
EDIT: Funkcja time, z tego co pamiętam, jest w module "core". Nie masz w kodzie #include <core>.
Edited by sbstn, 23.04.2010 14:57.
Potatek
23.04.2010
#include <amxmodx> #include <amxmisc> #include <core> #define PLUGIN "test" #define VERSION "1.0" #define AUTHOR "GuitarGryf" new bool:zrobione public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) zrobione=false set_task(30.0,"checker",_,_,_,"b") } public checker() { new time_h[9] new time_m[9] new hour=get_time("%H",time_h,8) new minutes=get_time("%M",time_m,8) if(hour==14 && minutes==22 && zrobione==false) { funkcja() return PLUGIN_CONTINUE } return PLUGIN_HANDLED } public funkcja() { client_print(0, print_chat, "*******************") server_cmd("wait") client_print(0, print_chat, "Plugin Dziala!") server_cmd("wait") client_print(0, print_chat, "*******************") server_cmd("wait") zrobione=true return PLUGIN_CONTINUE }
Teoretycznie dobrze a na serwerze nic się nie działo na pewno dobrze skonstruowane pobieranie czasu?
24 kwiecień 2010 - 08:54:
ReF
Edited by Potatek, 23.04.2010 20:04.
mgr inż. Pavulon
24.04.2010
Poza tym kto mi wytłumaczy co zwraca funkcja get_time ?
new time_h[9] new time_m[9] new hour=get_time("%H",time_h,8) new minutes=get_time("%M",time_m,8)Nie testowałem, ale w dokumentacji nie ma nic o tym żeby zwracała jakiś wynik, jedynie do stringa podanego jako parametr.
A tutaj...
Trzeba by zrobić tak:
new time_h[9] get_time("%H",time_h,8) new hour=str_to_num(time_h)Tylko po co tak kombinować skoro to załatwić się da w 2 linijkach, bez stringów, bez przekształceń:
new godzina, minuta time(godzina,minuta)
Poza tym czas na serwerze może być inaczej ustawiony niż u ciebie. Wpisz w say "thetime"
G[o]Q
24.04.2010
mgr inż. Pavulon
24.04.2010
pisałem o get_time a nie o time...time samo w sobie zwraca czas od poczatku ery lajnuxowej a godziny/minuty/sekundy zwraca przez referencje