Free Vip od x do x h
k4x4z5
24.02.2014
Witam mam problem z kodem na free vipa od godziny "x" do"x"
#include <amxmodx> #include <hamsandwich> new FreeVip[33], Czas1, Czas2 public plugin_init(){ register_plugin("Free VIP", "1.0", "Karol33k") Czas1 = register_cvar("free_vip_od_czasu", "15") Czas2 = register_cvar("free_vip_do_czasu", "16") RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1) } public fwHamPlayerSpawnPost(id) { new szTime[3] get_time("%H",szTime,2) new Time_1 = get_pcvar_num(Czas1) new Time_2 = get_pcvar_num(Czas2) new iTime = str_to_num(szTime) if(Time_1 <= iTime <= 24) { if(!(get_user_flags(id) & ADMIN_LEVEL_H)) { remove_user_flags(id, ADMIN_USER); set_user_flags(id, ADMIN_LEVEL_H); FreeVip[id] = true; } } else if(00 <= iTime <= Time_2) { if(!(get_user_flags(id) & ADMIN_LEVEL_H)) { remove_user_flags(id, ADMIN_USER); set_user_flags(id, ADMIN_LEVEL_H); FreeVip[id] = true; } } else if(FreeVip[id]) { remove_user_flags(id, ADMIN_LEVEL_H); set_user_flags(id, ADMIN_USER); FreeVip[id] = false; } }
I jakos vip nie działa w tych godzinach bo jest ciagle mimo,ze czas jest ustawiony inaczej.
csdark 24.02.2014
Jak robiles vip przez generator na amxx to nie bedzie to dzialalo z tym vipem.
kyriuch
24.02.2014
warunek nie powinien być jeden dla dodania VIP'a
if(Time_1 <= iTime < Time_2+1)
?
a i nie jestem pewny, czy takie warunki działają w Pawnie, bo jeszcze takich nie używałem, ewentualnie alternatywa:
if(Time_1 <= iTime && Time_2+1 > iTime)
a ten post csdarka kompletnie bez sensu
@down
chodziło mi o alternatywny sposób (alternatywny warunek), nie jestem taki mądry, żeby używać tak wyszukanych nazw jak iloczyn logiczny i takie tam bzdety
Użytkownik kyriuch edytował ten post 24.02.2014 22:27
sweeper
24.02.2014
a i nie jestem pewny, czy takie warunki działają w Pawnie, bo jeszcze takich nie używałem, ewentualnie alternatywa:
if(Time_1 <= iTime && Time_2+1 > iTime)
Hmmm, myślałem że to jest koniunkcja( && ) a nie alternatywa ( || )
Co do problemu, to zrób vip-owi natyw od sprawdzenia czy ma daną flagę czy nie poprzez wprowadzenie zmiennej
glut
26.02.2014
GwynBleidD
26.02.2014
GwynBleidD
26.02.2014
Masz 3 opcje
1. Zamiast sprawdzania flagi w jednym miejscu (pewnie w client_authorized to masz) i zapisywania do zmiennej czy gracz ma vipa, czy nie, sprawdzaj za każdym razem gdy VIP ma coś dostać itp. Opcja niezalecana z przyczyn optymalizacji.
2. Z client_authorized wydzielasz sprawdzanie do osobnej funkcji (jeśli masz już tak wydzielone to po kłopocie), oznaczasz tą funkcję jako public i w pluginie w którym "rozdajesz" VIPa wywołujesz tego publica jako forward (czyli rejestrujesz forward o takiej nazwie i go wywołujesz). Przykład:
public client_authorized(id) { authorize_vip(id) } public authorize_vip(id) { if (get_user_flags(id) & FLAGA_VIPA) vip[id] = true }
3. Z client_authorized wydzielasz PRZYDZIELANIE vipa (jeśli masz już tak wydzielone to po kłopocie), oznaczasz ją jako public i wykonujesz jako forward gdy chcesz komuś VIPa przydzielić.
public client_authorized(id) { if (get_user_flags(id) & FLAGA_VIPA) vip_authorized(id) } public vip_authorized(id) { vip[id] = true }
Zaleta tego sposobu jest taka, że nie musisz komuś przydzielać flagi, żeby mu dać VIPa, co musisz zrobić przy poprzednich dwóch. Działa więc dużo lepiej i ten polecam