iQuiz

iQuiz — irssi quiz, v170202 (02.02.2017)

Autor skryptu i tego opisu: wilk

Opis

Jest to skrypt quizowy napisany dla programu irssi. Obsługuje w obecnej postaci quizy klasyczne („Dizzy”), czyli wyświetla pytanie i oczekuje na podanie przez graczy jednej, prawidłowej odpowiedzi; quizy, w których należy ułożyć poprawną odpowiedź z rozsypanki losowo pomieszanych literek („Mieszacz”), quizy posiadające wiele odpowiedzi do każdego pytania („Familiada” – w wersji drużynowej i bez drużyn tzw. „Multi”) oraz unikatowy tryb gry, w którym treść pytania jest pomieszana, należy ją odgadnąć i dopiero wówczas udzielić poprawnej odpowiedzi („Pomieszany”).

Historia

Skrypt powstał 23 maja 2010 roku w wyniku zapotrzebowania na skrypt quizowy funkcjonujący w popularnym linuksowym kliencie IRC – irssi. W oficjalnym repozytorium skryptów dla tego programu nie było zadowalających skryptów stricte quizowych, które by działały tak, jak ich odpowiedniki dla mIRCa. Początkowym założeniem projektu było przeniesienie podstawowej funkcjonalności jaką oferował skrypt Dizzy, wraz z zachowaniem kompatybilności co do formatu plików z pytaniami. Z czasem, w miarę potrzeb, skrypt był rozbudowywany i uzyskiwał możliwość realizacji premier typu Mieszacz (październik 2012), Familiada (październik 2013 w wersji bez drużyn; wrzesień 2015 wersja drużynowa) oraz Pomieszany (styczeń 2014), a także rozległych możliwości konfiguracyjnych. Celem jest także to, by zachować spójność wszystkich poleceń i ustawień niezależnie od wybranego trybu gry oraz by samo przełączanie pomiędzy nimi było jak najprostsze. Udostępnionych zostało ok. 11 wersji publicznych, zawierających różne modyfikacje plus wersje rozwojowe na potrzeby jakiegoś quizu lub quizowicza, numeracja wersji opiera się o datę. W planach jest dalsza rozbudowa skryptu.

Działanie

Quiz polega na wyświetleniu pytania i oczekiwaniu na podanie poprawnej odpowiedzi. Pierwsza osoba, która udzieli poprawnej odpowiedzi zdobywa określoną liczbę punktów (zwykle jeden). W przypadku quizu typu Familiada na każde pytanie jest nie jedna, a szereg powiązanych z nim odpowiedzi – pytanie dobiega końca, gdy wszystkie one zostaną odgadnięte lub upłynie limit czasu. Quiz typu Mieszacz wyświetla jako pytanie losowo pomieszaną rozsypankę literek, która po ułożeniu w prawidłowej kolejności jest jednocześnie poprawną odpowiedzią. Natomiast quiz Pomieszany łączy cechy mieszacza i dizzy: treść pytania jest pomieszana, należy ją odszyfrować i dopiero wówczas udzielić poprawnej odpowiedzi.

W trakcie trwania pytania gracze mogą odpowiednim poleceniem poprosić o kolejną podpowiedź lub o powtórzenie pytania, które w przypadku Mieszacza oraz Pomieszanego spowoduje wyświetlenie na nowo przemieszanej rozsypanki liter. Po wyczerpaniu się zestawu pytań quiz dobiega końca, a prowadzący wyświetla punktację wszystkich graczy. Skrypt działa tylko w trybie autoquizu. Obsługiwane są formaty plików z pytaniami zgodne z odpowiednikami skryptów quizowych dla mIRCa.


Dla graczy

Komendy, których może używać każdy gracz znajdujący się na kanale podczas quizu (w nawiasie kwadratowym opisany jest parametr):

!podp - wyświetlenie kolejnej podpowiedzi (niedostępne w Familiadzie/Multi),
!przyp lub !pyt - ponowne wyświetlenie treści pytania lub hasła (Mieszacz/Pomieszany wyświetla nową rozsypankę literek),
!ile - skrypt podaje liczbę punktów gracza, który wywołał komendę,
!ile [nick] - skrypt podaje liczbę punktów gracza o podanym nicku,
!join 1 / !join 2 - wejście przez gracza do wybranej drużyny (tylko Familiada).

Polecenia wyświetlania podpowiedzi i przypomnienia pytania są zabezpieczone przed floodem (powodującym lagi) i oszukiwaniem, poprzez wprowadzenie opóźnienia przed ponowną możliwością ich użycia.


Dla autorów

Dizzy: Pytania poprzedzamy znacznikiem „pyt ”, zaś odpowiedzi „odp ” i umieszczamy naprzemiennie w pliku. Starajmy się nie zrobić literówki w znaczniku, bo zostanie on wciągnięty do treści pytania/odpowiedzi. Dopuszczalne jest zupełne pominięcie „pyt ”/„odp ”.

Format pytań i odpowiedzi na przykładzie małego zestawu pytań w Notatniku:

Przykładowy plik z pytaniami dla Dizzy.

Mieszacz: W każdym wierszu pliku wstawiamy pojedynczą odpowiedź poprzedzoną kolejno rosnącą numeracją, począwszy od „1”. Skrypt toleruje pomyłki w kolejności numeracji haseł. Dopuszczalne jest zupełne pominięcie numeracji.

Format pytań i odpowiedzi na przykładzie małego zestawu haseł w Notatniku:

Przykładowy plik z pytaniami dla Mieszacza.

Familiada: Pytania i zestawy odpowiedzi umieszczamy w pliku naprzemiennie. Poszczególne odpowiedzi w zestawie oddzielamy znakiem gwiazdki „*”. Liczba odpowiedzi jest nieograniczona. Pamiętaj, że wartość punktowa każdej z odpowiedzi zależy od jej pozycji na liście w pliku – te najwartościowsze umieść jako pierwsze. Z tego samego formatu korzysta również tryb Multi, czyli Familiada bez drużyn.

Format pytań i odpowiedzi na przykładzie małego zestawu pytań w Notatniku:

Przykładowy plik z pytaniami dla Familiady.

Pomieszany: Pytania poprzedzamy znacznikiem „pyt ”, zaś odpowiedzi „odp ” i umieszczamy naprzemiennie w pliku. Starajmy się nie zrobić literówki w znaczniku, bo zostanie on wciągnięty do treści pytania/odpowiedzi. Dopuszczalne jest zupełne pominięcie „pyt ”/„odp ”.

Format pytań i odpowiedzi na przykładzie małego zestawu pytań w Notatniku:

Przykładowy plik z pytaniami dla Pomieszanego.

Wgranie skryptu do irssi:

Usunięcie skryptu z irssi:

/script load quiz.pl

/script unload quiz.pl


Przykład typowej rozgrywki

Skrypt należy umieścić w katalogu skryptów swojego irssi (jest to zwykle „~/.irssi/scripts”). Do irssi wgrywamy go poleceniem:

/script load quiz.pl

Jeśli mamy zamiar puścić quiz innego rodzaju niż Dizzy, to należy najprzód wybrać go podając jego nazwę (czyli: „dizzy”, „mieszacz”, „pomieszany”, „familiada” lub „multi” – wystarczą nawet trzy pierwsze literki nazwy) jako parametr poniższego polecenia np.:

/qtype mieszacz

Następnie uruchamiamy quiz na kanale np. #kanal korzystając z pliku z pytaniami o nazwie np. „pytania.txt” (nie podając ścieżki do pliku skrypt przyjmuje, że jest to katalog domowy):

/qon #kanal pytania.txt

Jeśli wybranym typem quizu była „Familiada”, to skrypt przechodzi w tryb oczekiwania na wejście zawodników do drużyn (polecenia kanałowe „!join 1” i „!join 2”). Gdy wszyscy są gotowi, to aby wystartować faktyczny quiz należy wpisać samo /qon.

Po wyczerpaniu się pytań z pliku quiz się zatrzymuje i możemy wyświetlić punktację graczy:

/qstats

Po wyświetleniu wyników quiz kończymy komendą:

/qoff

Następnie (opcjonalnie) usuwamy skrypt z pamięci irssi:

/script unload quiz.pl


Dodatkowe polecenia

Wyświetlenie pomocy skryptu – wszystkie polecenia i ustawienia wraz z opisem (z uwagi na duże możliwości konfiguracyjne i długą listę wyświetlane są tylko te relewantne dla wybranego rodzaju quizu):

/quiz albo /help quiz

Ustawienie opóźnienia pomiędzy kolejnymi pytaniami na np. 15 sekund (domyślnie jest to 10 sekund, a dla Familiady/Multi 20 sekund):

/qdelay 15

Ustawienie czasu trwania pojedynczej rundy na np. 120 sekund (tylko dla Familiady/Multi; domyślnie jest to 90 sekund):

/qtime 120

Pominięcie bieżącego pytania:

/qskip

Wymuszenie wyświetlenia kolejnej podpowiedzi, niezależnie od ograniczeń (nie dla Familiady/Multi):

/qhint

Wymuszenie wyświetlenia przypomnienia pytania, niezależnie od ograniczeń (Mieszacz/Pomieszany wyświetlą nową rozsypankę):

/qremind


Ustawienia skryptu (dla zaawansowanych quizowiczy):

Skrypt udostępnia szeroki wachlarz konfiguracyjny. Ustawienia domyślne zostały dobrane tak, by odpowiadały podstawowym potrzebom i były możliwie kompatybilne z działaniem odpowiedników skryptowych dla mIRCa. Niemniej osoba puszczająca quiz może przed rozgrywką dostosować działanie skryptu, a nawet zmodyfikować wyświetlane na kanale informacje. Listę dostępnych ustawień uzyskamy po wpisaniu:

/quiz albo /help quiz

Poszczególne zmienne ustawiamy korzystając z poniższego polecenia irssi (dla zmiennych przełącznikowych typu „bool” wartością jest „on”/„off”):

/set zmienna wartość

W razie namieszania bądź pogubienia się w ustawieniach można je zresetować do wartości początkowych (irssi zapamiętuje ustawienia nawet po usunięciu skryptu) za pomocą:

/qinit

Opis wybranych ustawień:

quiz_points_per_answer - liczba punktów przyznawanych za poprawną odpowiedź (domyślnie: 1)
quiz_strict_match - czy odpowiedź musi być identyczna? albo użyć *dopasowania* jak w Dizzy (domyślnie: on; nie dla Familiady/Multi)
quiz_ranking_type - wybór sposobu prezentowania rankingu i miejsc ex aequo (domyślnie: 3; do wyboru: 1 – zwykły „1234”, 2 – zwarty „1223”, 3 – turniejowy „1224”)
quiz_join_anytime - czy gracze mogą wchodzić do drużyn w dowolnym momencie? czy tylko na początku (domyślnie: on; tylko Familiada)
quiz_team_play - czy zaliczać odpowiedzi wyłącznie graczom z drużyn? (domyślnie: on; tylko Familiada) Tryb ten jest podobny do sposobu działania gry typu Multi, czyli Familiady bez drużyn.
quiz_transfer_points - czy gracz zmieniając drużynę zabiera swoje punkty z jej dorobku? (domyślnie: off; tylko Familiada)
quiz_random_hints - czy litery w podpowiedziach odsłaniać losowo? (domyślnie: on)
quiz_nonrandom_first_hint - czy w pierwszej podpowiedzi odsłonić zawsze pierwsze literki każdego z wyrazów? (domyślnie: on)
quiz_show_first_hint - czy wyświetlać pierwszą podpowiedź razem z pytaniem? (domyślnie: off)
quiz_first_hint_dots - czy pierwsza podpowiedź to tylko same kropeczki? (domyślnie: off)
quiz_words_style - modyfikowanie wyglądu literek w wyrazach (domyślnie: 0; tylko Mieszacz/Pomieszany; do wyboru: 0 – bez zmian, 1 – zmiana na małe litery, 2 – zmiana na DUŻE litery, 3 – zmiana na Kapitaliki)
quiz_words_mode - czy mieszać wyrazy osobno? albo wszystko razem (domyślnie: on; tylko Mieszacz)
quiz_max_hints - wybór sposobu limitowania ilości podpowiedzi (domyślnie: 0; do wyboru: 0 – brak limitu, >0 – podany limit ilości podpowiedzi, <0 – podany limit nieodsłoniętych wciąż znaków) Niezależnie od wyboru skrypt i tak nie pokaże więcej niż raz już odsłoniętej w pełni odpowiedzi (bo nie ma to dalej sensu) używając polecenia kanałowego „!podp”, aczkolwiek polecenie „/qhint” zawsze wyświetli podpowiedź.
quiz_mix_on_remind - czy ponownie mieszać litery przy każdym przypomnieniu? (domyślnie: on; tylko Nieszacz/Pomieszany)
quiz_cmd_hint - czy kanałowe polecenie !podp jest aktywne? (domyślnie: on)
quiz_cmd_remind - czy kanałowe polecenie !przyp jest aktywne? (domyślnie: on)

Kliknij by wejść na podstronę dotyczącą starszej wersji skryptu iQuiz

Słowniczek pojęć:

Autoquiz
Quiz, który działa w sposób automatyczny. Polega to na tym, że zestawy pytań i odpowiedzi pobierane są przez skrypt quizowy automatycznie ze wskazanego, wcześniej przygotowanego pliku tekstowego. Niektóre (zwłaszcza starsze) skrypty quizowe nie posiadają funkcji autoquizu, wtedy pytania oraz odpowiedzi osoba prowadząca quiz musi wprowadzać ręcznie, na bieżąco.
Lag (latencja)
Opóźnienie między wysłaniem informacji a jej odebraniem. W normalnych warunkach wynosi w internecie kilkadziesiąt milisekund, w przypadku wystąpienia problemów z funkcjonowaniem sieci (spowodowanych np. przeciążeniem połączenia) może dojść do jego wydłużenia - nawet do kilku lub więcej sekund.