-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathkm.ini
More file actions
750 lines (749 loc) · 35.1 KB
/
km.ini
File metadata and controls
750 lines (749 loc) · 35.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
[script]
n0=dialog km_table {
n1= title "IRC-игра «Кто меньше?»"
n2= size -1 -1 470 410
n3= option pixels
n4= icon C:\Users\WK217\GameSHOWS\IRC-игры\mIRC\km\km.ico, 0
n5=
n6= text "Канал игры:", 101, 10 12 80 16
n7= edit "", 102, 100 10 80 21
n8= text "Файл базы вопросов (ini):", 103, 10 42 80 26
n9= edit "km_config.ini", 104, 100 50 80 21
n10= button "Начать игру (intro)", 105, 20 90 110 25
n11= button "+m", 106, 140 90 30 25
n12= button "Закончить игру (closing)", 107, 20 125 150 25
n13= box "Музыка", 108, 10 160 170 120
n14= list 109, 20 180 150 90, size
n15=
n16= box "Ход игры", 200, 190 10 270 390
n17= text "Раунд:", 201, 200 42 40 16
n18= combo 202, 250 40 40 120, size drop
n19= text "Вопрос из базы:", 203, 300 20 90 16, center
n20= combo 204, 300 40 90 150, size drop
n21= button "Refresh", 205, 400 39 50 23
n22= edit "Текст вопроса", 206, 200 70 250 51, multi autovs center
n23= text "Ответ:", 207, 355 135 40 16
n24= edit "", 208, 395 132 40 21, center autohs
n25= button "Задать вопрос", 209, 215 130 110 25
n26= check "Приём ответов", 210, 342 162 93 20, left
n27= button "Запустить таймер", 211, 215 160 110 25
n28= text "Фото:", 212, 220 203 30 16
n29= edit "URL", 213, 260 200 90 21, autohs
n30= button "Показать", 214, 360 200 70 20
n31= edit "Комментарий.", 215, 220 230 180 51, multi autovs
n32= button "", 216, 410 230 20 51
n33= button "Ответы игроков", 217, 200 295 60 35, multi
n34= button "Верный ответ", 218, 270 295 110 20, multi
n35= check "Верный показан", 219, 270 315 110 20
n36= button "Текущие счета", 220, 390 295 60 35, multi
n37= button "Интер на вопросе", 221, 215 340 110 20
n38= button "Интер в целом", 222, 215 365 110 20
n39= button "Конец вопроса / раунда", 223, 335 340 100 45, multi
n40=
n41= box "Прочее", 300, 10 290 170 110
n42= button "Отбор: рез-ты", 301, 20 310 80 20
n43= button "Отбор: топ-8 — игроки", 302, 20 335 80 30, multi
n44= button "+v игрокам", 303, 20 370 80 20
n45= button "Плашка выбытия", 304, 110 310 60 35, multi
n46= button "Плашка победы", 305, 110 355 60 35, multi
n47=}
n48=
n49=alias km {
n50= ;Режим ответа
n51= if ($prop == ansmode) {
n52= if ($1 isnum) did $iif($1 == 1, -c, -u) km_table 210
n53= else return $did(km_table, 210).state
n54= }
n55= ;Имя конфигурационного файла
n56= elseif ($prop == config) return km\ $+ $did(km_table, 104).text
n57= ;Номер текущего раунда
n58= elseif ($prop == roundnum) return $did(km_table, 202, 1).seltext
n59= ;Является ли выбранный вопрос последним
n60= elseif ($prop == islastq) return $iif($did(km_table, 204, 1).sel == $did(km_table, 204).lines, $true, $false)
n61= ;Показан ли уже верный ответ
n62= elseif ($prop == correctshown) return $did(km_table, 219).state
n63= ;Инициализация диалогового окна
n64= else dialog -admo km_table km_table
n65=}
n66=
n67=on *:dialog:km_table:init:*: {
n68= ;Канал проведения игры
n69= did -ra km_table 102 %km_channel
n70=
n71= ;Проверка мода +m канала игры
n72= did -ra km_table 106 $iif(m isin $chan(%km_channel).mode, -m, +m)
n73=
n74= ;Инициализация списка раундов
n75= var %rounds $km_readini(config, rounds)
n76= var %i 1
n77= while (%i <= $numtok(%rounds, 44)) {
n78= did -a km_table 202 $gettok(%rounds, %i, 44)
n79= inc %i
n80= }
n81=
n82= ;Инициализация музыки
n83= var %km_sounds $km_readini(config, sounds)
n84= var %i 1
n85= while (%i <= $numtok(%km_sounds, 124)) {
n86= did -a km_table 109 $gettok(%km_sounds, %i, 124)
n87= inc %i
n88= }
n89=}
n90=
n91=on *:dialog:km_table:edit:*: {
n92= ;Поле канала игры
n93= if ($did == 102) set %km_channel $did(km_table, 102).text
n94=}
n95=
n96=on *:dialog:km_table:sclick:*: {
n97= ;———— Блок 1 ————
n98=
n99= ;Интро
n100= if ($did == 105) {
n101= ;mode %km_channel +m
n102= ;msg %km_channel $km_playsound(intro)
n103= ;.timerlogo -m 1 21910 km_showlogo
n104=
n105= ;«Красный парад» (11.06.2017)
n106= msg %km_channel $km_playsound(win50)
n107= .timerlogo -m 1 4900 km_showlogo
n108= }
n109= ;Кнопка +/-m
n110= elseif ($did == 106) mode %km_channel $did(km_table, 106).text
n111= ;Closing
n112= elseif ($did == 107) {
n113= ;msg %km_channel $km_playsound(closing)
n114=
n115= ;«Красный парад» (11.06.2017)
n116= msg %km_channel $km_playsound(partend)
n117= .timerend -m 1 4400 mode %km_channel -o $me
n118= km_transact_inter
n119= km_parade_sendinter
n120= }
n121=
n122= ;———— Блок 2 ————
n123=
n124= ;Установление раунда
n125= elseif ($did == 202) km_setround $did(km_table, 202, 1).seltext
n126= ;Установление нового вопроса
n127= elseif ($did == 204) km_setquiz $did(km_table, 204, 1).seltext
n128= ;Показ вопроса
n129= elseif ($did == 209) km_showq $km_currentquiz().question
n130= ;Запуск таймера
n131= elseif ($did == 211) km_starttimer
n132= ;Показ изображения
n133= elseif ($did == 214) {
n134= if ($km_currentquiz().photo != $null) {
n135= msg %km_channel 2Изображение: $km_currentquiz().photo
n136= msg %km_channel 0url $km_currentquiz().photo
n137= }
n138= }
n139= ;Показ комментария
n140= elseif ($did == 216) msg %km_channel $km_currentquiz().comment
n141= ;Показ ответов игроков
n142= elseif ($did == 217) km_showanswers $km().correctshown
n143= ;Показ правильного ответа
n144= elseif ($did == 218) {
n145= did -c km_table 219
n146= msgopt %km_channel $km_table_line(00 03, 01 09, V, Правильный ответ, $km_currentquiz().correct) $km_playsound(corr)
n147= msg %km_channel 15Зачёт: $+(14, $km_currentquiz().min, 15, -, 14, $km_currentquiz().max)
n148= }
n149= ;Показ счёта игроков
n150= elseif ($did == 220) km_showstats
n151= ;Топ-3 прибавок интерактива на вопросе
n152= elseif ($did == 221) km_showinter_q
n153= ;Топ-3 интерактива в целом
n154= elseif ($did == 222) km_showinter_overall $iif($km().islastq == $true, 1)
n155= ;Конец вопроса / раунда
n156= elseif ($did == 223) {
n157= ;Зачисление очков игрокам
n158= km_transact_players
n159=
n160= set %km_players_answers
n161= set %km_players_diff
n162= set %km_players_inc
n163=
n164= ;Зачисление очков интерактивщикам
n165= km_transact_inter
n166=
n167= set %km_inter_answers
n168= set %km_inter_diff
n169= set %km_inter_inc
n170=
n171= if ($km().islastq) {
n172= echo -a Раунд: $km().roundnum
n173= echo -a %km_inter
n174= set %km_inter
n175=
n176= did -c km_table 202 $calc($did(km_table, 202, 1).sel + 1)
n177= if ($did(km_table, 202, 1).sel == 0) did -c km_table 202 1
n178= did -c km_table 204 1
n179= }
n180= else {
n181= did -c km_table 204 $calc($did(km_table, 204, 1).sel + 1)
n182= did -u km_table 219
n183= }
n184=
n185= km_setquiz $did(km_table, 204, 1).seltext
n186= }
n187=
n188= ;———— Блок 3 ————
n189=
n190= ;Показ результатов отбора
n191= elseif ($did == 301) km_quali_answers
n192= ;Установление отобравшихся игроками
n193= elseif ($did == 302) {
n194= set %km_inter_diff $inter_sort(%km_inter_diff, t, <)
n195= set %km_players
n196=
n197= var %i 1
n198= while (%i <= 8) {
n199= var %nick $inter_record(%km_inter_diff, %i).nick
n200=
n201= if (%nick == $null) break
n202= else {
n203= set %km_players $inter_setpts(%km_players, %nick, 0)
n204=
n205= inc %i
n206= }
n207= }
n208=
n209= set %km_inter_answers
n210= set %km_inter_diff
n211= set %km_inter_inc
n212= }
n213= ;Выдача войсов отобравшимся игрокам
n214= elseif ($did == 303) {
n215= var %players
n216= var %i 1
n217= while (%i <= $numtok(%km_players, 124)) {
n218= %players = $addtok(%players, $inter_record(%km_players, %i).nick, 32)
n219= inc %i
n220= }
n221=
n222= %players = $sorttok(%players, 32)
n223=
n224= mode %km_channel +vvvv $gettok(%players, 1-4, 32)
n225= mode %km_channel +vvvv $gettok(%players, 5-8, 32)
n226= }
n227= ;Плашка выбытия игрока с наименьшим счётом
n228= elseif ($did == 304) {
n229= set %km_players $inter_sort(%km_players, t)
n230=
n231= var %stats
n232=
n233= var %i 1
n234= while (%i <= $numtok(%km_players, 124)) {
n235= var %nick $inter_record(%km_players, %i).nick
n236= var %score $calc($km_stats(%nick).score + $km_stats(%nick).inc)
n237=
n238= %stats = $inter_setpts(%stats, %nick, %score)
n239=
n240= inc %i
n241= }
n242=
n243= %stats = $inter_sort(%stats)
n244=
n245= var %botscore $inter_record(%stats, $numtok(%stats, 124)).pts
n246=
n247= var %i 1
n248= var %shown $false
n249= while (%i <= $numtok(%km_players, 124)) {
n250= var %nick $inter_record(%km_players, %i).nick
n251= var %score $calc($inter_record(%km_players, %i).pts + $km_stats(%nick).inc)
n252=
n253= if (%score == %botscore) {
n254= msgopt %km_channel $km_table_line(14 01, 15 14, X, %nick, %score, $null) $iif(%shown == $false && $km().roundnum isnum 1-6, $km_playsound(out $+ $km().roundnum $+ .mp3))
n255= %shown = $true
n256= }
n257=
n258= inc %i
n259= }
n260=
n261= set %km_players $inter_delete(%km_players, %nick)
n262= editbox -a //mode %km_channel -v %nick
n263= }
n264= ;Плашка победителя игры
n265= elseif ($did == 305) {
n266= set %km_players $inter_sort(%km_players, t)
n267=
n268= msgopt %km_channel $km_table_header(00, 03, Победитель) $sendsnd(km_appearance.wav km_win100.mp3)
n269= msgopt %km_channel $km_table_line(00 03, 01 09, W, $inter_record(%km_players, 1).nick, %km_prize Р)
n270= }
n271=}
n272=
n273=on *:dialog:km_table:dclick:*: {
n274= ;Воспроизведение музыки
n275= if ($did == 109) msg %km_channel $sendsnd(km_ $+ $did(km_table, 109).seltext)
n276=}
n277=
n278=on *:dialog:km_table:close:*: {
n279=
n280=}
n281=
n282=on *:mode:%km_channel: {
n283= ;Проверка мода +m канала игры
n284= if (m isin $1-) did -ra km_table 106 $iif(m isin $chan(%km_channel).mode, -m, +m)
n285=}
n286=
n287=;Чтение конфигурационного файла. $1 — секция, $2 — ключ
n288=alias -l km_readini {
n289= return $readini($km().config, n, $1, $2)
n290=}
n291=
n292=;Запись в конфигурационный файл. $1 — секция, $2 — ключ, $3 — значение
n293=alias -l km_writeini {
n294= writeini -n $km().config $1 $2 $3
n295=}
n296=
n297=;Удаление записей из конфигурационного файла. $1 — секция, $2 — ключ
n298=alias -l km_remini {
n299= remini -n $km().config $1 $2
n300=}
n301=
n302=;Воспроизведение музыки. $1 — название файла[, $2 — цвет текста, $3 — цвет фона текста]
n303=alias -l km_playsound {
n304= var %km_sounds $km_readini(config, sounds)
n305= return $sendsnd(km_ $+ $wildtok(%km_sounds, $1 $+ *, 1, 124), $2, $3)
n306=}
n307=
n308=;Показ логотипа
n309=alias km_showlogo {
n310= ;msgopt %km_channel 15,15...11,11>>>15,15....................................................................8,8<<<15,15...
n311= ;msgopt %km_channel 15,15.....11,11>>>15,15..............................................................2,2?????15,15.....
n312= ;msgopt %km_channel 15,15.......11,11>>>15,15...........................................................2,2??8,8<<15,15.2,2??15,15....
n313= ;msgopt %km_channel 15,15....4,4К15,15..4,4К15,15.11,11>4,4ТТТТТ15,15...4,4ООО15,15......2,2М15,15.....2,2М15,15..2,2ЕЕЕЕ15,15..2,2Н15,15...2,2Н15,15..2,2Ь15,15......2,2Ш15,15.2,2Ш15,15.2,2Ш15,15..2,2ЕЕЕЕ15,15.8,8<2,2??15,15...2,2??15,15....
n314= ;msgopt %km_channel 15,15....4,4К15,15.4,4К15,15....11,11>4,4Т11,11>15,15...4,4О15,15...4,4О15,15.....2,2ММ15,15...2,2ММ15,15..2,2Е15,15.....2,2Н15,15...2,2Н15,15..2,2Ь15,15......2,2Ш15,15.2,2Ш15,15.2,2Ш15,15..2,2Е15,15..8,8<<<15,15....2,2??15,15.....
n315= ;msgopt %km_channel 15,15....4,4КК15,15......4,4Т11,11>>>15,15.4,4О15,15...4,4О15,15.....2,2М15,15.2,2М15,15.2,2М15,15.2,2М15,15..2,2ЕЕЕ15,15...2,2ННННН15,15..2,2ЬЬЬЬ15,15...2,2Ш15,15.2,2Ш15,15.2,2Ш15,15..2,2ЕЕЕ8,8<15,15.....2,2??15,15......
n316= ;msgopt %km_channel 15,15....4,4К15,15.4,4К15,15....11,11>4,4Т11,11>15,15...4,4О15,15...4,4О15,15.....2,2М15,15..2,2М15,15..2,2М15,15..2,2Е15,15.....2,2Н15,15...2,2Н15,15..2,2Ь15,15...2,2Ь15,15..2,2Ш15,15.2,2Ш15,15.2,2Ш15,15..2,2Е15,15..8,8<<<15,15..2,2??15,15.......
n317= ;msgopt %km_channel 15,15....4,4К15,15..4,4К15,15.11,11>>>4,4Т15,15.....4,4ООО15,15......2,2М15,15.....2,2М15,15..2,2ЕЕЕЕ15,15..2,2Н15,15...2,2Н15,15..2,2ЬЬЬЬ15,15...2,2ШШШШШ15,15..2,2ЕЕЕЕ15,15.8,8<<<15,15.........
n318= ;msgopt %km_channel 15,15.......11,11>>>15,15............................................................8,8<2,2??15,15.......
n319= ;msgopt %km_channel 15,15.....11,11>>>15,15................................................................8,8<<<15,15.....
n320= ;msgopt %km_channel 15,15...11,11>>>15,15.....7,7ББББ15,15..7,7ОО15,15....7,7ЛЛ15,15.7,7Ь15,15....7,7Ш15,15.7,7Ш15,15.7,7Ш15,15..7,7АА15,15...7,7ЯЯЯ15,15.....7,7И15,15..7,7И15,15.7,7ГГГ15,15.7,7РРР15,15...7,7АА15,15......8,8<<<15,15...
n321= ;msgopt %km_channel 15,15.11,11>>>15,15.......7,7Б15,15....7,7О15,15..7,7О15,15..7,7Л15,15.7,7Л15,15.7,7Ь15,15....7,7Ш15,15.7,7Ш15,15.7,7Ш15,15.7,7А15,15..7,7А15,15.7,7Я15,15..7,7Я15,15.....7,7И15,15..7,7И15,15.7,7Г15,15...7,7Р15,15..7,7Р15,15.7,7А15,15..7,7А15,15.......8,8<<<15,15.
n322= ;msgopt %km_channel 11,11>>15,15.........7,7БББ15,15..7,7О15,15..7,7О15,15..7,7Л15,15.7,7Л15,15.7,7ЬЬЬ15,15..7,7Ш15,15.7,7Ш15,15.7,7Ш15,15.7,7А15,15..7,7А15,15.7,7Я15,15..7,7Я15,15.....7,7И15,15.7,7ИИ15,15.7,7Г15,15...7,7Р15,15..7,7Р15,15.7,7А15,15..7,7А15,15.........8,8<<
n323= ;msgopt %km_channel 15,15...........7,7Б15,15..7,7Б15,15.7,7О15,15..7,7О15,15..7,7Л15,15.7,7Л15,15.7,7Ь15,15..7,7Ь15,15.7,7Ш15,15.7,7Ш15,15.7,7Ш15,15.7,7АААА15,15..7,7ЯЯЯ15,15.....7,7ИИ15,15.7,7И15,15.7,7Г15,15...7,7РРР15,15..7,7АААА15,15...........
n324= ;msgopt %km_channel 15,15...........7,7БББ15,15...7,7ОО15,15..7,7ЛЛ15,15.7,7Л15,15.7,7ЬЬЬ15,15..7,7ШШШШШ15,15.7,7А15,15..7,7А15,15.7,7Я15,15..7,7Я15,15.....7,7И15,15..7,7И15,15.7,7Г15,15...7,7Р15,15....7,7А15,15..7,7А15,15...........
n325= ;msgopt %km_channel 15,15................................................................................
n326=
n327= ;«Красный парад» (11.06.2017)
n328= msgopt %km_channel 15,15...11,11>>>15,15.................................................................8,8<<<15,15...
n329= msgopt %km_channel 15,15.....11,11>>>15,15...........................................................2,2DDDDD15,15.....
n330= msgopt %km_channel 15,15.......11,11>>>15,15........................................................2,2DD8,8<<15,15.2,2DD15,15....
n331= msgopt %km_channel 15,15....4,4R15,15..4,4R15,15.11,11>4,4RRRRR15,15...4,4RRR15,15.......2,2D15,15...2,2D15,15..2,2D15,15...2,2D15,15..2,2DDDDD15,15...2,2DDD15,15...2,2D15,15...2,2D15,15....8,8<2,2DD15,15...2,2DD15,15....
n332= msgopt %km_channel 15,15....4,4R15,15.4,4R15,15....11,11>4,4R11,11>15,15...4,4R15,15...4,4R15,15......2,2D15,15...2,2D15,15..2,2D15,15...2,2D15,15....2,2D15,15....2,2D15,15...2,2D15,15..2,2D15,15..2,2D15,15...8,8<<<15,15....2,2DD15,15.....
n333= msgopt %km_channel 15,15....4,4RR15,15......4,4R11,11>>>15,15.4,4R15,15...4,4R15,15.......2,2DDDD15,15...2,2DDDD15,15....2,2D15,15....2,2D15,15...2,2D15,15..2,2DDD15,15..8,8<<<15,15.....2,2DD15,15......
n334= msgopt %km_channel 15,15....4,4R15,15.4,4R15,15....11,11>4,4R11,11>15,15...4,4R15,15...4,4R15,15..........2,2D15,15......2,2D15,15....2,2D15,15....2,2D15,15...2,2D15,15..2,2D15,15..2,2D15,15...8,8<<<15,15..2,2DD15,15.......
n335= msgopt %km_channel 15,15....4,4R15,15..4,4R15,15.11,11>>>4,4R15,15.....4,4RRR15,15...........2,2D15,15...2,2DDD15,15.....2,2D15,15.....2,2DDD15,15...2,2D15,15...2,2D15,15....8,8<<<15,15.........
n336= msgopt %km_channel 15,15.......11,11>>>15,15.........................................................8,8<2,2DD15,15.......
n337= msgopt %km_channel 15,15.....11,11>>>15,15.............................................................8,8<<<15,15.....
n338= msgopt %km_channel 15,15...11,11>>>15,15.................................................................8,8<<<15,15...
n339=}
n340=
n341=;Установление раунда. $1 — номер
n342=alias -l km_setround {
n343= did -r km_table 204
n344=
n345= var %i 1
n346= if ($1 isnum) {
n347= while (%i <= $calc(9 - $1 + 1)) {
n348= did -a km_table 204 $km_readquiz($1, %i)
n349= inc %i
n350= }
n351= }
n352= else {
n353= while ($km_readquiz($1, %i) != $null) {
n354= did -a km_table 204 $km_readquiz($1, %i)
n355= inc %i
n356= }
n357= }
n358=}
n359=
n360=;Чтение вопроса. $1 — номер раунда, $2 — номер вопроса
n361=alias -l km_readquiz {
n362= if ($1 isnum) var %round round $+ $1
n363= elseif ($1 == Ф) var %round final
n364= elseif ($1 == R) var %round reserve
n365= else var %round quali
n366=
n367= return $km_readini(%round, quiz $+ $2)
n368=}
n369=
n370=;Обработка строки вопроса. $1 — строка вопроса
n371=alias -l km_quiz {
n372= if ($prop == source) return $1
n373= else {
n374= if ($prop == photo) var %i 4
n375= elseif ($prop == comment) var %i 3
n376= elseif ($prop == correct) var %i 2
n377= else var %i 1
n378=
n379= return $gettok($1, %i, 124)
n380= }
n381=}
n382=
n383=;Установление вопроса. $1 — исходная строка
n384=alias -l km_setquiz {
n385= did -u km_table 219
n386= did -ra km_table 206 $km_quiz($1-).question
n387= did -ra km_table 208 $km_quiz($1-).correct
n388= did -ra km_table 213 $km_quiz($1-).photo
n389= did -ra km_table 215 $km_quiz($1-).comment
n390=}
n391=
n392=;Текущий вопрос
n393=alias -l km_currentquiz {
n394= if ($prop == question) {
n395= var %i 1
n396= var %result
n397= while (%i <= $did(km_table, 206).lines) {
n398= %result = $instok(%result, $did(km_table, 206, %i).text, 0, $iif($right(%result, 1) == -, 45, $iif($right(%result, 1) == ~, 126, 32)))
n399= inc %i
n400= }
n401= return %result
n402= }
n403= elseif ($prop == correct) return $did(km_table, 208).text
n404= elseif ($prop == comment) {
n405= var %i 1
n406= var %result
n407= while (%i <= $did(km_table, 215).lines) {
n408= %result = $instok(%result, $did(km_table, 215, %i).text, 0, $iif($right(%result, 1) == -, 45, $iif($right(%result, 1) == ~, 126, 32)))
n409= inc %i
n410= }
n411= return %result
n412= }
n413= elseif ($prop == photo) return $did(km_table, 213).text
n414= elseif ($prop == min || $prop == max || $prop == range) {
n415= var %correct $did(km_table, 208).text
n416= var %range $round($calc(%correct / 4), 0)
n417= if ($prop == min) return $iif($calc(%correct - %range) < 0, 0, $calc(%correct - %range))
n418= elseif ($prop == max) return $iif($calc(%correct + %range) > 9999, 9999, $calc(%correct + %range))
n419= else return %range
n420= }
n421=}
n422=
n423=;Показ вопроса. $1 — текст вопроса
n424=alias -l km_showq {
n425= msg %km_channel $km_playsound(appear)
n426=
n427= var %border1 4,4...
n428= var %border2 4,4.0?4.
n429=
n430= var %line_len $calc(%km_graph_len - $len($strip(%border1)) * 2 - 2)
n431= var %wrapped $wraptext($1-, %line_len)
n432= var %lines_count $numtok(%wrapped, 126)
n433=
n434= var %i 1
n435= while (%i <= %lines_count) {
n436= if (%i == $floor($calc((%lines_count + 1) / 2))) var %border %border2
n437= else var %border %border1
n438=
n439= ;if ($numtok(%wrapped, 126) > 1) msgopt %km_channel %border $+ 6,6. $+ $align_c($gettok(%wrapped, %i, 126), %line_len, ., 00, 06) $+ 6,6. $+ %border
n440= ;else msgopt %km_channel %border $+ 6,6. $+ $align_c($iif(%i == 2, %wrapped), %line_len, ., 00, 06) $+ 6,6. $+ %border
n441= msgopt %km_channel %border $+ 6,6. $+ $align_c($gettok(%wrapped, %i, 126), %line_len, ., 00, 06) $+ 6,6. $+ %border
n442= inc %i
n443= }
n444=}
n445=
n446=;Запуск таймера
n447=alias -l km_starttimer {
n448= msg %km_channel 14,14.0!14. Время пошло! $km_playsound(answ)
n449= did -c km_table 210
n450=
n451= var %5secsmsg 5Осталось 5,5.0055. 5секунд!
n452= .timeranswer5 -m 1 12900 msgopt %km_channel $align_c(%5secsmsg, %km_graph_len, )
n453=
n454= var %stopmsg 4Время вышло! 4,4.0—4.
n455= .timeranswerend -m 1 17900 msgopt %km_channel $align_r(%stopmsg, %km_graph_len, )
n456= .timersummplayers -m 1 17900 km_summarize_players
n457= .timersumminter -m 1 17900 km_summarize_inter
n458= .timeransmode -m 1 17900 did -u km_table 210
n459=}
n460=
n461=;Подведение итогов по вопросу
n462=alias -l km_summarize {
n463= km_summarize_players
n464= km_summarize_inter
n465=}
n466=
n467=;Подведение итогов игроков по вопросу. $1 — ник игрока
n468=alias km_summarize_players {
n469= ;Вычисление разниц игроков
n470= set %km_players_diff
n471=
n472= var %i 1
n473= while (%i <= $numtok(%km_players_answers, 124)) {
n474= var %nick $inter_record(%km_players_answers, %i).nick
n475= var %answer $inter_record(%km_players_answers, %nick).pts
n476= set %km_players_diff $inter_setpts(%km_players_diff, %nick, $abs($calc(%answer - $km_currentquiz().correct)))
n477=
n478= inc %i
n479= }
n480=
n481= set %km_players_diff $inter_sort(%km_players_diff, t, <)
n482=
n483= ;Реверс разниц игроков — начисляемые очки
n484= set %km_players_inc
n485=
n486= var %i 1
n487= while (%i <= $numtok(%km_players_diff, 124)) {
n488= var %nick $inter_record(%km_players_diff, %i).nick
n489= ;var %prevpts $inter_record(%km_playerss, %nick).pts
n490= var %reward $inter_record(%km_players_diff, $calc($numtok(%km_players_diff, 124) + 1 - %i)).pts
n491=
n492= set %km_players_inc $inter_setpts(%km_players_inc, %nick, %reward)
n493=
n494= inc %i
n495= }
n496=}
n497=
n498=;Подведение итогов интерактива по вопросу. $1 — ник интерактивщика
n499=alias km_summarize_inter {
n500= ;Вычисление разниц интерактивщиков
n501= set %km_inter_diff
n502=
n503= var %i 1
n504= while (%i <= $numtok(%km_inter_answers, 124)) {
n505= var %nick $inter_record(%km_inter_answers, %i).nick
n506= var %answer $inter_record(%km_inter_answers, %nick).pts
n507= set %km_inter_diff $inter_setpts(%km_inter_diff, %nick, $abs($calc(%answer - $km_currentquiz().correct)))
n508=
n509= inc %i
n510= }
n511=
n512= set %km_inter_diff $inter_sort(%km_inter_diff, t, <)
n513=
n514= ;Вычисление начисляемых очков
n515= set %km_inter_inc
n516=
n517= var %i 1
n518= while (%i <= $numtok(%km_inter_diff, 124)) {
n519= var %nick $inter_record(%km_inter_diff, %i).nick
n520= var %diff $inter_record(%km_inter_diff, %nick).pts
n521=
n522= if (%diff <= $km_currentquiz().range) set %km_inter_inc $inter_setpts(%km_inter_inc, %nick, %diff)
n523=
n524= inc %i
n525= }
n526=}
n527=
n528=;Отправка информации основному ведущему. $1 — ник ведущего
n529=alias km_parade_sendinter {
n530= var %i 1
n531= var %nicks
n532= var %pts
n533=
n534= while (%i <= $numtok(%km_inter, 124)) {
n535= var %nick $inter_record(%km_inter, %i).nick
n536= var %score $km_stats(%nick).score
n537=
n538= %nicks = $instok(%nicks, %nick, 0, 32)
n539= %pts = $instok(%pts, %score, 0, 32)
n540=
n541= inc %i
n542= }
n543=
n544= msg %gamehost %nicks
n545= msg %gamehost %pts
n546=}
n547=
n548=;Заголовок таблицы. $1 — цвет текста, $2 — цвет фона текста, $3 — заголовок первой ячейки, $4 — заголовок второй ячейки, $5 — заголовок третьей ячейки
n549=alias -l km_table_header {
n550= return $+($colorcode($2, $2), ..., $align_c($3, $calc(%km_colwidth1 + 1), ., $1, $2), $colorcode($2, $2), ., $align_c($4, %km_colwidth2, ., $1, $2), $colorcode($2, $2), ., $align_c($5, %km_colwidth2, ., $1, $2), $colorcode($2, $2), ., $chr(3))
n551=}
n552=
n553=;Строка таблицы. $1 — цвет сетки (fg bg), $2 — цвет ячейки (fg bg), $3 — текст левой границы, $4 — текст первой ячейки, $5 — текст второй ячейки, $6 — текст третьей ячейки
n554=alias -l km_table_line {
n555= var %fc_border $gettok($1, 1, 32)
n556= var %bc_border $gettok($1, 2, 32)
n557=
n558= var %fc_cell $gettok($2, 1, 32)
n559= var %bc_cell $gettok($2, 2, 32)
n560=
n561= var %border $colorcode(%bc_border, %bc_border) $+ .
n562=
n563= var %text2 $align_c($align_r($5, $calc(%km_colwidth2 - 4), ., %fc_cell, %bc_cell), %km_colwidth2, ., %fc_cell, %bc_cell)
n564= var %text3 $align_c($align_r($6, $calc(%km_colwidth2 - 4), ., %fc_cell, %bc_cell), %km_colwidth2, ., %fc_cell, %bc_cell)
n565=
n566= return $+($align_c($3, 3, ., %fc_border, %bc_border), $colorcode(%bc_cell, %bc_cell), ., $align_l($left($4, $calc(%km_colwidth1 - 1)), %km_colwidth1, ., %fc_cell, %bc_cell), %border, %text2, %border, %text3, %border, $chr(3))
n567=}
n568=
n569=;Подведение итогов игрока по вопросу. $1 — ник игрока
n570=alias -l km_stats {
n571= var %status $iif($inter_record(%km_players, $1).pts != $null, players, inter)
n572=
n573= if ($prop == score) return $inter_record($eval(% $+ km_ $+ %status, 2), $1).pts
n574= elseif ($prop == answer) return $inter_record($eval(% $+ km_ $+ %status $+ _answers, 2), $1).pts
n575= elseif ($prop == diff) return $inter_record($eval(% $+ km_ $+ %status $+ _diff, 2), $1).pts
n576= elseif ($prop == inc) return $inter_record($eval(% $+ km_ $+ %status $+ _inc, 2), $1).pts
n577= elseif ($prop == newscore) {
n578= return $calc($inter_record($eval(% $+ km_ $+ %status, 2), $1).pts + $inter_record($eval(% $+ km_ $+ %status $+ _diff, 2), $1).pts)
n579= }
n580=}
n581=
n582=;Показ ответов игроков. $1 — показ разницы (0 / 1)
n583=alias -l km_showanswers {
n584= msgopt %km_channel $km_table_header(01, 07, Игрок, Ответ, $iif($1 == 1, Разница)) $+ $chr(3) $km_playsound(appear)
n585=
n586= if ($1 == 1) {
n587= ;Сортировка игроков по возрастанию разницы
n588= var %km_players_sorted = %km_players_diff
n589= var %topdiff $inter_record(%km_players_sorted, 1).pts
n590= }
n591= ;Сортировка игроков по алфавиту
n592= else var %km_players_sorted $sorttok(%km_players_answers, 124)
n593=
n594= var %i 1
n595= while (%i <= $numtok(%km_players_sorted, 124)) {
n596= var %nick $inter_record(%km_players_sorted, %i).nick
n597=
n598= ;if ($1 == 1 && %diff == %topdiff) msgopt %km_channel $km_table_line(00 03, 01 00, %i, %nick, %answer, %diff) 03+ $+ $calc(%diff + %km_roundpts)
n599= ;else msgopt %km_channel $km_table_line(01 07, 01 08, %i, %nick, %answer, $iif($1 == 1, %diff))
n600= msgopt %km_channel $km_table_line(01 07, 01 08, $iif($1 == 1, %i, ?), %nick, $km_stats(%nick).answer, $iif($1 == 1, $km_stats(%nick).diff))
n601=
n602= inc %i
n603= }
n604=}
n605=
n606=;Показ ответов игроков в отборе
n607=alias -l km_quali_answers {
n608= msgopt %km_channel $align_c(Результаты вопроса, $len($strip($km_table_header(00, 12))), ., 08, 01) $+ $chr(3) $km_playsound(appear)
n609= msgopt %km_channel $km_table_header(00, 01, Игрок, Ответ, Разница)
n610=
n611= set %km_inter_diff $inter_sort(%km_inter_diff, t, <)
n612=
n613= var %i 1
n614= while (%i <= $numtok(%km_inter_answers, 124)) {
n615= var %nick $inter_record(%km_inter_diff, %i).nick
n616=
n617= ;if (%i <= 8) var %line $km_table_line(15 01, 01 15, %i, %nick, $km_stats(%nick).answer, $km_stats(%nick).diff)
n618= if ($km_stats(%nick).diff <= $km_currentquiz().range) var %line $km_table_line(15 01, 01 15, +, %nick, $km_stats(%nick).answer, $km_stats(%nick).diff)
n619= else var %line $km_table_line(14 01, 14 15, –, %nick, $km_stats(%nick).answer, $km_stats(%nick).diff)
n620=
n621= .timer -md 1 $calc($iif(%i <= 8, %i, 9) * 1500) msgopt %km_channel %line
n622=
n623= inc %i
n624= }
n625=}
n626=
n627=;Показ счёта
n628=alias -l km_showstats {
n629= msgopt %km_channel $km_table_header(00, 05, Игрок, Счёт) $km_playsound(appear)
n630=
n631= var %stats
n632=
n633= var %i 1
n634= while (%i <= $numtok(%km_players, 124)) {
n635= var %nick $inter_record(%km_players, %i).nick
n636= var %score $calc($km_stats(%nick).score + $km_stats(%nick).inc)
n637=
n638= %stats = $inter_setpts(%stats, %nick, %score)
n639=
n640= inc %i
n641= }
n642=
n643= %stats = $inter_sort(%stats)
n644=
n645= var %botscore $inter_record(%stats, $numtok(%stats, 124)).pts
n646=
n647= var %i 1
n648= while (%i <= $numtok(%stats, 124)) {
n649= var %nick $inter_record(%stats, %i).nick
n650= var %score $inter_record(%stats, %i).pts
n651=
n652= if ($km().correctshown == 1 && $km().islastq && %score == %botscore) msgopt %km_channel $km_table_line(00 05, 00 04, %i, %nick, %score, $null)
n653= else msgopt %km_channel $km_table_line(00 05, 00 06, %i, %nick, %score, $null)
n654=
n655= inc %i
n656= }
n657=}
n658=
n659=;Результаты интерактива за данный вопрос
n660=alias -l km_showinter_q {
n661= msg %km_channel $align_c(Топ-3 рез-ты интерактива за данный вопрос, $len($strip($km_table_header(00, 12))), ., 00, 02) $+ $chr(3) $km_playsound(appear)
n662= msg %km_channel $km_table_header(00, 12, Игрок, Ответ, Прибавка)
n663=
n664= set %km_inter_inc $inter_sort(%km_inter_inc, t)
n665=
n666= var %i 1
n667= while (%i <= $iif($numtok(%km_inter_inc, 124) > 3, 3, $numtok(%km_inter_inc, 124))) {
n668= var %nick $inter_record(%km_inter_inc, %i).nick
n669= msgopt %km_channel $km_table_line(00 12, 01 11, %i, %nick, $km_stats(%nick).answer, $km_stats(%nick).inc)
n670=
n671= inc %i
n672= }
n673=}
n674=
n675=;Результаты интерактива в общем. $1 — показывать ли выигрыш лидера (0 / 1)
n676=alias -l km_showinter_overall {
n677= msgopt %km_channel $align_c(Топ-3 интерактива, $len($strip($km_table_header(00, 12))), ., 00, 02) $+ $chr(3) $km_playsound(appear)
n678= msgopt %km_channel $km_table_header(00, 12, Игрок, Счёт)
n679=
n680= set %km_inter $inter_sort(%km_inter)
n681= var %topscore $inter_record(%km_inter, 1).pts
n682=
n683= var %i 1
n684= while (%i <= $iif($numtok(%km_inter, 124) > 3, 3, $numtok(%km_inter, 124))) {
n685= var %nick $inter_record(%km_inter, %i).nick
n686= var %score $calc($km_stats(%nick).score + $km_stats(%nick).inc)
n687=
n688= if ($km_stats(%nick).score == %topscore && %topscore > 0) {
n689= if ($1 == 1) {
n690= var %roundnum $replace($km().roundnum, Ф, 7)
n691= var %k $calc(0.01 + 0.005 * $iif(%roundnum isnum, $calc(%roundnum - 1), 0))
n692= var %sum $stm.f_money($calc(%score * %k)) Р
n693= msgopt %km_channel $km_table_line(01 09, 01 00, %i, %nick, %score, %sum)
n694= }
n695= else msgopt %km_channel $km_table_line(01 09, 01 00, %i, %nick, %score)
n696= }
n697= else msgopt %km_channel $km_table_line(00 12, 01 11, %i, %nick, %score)
n698=
n699= inc %i
n700= }
n701=}
n702=
n703=;Зачисление очков
n704=alias -l km_transact {
n705= km_transact_players
n706= km_transact_inter
n707=}
n708=
n709=;Зачисление очков игрокам
n710=alias -l km_transact_players {
n711= var %i 1
n712= while (%i <= $numtok(%km_players_inc, 124)) {
n713= var %nick $inter_record(%km_players_inc, %i).nick
n714= var %inc $inter_record(%km_players_inc, %i).pts
n715=
n716= set %km_players $inter_addpts(%km_players, %nick, %inc)
n717=
n718= inc %i
n719= }
n720=}
n721=
n722=;Зачисление очков интерактивщикам
n723=alias km_transact_inter {
n724= var %i 1
n725= while (%i <= $numtok(%km_inter_inc, 124)) {
n726= var %nick $inter_record(%km_inter_inc, %i).nick
n727= var %inc $inter_record(%km_inter_inc, %i).pts
n728=
n729= set %km_inter $inter_addpts(%km_inter, %nick, %inc)
n730=
n731= inc %i
n732= }
n733=}
n734=
n735=;Обработка привата
n736=on *:text:*:?: {
n737= if ($km().ansmode == 1) {
n738= var %answer $lower($strip($1))
n739=
n740= if (%answer isnum 0-9999) {
n741= ;Ответил действуюший игрок
n742= if ($inter_record(%km_players, $nick).pts >= 0) set %km_players_answers $inter_setpts(%km_players_answers, $nick, %answer)
n743= ;Ответил интерактивщик, которого нет в числе ответивших
n744= elseif ($inter_record(%km_inter_answers, $nick).pts == $null) set %km_inter_answers $inter_setpts(%km_inter_answers, $nick, %answer)
n745= }
n746= }
n747=}