![]() |
|
Ruletka - Printable Version +- CSHOT.PL - Pluginy amxx , plugins amxx , server game counter strike , serwery gier , forum (https://cshot.pl) +-- Forum: Counter-Strike (https://cshot.pl/forumdisplay.php?fid=54) +--- Forum: Counter-Strike 1.6 (https://cshot.pl/forumdisplay.php?fid=55) +---- Forum: PLUGINY (https://cshot.pl/forumdisplay.php?fid=62) +---- Thread: Ruletka (/showthread.php?tid=2769) |
Ruletka - Poster - 09-18-2025 [TITLE] Ruletka [URL] https://amxx.pl/topic/101012-ruletka/ **Ruletka** Pewnie nieraz chciałeś zainstalować na swojego 4funa ruletkę, ale nie mogłeś odnaleźć? Odnalazłeś, ale mimo to nie podoba Ci się konfiguracja? Udało Ci się skonfigurować kod, ale ruletka okazała się niewypałem? Gracze blokowali się w ścianie? Tracili kasę, nie mając jej? Bomba znikała z mapy, przez co nie mogłeś wykonać celów mapy? A może po prostu edycja Twojej ruletki z dziesiątkami tysięcy linijek Cię przerasta i czujesz duży dyskomfort w edycji? **Nadchodzi Ruletka od Benia Od teraz każda nagroda w twojej ruletce, to osobny plugin. Przyjemne API pozwoli kompleksowo i w czytelny sposób edytować nagrody. Dowolnie możesz konfigurować swoją ruletkę, ustalając cvary nagród czy ruletki, a instalacja nowej nagrody ogranicza się jedynie do instalacji nowego pluginu. Stworzenie i dodanie własnej nagrody nie sprawi Ci żadnego problemu. **Nie! dla powtarzających się nagród** Możesz już zapomnieć o losowaniu co chwilę tej samej nagrody dzięki zaawansowanemu systemowi ograniczania losowania tej samej nagrody w krótkich odstępach czasu. **Nie! dla bezcelowych nagród** Nie otrzymasz już więcej nagrody, która nie przyniesie skutku, jak strata pieniędzy, których nie masz, a wszystko dzięki ustawionym wymaganiom w SMA dla poszczególnych nagród. **Większe szanse dla wybranych nagród** Każda nagroda może posiadać swoją własną moc, czyli iloczyn szansy na wylosowanie wobec innych nagród. **System karmy** Ciągłe otrzymywanie dobrych bądź złych nagród zostanie dzięki karmie odwrócone, do czasu wyrównania karmy. Koniec z ciągle złymi bądź ciągle dobrymi nagrodami. Ruletka to plugin, który pozwala na wylosowanie przez graczy nagrody po wpisaniu na say /ruletka Komendy, które aktywują ruletkę, umieszczone są w pliku amxmodx/configs/roulette_keywords.ini W każdej linii należy umieścić jedną komendę, średnik na początku linijki, nie bierze jej pod uwagę. Komendy będą działać zarówno wpisane wprost w konsolę, jak i przepisane, bądź poprzedzone slashem na sayu lub team_sayu. Zmiany dokonane w tym pliku konfiguracyjnym będą widoczne po zmianie mapy. **Dziecinnie proste** W celu ułatwienia edycji i możliwości kompleksowego zarządzania nagrodami, każda nagroda pisana jest jako osobny plugin, zwyczajowo nazwany jako roulette_nazwa_nagrody.amxx **Multizadaniowość** Każdy gracz może użyć ruletki maksymalnie raz na rundę. Wielu graczy może grać równocześnie w ruletkę. **(Nie)Odpłatność ruletki** Ustawienie cvaru roulette_prize na dodatnią kwotę, pozwoli na ustalenie odpłatności ruletki, czyli gra w ruletkę będzie obarczona opłatą w wysokości ustalonej tym cvarem. **Deweloperskie Menu nagród** Ruletka automatycznie dodaje do Menu Administracyjnego (amxmodmenu) Menu "Ruletka". Menu pozwala na testowanie nowych nagród na Twoim serwerze. Wystarczy wybrać daną nagrodę i zostanie ona przyznana bez sprawdzania wymogów ani bez odbierania pieniędzy. [ "2012-12-25_00009.jpg - Rozmiar: 123,17 KB") Przykładowe, automatycznie wygenerowane menu deweloperskie w amxmodmenu: http://youtu.be/VT-pa4L6YSk Gdy nie żyjemy, bądź oglądamy grę jako obserwatorzy, wywołanie danej nagrody z menu, spowoduje przyznanie jej graczowi, którego właśnie obserwujemy. Wywołanie nagrody "Bandyci" na widzu z przykładowego menu deweloperskiego: http://youtu.be/WyHyKYKgObw roulette_prize 1000 // <0|cena> koszt zagrania w ruletkę (w dolarach) Ustawienie tego cvaru na 0, wyłączy odpłatność ruletki roulette_ban 20 // <0|liczba> liczba najbliższych losowań, dla których wylosowana nagroda nie będzie brana pod uwagę w losowaniu roulette_sv_speed 1 // <0|1> jeśli ustawione na 1, ustawiony zostanie cvar sv_maxspeed na 1000, umożliwiając stosowanie bonusów szybkości roulette_cl_speed 1 // <0|1> jeśli ustawione na 1, cvary prędkości graczy zostaną ustawione na 1000, umożliwiając stosowanie bonusów szybkości roulette_karma 250 // <-1|liczba> poziom karmy, po przekroczeniu którego zostanie wylosowana nagroda o przeciwnej karmie. -1 wyłącza system karmy amxmodx amxmisc celltrie colorchat cstrike fakemeta hamsandwich tutor **Autor** : Paweł "benio101" Benetkiewicz **Licencja** : [url=http://bineo.biz/licencje/PAL "Zewnętrzny odnośnik"]PAL[/url] [](https://amxx.pl/index.php?app=core&module=attach§ion=attach&attach_id=51980 "Pobierz załącznik") [**roulette.rar**](https://amxx.pl/index.php?app=core&module=attach§ion=attach&attach_id=51980 "Pobierz załącznik") **1,65 MB** 841 Ilość pobrań Opcjonalne pliki do wstawienia na fastDL [](https://amxx.pl/index.php?app=core&module=attach§ion=attach&attach_id=50795 "Pobierz załącznik") [**fastDL.rar**](https://amxx.pl/index.php?app=core&module=attach§ion=attach&attach_id=50795 "Pobierz załącznik") **1,12 MB** 392 Ilość pobrań **Instalacja ruletki** Copy & Play: Wypakowujemy zawartość paczki do katalogu cstrike. Gotowe! Nie trzeba robić nic ponadto, nawet dopisywać pluginu do plugins.ini. Wystarczy zmienić mapę. **Instalacja nagród** (tylko dla dodatkowych nagród spoza tej paczki) Wszystkie pliki nagród (*.amxx) kopiujemy do katalogu addons/amxmodx/plugins Do pliku addons/amxmodx/configs/plugins-roulette.ini dodajemy ich nazwy wraz z końcówką .amxx Jeśli korzystasz z WinSCP i chcesz pobrać listę nazw plików do skopiowania, wystarczy, że zaznaczysz pliki nagród do ruletki, klikniesz PPM › File Names › Copy to Clipboard. Wtedy wystarczy wkleić gotową listę nagród do ruletki do pliku addons/amxmodx/configs/plugins-roulette.ini **Istotna kolejność** (tylko przy instalacji dodatkowych nagród spoza tej paczki) Zwróć uwagę, by główny plugin roulette.amxx był wpisany na samej górze w pliku konfiguracyjnego plugins-roulette.ini Dopiero pod wpisem roulette.amxx umieszczaj wpisy plików z nagrodami do ruletki, inaczej się one nie załadują. [ "Ruletka.WinSCP.png - Rozmiar: 233,71 KB") **Spadochron do ruletki** Standardowy spadochron jest niekompatybilny z większością pluginów i modyfikacji związanych z grawitacją. Zastąpienie dotychczasowego spadochronu, pluginem [Spadochron by H.RED.ZONE](https://amxx.pl/index.php?showtopic=107674), rozwiąże ten problem. Grawitacja nie będzie się resetowała po użyciu spadochronu, a spadochron graczy niewidzialnych także będzie niewidzialny. Poniżej przedstawiam opis dla programistów, którzy chcieliby edytować / tworzyć własne nagrody. Informacje deweloperskie: Spoiler **Główne pliki ruletki** [](https://amxx.pl/index.php?app=core&module=attach§ion=attach&attach_id=51979 "Pobierz załącznik") [**roulette.sma**](https://amxx.pl/index.php?app=core&module=attach§ion=attach&attach_id=51979 "Pobierz załącznik") **24,56 KB** 237 Ilość pobrań [ **roulette.amxx**](/kompilator/plugin/51979"Pobierz plik AMXX") [](https://amxx.pl/index.php?app=core&module=attach§ion=attach&attach_id=50760 "Pobierz załącznik") [**roulette.inc**](https://amxx.pl/index.php?app=core&module=attach§ion=attach&attach_id=50760 "Pobierz załącznik") **4,52 KB** 231 Ilość pobrań **Dokumentacja Ruletki** **Tworzenie nowej nagrody** W funkcji [plugin_init init "Dokumentacja AMXX.pl: Core >> amxmodx > plugin_init") (nie później!) rejestrujemy nową nagrodę przy użyciu natywu [register_prize prize "Dokumentacja AMXX.pl: 3rdParty >> roulette > register_prize") /* Registers new prize, native must be placed in plugin_init function desc - short description for developer menu. Limit: 100 characters karma - how good is prize positive value for favorable prizes negative value for unfavorable prizes 0 for neutral or hard to assess prizes pwr - the product of chance on the prize drawn, recommended value: POWER key - translates key if set to true or just register prize with given name Returns registered prize id. Prize ids begins from 0 */ native register_prize(desc[200], pwr=POWER, karma=0, bool:key=true); W pierwszym argumencie podajemy krótki opis nagrody, w drugim zaś moc. Opis nagrody będzie wyświetlany w menu deweloperskim. Moc nagrody z kolei określa szansę na wylosowanie nagrody. Ostatecznie, spośród wszystkich nagród, które spełnią wymagania do zostania wylosowanymi, losowanie odbędzie się metodą ważoną, czyli każda nagroda uzyska x% szansy na wylosowanie, przy czym x jest równe ilorazowi mocy tej nagrody oraz sumy mocy wszystkich dostępnych nagród. Aby ułatwić zmniejszanie mocy dla poszczególnych, potężniejszych nagród, które chcielibyśmy, by rzadziej były losowane, zdefiniowana została stała POWER, by możliwe było wygodne zmniejszanie szansy na wylosowanie nagrody kilkukrotnie. /* draw power =7!, for example, prize with 3× less chance to get out from draw, we register with power: POWER/3: register_prize("prize name", POWER/3); */ #define POWER 5040 Trzecim argumentem jest karma, która określa, jak dobra jest nagroda. Dla nagród neutralnych, bądź trudnych do oceny, karma winna wynosić wartość 0. Dla nagród pozytywnych, bądź negatywnych, wartości winny być dodawane odpowiednio. Zaleca się, by wartości karmy przyznawane były w zakresie od -100 do 100. W celu łatwiejszej edycji, stworzone zostało kilka definicji dla karmy: // some predefines karma levels for prizes #define KARMA_WORST "-100" #define KARMA_VERY_BAD "-75" #define KARMA_BAD "-50" #define KARMA_QUITE_BAD "-25" #define KARMA_MINUS "-1" #define KARMA_NEUTRAL "0" #define KARMA_PLUS "1" #define KARMA_QUITE_GOOD "25" #define KARMA_GOOD "50" #define KARMA_VERY_GOOD "75" #define KARMA_BEST "100" **Warunek nagrody** Do kodu dodajemy forward [check_prize prize "Dokumentacja AMXX.pl: 3rdParty >> roulette > check_prize") jako funkcję publiczną. /* Ask for ability to draw the prize for a given player id - number of player to draw the prize Returning ROULETTE_ALLOW allows for draw the prize Returning ROULETTE_BLOCK disallows for draw the prize */ forward check_prize(id); Zwracamy w niej jedną z dwóch wartości enum{ ROULETTE_BLOCK, // Blocks forward execute or disallow for executing ROULETTE_ALLOW // Executes the forward or allow for executing } Jeśli chcemy, by nagroda była zawsze dostępna, wpisujemy proste public check_prize(id){ return ROULETTE_ALLOW; } Możemy jednak ograniczyć nagrodę, np. tylko dla terrorystów: public check_prize(id){ return get_user_team(id)==1?ROULETTE_ALLOW:ROULETTE_BLOCK; } Forward może zostać wykonany w momencie zagrania przez któregoś z graczy w ruletkę, więc można założyć, że przynajmniej jeden gracz jest żywy. **Pozwolenie na reset mocy** Do kodu dodajemy także forward [power_reset reset "Dokumentacja AMXX.pl: 3rdParty >> roulette > power_reset"), który także zwraca jedną z dwóch wartości ROULETTE_ALLOW, bądź ROULETTE_BLOCK. Zwrócenie ROULETTE_ALLOW pozwoli na zresetowanie mocy nagrody w przypadku, gdy wszystkie nagrody są niedostępne, bądź podczas banicji ustalanej cvarem roulette_ban, ROULETTE_BLOCK nie pozwoli wymusić resetu mocy, opcja przydatna, jeśli chcemy twardo ograniczyć użycie nagrody raz na mapę. /* Ask for change prize`s power id - number of player to reset the power Returning ROULETTE_ALLOW allows for prize`s power reset Returning ROULETTE_BLOCK disallows for prize`s power reset */ forward power_reset(id); Podobnie, jak dla forwardu [check_prize prize "Dokumentacja AMXX.pl: 3rdParty >> roulette > check_prize"), można założyć, że przynajmniej jeden gracz jest żywy. **Wywołanie nagrody** Dodajemy także forward [execute_prize prize "Dokumentacja AMXX.pl: 3rdParty >> roulette > execute_prize"), który zostanie wywołany w momencie wylosowania nagrody przez jakiegoś gracza i przyjmie jako jedyny argument jego numer identyfikacyjny (1-32). Forward wykonywany jest tylko dla żywych graczy, więc sprawdzanie, czy gracz żyje, jest zbędne. /* Executes prize by given player id - number of player wchich drew the prize */ forward execute_prize(id); **Zmiana mocy nagrody** Za pomocą natywu [change_prize_power prize-power "Dokumentacja AMXX.pl: 3rdParty >> roulette > change_prize_power") możemy zmienić moc nagrody dla danego gracza. /* Forces prize power change id - number of player, which power is changed if set to 0, power is changed for all players pwr - new power to set Returns old player`s prize power or -1 if id is 0 */ native change_prize_power(id=0, pwr=0); Opcja ta jest przydatna do ograniczenia gry w ruletkę dla poszczególnego gracza oraz do manipulacji mocą w przypadku określonych czynności, bądź implementacji systemu zmniejszającego szanse po każdorazowym wylosowaniu, czy blokowaniu nagrody dla graczy po określonych wydarzeniach, odciążając nagrodę z losowania właściwego. **Zmiana karmy gracza** Nieraz dokładna karma nagrody będzie możliwa do określenia dopiero po wykonaniu pewnych operacji, np. wylosowania ilości dodawanego życia. Wówczas warto skorzystać z natywu, dodającego karmę graczowi. Istotne jest jednak, by początkowa wartość karmy była dodatnia dla pozytywnych nagród bądź ujemna dla negatywnych. /* Sets user karma level id - number of player to set new karma if set to 0, karma is set to all players karma - new karma to set Returns old player`s karma or -1 if id is 0 */ native set_user_karma(id=0, karma=0); /* Gets user karma level id - number of player to get karma */ native get_user_karma(id); **Zmiana karmy nagrody** Można zmienić także domyślną karmę dla nagrody: /* Changes prize`s karma karma - new karma to set Returns prize`s old karma */ native change_prize_karma(karma=0); **Czas do końca rundy** Przydatny natyw, zwracający liczbę sekund do końca rundy. Zastosowanie głównie przy dobieraniu warunku dostępności nagrody. /* Gets time to end of round in seconds */ native timeleft(); **Multilang** Ruletka jest pluginem w pełni wielojęzycznym. Zaimplementowana została własna struktura słowników drzewiastych. /* Registers new dictionary of keys to translate file - dictionary`s filename placed in data/lang */ native register_translate(file[128]); /* Translates key registered by register_translate id - number of player to translate key for key - the key to translate result - the output for translated key */ native translate(id, key[128], result[896]); Wszelkie argumenty tłumaczenia kluczy dotyczą tego właśnie słownika drzewiastego. **Proste informacje** W celu prostego informowania gracza, oraz jego widzów o wylosowanej nagrodzie i jej przebiegu, stworzony został natyw [prize_info info "Dokumentacja AMXX.pl: 3rdParty >> roulette > prize_info"), który przyjmuje masę argumentów: /* Shows information of drawed message to winner and his spectators id - number of player to show the information color - color of the message to show. Available colors to choose: YELLOW, GREEN, RED, BLUE key - translates key if set to true or just shows given message msg - message to show for a player. Limit of 190 characters msgSpec - message to show for player`s spectators. Same limit. channel - binary sum of channels message to show 1 - ColorChat 2 - Tutor 4 - Center time - how long the tutor message have to lasts (float value) */ native prize_info(id, color=INFO_YELLOW, msg[190]="", msgSpec[190]="", bool:key=true, channel=3, Float:time=10.0); enum(<<=1){ // Message channels used in prize_info native MSG_COLORCHAT=1, MSG_TUTOR, MSG_CENTER } enum{ // Colors are projected to be compatible with ColorChat INFO_YELLOW=1, // Yellow color has been added to make names more sense INFO_GREEN, INFO_RED=5, INFO_BLUE } **Proste odliczanie** Nie tylko informacje na sayu / tutorze są przydatne. Gotowy jest też natyw do prostego odliczania: /* Shows counter centered information to winner and his spectators Uses client_print print_center in format: "translated_key: number" id - number of player to show the counter key - the key to translate, being the prize name number - number to show (f.e. seconds left, HP left, etc.) spect - specifies, if show counter to spectators too. */ native prize_counter(id, key[128], number, bool:spect=true); **Szablon nagrody** #include <amxmodx> #include <roulette> public plugin_init(){ register_plugin("Roulette Prize name", "0.1", "Prize Author"); register_prize("Prize name: Short prize description"); } public execute_prize(id){ } public check_prize(id){ return ROULETTE_ALLOW; } public power_reset(id){ return ROULETTE_ALLOW; } **Flaga FCVAR_SHOWALL** W celu prostszej rejestracji cvarów o flagach z odnotowywanymi zmianami, dodana została definicja: // defines cvar bitsum value, showing cvar`s existing and every change #define FCVAR_SHOWALL FCVAR_ARCHIVE|FCVAR_SERVER **Limitacja miękka globalna** Standardowo, plugin ruletki, ogranicza losowanie tej samej nagrody dla jednego gracza w bliskim odstępie losowań, domyślnie ta sama nagroda może wystąpić dopiero po wylosowaniu 20 innych nagród. Wyjątkiem jest przypadek, gdy żadna nagroda nie jest dostępna do wylosowania. Wtedy dochodzi do próby zresetowania mocy nagród. Szablon kodu do miękkiej limitacji globalnej na liczbę rund ustawianą cvarem roulette_prize_name_rounds_ban o domyślnej wartości 20. #include <amxmodx> #include <roulette> new ban=0, c_rounds_ban; public plugin_init(){ register_plugin("Roulette Prize name", "0.1", "Prize Author"); register_prize("Prize name: Short prize description"); register_logevent("roundStart", 2, "1=Round_Start"); c_rounds_ban=register_cvar("roulette_prize_name_rounds_ban", "20", FCVAR_SHOWALL); } public execute_prize(id){ change_prize_power(id, 0); ban=get_pcvar_num(c_rounds_ban); } public roundStart(){ if(ban){ --ban; } } public check_prize(id){ return ban?ROULETTE_BLOCK:ROULETTE_ALLOW; } public power_reset(id){ return ROULETTE_ALLOW; } **Limitacja twarda globalna** Limitacja twarda różnić się będzie tym, że wymuszenie resetu mocy nagrody będzie blokowane poprzez zwrócenie ROULETTE_BLOCK w wywołaniu forwardu [power_reset reset "Dokumentacja AMXX.pl: 3rdParty >> roulette > power_reset"). enum{ ROULETTE_BLOCK, // Blocks forward execute or disallow for executing ROULETTE_ALLOW // Executes the forward or allow for executing } W podobny sposób można zmienić domyślną liczbę limitacji dla poszczególnych użytkowników. **Tworzenie funkcji czasowej** #include <amxmodx> #include <hamsandwich> #include <roulette> new maxPlayers, prize[33]; public plugin_init(){ register_plugin("Roulette Prize name", "0.1", "Prize Author"); register_prize("Prize name: Short prize description"); register_logevent("roundEnd", 2, "1=Round_End"); register_logevent("roundEnd", 2, "1=Game_Commencing"); RegisterHam(Ham_Killed, "player", "killed", 1); } public plugin_cfg(){ maxPlayers=get_maxplayers(); } public execute_prize(id){ prize[id]=20; new data[1]; data[0]=id; set_task(1.0, "timer", _, data, 1, "a", prize[id]); } public timer(data[]){ new id=data[0]; if(is_user_alive(id) && prize[id]){ if(--prize[id]){ // tutaj wykonujemy kod co sekunde, dla dodatniego licznika czasu } else { // licznik czasu wlasnie dobiegl zera, wykonujemy pewien, inny kod } } } public killed(vid, kid, shouldgib){ if(prize[vid]){ prize[vid]=0; } } public client_putinserver(id){ prize[id]=0; } public roundEnd(){ remove_task(); for(new i=1; i<=maxPlayers; ++i){ prize[i]=0; } } public check_prize(id){ return ROULETTE_ALLOW; } public power_reset(id){ return ROULETTE_ALLOW; } Stworzyliśmy zmienną globalną prize[33], przechowującą licznik czasu dla poszczególnych graczy. Licznik przyjmie pewną wartość, gdy gracz wylosuje nagrodę ([execute_prize prize "Dokumentacja AMXX.pl: 3rdParty >> roulette > execute_prize")) i stworzymy taska dla tego gracza, który będzie wykonywać się co sekundę. W przykładzie ustawiono czas na 20 sekund. Następnie, co sekundę wywoływana będzie funkcja timer, w której to już musimy sprawdzić, czy gracz żyje oraz posiada timer, czyli ma nagrodę aktywną. Tu też zmniejszamy czas i wykonujemy odpowiedni kod. Koniec nagrody może nastąpić standardowo na 3 sposoby: * Koniec czasu (licznik osiągnął wartość zerową) * Zabicie gracza (stąd funkcja killed) * Koniec rundy (funkcja roundEnd) W funkcji roundEnd dodamy także instrukcję, która usuwa wszelkie ewentualne zadania. Należy pamiętać, by uwzględnić wszystkie wymienione możliwości skończenia się czasu. Po skończonym czasie możemy też bez problemu wywołać funkcję, przywracającą gracza do normalności, jeśli wykonywaliśmy na nim zaawansowane operacje, np. oddać mu nóż. **Funkcja czasowa z licznikiem** Dodamy teraz funkcjonalny licznik do naszej funkcji czasowej, czyli baza praktyczna. Skorzystamy także z czasu losowanego, ograniczanego wartościami dwóch cvarów. #include <amxmodx> #include <fakemeta> #include <hamsandwich> #include <roulette> new maxPlayers, prize[33]; new c_prize_min, c_prize_max; public plugin_init(){ register_plugin("Roulette Prize name", "0.1", "Prize Author"); register_prize("Prize name: Short prize description"); register_logevent("roundEnd", 2, "1=Round_End"); register_logevent("roundEnd", 2, "1=Game_Commencing"); RegisterHam(Ham_Killed, "player", "killed", 1); c_prize_min=register_cvar("c_prize_name_min", "10", FCVAR_SHOWALL); c_prize_max=register_cvar("c_prize_name_max", "20", FCVAR_SHOWALL); } public plugin_cfg(){ maxPlayers=get_maxplayers(); } public execute_prize(id){ // gracz o numerze id wylosowal nagrode // tutaj wykonujemy operacje tuz po wylosowaniu nagrody prize[id]=random_num(get_pcvar_num(c_prize_min), get_pcvar_num(c_prize_max)); prize_info(id, INFO_BLUE, "PRIZE_NAME_DESC", "PRIZE_NAME_DESC_SPEC"); prize_counter(id, "PRIZE_NAME", prize[id]); new data[1]; data[0]=id; set_task(1.0, "timer", _, data, 1, "a", prize[id]); } public timer(data[]){ new id=data[0]; if(is_user_alive(id) && prize[id]){ if(--prize[id]){ // tutaj wykonujemy kod co sekunde, dla dodatniego licznika czasu prize_counter(id, "PRIZE_NAME", prize[id]); } else { // licznik czasu wlasnie dobiegl zera, wykonujemy pewien, inny kod prize_info(id, .key=false, .channel=MSG_CENTER); } } } public killed(vid, kid, shouldgib){ if(prize[vid]){ prize[vid]=0; } } public client_putinserver(id){ prize[id]=0; } public roundEnd(){ remove_task(); for(new i=1; i<=maxPlayers; ++i){ prize[i]=0; } } public check_prize(id){ return ROULETTE_ALLOW; } public power_reset(id){ return ROULETTE_ALLOW; } W momencie wygrania nagrody, wypisujemy dla gracza oraz wszystkich, którzy go obserwują, informację o nagrodzie zarówno na sayu, jak i w Tutorze. Do tego wyświetlany jest licznik czasu na środku ekranu. W przykładzie zastosowano kolory czerwone, oznaczające zazwyczaj złą nagrodę, jednak inwencja kolorystyki pozostaje wolą autora danej nagrody, choć zaleca się używanie kolorów zielonych wobec dobrej nagrody, czerwonych wobec złej, niebieskich wobec neutralnych / informacji. W ruletce wykorzystywany jest tutor, tak więc konieczne jest, by został on pobrany i był umieszczony na serwerze. Skopiuj po prostu zawartość archiwum tutor.rar do katalogu cstrike na serwerze, a plik tutor.inc do folderu scripting/include, by móc kompilować takie pluginy. [Oficjalny temat o Tutorze na forum](http://amxx.pl/topic/57554-tutor-informacje-jak-w- condition-zero/). [](https://amxx.pl/index.php?app=core&module=attach§ion=attach&attach_id=47861 "Pobierz załącznik") [**tutor.rar**](https://amxx.pl/index.php?app=core&module=attach§ion=attach&attach_id=47861 "Pobierz załącznik") **7,34 KB** 208 Ilość pobrań [](https://amxx.pl/index.php?app=core&module=attach§ion=attach&attach_id=47862 "Pobierz załącznik") [**tutor.inc**](https://amxx.pl/index.php?app=core&module=attach§ion=attach&attach_id=47862 "Pobierz załącznik") **2,21 KB** 192 Ilość pobrań Tutor będzie działał poprawnie u graczy dopiero za drugim wejściem na serwer, będzie działał zarówno u graczy CS CZ, jak i CS 1.6. Funkcje tutorPrecache oraz tutorInit są konieczne do działania tutora. Poza tutorem, w wielu nagrodach wykorzystywany jest także stock StripWeapons, który pozwala na pozbawienie gracza wybranej broni, bądź typu broni. [](https://amxx.pl/index.php?app=core&module=attach§ion=attach&attach_id=50768 "Pobierz załącznik") [**stripweapons.inc**](https://amxx.pl/index.php?app=core&module=attach§ion=attach&attach_id=50768 "Pobierz załącznik") **4 KB** 188 Ilość pobrań **Limit miękki gracza** Po otrzymaniu nagrody, wywołujemy na graczu change_prize_power(id, 0); Dzięki temu, gracz nie wylosuje nagrody aż do końca mapy lub resetu mocy nagród. **Changelog** Spoiler 24.12.2012 1.0 N Init version 28.12.2012 2.0 + Added custom configuration files. Plugin is fully plug & play now 03.01.2013 2.1 $ Fixed incorrect plugin native change prize power call 04.01.2013 2.2 + Added cutom map`s custom configuration files settings service 08.01.2013 3.0 % Improved memory usage, replacing stable tables with the cellarray 11.01.2013 3.1 $ Fixed the ArrayGetArray incorect identifier usage 13.01.2013 4.0 + Added multilanguage service, changed main plugin language to english 13.01.2013 4.0.1 $ Changed variables names and comments to english 13.01.2013 4.0.2 $ Fixed null sized array initialize while no prizes 13.01.2013 4.1 % Improved menu show while no prizes 13.01.2013 4.2 $ No more searching for winning prize`s execute forward id twice 28.01.2013 5.0 % Merged ConnorMcLeod`s get_remaining_seconds and Roulette 28.01.2013 5.0.1 + Added timeleft native 29.01.2013 5.1 + Added register_translate and translate natives 30.01.2013 5.1.1 $ Fixed translations for tutor 30.01.2013 5.2 + Added prize_info native 30.01.2013 5.3 $ Added register_prize multilang support 30.01.2013 5.3.1 % Improved some comparisons usage 30.01.2013 5.3.2 $ Fixed infinity loop bug when prize`s default power is 0 01.02.2013 6.0 + Added karma system 02.02.2013 6.0.1 % Improved some natives returns 02.02.2013 6.1 + Added change_prize_karma, set_user_karma and get_user_karma natives 03.02.2013 6.1.1 % Improved some natives parameters and variables usage 03.02.2013 6.1.2 + Added source code sections and some comments blocks 04.02.2013 6.1.3 + Added KARMA_* defines in INC file 04.02.2013 6.1.4 + Added POWER_STR, allowing use it directly in prize`s power cvars 04.02.2013 6.2 % Reduced POWER(_STR) to 7! to avoid integer overflow more effectively 04.02.2013 6.2.1 + Added FCVAR_SHOWALL definition to simplify registering some cvars 05.02.2013 6.2.2 $ Fixed translate native not returning translated string 05.02.2013 6.2.3 + Added credits informations in info section of SMA file 05.02.2013 6.3 + Added prize_counter native to simplify showing counters 06.02.2013 6.3.1 % Moved descriptions in INC file over the content to cooperate with editors 05.03.2013 6.3.2 % Changed array of booleand into bitsum, added bitsum defines Załączniki: fastDL.rar roulette.inc roulette.rar roulette.sma stripweapons.inc tutor.inc tutor.rar |