[URL] https://amxx.pl/topic/62388-vip-na-nickipsid/
# Opis
Plugin działa praktycznie na takiej samej zasadzie jak dodawanie/wczytywanie
adminów/vipów z users.ini, tylko tutaj można ustalić także do kiedy dany gracz
ma posiadać flagi oraz oczywiście wykorzystywany jest inny plik. Ogólnie sam
plugin nie daje nic, ale można go wykorzystać w każdym innym pluginie,
wystarczy używać natywów, które zostały dodane. Dodałem także komendę, dzięki
której gracz zawsze będzie wiedział kiedy kończy mu się VIP (lub KP, jeśli
plugin wykorzystamy do diablo czy coda) oraz 3 dni (wartość domyślna) przed
końcem automatycznie po wejściu na serwer będzie mu się wyświetlać info o tym
kiedy straci VIPa.
Dodatkowo zostaje udostępniony plugin do ustawienia flag w danych godzinach
(vip_w_godzinach.amxx).
# Changelog
Spoiler
v0.9
\- dodanie forwardu "vip_client_authorized" oraz wykorzystanie go w pluginie
vip_w_godzinach.amxx
v0.8
\- Mała poprawka przy wczytywaniu vipów
\- Zamiana funkcji "str_to_num" na "is_str_num" przy dodawaniu vipa za pomocą
komendy
\- Dodatnie oddzielnego pluginu do dawania flag w danych godzinach
v0.7
\- Zmieniono sposób wyrzucania graczy ze złym hasłem
\- Flagi gracza wczytują się teraz w funkcji "client_authorized"
\- Dodanie sprawdzania nicków graczy w trakcie ich gry na serwerze
\- "odświeżenie" kodu
v0.6
\- Ulepszono sposób usuwania starych kont (teraz usuwane są wszystkie na raz)
\- W pliku .sma można ustawić w jaki sposób ma informować o tym kiedy wygasa
VIP
\- "odświeżenie" kodu
v0.5
\- Dodano nowe natywy
\- "odświeżenie" kodu
v0.4
\- Dodano komendę dla admina, dzięki której można dodać flagi dla VIPa
bezpośrednio podczas gry na serwerze
\- Stare, wygasłe już konta z flagami, usuwają się automatycznie pojedynczo z
pliku, co każdą zmianę mapy po określonym przez nas czasie (domyślnie 10 dni)
v0.3
\- Wydanie pluginu.
# Dodawanie konta
Spoiler
Otwieramy vip.ini i następnie na sam koniec dodajemy, np.
1.
"STEAM_0:0:123456" "" "abcde" "ce" "09-07-2011" "-1"
Gracz będzie miał VIPa z flagami "abcde" na steam na czas nieokreślony.
2.
"123.45.67.89" "" "abcde" "de" "26-10-2011" "15"
Gracz będzie miał VIPa z flagami "abcde" na ip przez 15 dni licząc od 26
października br.
3.
"My Name" "my_password" "abcde" "a" "20-10-2011" "30"
Gracz będzie miał VIPa z flagami "abcde" na nick przez 30 dni licząc od 20
października br.
Do tego w pliku vip.ini jest wszystko wytłumaczone jak dodawać nowe konta,
dokładnie w taki sam sposób jak w users.ini.
# Natywy
/* zwraca flagi gracza */
native get_user_vip_flags(id);
/* ustawia flagi graczowi */
native set_user_vip_flags(id, flags = -1);
/* dodaje flagi graczowi */
native add_user_vip_flags(id, flags = -1);
/* usuwa flagi graczowi */
native remove_user_vip_flags(id, flags = -1);
# Forwardy
/* forward wysylany po sprawdzeniu pliku z flagami, nie wykonywany tylko wtedy gdy gracz zostaw wyrzucony
id - id gracza
flags - przypisane flagi
endtime - data zakonczenia vipa w sekundach (unix time)
-2: nie znaleziono gracza lub czas vipa juz sie skonczyl
-1: vip na czas nieokreslony
*/
forward vip_client_authorized(id, flags, endtime);
# Konfiguracja
Jeśli chcemy sprawdzać w jakimś pluginie czy gracz posiada flagi lub mu je
dodać, należy najpierw na początek kodu sma dodać
#include <vip>
i teraz możemy już używać natywów dokładnie w taki sam sposób jak
get_user_flags(id)
set_user_flags(id, flags)
remove_user_flags(id, flags)
z tym że tutaj każda flaga ma inną nazwę define
#define VIP_FLAG_ALL 0 /* kazdy */
#define VIP_FLAG_A (1<<0) /* flaga "a" */
#define VIP_FLAG_B (1<<1) /* flaga "b" */
#define VIP_FLAG_C (1<<2) /* flaga "c" */
#define VIP_FLAG_D (1<<3) /* flaga "d" */
#define VIP_FLAG_E (1<<4) /* flaga "e" */
#define VIP_FLAG_F (1<<5) /* flaga "f" */
#define VIP_FLAG_G (1<<6) /* flaga "g" */
#define VIP_FLAG_H (1<<7) /* flaga "h" */
#define VIP_FLAG_I (1<<8) /* flaga "i" */
#define VIP_FLAG_J (1<<9) /* flaga "j" */
#define VIP_FLAG_K (1<<10) /* flaga "k" */
#define VIP_FLAG_L (1<<11) /* flaga "l" */
#define VIP_FLAG_M (1<<12) /* flaga "m" */
#define VIP_FLAG_N (1<<13) /* flaga "n" */
#define VIP_FLAG_O (1<<14) /* flaga "o" */
#define VIP_FLAG_P (1<<15) /* flaga "p" */
#define VIP_FLAG_Q (1<<16) /* flaga "q" */
#define VIP_FLAG_R (1<<17) /* flaga "r" */
#define VIP_FLAG_S (1<<18) /* flaga "s" */
#define VIP_FLAG_T (1<<19) /* flaga "t" */
#define VIP_FLAG_U (1<<20) /* flaga "u" */
#define VIP_FLAG_V (1<<21) /* flaga "v" */
#define VIP_FLAG_W (1<<22) /* flaga "w" */
#define VIP_FLAG_X (1<<23) /* flaga "x" */
#define VIP_FLAG_Y (1<<24) /* flaga "y" */
#define VIP_FLAG_Z (1<<25) /* flaga "z" */
Przykład:
Spoiler
if(get_user_vip_flags(id) & VIP_FLAG_E) {
// gracz posiada flagę "e"
}
if(!(get_user_vip_flags(id) & VIP_FLAG_ B)) {
// gracz nie posiada flagi "b"
}
Każdy sam może ustalić jakie przywileje ma dawać dana flaga. Flag do
wykorzystania jest 26, czyli sporo ;]
# Przykładowy plugin
Spoiler
#include <amxmodx>
#include <vip>
#define PLUGIN "Nowy"
#define VERSION "0.1"
#define AUTHOR "Sebul"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /test", "test");
}
public test(id) {
if(get_user_vip_flags(id) & VIP_FLAG_C) {
new name[48]; get_user_name(id, name, charsmax(name));
client_print(0, print_chat, "%s jest VIPem", name);
}
}
public vip_client_authorized(id, flags, endtime) {
if(flags & VIP_FLAG_C) {
new name[48]; get_user_name(id, name, charsmax(name));
client_print(0, print_chat, "%s jest VIPem", name);
}
}
# Cvary
Tylko do pluginu vip_w_godzinach.amxx
vwg_wl "0" // czy plugin ma byc wlaczony
vwg_od "21" // od ktorej godziny plugin ma dawac flagi
vwg_do "24" // do ktorej godziny plugin ma dawac flagi
vwg_flagi "abcdefghijklmnopqrstuvwxyz" // jakie flagi ma dawac plugin
vwg_wiad "darmowego vipa" // co daja dawane flagi
# Komendy
say /endvip - na czacie wyświetli się graczowi data kiedy kończy się VIP
# Komendy admina
Tylko dla admina z flagą "a", można to zmienić w sma.
amx_addvip <name|ip|steamid> <password> <access flags> <account flags> <dd-mm-rrrr> <lenght in days> // dodaje VIPa
# Instalacja
vip.ini do configs
vip_file.amxx do plugins
vip_file.sma do scrtipting
vip.txt do data/lang
vip.inc do scripting/include (tylko do kompilacji)
vip_w_godzinach.amxx do plugins
vip_w_godzinach.sma do scrtipting
# Inne
Jeśli macie jakieś pytania, to proszę pytać. Samą funkcję dawania flag lekko
przerobiłem z innego pluginu. ~~Możliwe też, że za jakiś czas dodam także
komendę dla admina, żeby mógł dodać VIPa będąc na serwerze, ale wydaje mi się,
że i bez tej komendy jest dobrze.**Należy jeszcze pamiętać o tym, że gracz
dostaje flagi 0.5 sek. po tym jak wejdzie na serwer** , ustawiłem takie
opóźnienie, aby nie dawało flag graczowi, który zostanie wyrzucony innym moim
pluginem, a dokładniej chodzi o rezerwacje nicków.~~
# Download
[
[**vip_file.sma**](https://amxx.pl/index.php?app=core&modul...h_id=58468
"Pobierz załącznik") **11,35 KB** 730 Ilość pobrań
[
![[Image: amxx.gif]](http://amxx.pl/public/style_extra/mime_types/amxx.gif)
"Pobierz plik AMXX")
[
[**vip.ini**](https://amxx.pl/index.php?app=core&modul...h_id=52573
"Pobierz załącznik") **1,23 KB** 726 Ilość pobrań
[
[**vip.txt**](https://amxx.pl/index.php?app=core&modul...h_id=52574
"Pobierz załącznik") **505 bajtów** 709 Ilość pobrań
[
[**vip.inc**](https://amxx.pl/index.php?app=core&modul...h_id=58467
"Pobierz załącznik") **1,98 KB** 541 Ilość pobrań
[
[**vip_w_godzinach.sma**](https://amxx.pl/index.php?app=core&modul...h_id=58469
"Pobierz załącznik") **1,97 KB** 537 Ilość pobrań
[
![[Image: amxx.gif]](http://amxx.pl/public/style_extra/mime_types/amxx.gif)
"Pobierz plik AMXX")
Użytkownik **sebul** edytował ten post 16.09.2013 18:02
Załączniki:
vip.inc
vip.txt
vip_file.sma
vip_w_godzinach.sma