Dzisiaj zacząłem pisać swój pierwszy plugin do CS'a.
Wraz z poradnikami, i z dawniejszymi doświadczeniami z Pawn (pisałem skrypty do gry SAMP), napisałem coś takiego:
#include <amxmodx> #include <amxmisc> #define PLUGIN "KickBots" #define VERSION "0.1" #define AUTHOR "Pan_Gargamel" new g_kickmenu; // tworzymy zmienną globalną, uchwyt dla menu new g_kickmenu_tak; new g_kickmenu_nie; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_clcmd("say /kickbots", "kickmenu"); } public plugin_cfg() { // tworzymy menu, np. w tej funkcji, bo wykonuje się ona tylko raz na mapę g_kickmenu = menu_create("Jestes za wyrzuceniem botow?", "kickmenuhandle"); menu_additem(g_kickmenu, "Tak"); // item = 0 menu_additem(g_kickmenu, "Nie"); // item = 1 menu_setprop(g_kickmenu, MPROP_EXITNAME, "Wyjscie"); } public kickmenu(id) { for(new i=0; i<32; i++) { if(!is_user_alive(i)) continue; menu_display(i, g_kickmenu) client_print(i, print_chat, "Gracz %id% rozpoczal glosowanie o wyrzucenie botow z serwera."); CreateTimer(30.0, kickmenu_wyniki); } return PLUGIN_HANDLED; } public kickmenuhandle(id, menu, item) { // funkcja posiada trzy parametry, id gracza, uchwyt menu oraz klawisz/item/opcję, która została wybrana if(item == MENU_EXIT) { return PLUGIN_HANDLED; // zamykamy menu, generalnie nie trzeba dodawać tutaj tego warunku, ale z przyzwyczajenia ja go tutaj dodaję, zresztą czasami nawet lepiej to robić na samej górze funkcji } switch(item) { // używamy switcha, pamiętamy, że wartość klawisza/itemu/opcji zaczyna się od 0 case 0: { client_print(id, print_chat, "Zaglosowales za wyrzuceniem botow."); g_kickmenu_tak = g_kickmenu_tak + 1 } case 1: { client_print(id, print_chat, "Zaglosowales przeciwko wyrzuceniu botow."); g_kickmenu_nie = g_kickmenu_nie + 1 } } public Action:kickmenu_wyniki(Handle:timer) { if(g_kickmenu_tak > g_kickmenu_nie || g_kickmenu_nie == g_kickmenu_tak) { amx_exec @SERVER "epb_removebots" for(new i=0; i<32; i++) { if(!is_user_alive(i)) continue; client_print(i, print_chat, "[Glosowanie] Boty zostaly wyrzucone z serwera!"); } } } return PLUGIN_HANDLED; }Skrypt ma na celu robienie głosowania dla wszystkich graczy po wpisaniu /kickbots. Każdemu graczowi powinno się wyświetlić pytanie czy boty mają być wyrzucone, a jeśli po trzydziestu sekundach od startu głosowania suma głosów na tak będzie większa niż suma głosów na nie, boty zostaną wyrzucone.
Niektóre błędy udało mi się naprawić, ale kilku nie udało mi się rozwiązać:
