|
бот для битвы гладиаторов "Небеса", да будет жесть! |
|
|
BSW_rama |
27.3.2013, 21:33
|
Apprentice
Сообщений: 188
Регистрация: 28.1.2013 Группа: Пользователи Наличность: 0
Пользователь №: 15.728
Возраст: 32
|
собсно вставляем в пилот, помечаем поле битвы, и выигрываем (IMG: style_emoticons/default/smile.gif). только помним что противник юзает подобного рода программы, противник может думать своей головой и видеть последствия хода, а не только сам ход, чем выбрать ход менее продуктивный но более выгодный стратегически. ну и на последок - у меня целерон Е3200 на частоте 3200МГц просчитывает 3 вариации за 20 сек, на ход остаётся от 3-4 до 5-7 сек, как повезёт. линию в 5 делает автоматом сразу, если проскакивает линия из 5 в промежутке вы это увидите последним вариантом хода. если у вас проц посильнее, у вас будет больше времени на размышления. так же время сокращается когда куб/крест или куб+крест недоступны. чисто двиг камнями считается у меня примерно 5-6 сек, куб/крест около 6-8 сек каждый. пример использование этого скрипта для совершения ходов в прокачке эликами. для прокачки был использован большой алтарь (удачно выпал) брони у него дофига поэтому бить его можно сколь угодно, сам не пинается, несчитая мизерного урона черепами (IMG: style_emoticons/default/smile.gif). я заправил голого герроя , ибо нефих портить крутые доспехи на чепуху, поэтому скрипт был поставлен в автомат на максимальную ману. чтобы снабжать маной берсерка и щит веры. http://youtu.be/KE1OE4Sfamgформат вывода варианта хода 1 5 1 9 сумма первая цифра то чем совершается ход 1 - сдвиг, 2 - куб, 3 -крест. далее група из трёх чисел это сумма урона лечения маны. для куба и креста выводится показатель за вычетом стоимости хода, поэтому могут быть отрицательные значения. текст - собсно какой максимальный показатель выведен. название
:start set #a findcolor (0 0 1000 400 1 1 (60667) %a 2 1) if_not #a = 1 wait 100 goto start end_if gosub setpanel :wars if %go[1 1], %go[1 2] %go[1 3] for #nsx 1 8 1 for #nsy 1 9 1 set %steep[#nsx #nsy] 0 end_for end_for gosub polecolor set %seltyp[1] 0 set %seltyp[2] 0 set %seltyp[3] 0 gosub get5 if #get5 = 1 alarm goto wars end_script end_if if %lpanel[2 1], %lpanel[2 2] %lpanel[2 3] set %seltyp[2] 1 end_if if %lpanel[3 1], %lpanel[3 2] %lpanel[3 3] set %seltyp[3] 1 end_if set #line3ok 0 set #line5ok 0 gosub poledo if %seltyp[2] = 1 gosub bestkub end_if if %seltyp[3] = 1 // and %seltyp[2] = 0 gosub bestkrest end_if set #gg 0 set $a1 %steep[1 9] %steep[1 1] %steep[1 2] %steep[1 3] мана set $a2 %steep[2 9] %steep[2 1] %steep[2 2] %steep[2 3] сумма set $a3 %steep[3 9] %steep[3 1] %steep[3 2] %steep[3 3] урон set $a4 %steep[4 9] %steep[4 1] %steep[4 2] %steep[4 3] урон + мана set $a5 %steep[5 9] %steep[5 1] %steep[5 2] %steep[5 3] лечение + мана set $a6 %steep[8 9] %steep[8 1] %steep[8 2] %steep[8 3] 5 set #gg prompt ($a1 $a2 $a3 $a4 $a5 $a6) if #gg = 6 set #gg 8 end_if if #gg = 0 if %steep[8 4] > 0 set #gg 8 end_if gosub volmana if #warmana < 5 and %steep[4 3] < 1 set #gg 2 end_if if #warmana < 5 and %steep[4 3] > 0 set #gg 4 end_if if #warmana > 4 set #gg 3 end_if end_if move %steep[#gg 4], %steep[#gg 5] left %steep[#gg 4], %steep[#gg 5] wait 100 move %steep[#gg 6], %steep[#gg 7] left %steep[#gg 6], %steep[#gg 7] wait 500 move %a[1 1], %lpanel[1 2] end_if wait 100 goto wars end_script
:volmana for #warmanalvlx #warmanalx #warmanarx 7 get color #warmanalvl #warmanalvlx #warmanaly if #warmanalvl = 16760105 or #warmanalvl = 16745985 set #warmana (#warmanalvlx - #warmanalx) / 7 end_if end_for return
:life for #lifelvlx #lifelx #liferx 7 get color #lifelvl #lifelvlx #lifely move #lifelvlx, #lifely if #lifelvl = 1599999 or #lifelvl = 15566 set #life (#lifelvlx - #lifelx) / 7 end_if end_for return
:mind set %mindsumm[1] 0 set %mindsumm[2] 0 set %mindsumm[3] 0 set #linebest 0 set %mind1 %poleu set %mind1[#mindinx1 #mindiny1] %poleu[#mindinx2 #mindiny2] set %mind1[#mindinx2 #mindiny2] %poleu[#mindinx1 #mindiny1] set %mind3 %mind1 gosub mindsumm gosub mindcompres gosub calcmindsumm if #steplvl = 1 return end_if set %mind1 %mind3 gosub mindsumm if #line5ok = 1 set #linebest = 1 end_if if #line3ok = 0 return end_if gosub mindcompres gosub calcmindsumm if #steplvl = 2 return end_if set %mind1 %mind3 gosub mindsumm if #line5ok = 1 set #linebest = 1 end_if if #line3ok = 0 return end_if gosub mindcompres gosub calcmindsumm if #steplvl = 3 return end_if set %mind1 %mind3 gosub mindsumm if #line5ok = 1 set #linebest = 1 end_if if #line3ok = 0 return end_if gosub mindcompres gosub calcmindsumm if #steplvl = 4 return end_if set %mind1 %mind3 gosub mindsumm if #line5ok = 1 set #linebest = 1 end_if if #line3ok = 0 return end_if gosub calcmindsumm return
:mindcompres for #mindy 6 2 -1 set #mindy1 #mindy - 1 for #mindx 1 6 1 if %mind3[#mindx #mindy] = 0 set #loopstop 0 for #mindy2 #mindy1 1 -1 if #loopstop = 0 if %mind3[#mindx #mindy2] > 0 set %mind3[#mindx #mindy] %mind3[#mindx #mindy2] set %mind3[#mindx #mindy2] 0 set #loopstop 1 end_if end_if end_for end_if end_for end_for return
:calcmindsumm for #mindy 1 6 1 for #mindx 1 6 1 if %mind2[#mindx #mindy] = 1 set %mindsumm[1] %mindsumm[1] + 5 goto endcalc end_if if %mind2[#mindx #mindy] = 10 set %mindsumm[2] %mindsumm[2] + 1 goto endcalc end_if if %mind2[#mindx #mindy] = 100 set %mindsumm[3] %mindsumm[3] + 5 goto endcalc end_if if %mind2[#mindx #mindy] = 1000 set %mindsumm[3] %mindsumm[3] + 3 goto endcalc end_if if %mind2[#mindx #mindy] = 10000 set %mindsumm[3] %mindsumm[3] + 1 goto endcalc end_if :endcalc set %mind2[#mindx #mindy] 0 end_for end_for return
:polecolor set #checkcolor 0 set #sumx 0 set #errorcolor 0 for #y 1 6 1 if #errorcolor = 1 break end_if :checkcolor for #x 1 6 1 if #errorcolor = 1 break end_if get color #c %polex[#x #y] %poley[#x #y] set %poleu[#x #y] 0 if #c = 5344685 set %poleu[#x #y] 1 goto endpolcol end_if if #c = 8360347 set %poleu[#x #y] 10 goto endpolcol end_if if #c = 1245314 set %poleu[#x #y] 100 goto endpolcol end_if if #c = 302028 set %poleu[#x #y] 1000 goto endpolcol end_if if #c = 145428 set %poleu[#x #y] 10000 goto endpolcol end_if if %poleu[#x #y] < 1 set #errorcolor 1 break end_if :endpolcol if #y = 1 set #sumx #sumx + %poleu[#x #y] end_if end_for if #checkcolor = 1 goto checkcolorend end_if end_for :checkcolorend if #checkcolor = 0 set #sumxchek #sumx set #checkcolor 1 set #y 1 set #sumx 0 goto checkcolor end_if if #checkcolor = 1 if_not #sumxchek = #sumx goto polecolor end_if end_if if #errorcolor = 1 goto polecolor end_if return
:bestkrest for #bky 1 6 1 for #bkx 1 6 1 set #linebest 0 set %mindsumm[1] 0 set %mindsumm[2] 0 set %mindsumm[3] 0 set %mind3 %poleu for #ykrest -2 2 1 set #bkyz #bky + #ykrest if #bkyz > 0 and #bkyz < 7 set %mind2[#bkx #bkyz] %mind3[#bkx #bkyz] set %mind3[#bkx #bkyz] 0 end_if end_for for #xkrest -2 2 1 set #bkxz #bkx + #xkrest if #bkxz > 0 and #bkxz < 7 and #bkxz <> #bkx set %mind2[#bkxz #bky] %mind3[#bkxz #bky] set %mind3[#bkxz #bky] 0 end_if end_for gosub mindcompres gosub calcmindsumm if #steplvl = 1 goto steepkrest end_if set %mind1 %mind3 gosub mindsumm if #line5ok = 1 set #linebest 1 end_if if #line3ok = 0 goto steepkrest end_if gosub calcmindsumm if #steplvl = 2 goto steepkrest end_if gosub mindcompres set %mind1 %mind3 gosub mindsumm if #line5ok = 1 set #linebest 1 end_if if #line3ok = 0 goto steepkrest end_if gosub calcmindsumm if #steplvl = 3 goto steepkrest end_if gosub mindcompres set %mind1 %mind3 gosub mindsumm if #line5ok = 1 set #linebest 1 end_if if #line3ok = 0 goto steepkrest end_if gosub calcmindsumm if #steplvl = 4 goto steepkrest end_if gosub mindcompres set %mind1 %mind3 gosub mindsumm if #line5ok = 1 set #linebest 1 end_if if #line3ok = 0 goto steepkrest end_if gosub calcmindsumm :steepkrest set %mindsumm[3] %mindsumm[3] - 20 if #linebest = 1 set %steep[8 1] %mindsumm[1] set %steep[8 2] %mindsumm[2] set %steep[8 3] %mindsumm[3] set %steep[8 4] %lpanel[3 1] set %steep[8 5] %lpanel[3 2] set %steep[8 6] %polex[#bkx #bky] set %steep[8 7] %poley[#bkx #bky] set %steep[8 9] 3 end_if if %mindsumm[3] > %steep[1 3] set %steep[1 1] %mindsumm[1] set %steep[1 2] %mindsumm[2] set %steep[1 3] %mindsumm[3] set %steep[1 4] %lpanel[3 1] set %steep[1 5] %lpanel[3 2] set %steep[1 6] %polex[#bkx #bky] set %steep[1 7] %poley[#bkx #bky] set %steep[1 9] 3 end_if set #asd %mindsumm[1] + %mindsumm[2] if %mindsumm[3] = %steep[1 3] and #asd > %steep[1 8] set %steep[1 1] %mindsumm[1] set %steep[1 2] %mindsumm[2] set %steep[1 3] %mindsumm[3] set %steep[1 4] %lpanel[3 1] set %steep[1 5] %lpanel[3 2] set %steep[1 6] %polex[#bkx #bky] set %steep[1 7] %poley[#bkx #bky] set %steep[1 8] #asd set %steep[1 9] 3 end_if set #dsf %mindsumm[1] + %mindsumm[2] + %mindsumm[3] if #dsf > %steep[2 8] set %steep[2 1] %mindsumm[1] set %steep[2 2] %mindsumm[2] set %steep[2 3] %mindsumm[3] set %steep[2 4] %lpanel[3 1] set %steep[2 5] %lpanel[3 2] set %steep[2 6] %polex[#bkx #bky] set %steep[2 7] %poley[#bkx #bky] set %steep[2 8] #dsf set %steep[2 9] 3 end_if set #dsf1 %mindsumm[1] + %mindsumm[2] set #dsf2 %steep[2 1] + %steep[2 2] if #dsf = %steep[2 8] and %mindsumm[3] > 20 and #dsf1 > #dsf2 set %steep[2 1] %mindsumm[1] set %steep[2 2] %mindsumm[2] set %steep[2 3] %mindsumm[3] set %steep[2 4] %lpanel[3 1] set %steep[2 5] %lpanel[3 2] set %steep[2 6] %polex[#bkx #bky] set %steep[2 7] %poley[#bkx #bky] set %steep[2 8] #dsf set %steep[2 9] 3 end_if set #dsf %mindsumm[1] + %mindsumm[2] if #dsf > %steep[3 8] set %steep[3 1] %mindsumm[1] set %steep[3 2] %mindsumm[2] set %steep[3 3] %mindsumm[3] set %steep[3 4] %lpanel[3 1] set %steep[3 5] %lpanel[3 2] set %steep[3 6] %polex[#bkx #bky] set %steep[3 7] %poley[#bkx #bky] set %steep[3 8] #dsf set %steep[3 9] 3 end_if if #dsf > %steep[4 8] and %mindsumm[3] > 0 set %steep[4 1] %mindsumm[1] set %steep[4 2] %mindsumm[2] set %steep[4 3] %mindsumm[3] set %steep[4 4] %lpanel[3 1] set %steep[4 5] %lpanel[3 2] set %steep[4 6] %polex[#bkx #bky] set %steep[4 7] %poley[#bkx #bky] set %steep[4 8] #dsf set %steep[4 9] 3 end_if if #dsf = %steep[4 8] and %mindsumm[3] > %steep[4 3] set %steep[4 1] %mindsumm[1] set %steep[4 2] %mindsumm[2] set %steep[4 3] %mindsumm[3] set %steep[4 4] %lpanel[2 1] set %steep[4 5] %lpanel[2 2] set %steep[4 6] %polex[#bkx #bky] set %steep[4 7] %poley[#bkx #bky] set %steep[4 8] #dsf set %steep[4 9] 3 end_if if #dsf = %steep[3 8] and %mindsumm[3] > %steep[3 3] set %steep[3 1] %mindsumm[1] set %steep[3 2] %mindsumm[2] set %steep[3 3] %mindsumm[3] set %steep[3 4] %lpanel[3 1] set %steep[3 5] %lpanel[3 2] set %steep[3 6] %polex[#bkx #bky] set %steep[3 7] %poley[#bkx #bky] set %steep[3 9] 3 end_if set #dsf %mindsumm[2] + %mindsumm[3] if #dsf > %steep[5 8] and %mindsumm[2] > 0 set %steep[5 1] %mindsumm[1] set %steep[5 2] %mindsumm[2] set %steep[5 3] %mindsumm[3] set %steep[5 4] %lpanel[2 1] set %steep[5 5] %lpanel[2 2] set %steep[5 6] %polex[#bkx #bky] set %steep[5 7] %poley[#bkx #bky] set %steep[5 8] #dsf set %steep[5 9] 3 end_if if #dsf = %steep[5 8] and %mindsumm[2] > 0 and %mindsumm[1] > %steep[5 1] set %steep[5 1] %mindsumm[1] set %steep[5 2] %mindsumm[2] set %steep[5 3] %mindsumm[3] set %steep[5 4] %lpanel[2 1] set %steep[5 5] %lpanel[2 2] set %steep[5 6] %polex[#bkx #bky] set %steep[5 7] %poley[#bkx #bky] set %steep[5 8] #dsf set %steep[5 9] 3 end_if end_for end_for return
:bestkub for #bky 1 6 1 for #bkx 1 6 1 set #linebest 0 set %mindsumm[1] 0 set %mindsumm[2] 0 set %mindsumm[3] 0 set %mind3 %poleu for #bkyd -1 1 1 set #bkyz #bky + #bkyd if #bkyz > 0 and #bkyz < 7 for #bkxd -1 1 1 set #bkxz #bkx + #bkxd if #bkxz > 0 and #bkxz < 7 set %mind2[#bkxz #bkyz] %mind3[#bkxz #bkyz] set %mind3[#bkxz #bkyz] 0 end_if end_for end_if end_for gosub calcmindsumm if #steplvl = 1 goto steepkub end_if gosub mindcompres set %mind1 %mind3 gosub mindsumm if #line5ok = 1 set #linebest 1 end_if if #line3ok = 0 goto steepkub end_if gosub calcmindsumm if #steplvl = 2 goto steepkub end_if gosub mindcompres set %mind1 %mind3 gosub mindsumm if #line5ok = 1 set #linebest 1 end_if if #line3ok = 0 goto steepkub end_if gosub calcmindsumm if #steplvl = 3 goto steepkub end_if gosub mindcompres set %mind1 %mind3 gosub mindsumm if #line5ok = 1 set #linebest 1 end_if if #line3ok = 0 goto steepkub end_if gosub calcmindsumm if #steplvl = 4 goto steepkub end_if gosub mindcompres set %mind1 %mind3 gosub mindsumm if #line5ok = 1 set #linebest 1 end_if if #line3ok = 0 goto steepkub end_if gosub calcmindsumm :steepkub set %mindsumm[3] %mindsumm[3] - 20 if #linebest = 1 set %steep[8 1] %mindsumm[1] set %steep[8 2] %mindsumm[2] set %steep[8 3] %mindsumm[3] set %steep[8 4] %lpanel[2 1] set %steep[8 5] %lpanel[2 2] set %steep[8 6] %polex[#bkx #bky] set %steep[8 7] %poley[#bkx #bky] set %steep[8 9] 2 end_if if %mindsumm[3] > %steep[1 3] set %steep[1 1] %mindsumm[1] set %steep[1 2] %mindsumm[2] set %steep[1 3] %mindsumm[3] set %steep[1 4] %lpanel[2 1] set %steep[1 5] %lpanel[2 2] set %steep[1 6] %polex[#bkx #bky] set %steep[1 7] %poley[#bkx #bky] set %steep[1 9] 2 end_if set #asd %mindsumm[1] + %mindsumm[2] if %mindsumm[3] = %steep[1 3] and #asd > %steep[1 6] set %steep[1 1] %mindsumm[1] set %steep[1 2] %mindsumm[2] set %steep[1 3] %mindsumm[3] set %steep[1 4] %lpanel[2 1] set %steep[1 5] %lpanel[2 2] set %steep[1 6] %polex[#bkx #bky] set %steep[1 7] %poley[#bkx #bky] set %steep[1 6] #asd set %steep[1 9] 2 end_if set #dsf %mindsumm[1] + %mindsumm[2] + %mindsumm[3] if #dsf > %steep[2 8] set %steep[2 1] %mindsumm[1] set %steep[2 2] %mindsumm[2] set %steep[2 3] %mindsumm[3] set %steep[2 4] %lpanel[2 1] set %steep[2 5] %lpanel[2 2] set %steep[2 6] %polex[#bkx #bky] set %steep[2 7] %poley[#bkx #bky] set %steep[2 8] #dsf set %steep[2 9] 2 end_if set #dsf1 %mindsumm[1] + %mindsumm[2] set #dsf2 %steep[2 1] + %steep[2 2] if #dsf = %steep[2 8] and %mindsumm[3] > 20 and #dsf1 > #dsf2 set %steep[2 1] %mindsumm[1] set %steep[2 2] %mindsumm[2] set %steep[2 3] %mindsumm[3] set %steep[2 4] %lpanel[2 1] set %steep[2 5] %lpanel[2 2] set %steep[2 6] %polex[#bkx #bky] set %steep[2 7] %poley[#bkx #bky] set %steep[2 8] #dsf set %steep[2 9] 2 end_if set #dsf %mindsumm[1] + %mindsumm[2] if #dsf > %steep[3 8] set %steep[3 1] %mindsumm[1] set %steep[3 2] %mindsumm[2] set %steep[3 3] %mindsumm[3] set %steep[3 4] %lpanel[2 1] set %steep[3 5] %lpanel[2 2] set %steep[3 6] %polex[#bkx #bky] set %steep[3 7] %poley[#bkx #bky] set %steep[3 8] #dsf set %steep[3 9] 2 end_if if #dsf > %steep[4 8] and %mindsumm[3] > 0 set %steep[4 1] %mindsumm[1] set %steep[4 2] %mindsumm[2] set %steep[4 3] %mindsumm[3] set %steep[4 4] %lpanel[2 1] set %steep[4 5] %lpanel[2 2] set %steep[4 6] %polex[#bkx #bky] set %steep[4 7] %poley[#bkx #bky] set %steep[4 8] #dsf set %steep[4 9] 2 end_if if #dsf = %steep[4 8] and %mindsumm[3] > %steep[4 3] set %steep[4 1] %mindsumm[1] set %steep[4 2] %mindsumm[2] set %steep[4 3] %mindsumm[3] set %steep[4 4] %lpanel[2 1] set %steep[4 5] %lpanel[2 2] set %steep[4 6] %polex[#bkx #bky] set %steep[4 7] %poley[#bkx #bky] set %steep[4 8] #dsf set %steep[4 9] 2 end_if if #dsf = %steep[3 8] and %mindsumm[3] > %steep[3 3] set %steep[3 1] %mindsumm[1] set %steep[3 2] %mindsumm[2] set %steep[3 3] %mindsumm[3] set %steep[3 4] %lpanel[2 1] set %steep[3 5] %lpanel[2 2] set %steep[3 6] %polex[#bkx #bky] set %steep[3 7] %poley[#bkx #bky] set %steep[3 9] 2 end_if set #dsf %mindsumm[2] + %mindsumm[3] if #dsf > %steep[5 8] and %mindsumm[2] > 0 set %steep[5 1] %mindsumm[1] set %steep[5 2] %mindsumm[2] set %steep[5 3] %mindsumm[3] set %steep[5 4] %lpanel[2 1] set %steep[5 5] %lpanel[2 2] set %steep[5 6] %polex[#bkx #bky] set %steep[5 7] %poley[#bkx #bky] set %steep[5 8] #dsf set %steep[5 9] 2 end_if if #dsf = %steep[5 8] and %mindsumm[2] > 0 and %mindsumm[1] > %steep[5 1] set %steep[5 1] %mindsumm[1] set %steep[5 2] %mindsumm[2] set %steep[5 3] %mindsumm[3] set %steep[5 4] %lpanel[2 1] set %steep[5 5] %lpanel[2 2] set %steep[5 6] %polex[#bkx #bky] set %steep[5 7] %poley[#bkx #bky] set %steep[5 9] 2 end_if end_for end_for return
:get5 set #get5 0 for #y 1 5 1 for #x 1 2 1 set #lx1 #x set #lx2 #x + 1 set #lx3 #x + 2 set #lx4 #x + 3 set #lx5 #x + 4 set #ly1 #y set #ly2 #y + 1 set #det %poleu[#lx1, #ly1] + %poleu[#lx2, #ly1] + %poleu[#lx3, #ly2] + %poleu[#lx4, #ly1] + %poleu[#lx5, #ly1] if #det = 5 or #det = 50 or #det = 500 or #det = 5000 or #det = 50000 left %polex[#lx3 #ly2], %poley[#lx3 #ly2] wait 50 left %polex[#lx3 #ly1], %poley[#lx3 #ly1] set #get5 1 end_if set #det %poleu[#lx1, #ly2] + %poleu[#lx2, #ly2] + %poleu[#lx3, #ly1] + %poleu[#lx4, #ly2] + %poleu[#lx5, #ly2] if #det = 5 or #det = 50 or #det = 500 or #det = 5000 or #det = 50000 left %polex[#lx3 #ly1], %poley[#lx3 #ly1] wait 50 left %polex[#lx3 #ly2], %poley[#lx3 #ly2] set #get5 1 end_if end_for end_for if #get5 = 0 for #y 1 2 1 for #x 1 5 1 set #ly1 #y set #ly2 #y + 1 set #ly3 #y + 2 set #ly4 #y + 3 set #ly5 #y + 4 set #lx1 #x set #lx2 #x + 1 set #det %poleu[#lx1, #ly1] + %poleu[#lx1, #ly2] + %poleu[#lx2, #ly3] + %poleu[#lx1, #ly4] + %poleu[#lx1, #ly5] if #det = 5 or #det = 50 or #det = 500 or #det = 5000 or #det = 50000 left %polex[#lx2 #ly3], %poley[#lx2 #ly3] wait 50 left %polex[#lx1 #ly3], %poley[#lx1 #ly3] set #get5 1 end_if set #det %poleu[#lx2, #ly1] + %poleu[#lx2, #ly2] + %poleu[#lx1, #ly3] + %poleu[#lx2, #ly4] + %poleu[#lx2, #ly5] if #det = 5 or #det = 50 or #det = 500 or #det = 5000 or #det = 50000 left %polex[#lx1 #ly3], %poley[#lx1 #ly3] wait 50 left %polex[#lx2 #ly3], %poley[#lx2 #ly3] set #get5 1 end_if end_for end_for end_if return
:setpanel set #lifelx %a[1 1] - 273 set #liferx %a[1 1] - 217 set #lifely %a[1 2] + 57 set #warmanalx %a[1 1] - 266 set #warmanarx %a[1 1] - 196 set #warmanaly %a[1 2] + 76 set %go[1 1] %a[1 1] - 81 set %go[1 2] %a[1 2] + 49 set %go[1 3] 65416 set %pole[1 1] %a[1 1] - 90 set %pole[1 2] %a[1 2] + 103 for #y 1 6 1 for #x 1 6 1 set %polex[#x #y] %pole[1 1] + (#x - 1) * 41 set %poley[#x #y] %pole[1 2] + (#y - 1) * 41 end_for end_for set %lpanel[1 1] %a[1 1] - 252 set %lpanel[1 2] %a[1 2] + 439 for #x 1 5 1 set %lpanel[#x 1] %lpanel[1 1] + (#x - 1) * 53 set %lpanel[#x 2] %lpanel[1 2] set #down #x + 5 set %lpanel[#down 1] %lpanel[1 1] + (#x - 1) * 53 set %lpanel[#down 2] %lpanel[1 2] + 53 end_for set %lpanel[5 3] 4224183 set %lpanel[4 3] 7855082 set %lpanel[3 3] 16382440 set %lpanel[2 3] 16776191 set %rpanel[1 1] %a[1 1] + 60 set %rpanel[1 2] %a[1 2] + 439 end_if while_not %go[1 1], %go[1 2] %go[1 3] wait 100 end_while :srpanel for #x 1 5 1 set %rpanel[#x 1] %rpanel[1 1] + (#x - 1) * 53 set %rpanel[#x 2] %rpanel[1 2] get color #s %rpanel[#x 1] %rpanel[#x 2] set %rpanel[#x 3] #s set #down #x + 5 set %rpanel[#down 1] %rpanel[1 1] + (#x - 1) * 53 set %rpanel[#down 2] %rpanel[1 2] + 53 get color #s %rpanel[#down 1] %rpanel[#down 2] set %rpanel[#down 3] #s end_for get color #s %rpanel[1 1] %rpanel[1 2] if_not #s = %rpanel[1 3] goto srpanel end_if return
:mindsumm set #line3ok 0 set #line5ok 0 for #mindx 1 6 1 set #line31 0 set #line32 0 set #line33 0 set #line34 0 set #mindsum %mind1[#mindx 1] + %mind1[#mindx 2] + %mind1[#mindx 3] if #mindsum = 3 or #mindsum = 30 or #mindsum = 300 or #mindsum = 3000 or #mindsum = 30000 set #line3ok 1 set #line31 1 for #mindy 1 3 1 set %mind2[#mindx #mindy] %mind1[#mindx #mindy] set %mind3[#mindx #mindy] 0 end_for end_if set #mindsum %mind1[#mindx 2] + %mind1[#mindx 3] + %mind1[#mindx 4] if #mindsum = 3 or #mindsum = 30 or #mindsum = 300 or #mindsum = 3000 or #mindsum = 30000 set #line3ok 1 set #line32 1 for #mindy 2 4 1 set %mind2[#mindx #mindy] %mind1[#mindx #mindy] set %mind3[#mindx #mindy] 0 end_for end_if set #mindsum %mind1[#mindx 3] + %mind1[#mindx 4] + %mind1[#mindx 5] if #mindsum = 3 or #mindsum = 30 or #mindsum = 300 or #mindsum = 3000 or #mindsum = 30000 set #line3ok 1 set #line33 1 for #mindy 3 5 1 set %mind2[#mindx #mindy] %mind1[#mindx #mindy] set %mind3[#mindx #mindy] 0 end_for end_if set #mindsum %mind1[#mindx 4] + %mind1[#mindx 5] + %mind1[#mindx 6] if #mindsum = 3 or #mindsum = 30 or #mindsum = 300 or #mindsum = 3000 or #mindsum = 30000 set #line3ok 1 set #line34 1 for #mindy 4 6 1 set %mind2[#mindx #mindy] %mind1[#mindx #mindy] set %mind3[#mindx #mindy] 0 end_for end_if set #line51 #line31 + #line33 set #line52 #line32 + #line34 if #line51 = 2 or #line52 = 2 set #line5ok 1 end_if end_for for #mindy 1 6 1 set #line31 0 set #line32 0 set #line33 0 set #line34 0 set #mindsum %mind1[1 #mindy] + %mind1[2 #mindy] + %mind1[3 #mindy] if #mindsum = 3 or #mindsum = 30 or #mindsum = 300 or #mindsum = 3000 or #mindsum = 30000 set #line3ok 1 set #line31 1 for #mindx 1 3 1 set %mind2[#mindx #mindy] %mind1[#mindx #mindy] set %mind3[#mindx #mindy] 0 end_for end_if set #mindsum %mind1[2 #mindy] + %mind1[3 #mindy] + %mind1[4 #mindy] if #mindsum = 3 or #mindsum = 30 or #mindsum = 300 or #mindsum = 3000 or #mindsum = 30000 set #line3ok 1 set #line32 1 for #mindx 2 4 1 set %mind2[#mindx #mindy] %mind1[#mindx #mindy] set %mind3[#mindx #mindy] 0 end_for end_if set #mindsum %mind1[3 #mindy] + %mind1[4 #mindy] + %mind1[5 #mindy] if #mindsum = 3 or #mindsum = 30 or #mindsum = 300 or #mindsum = 3000 or #mindsum = 30000 set #line3ok 1 set #line33 1 for #mindx 3 5 1 set %mind2[#mindx #mindy] %mind1[#mindx #mindy] set %mind3[#mindx #mindy] 0 end_for end_if set #mindsum %mind1[4 #mindy] + %mind1[5 #mindy] + %mind1[6 #mindy] if #mindsum = 3 or #mindsum = 30 or #mindsum = 300 or #mindsum = 3000 or #mindsum = 30000 set #line3ok 1 set #line34 1 for #mindx 4 6 1 set %mind2[#mindx #mindy] %mind1[#mindx #mindy] set %mind3[#mindx #mindy] 0 end_for end_if set #line51 #line31 + #line33 set #line52 #line32 + #line34 if #line51 = 2 or #line52 = 2 set #line5ok 1 end_if end_for return
:poledo for #y 1 5 1 for #x 1 4 1 set #lx1 #x set #lx2 #x + 1 set #lx3 #x + 2 set #ly1 #y set #ly2 #y + 1 set #det %poleu[#lx1, #ly1] + %poleu[#lx2, #ly2] + %poleu[#lx3, #ly1] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #mindinx1 #lx2 set #mindiny1 #ly2 set #mindinx2 #lx2 set #mindiny2 #ly1 gosub mind gosub steepline end_if set #det %poleu[#lx1, #ly2] + %poleu[#lx2, #ly1] + %poleu[#lx3, #ly2] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #mindinx1 #lx2 set #mindiny1 #ly1 set #mindinx2 #lx2 set #mindiny2 #ly2 gosub mind gosub steepline end_if set #det %poleu[#lx1, #ly1] + %poleu[#lx2, #ly1] + %poleu[#lx3, #ly2] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #mindinx1 #lx3 set #mindiny1 #ly2 set #mindinx2 #lx3 set #mindiny2 #ly1 gosub mind gosub steepline end_if set #det %poleu[#lx1, #ly2] + %poleu[#lx2, #ly2] + %poleu[#lx3, #ly1] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #mindinx1 #lx3 set #mindiny1 #ly1 set #mindinx2 #lx3 set #mindiny2 #ly2 gosub mind gosub steepline end_if set #det %poleu[#lx1, #ly2] + %poleu[#lx2, #ly1] + %poleu[#lx3, #ly1] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #mindinx1 #lx1 set #mindiny1 #ly2 set #mindinx2 #lx1 set #mindiny2 #ly1 gosub mind gosub steepline end_if set #det %poleu[#lx1, #ly1] + %poleu[#lx2, #ly2] + %poleu[#lx3, #ly2] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #mindinx1 #lx1 set #mindiny1 #ly1 set #mindinx2 #lx1 set #mindiny2 #ly2 gosub mind gosub steepline end_if end_for end_for for #ly1 1 6 1 for #x 1 3 1 set #lx1 #x set #lx2 #x + 1 set #lx3 #x + 2 set #lx4 #x + 3 set #det %poleu[#lx1, #ly1] + %poleu[#lx2, #ly1] + %poleu[#lx4, #ly1] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #mindinx1 #lx4 set #mindiny1 #ly1 set #mindinx2 #lx3 set #mindiny2 #ly1 gosub mind gosub steepline end_if set #det %poleu[#lx1, #ly1] + %poleu[#lx3, #ly1] + %poleu[#lx4, #ly1] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #mindinx1 #lx1 set #mindiny1 #ly1 set #mindinx2 #lx2 set #mindiny2 #ly1 gosub mind gosub steepline end_if end_for end_for for #x 1 5 1 for #y 1 4 1 set #ly1 #y set #ly2 #y + 1 set #ly3 #y + 2 set #lx1 #x set #lx2 #x + 1 set #det %poleu[#lx1, #ly1] + %poleu[#lx2, #ly2] + %poleu[#lx1, #ly3] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #mindinx1 #lx2 set #mindiny1 #ly2 set #mindinx2 #lx1 set #mindiny2 #ly2 gosub mind gosub steepline end_if set #det %poleu[#lx2, #ly1] + %poleu[#lx1, #ly2] + %poleu[#lx2, #ly3] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #mindinx1 #lx1 set #mindiny1 #ly2 set #mindinx2 #lx2 set #mindiny2 #ly2 gosub mind gosub steepline end_if set #det %poleu[#lx1, #ly1] + %poleu[#lx1, #ly2] + %poleu[#lx2, #ly3] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #mindinx1 #lx2 set #mindiny1 #ly3 set #mindinx2 #lx1 set #mindiny2 #ly3 gosub mind gosub steepline end_if set #det %poleu[#lx2, #ly1] + %poleu[#lx2, #ly2] + %poleu[#lx1, #ly3] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #mindinx1 #lx1 set #mindiny1 #ly3 set #mindinx2 #lx2 set #mindiny2 #ly3 gosub mind gosub steepline end_if set #det %poleu[#lx2, #ly1] + %poleu[#lx1, #ly2] + %poleu[#lx1, #ly3] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #mindinx1 #lx2 set #mindiny1 #ly1 set #mindinx2 #lx1 set #mindiny2 #ly1 gosub mind gosub steepline end_if set #det %poleu[#lx1, #ly1] + %poleu[#lx2, #ly2] + %poleu[#lx2, #ly3] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #mindinx1 #lx1 set #mindiny1 #ly1 set #mindinx2 #lx2 set #mindiny2 #ly1 gosub mind gosub steepline end_if end_for end_for for #lx1 1 6 1 for #y 1 3 1 set #ly1 #y set #ly2 #y + 1 set #ly3 #y + 2 set #ly4 #y + 3 set #det %poleu[#lx1, #ly1] + %poleu[#lx1, #ly2] + %poleu[#lx1, #ly4] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #mindinx1 #lx1 set #mindiny1 #ly4 set #mindinx2 #lx1 set #mindiny2 #ly3 gosub mind gosub steepline end_if set #det %poleu[#lx1, #ly1] + %poleu[#lx1, #ly3] + %poleu[#lx1, #ly4] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #mindinx1 #lx1 set #mindiny1 #ly1 set #mindinx2 #lx1 set #mindiny2 #ly2 gosub mind gosub steepline end_if end_for end_for return
:steepline if #linebest = 1 set %steep[8 1] %mindsumm[1] set %steep[8 2] %mindsumm[2] set %steep[8 3] %mindsumm[3] set %steep[8 4] %polex[#mindinx1 #mindiny1] set %steep[8 5] %poley[#mindinx1 #mindiny1] set %steep[8 6] %polex[#mindinx2 #mindiny2] set %steep[8 7] %poley[#mindinx2 #mindiny2] set %steep[8 9] 1 end_if if %mindsumm[3] > %steep[1 3] set %steep[1 1] %mindsumm[1] set %steep[1 2] %mindsumm[2] set %steep[1 3] %mindsumm[3] set %steep[1 4] %polex[#mindinx1 #mindiny1] set %steep[1 5] %poley[#mindinx1 #mindiny1] set %steep[1 6] %polex[#mindinx2 #mindiny2] set %steep[1 7] %poley[#mindinx2 #mindiny2] set %steep[1 9] 1 end_if set #asd %mindsumm[1] + %mindsumm[2] if %mindsumm[3] = %steep[1 3] and #asd > %steep[1 8] set %steep[1 1] %mindsumm[1] set %steep[1 2] %mindsumm[2] set %steep[1 3] %mindsumm[3] set %steep[1 4] %polex[#mindinx1 #mindiny1] set %steep[1 5] %poley[#mindinx1 #mindiny1] set %steep[1 6] %polex[#mindinx2 #mindiny2] set %steep[1 7] %poley[#mindinx2 #mindiny2] set %steep[1 8] #asd set %steep[1 9] 1 end_if set #dsf %mindsumm[1] + %mindsumm[2] + %mindsumm[3] if #dsf > %steep[2 8] set %steep[2 1] %mindsumm[1] set %steep[2 2] %mindsumm[2] set %steep[2 3] %mindsumm[3] set %steep[2 4] %polex[#mindinx1 #mindiny1] set %steep[2 5] %poley[#mindinx1 #mindiny1] set %steep[2 6] %polex[#mindinx2 #mindiny2] set %steep[2 7] %poley[#mindinx2 #mindiny2] set %steep[2 8] #dsf set %steep[2 9] 1 end_if set #dsf %mindsumm[1] + %mindsumm[2] if #dsf > %steep[3 8] set %steep[3 1] %mindsumm[1] set %steep[3 2] %mindsumm[2] set %steep[3 3] %mindsumm[3] set %steep[3 4] %polex[#mindinx1 #mindiny1] set %steep[3 5] %poley[#mindinx1 #mindiny1] set %steep[3 6] %polex[#mindinx2 #mindiny2] set %steep[3 7] %poley[#mindinx2 #mindiny2] set %steep[3 8] #dsf set %steep[3 9] 1 end_if if #dsf > %steep[4 8] and %mindsumm[3] > 0 set %steep[4 1] %mindsumm[1] set %steep[4 2] %mindsumm[2] set %steep[4 3] %mindsumm[3] set %steep[4 4] %polex[#mindinx1 #mindiny1] set %steep[4 5] %poley[#mindinx1 #mindiny1] set %steep[4 6] %polex[#mindinx2 #mindiny2] set %steep[4 7] %poley[#mindinx2 #mindiny2] set %steep[4 8] #dsf set %steep[4 9] 1 end_if if #dsf = %steep[4 8] and %mindsumm[3] > %steep[4 3] set %steep[4 1] %mindsumm[1] set %steep[4 2] %mindsumm[2] set %steep[4 3] %mindsumm[3] set %steep[4 4] %polex[#mindinx1 #mindiny1] set %steep[4 5] %poley[#mindinx1 #mindiny1] set %steep[4 6] %polex[#mindinx2 #mindiny2] set %steep[4 7] %poley[#mindinx2 #mindiny2] set %steep[4 8] #dsf set %steep[4 9] 1 end_if if #dsf = %steep[3 8] and %mindsumm[3] > %steep[3 3] set %steep[3 1] %mindsumm[1] set %steep[3 2] %mindsumm[2] set %steep[3 3] %mindsumm[3] set %steep[3 4] %polex[#mindinx1 #mindiny1] set %steep[3 5] %poley[#mindinx1 #mindiny1] set %steep[3 6] %polex[#mindinx2 #mindiny2] set %steep[3 7] %poley[#mindinx2 #mindiny2] set %steep[3 9] 1 end_if set #dsf %mindsumm[2] + %mindsumm[3] if #dsf > %steep[5 8] and %mindsumm[2] > 0 set %steep[5 1] %mindsumm[1] set %steep[5 2] %mindsumm[2] set %steep[5 3] %mindsumm[3] set %steep[5 4] %polex[#mindinx1 #mindiny1] set %steep[5 5] %poley[#mindinx1 #mindiny1] set %steep[5 6] %polex[#mindinx2 #mindiny2] set %steep[5 7] %poley[#mindinx2 #mindiny2] set %steep[5 8] #dsf set %steep[5 9] 1 end_if if #dsf = %steep[5 8] and %mindsumm[2] > 0 and %mindsumm[1] > %steep[5 1] set %steep[5 1] %mindsumm[1] set %steep[5 2] %mindsumm[2] set %steep[5 3] %mindsumm[3] set %steep[5 4] %polex[#mindinx1 #mindiny1] set %steep[5 5] %poley[#mindinx1 #mindiny1] set %steep[5 6] %polex[#mindinx2 #mindiny2] set %steep[5 7] %poley[#mindinx2 #mindiny2] set %steep[5 9] 1 end_if return
|
|
|
|
BSW_rama |
2.4.2013, 17:13
|
Apprentice
Сообщений: 188
Регистрация: 28.1.2013 Группа: Пользователи Наличность: 0
Пользователь №: 15.728
Возраст: 32
|
последняя версия, оптимизировал по быстродействию + распаралелил вычисления. и так запускаем 3 пилота, в 2 загружаем скрипты 2 и 3 нажимаем плай и сворачиваем , в один загружает первый и собсно с ним играем. пилоты со скриптами 2 и 3 выполняют роли вычислительных систем по типу распределёных вычислений. для полного кайфа нужно 3 ядра. если нет дополнительных пилотов скрипт 1 вычисляет всё сам. для сравнения в одно я дро все 3 варианта просчитываются за 20-32 сек ( в зависимости от сложности поля), в распаралеленом режиме на двух ядрах время вычислений составляет от 11 до 16 сек. первый название
:a set #b findcolor (0 0 800 400 1 1 (60667) %a 2 1) if_not #b = 1 wait 100 goto a end_if gosub c save_array %bf polex.txt save_array %bg poley.txt save_array %m lpanel.txt :D if %e[1 1], %e[1 2] %e[1 3] for #f 1 8 1 for #g 1 10 1 set %h[#f #g] 0 set %mh[#f #g] 0 end_for end_for gosub i set %j[1] 0 set %j[2] 0 set %j[3] 0 gosub k if #k = 1 alarm goto d end_script end_if if %m[2 1], %m[2 2] %m[2 3] set %j[2] 1 end_if if %m[3 1], %m[3 2] %m[3 3] set %j[3] 1 end_if set #n 0 set #o 0 set %am[7 1] 1 if %j[3] = 1 save_array %am go3.txt end_if if %j[2] = 1 save_array %am go2.txt end_if gosub p
if %j[2] = 1 load_array %md2 go2.txt if %j[2] = 1 and %md2[7 1] = 0 :mwt2 load_array %mh result2.txt set #mw 0 for #ma 11 16 1 set #mc #ma - 10 for #mb 1 6 1 if_not %mh[#ma #mb] = %am[#mc #mb] set #mw 1 end_if end_for end_for if #mw = 1 wait 100 goto mwt2 end_if gosub me end_if end_if
for #f 1 8 1 for #g 1 10 1 set %mh[#f #g] 0 end_for end_for
if %j[3] = 1 load_array %md3 go3.txt if %j[3] = 1 and %md3[7 1] = 0 :mwt3 load_array %mh result3.txt set #mw 0 for #ma 11 16 1 set #mc #ma - 10 for #mb 1 6 1 if_not %mh[#ma #mb] = %am[#mc #mb] set #mw 1 end_if end_for end_for if #mw = 1 wait 100 goto mwt3 end_if gosub me end_if end_if
if %j[2] = 1 and %md2[7 1] = 1 gosub q end_if if %j[3] = 1 and %md3[7 1] = 1 gosub r end_if
set #s 0 set $a1 %h[1 9] %h[1 1] %h[1 2] %h[1 3] мана set $a2 %h[2 9] %h[2 1] %h[2 2] %h[2 3] сумма set $a3 %h[3 9] %h[3 1] %h[3 2] %h[3 3] урон set $a4 %h[4 9] %h[4 1] %h[4 2] %h[4 3] урон + мана set $a5 %h[5 9] %h[5 1] %h[5 2] %h[5 3] лечение + мана set $a6 %h[6 9] %h[6 1] %h[6 2] %h[6 3] %h[6 10] камней set $a7 %h[8 9] %h[8 1] %h[8 2] %h[8 3] 5 if %h[8 9] > 0 set $a7 %h[8 9] %h[8 1] %h[8 2] %h[8 3] ПЯТЬ !!!!!!!!!!!!!!! end_if set #s prompt ($a1 $a2 $a3 $a4 $a5 $a6 $a7 #t) if #s = 7 or %h[8 9] > 0 set #s 8 end_if if #s = 0 if %h[8 4] > 0 set #s 8 end_if gosub u if #v < 5 and %h[4 3] < 1 set #s 2 end_if if #v < 5 and %h[4 3] > 0 set #s 4 end_if if #v > 4 set #s 3 end_if end_if move %h[#s 4], %h[#s 5] left %h[#s 4], %h[#s 5] wait 100 move %h[#s 6], %h[#s 7] left %h[#s 6], %h[#s 7] wait 500 move %a[1 1], %m[1 2] end_if wait 1000 goto d end_script
:me if %mh[1 3] > %h[1 3] set %h[1 1] %mh[1 1] set %h[1 2] %mh[1 2] set %h[1 3] %mh[1 3] set %h[1 4] %mh[1 4] set %h[1 5] %mh[1 5] set %h[1 6] %mh[1 6] set %h[1 7] %mh[1 7] set %h[1 8] %mh[1 8] set %h[1 9] %mh[1 9] end_if if %mh[1 3] = %h[1 3] and %mh[1 8] > %h[1 8] set %h[1 1] %mh[1 1] set %h[1 2] %mh[1 2] set %h[1 3] %mh[1 3] set %h[1 4] %mh[1 4] set %h[1 5] %mh[1 5] set %h[1 6] %mh[1 6] set %h[1 7] %mh[1 7] set %h[1 8] %mh[1 8] set %h[1 9] %mh[1 9] end_if if %mh[2 8] > %h[2 8] set %h[2 1] %mh[2 1] set %h[2 2] %mh[2 2] set %h[2 3] %mh[2 3] set %h[2 4] %mh[2 4] set %h[2 5] %mh[2 5] set %h[2 6] %mh[2 6] set %h[2 7] %mh[2 7] set %h[2 8] %mh[2 8] set %h[2 9] %mh[2 9] end_if if %mh[3 8] > %h[3 8] set %h[3 1] %mh[3 1] set %h[3 2] %mh[3 2] set %h[3 3] %mh[3 3] set %h[3 4] %mh[3 4] set %h[3 5] %mh[3 5] set %h[3 6] %mh[3 6] set %h[3 7] %mh[3 7] set %h[3 8] %mh[3 8] set %h[3 9] %mh[3 9] end_if if %mh[3 8] = %h[3 8] and %mh[3 3] > %h[3 3] set %h[3 1] %mh[3 1] set %h[3 2] %mh[3 2] set %h[3 3] %mh[3 3] set %h[3 4] %mh[3 4] set %h[3 5] %mh[3 5] set %h[3 6] %mh[3 6] set %h[3 7] %mh[3 7] set %h[3 9] %mh[3 9] end_if if %mh[4 8] > %h[4 8] and %mh[4 3] > 0 set %h[4 1] %mh[4 1] set %h[4 2] %mh[4 2] set %h[4 3] %mh[4 3] set %h[4 4] %mh[4 4] set %h[4 5] %mh[4 5] set %h[4 6] %mh[4 6] set %h[4 7] %mh[4 7] set %h[4 8] %mh[4 8] set %h[4 9] %mh[4 9] end_if if %mh[4 8] = %h[4 8] and %mh[4 3] > %h[4 3] set %h[4 1] %mh[4 1] set %h[4 2] %mh[4 2] set %h[4 3] %mh[4 3] set %h[4 4] %mh[4 4] set %h[4 5] %mh[4 5] set %h[4 6] %mh[4 6] set %h[4 7] %mh[4 7] set %h[4 8] %mh[4 8] set %h[4 9] %mh[4 9] end_if if %mh[5 8] > %h[5 8] and %mh[5 2] > 0 set %h[5 1] %mh[5 1] set %h[5 2] %mh[5 2] set %h[5 3] %mh[5 3] set %h[5 4] %mh[5 4] set %h[5 5] %mh[5 5] set %h[5 6] %mh[5 6] set %h[5 7] %mh[5 7] set %h[5 8] %mh[5 8] set %h[5 9] %mh[5 9] end_if if %mh[5 8] = %h[5 8] and %mh[5 2] > 0 and %mh[5 1] > %h[5 1] set %h[5 1] %mh[5 1] set %h[5 2] %mh[5 2] set %h[5 3] %mh[5 3] set %h[5 4] %mh[5 4] set %h[5 5] %mh[5 5] set %h[5 6] %mh[5 6] set %h[5 7] %mh[5 7] set %h[5 9] %mh[5 9] end_if if %mh[6 10] > %h[6 10] set %h[6 1] %mh[6 1] set %h[6 2] %mh[6 2] set %h[6 3] %mh[6 3] set %h[6 4] %mh[6 4] set %h[6 5] %mh[6 5] set %h[6 6] %mh[6 6] set %h[6 7] %mh[6 7] set %h[6 8] %mh[6 8] set %h[6 9] %mh[6 9] set %h[6 10] %mh[6 10] end_if if %mh[6 10] = %h[6 10] and %mh[6 8] > %h[6 8] set %h[6 1] %mh[6 1] set %h[6 2] %mh[6 2] set %h[6 3] %mh[6 3] set %h[6 4] %mh[6 4] set %h[6 5] %mh[6 5] set %h[6 6] %mh[6 6] set %h[6 7] %mh[6 7] set %h[6 8] %mh[6 8] set %h[6 9] %mh[6 9] set %h[6 10] %mh[6 10] end_if if %mh[8 9] > 0 set %h[8 1] %mh[8 1] set %h[8 2] %mh[8 2] set %h[8 3] %mh[8 3] set %h[8 4] %mh[8 4] set %h[8 5] %mh[8 5] set %h[8 6] %mh[8 6] set %h[8 7] %mh[8 7] set %h[8 9] %mh[8 9] end_if return
:u for #w #x #y 7 get color #z #w #aa if #z = 16760105 or #z = 16745985 set #v (#w - #x) / 7 end_if end_for return
:ab for #ac #ad #ae 7 get color #af #ac #ag move #ac, #ag if #af = 1599999 or #af = 15566 set #ab (#ac - #ad) / 7 end_if end_for return
:ah set #ai 0 set %aj[1] 0 set %aj[2] 0 set %aj[3] 0 set #ak 0 set %al %am set %al[#an #ao] %am[#ap #aq] set %al[#ap #aq] %am[#an #ao] set %ar %al gosub as gosub at gosub au set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 1 return end_if gosub at gosub au set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 2 return end_if gosub at gosub au set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 3 return end_if gosub at gosub au set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 4 return end_if gosub au set #av 5 return
:at for #aw 6 2 -1 set #aw1 #aw - 1 for #ax 1 6 1 if %ar[#ax #aw] = 0 set #ay 0 for #aw2 #aw1 1 -1 if #ay = 0 if %ar[#ax #aw2] > 0 set %ar[#ax #aw] %ar[#ax #aw2] set %ar[#ax #aw2] 0 set #ay 1 end_if end_if end_for end_if end_for end_for return
:au for #aw 1 6 1 for #ax 1 6 1 if %az [#ax #aw] = 1 set %aj[1] %aj[1] + 5 set #ai #ai + 1 goto ba end_if if %az [#ax #aw] = 10 set %aj[2] %aj[2] + 1 set #ai #ai + 1 goto ba end_if if %az [#ax #aw] = 100 set %aj[3] %aj[3] + 5 set #ai #ai + 1 goto ba end_if if %az [#ax #aw] = 1000 set %aj[3] %aj[3] + 3 set #ai #ai + 1 goto ba end_if if %az [#ax #aw] = 10000 set %aj[3] %aj[3] + 1 set #ai #ai + 1 goto ba end_if :ba set %az [#ax #aw] 0 end_for end_for return
:i set #bb 0 set #bc 0 set #bd 0 for #y 1 6 1 if #bd = 1 break end_if :be for #x 1 6 1 if #bd = 1 break end_if get color #c %bf[#x #y] %bg[#x #y] set %am[#x #y] 0 if #c = 5344685 set %am[#x #y] 1 goto bh end_if if #c = 8360347 set %am[#x #y] 10 goto bh end_if if #c = 1245314 set %am[#x #y] 100 goto bh end_if if #c = 302028 set %am[#x #y] 1000 goto bh end_if if #c = 145428 set %am[#x #y] 10000 goto bh end_if if %am[#x #y] < 1 set #bd 1 break end_if :bh if #y = 1 set #bc #bc + %am[#x #y] end_if end_for if #bb = 1 alarm pin.wav goto bj end_if end_for :bj if #bb = 0 set #bk #bc set #bb 1 set #y 1 set #bc 0 goto be end_if if #bb = 1 if_not #bk = #bc goto i end_if end_if if #bd = 1 alarm pin.wav goto i end_if return
:r for #bn 1 6 1 for #bo 1 6 1 set #ai 0 set #ak 0 set %aj[1] 0 set %aj[2] 0 set %aj[3] 0 set %ar %am for #bl -2 2 1 set #bm #bn + #bl if #bm > 0 and #bm < 7 set %az [#bo #bm] %ar[#bo #bm] set %ar[#bo #bm] 0 end_if end_for for #bp -2 2 1 set #bq #bo + #bp if #bq > 0 and #bq < 7 and #bq <> #bo set %az [#bq #bn] %ar[#bq #bn] set %ar[#bq #bn] 0 end_if end_for gosub at gosub au set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 1 goto br end_if gosub au gosub at set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 2 goto br end_if gosub au gosub at set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 3 goto br end_if gosub au gosub at set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 4 goto br end_if gosub au set #av 5 :br if #av > #t set #t #av end_if set %aj[3] %aj[3] - 20 set #ab %aj[1] + %aj[2] set #bc %aj[2] + %aj[3] set #abc %aj[1] + %aj[2] + %aj[3] if %aj[3] > %h[1 3] set %h[1 1] %aj[1] set %h[1 2] %aj[2] set %h[1 3] %aj[3] set %h[1 4] %m[3 1] set %h[1 5] %m[3 2] set %h[1 6] %bf[#bo #bn] set %h[1 7] %bg[#bo #bn] set %h[1 9] 3 end_if if %aj[3] = %h[1 3] and #asd > %h[1 8] set %h[1 1] %aj[1] set %h[1 2] %aj[2] set %h[1 3] %aj[3] set %h[1 4] %m[3 1] set %h[1 5] %m[3 2] set %h[1 6] %bf[#bo #bn] set %h[1 7] %bg[#bo #bn] set %h[1 8] #ab set %h[1 9] 3 end_if if #abc > %h[2 8] set %h[2 1] %aj[1] set %h[2 2] %aj[2] set %h[2 3] %aj[3] set %h[2 4] %m[3 1] set %h[2 5] %m[3 2] set %h[2 6] %bf[#bo #bn] set %h[2 7] %bg[#bo #bn] set %h[2 8] #abc set %h[2 9] 3 end_if set #s2ab %h[2 1] + %h[2 2] if #abc = %h[2 8] and %aj[3] > 20 and #ab > #s2ab set %h[2 1] %aj[1] set %h[2 2] %aj[2] set %h[2 3] %aj[3] set %h[2 4] %m[3 1] set %h[2 5] %m[3 2] set %h[2 6] %bf[#bo #bn] set %h[2 7] %bg[#bo #bn] set %h[2 8] #abc set %h[2 9] 3 end_if if #ab > %h[3 8] set %h[3 1] %aj[1] set %h[3 2] %aj[2] set %h[3 3] %aj[3] set %h[3 4] %m[3 1] set %h[3 5] %m[3 2] set %h[3 6] %bf[#bo #bn] set %h[3 7] %bg[#bo #bn] set %h[3 8] #ab set %h[3 9] 3 end_if if #ab = %h[3 8] and %aj[3] > %h[3 3] set %h[3 1] %aj[1] set %h[3 2] %aj[2] set %h[3 3] %aj[3] set %h[3 4] %m[3 1] set %h[3 5] %m[3 2] set %h[3 6] %bf[#bo #bn] set %h[3 7] %bg[#bo #bn] set %h[3 9] 3 end_if if #ab > %h[4 8] and %aj[3] > 0 set %h[4 1] %aj[1] set %h[4 2] %aj[2] set %h[4 3] %aj[3] set %h[4 4] %m[3 1] set %h[4 5] %m[3 2] set %h[4 6] %bf[#bo #bn] set %h[4 7] %bg[#bo #bn] set %h[4 8] #ab set %h[4 9] 3 end_if if #ab = %h[4 8] and %aj[3] > %h[4 3] set %h[4 1] %aj[1] set %h[4 2] %aj[2] set %h[4 3] %aj[3] set %h[4 4] %m[3 1] set %h[4 5] %m[3 2] set %h[4 6] %bf[#bo #bn] set %h[4 7] %bg[#bo #bn] set %h[4 8] #ab set %h[4 9] 3 end_if if #bc > %h[5 8] and %aj[2] > 0 set %h[5 1] %aj[1] set %h[5 2] %aj[2] set %h[5 3] %aj[3] set %h[5 4] %m[3 1] set %h[5 5] %m[3 2] set %h[5 6] %bf[#bo #bn] set %h[5 7] %bg[#bo #bn] set %h[5 8] #bc set %h[5 9] 3 end_if if #bc = %h[5 8] and %aj[2] > 0 and %aj[1] > %h[5 1] set %h[5 1] %aj[1] set %h[5 2] %aj[2] set %h[5 3] %aj[3] set %h[5 4] %m[3 1] set %h[5 5] %m[3 2] set %h[5 6] %bf[#bo #bn] set %h[5 7] %bg[#bo #bn] set %h[5 8] #bc set %h[5 9] 3 end_if if #ai > %h[6 10] set %h[6 1] %aj[1] set %h[6 2] %aj[2] set %h[6 3] %aj[3] set %h[6 4] %m[3 1] set %h[6 5] %m[3 2] set %h[6 6] %bf[#bo #bn] set %h[6 7] %bg[#bo #bn] set %h[6 8] #abc set %h[6 9] 3 set %h[6 10] #ai end_if if #ai = %h[6 10] and #dsf > %h[6 8] set %h[6 1] %aj[1] set %h[6 2] %aj[2] set %h[6 3] %aj[3] set %h[6 4] %m[3 1] set %h[6 5] %m[3 2] set %h[6 6] %bf[#bo #bn] set %h[6 7] %bg[#bo #bn] set %h[6 8] #abc set %h[6 9] 3 set %h[6 10] #ai end_if if #ak = 1 set %h[8 1] %aj[1] set %h[8 2] %aj[2] set %h[8 3] %aj[3] set %h[8 4] %m[3 1] set %h[8 5] %m[3 2] set %h[8 6] %bf[#bo #bn] set %h[8 7] %bg[#bo #bn] set %h[8 9] 3 end_if end_for end_for return
:q for #bn 1 6 1 for #bo 1 6 1 set #ai 0 set #ak 0 set %aj[1] 0 set %aj[2] 0 set %aj[3] 0 set %ar %am for #bnd -1 1 1 set #bm #bn + #bnd if #bm > 0 and #bm < 7 for #bod -1 1 1 set #bq #bo + #bod if #bq > 0 and #bq < 7 set %az [#bq #bm] %ar[#bq #bm] set %ar[#bq #bm] 0 end_if end_for end_if end_for gosub au gosub at set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 1 goto bs end_if gosub au gosub at set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 2 goto bs end_if gosub au gosub at set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 3 goto bs end_if gosub au gosub at set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 4 goto bs end_if gosub au set #av 5 :bs if #av > #t set #t #av end_if set %aj[3] %aj[3] - 20 set #ab %aj[1] + %aj[2] set #bc %aj[2] + %aj[3] set #abc %aj[1] + %aj[2] + %aj[3] if %aj[3] > %h[1 3] set %h[1 1] %aj[1] set %h[1 2] %aj[2] set %h[1 3] %aj[3] set %h[1 4] %m[2 1] set %h[1 5] %m[2 2] set %h[1 6] %bf[#bo #bn] set %h[1 7] %bg[#bo #bn] set %h[1 9] 2 end_if if %aj[3] = %h[1 3] and #asd > %h[1 8] set %h[1 1] %aj[1] set %h[1 2] %aj[2] set %h[1 3] %aj[3] set %h[1 4] %m[2 1] set %h[1 5] %m[2 2] set %h[1 6] %bf[#bo #bn] set %h[1 7] %bg[#bo #bn] set %h[1 8] #ab set %h[1 9] 2 end_if if #abc > %h[2 8] set %h[2 1] %aj[1] set %h[2 2] %aj[2] set %h[2 3] %aj[3] set %h[2 4] %m[2 1] set %h[2 5] %m[2 2] set %h[2 6] %bf[#bo #bn] set %h[2 7] %bg[#bo #bn] set %h[2 8] #abc set %h[2 9] 2 end_if set #s2ab %h[2 1] + %h[2 2] if #abc = %h[2 8] and %aj[3] > 20 and #ab > #s2ab set %h[2 1] %aj[1] set %h[2 2] %aj[2] set %h[2 3] %aj[3] set %h[2 4] %m[2 1] set %h[2 5] %m[2 2] set %h[2 6] %bf[#bo #bn] set %h[2 7] %bg[#bo #bn] set %h[2 8] #abc set %h[2 9] 2 end_if if #ab > %h[3 8] set %h[3 1] %aj[1] set %h[3 2] %aj[2] set %h[3 3] %aj[3] set %h[3 4] %m[2 1] set %h[3 5] %m[2 2] set %h[3 6] %bf[#bo #bn] set %h[3 7] %bg[#bo #bn] set %h[3 8] #ab set %h[3 9] 2 end_if if #ab = %h[3 8] and %aj[3] > %h[3 3] set %h[3 1] %aj[1] set %h[3 2] %aj[2] set %h[3 3] %aj[3] set %h[3 4] %m[2 1] set %h[3 5] %m[2 2] set %h[3 6] %bf[#bo #bn] set %h[3 7] %bg[#bo #bn] set %h[3 9] 2 end_if if #ab > %h[4 8] and %aj[3] > 0 set %h[4 1] %aj[1] set %h[4 2] %aj[2] set %h[4 3] %aj[3] set %h[4 4] %m[2 1] set %h[4 5] %m[2 2] set %h[4 6] %bf[#bo #bn] set %h[4 7] %bg[#bo #bn] set %h[4 8] #ab set %h[4 9] 2 end_if if #ab = %h[4 8] and %aj[3] > %h[4 3] set %h[4 1] %aj[1] set %h[4 2] %aj[2] set %h[4 3] %aj[3] set %h[4 4] %m[2 1] set %h[4 5] %m[2 2] set %h[4 6] %bf[#bo #bn] set %h[4 7] %bg[#bo #bn] set %h[4 8] #ab set %h[4 9] 2 end_if if #bc > %h[5 8] and %aj[2] > 0 set %h[5 1] %aj[1] set %h[5 2] %aj[2] set %h[5 3] %aj[3] set %h[5 4] %m[2 1] set %h[5 5] %m[2 2] set %h[5 6] %bf[#bo #bn] set %h[5 7] %bg[#bo #bn] set %h[5 8] #bc set %h[5 9] 2 end_if if #bc = %h[5 8] and %aj[2] > 0 and %aj[1] > %h[5 1] set %h[5 1] %aj[1] set %h[5 2] %aj[2] set %h[5 3] %aj[3] set %h[5 4] %m[2 1] set %h[5 5] %m[2 2] set %h[5 6] %bf[#bo #bn] set %h[5 7] %bg[#bo #bn] set %h[5 8] #bc set %h[5 9] 2 end_if if #ai > %h[6 10] set %h[6 1] %aj[1] set %h[6 2] %aj[2] set %h[6 3] %aj[3] set %h[6 4] %m[2 1] set %h[6 5] %m[2 2] set %h[6 6] %bf[#bo #bn] set %h[6 7] %bg[#bo #bn] set %h[6 8] #abc set %h[6 9] 2 set %h[6 10] #ai end_if if #ai = %h[6 10] and #dsf > %h[6 8] set %h[6 1] %aj[1] set %h[6 2] %aj[2] set %h[6 3] %aj[3] set %h[6 4] %m[2 1] set %h[6 5] %m[2 2] set %h[6 6] %bf[#bo #bn] set %h[6 7] %bg[#bo #bn] set %h[6 8] #abc set %h[6 9] 2 set %h[6 10] #ai end_if if #ak = 1 set %h[8 1] %aj[1] set %h[8 2] %aj[2] set %h[8 3] %aj[3] set %h[8 4] %m[2 1] set %h[8 5] %m[2 2] set %h[8 6] %bf[#bo #bn] set %h[8 7] %bg[#bo #bn] set %h[8 9] 2 end_if end_for end_for return
:k set #k 0 for #y 1 5 1 for #x 1 2 1 set #lx1 #x set #lx2 #x + 1 set #lx3 #x + 2 set #lx4 #x + 3 set #lx5 #x + 4 set #ly1 #y set #ly2 #y + 1 set #det %am[#lx1, #ly1] + %am[#lx2, #ly1] + %am[#lx3, #ly2] + %am[#lx4, #ly1] + %am[#lx5, #ly1] if #det = 5 or #det = 50 or #det = 500 or #det = 5000 or #det = 50000 left %bf[#lx3 #ly2], %bg[#lx3 #ly2] wait 50 left %bf[#lx3 #ly1], %bg[#lx3 #ly1] set #k 1 end_if set #det %am[#lx1, #ly2] + %am[#lx2, #ly2] + %am[#lx3, #ly1] + %am[#lx4, #ly2] + %am[#lx5, #ly2] if #det = 5 or #det = 50 or #det = 500 or #det = 5000 or #det = 50000 left %bf[#lx3 #ly1], %bg[#lx3 #ly1] wait 50 left %bf[#lx3 #ly2], %bg[#lx3 #ly2] set #k 1 end_if end_for end_for if #k = 0 for #y 1 2 1 for #x 1 5 1 set #ly1 #y set #ly2 #y + 1 set #ly3 #y + 2 set #ly4 #y + 3 set #ly5 #y + 4 set #lx1 #x set #lx2 #x + 1 set #det %am[#lx1, #ly1] + %am[#lx1, #ly2] + %am[#lx2, #ly3] + %am[#lx1, #ly4] + %am[#lx1, #ly5] if #det = 5 or #det = 50 or #det = 500 or #det = 5000 or #det = 50000 left %bf[#lx2 #ly3], %bg[#lx2 #ly3] wait 50 left %bf[#lx1 #ly3], %bg[#lx1 #ly3] set #k 1 end_if set #det %am[#lx2, #ly1] + %am[#lx2, #ly2] + %am[#lx1, #ly3] + %am[#lx2, #ly4] + %am[#lx2, #ly5] if #det = 5 or #det = 50 or #det = 500 or #det = 5000 or #det = 50000 left %bf[#lx1 #ly3], %bg[#lx1 #ly3] wait 50 left %bf[#lx2 #ly3], %bg[#lx2 #ly3] set #k 1 end_if end_for end_for end_if return
:c set #ad %a[1 1] - 273 set #ae %a[1 1] - 217 set #ag %a[1 2] + 57 set #x %a[1 1] - 266 set #y %a[1 1] - 196 set #aa %a[1 2] + 76 set %e[1 1] %a[1 1] - 81 set %e[1 2] %a[1 2] + 49 set %e[1 3] 65416 set %pole[1 1] %a[1 1] - 90 set %pole[1 2] %a[1 2] + 103 for #y 1 6 1 for #x 1 6 1 set %bf[#x #y] %pole[1 1] + (#x - 1) * 41 set %bg[#x #y] %pole[1 2] + (#y - 1) * 41 end_for end_for set %m[1 1] %a[1 1] - 252 set %m[1 2] %a[1 2] + 439 for #x 1 5 1 set %m[#x 1] %m[1 1] + (#x - 1) * 53 set %m[#x 2] %m[1 2] set #bu #x + 5 set %m[#bu 1] %m[1 1] + (#x - 1) * 53 set %m[#bu 2] %m[1 2] + 53 end_for set %m[5 3] 4224183 set %m[4 3] 7855082 set %m[3 3] 16382440 set %m[2 3] 16776191 set %bt[1 1] %a[1 1] + 60 set %bt[1 2] %a[1 2] + 439 end_if while_not %e[1 1], %e[1 2] %e[1 3] wait 100 end_while :bv for #x 1 5 1 set %bt[#x 1] %bt[1 1] + (#x - 1) * 53 set %bt[#x 2] %bt[1 2] get color #s %bt[#x 1] %bt[#x 2] set %bt[#x 3] #s set #bu #x + 5 set %bt[#bu 1] %bt[1 1] + (#x - 1) * 53 set %bt[#bu 2] %bt[1 2] + 53 get color #s %bt[#bu 1] %bt[#bu 2] set %bt[#bu 3] #s end_for get color #s %bt[1 1] %bt[1 2] if_not #s = %bt[1 3] goto bv end_if return
:as set #n 0 set #o 0 for #ax 1 6 1 set #line31 0 set #line32 0 set #line33 0 set #line34 0 set #bw %al[#ax 1] + %al[#ax 2] + %al[#ax 3] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line31 1 for #aw 1 3 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #bw %al[#ax 2] + %al[#ax 3] + %al[#ax 4] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line32 1 for #aw 2 4 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #bw %al[#ax 3] + %al[#ax 4] + %al[#ax 5] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line33 1 for #aw 3 5 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #bw %al[#ax 4] + %al[#ax 5] + %al[#ax 6] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line34 1 for #aw 4 6 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #line51 #line31 + #line33 set #line52 #line32 + #line34 if #line51 = 2 or #line52 = 2 set #o 1 end_if end_for for #aw 1 6 1 set #line31 0 set #line32 0 set #line33 0 set #line34 0 set #bw %al[1 #aw] + %al[2 #aw] + %al[3 #aw] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line31 1 for #ax 1 3 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #bw %al[2 #aw] + %al[3 #aw] + %al[4 #aw] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line32 1 for #ax 2 4 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #bw %al[3 #aw] + %al[4 #aw] + %al[5 #aw] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line33 1 for #ax 3 5 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #bw %al[4 #aw] + %al[5 #aw] + %al[6 #aw] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line34 1 for #ax 4 6 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #line51 #line31 + #line33 set #line52 #line32 + #line34 if #line51 = 2 or #line52 = 2 set #o 1 end_if end_for return
:P for #y 1 5 1 for #x 1 4 1 set #ai 0 set #lx1 #x set #lx2 #x + 1 set #lx3 #x + 2 set #ly1 #y set #ly2 #y + 1 set #det %am[#lx1, #ly1] + %am[#lx2, #ly2] + %am[#lx3, #ly1] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #an #lx2 set #ao #ly2 set #ap #lx2 set #aq #ly1 gosub ah gosub bx end_if set #det %am[#lx1, #ly2] + %am[#lx2, #ly1] + %am[#lx3, #ly2] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #an #lx2 set #ao #ly1 set #ap #lx2 set #aq #ly2 gosub ah gosub bx end_if set #det %am[#lx1, #ly1] + %am[#lx2, #ly1] + %am[#lx3, #ly2] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #an #lx3 set #ao #ly2 set #ap #lx3 set #aq #ly1 gosub ah gosub bx end_if set #det %am[#lx1, #ly2] + %am[#lx2, #ly2] + %am[#lx3, #ly1] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #an #lx3 set #ao #ly1 set #ap #lx3 set #aq #ly2 gosub ah gosub bx end_if set #det %am[#lx1, #ly2] + %am[#lx2, #ly1] + %am[#lx3, #ly1] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #an #lx1 set #ao #ly2 set #ap #lx1 set #aq #ly1 gosub ah gosub bx end_if set #det %am[#lx1, #ly1] + %am[#lx2, #ly2] + %am[#lx3, #ly2] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #an #lx1 set #ao #ly1 set #ap #lx1 set #aq #ly2 gosub ah gosub bx end_if end_for end_for for #ly1 1 6 1 for #x 1 3 1 set #ai 0 set #lx1 #x set #lx2 #x + 1 set #lx3 #x + 2 set #lx4 #x + 3 set #det %am[#lx1, #ly1] + %am[#lx2, #ly1] + %am[#lx4, #ly1] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #an #lx4 set #ao #ly1 set #ap #lx3 set #aq #ly1 gosub ah gosub bx end_if set #det %am[#lx1, #ly1] + %am[#lx3, #ly1] + %am[#lx4, #ly1] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #an #lx1 set #ao #ly1 set #ap #lx2 set #aq #ly1 gosub ah gosub bx end_if end_for end_for for #x 1 5 1 for #y 1 4 1 set #ai 0 set #ly1 #y set #ly2 #y + 1 set #ly3 #y + 2 set #lx1 #x set #lx2 #x + 1 set #det %am[#lx1, #ly1] + %am[#lx2, #ly2] + %am[#lx1, #ly3] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #an #lx2 set #ao #ly2 set #ap #lx1 set #aq #ly2 gosub ah gosub bx end_if set #det %am[#lx2, #ly1] + %am[#lx1, #ly2] + %am[#lx2, #ly3] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #an #lx1 set #ao #ly2 set #ap #lx2 set #aq #ly2 gosub ah gosub bx end_if set #det %am[#lx1, #ly1] + %am[#lx1, #ly2] + %am[#lx2, #ly3] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #an #lx2 set #ao #ly3 set #ap #lx1 set #aq #ly3 gosub ah gosub bx end_if set #det %am[#lx2, #ly1] + %am[#lx2, #ly2] + %am[#lx1, #ly3] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #an #lx1 set #ao #ly3 set #ap #lx2 set #aq #ly3 gosub ah gosub bx end_if set #det %am[#lx2, #ly1] + %am[#lx1, #ly2] + %am[#lx1, #ly3] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #an #lx2 set #ao #ly1 set #ap #lx1 set #aq #ly1 gosub ah gosub bx end_if set #det %am[#lx1, #ly1] + %am[#lx2, #ly2] + %am[#lx2, #ly3] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #an #lx1 set #ao #ly1 set #ap #lx2 set #aq #ly1 gosub ah gosub bx end_if end_for end_for for #lx1 1 6 1 for #y 1 3 1 set #ai 0 set #ly1 #y set #ly2 #y + 1 set #ly3 #y + 2 set #ly4 #y + 3 set #det %am[#lx1, #ly1] + %am[#lx1, #ly2] + %am[#lx1, #ly4] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #an #lx1 set #ao #ly4 set #ap #lx1 set #aq #ly3 gosub ah gosub bx end_if set #det %am[#lx1, #ly1] + %am[#lx1, #ly3] + %am[#lx1, #ly4] if #det = 3 or #det = 30 or #det = 300 or #det = 3000 or #det = 30000 set #an #lx1 set #ao #ly1 set #ap #lx1 set #aq #ly2 gosub ah gosub bx end_if end_for end_for return
:bx if #av > #t set #t #av end_if set #ab %aj[1] + %aj[2] set #bc %aj[2] + %aj[3] set #abc %aj[1] + %aj[2] + %aj[3] if %aj[3] > %h[1 3] set %h[1 1] %aj[1] set %h[1 2] %aj[2] set %h[1 3] %aj[3] set %h[1 4] %bf[#an #ao] set %h[1 5] %bg[#an #ao] set %h[1 6] %bf[#ap #aq] set %h[1 7] %bg[#ap #aq] set %h[1 9] 1 end_if if %aj[3] = %h[1 3] and #ab > %h[1 8] set %h[1 1] %aj[1] set %h[1 2] %aj[2] set %h[1 3] %aj[3] set %h[1 4] %bf[#an #ao] set %h[1 5] %bg[#an #ao] set %h[1 6] %bf[#ap #aq] set %h[1 7] %bg[#ap #aq] set %h[1 8] #ab set %h[1 9] 1 end_if if #abc > %h[2 8] set %h[2 1] %aj[1] set %h[2 2] %aj[2] set %h[2 3] %aj[3] set %h[2 4] %bf[#an #ao] set %h[2 5] %bg[#an #ao] set %h[2 6] %bf[#ap #aq] set %h[2 7] %bg[#ap #aq] set %h[2 8] #abc set %h[2 9] 1 end_if if #ab > %h[3 8] set %h[3 1] %aj[1] set %h[3 2] %aj[2] set %h[3 3] %aj[3] set %h[3 4] %bf[#an #ao] set %h[3 5] %bg[#an #ao] set %h[3 6] %bf[#ap #aq] set %h[3 7] %bg[#ap #aq] set %h[3 8] #ab set %h[3 9] 1 end_if if #ab = %h[3 8] and %aj[3] > %h[3 3] set %h[3 1] %aj[1] set %h[3 2] %aj[2] set %h[3 3] %aj[3] set %h[3 4] %bf[#an #ao] set %h[3 5] %bg[#an #ao] set %h[3 6] %bf[#ap #aq] set %h[3 7] %bg[#ap #aq] set %h[3 9] 1 end_if if #ab > %h[4 8] and %aj[3] > 0 set %h[4 1] %aj[1] set %h[4 2] %aj[2] set %h[4 3] %aj[3] set %h[4 4] %bf[#an #ao] set %h[4 5] %bg[#an #ao] set %h[4 6] %bf[#ap #aq] set %h[4 7] %bg[#ap #aq] set %h[4 8] #ab set %h[4 9] 1 end_if if #ab = %h[4 8] and %aj[3] > %h[4 3] set %h[4 1] %aj[1] set %h[4 2] %aj[2] set %h[4 3] %aj[3] set %h[4 4] %bf[#an #ao] set %h[4 5] %bg[#an #ao] set %h[4 6] %bf[#ap #aq] set %h[4 7] %bg[#ap #aq] set %h[4 8] #ab set %h[4 9] 1 end_if if #bc > %h[5 8] and %aj[2] > 0 set %h[5 1] %aj[1] set %h[5 2] %aj[2] set %h[5 3] %aj[3] set %h[5 4] %bf[#an #ao] set %h[5 5] %bg[#an #ao] set %h[5 6] %bf[#ap #aq] set %h[5 7] %bg[#ap #aq] set %h[5 8] #bc set %h[5 9] 1 end_if if #bc = %h[5 8] and %aj[2] > 0 and %aj[1] > %h[5 1] set %h[5 1] %aj[1] set %h[5 2] %aj[2] set %h[5 3] %aj[3] set %h[5 4] %bf[#an #ao] set %h[5 5] %bg[#an #ao] set %h[5 6] %bf[#ap #aq] set %h[5 7] %bg[#ap #aq] set %h[5 9] 1 end_if if #ai > %h[6 10] set %h[6 1] %aj[1] set %h[6 2] %aj[2] set %h[6 3] %aj[3] set %h[6 4] %bf[#an #ao] set %h[6 5] %bg[#an #ao] set %h[6 6] %bf[#ap #aq] set %h[6 7] %bg[#ap #aq] set %h[6 8] #abc set %h[6 9] 1 set %h[6 10] #ai end_if if #ai = %h[6 10] and #abc > %h[6 8] set %h[6 1] %aj[1] set %h[6 2] %aj[2] set %h[6 3] %aj[3] set %h[6 4] %bf[#an #ao] set %h[6 5] %bg[#an #ao] set %h[6 6] %bf[#ap #aq] set %h[6 7] %bg[#ap #aq] set %h[6 8] #abc set %h[6 9] 1 set %h[6 10] #ai end_if if #ak = 1 set %h[8 1] %aj[1] set %h[8 2] %aj[2] set %h[8 3] %aj[3] set %h[8 4] %bf[#an #ao] set %h[8 5] %bg[#an #ao] set %h[8 6] %bf[#ap #aq] set %h[8 7] %bg[#ap #aq] set %h[8 9] 1 end_if return
второй название
:D load_array %am go2.txt load_array %bf polex.txt load_array %bg poley.txt load_array %m lpanel.txt if %am[7 1] = 1 goto dd end_if wait 500 goto d :Dd set %am[7 1] 0 save_array %am go2.txt for #f 1 8 1 for #g 1 10 1 set %h[#f #g] 0 end_for end_for set %j[1] 0 set %j[2] 0 set %j[3] 0 set #n 0 set #o 0 gosub q for #mx 11 16 1 for #my 1 6 1 set #mx1 #mx - 10 set %h[#mx #my] %am[#mx1 #my] end_for end_for save_array %h result2.txt goto d end_script
:at for #aw 6 2 -1 set #aw1 #aw - 1 for #ax 1 6 1 if %ar[#ax #aw] = 0 set #ay 0 for #aw2 #aw1 1 -1 if #ay = 0 if %ar[#ax #aw2] > 0 set %ar[#ax #aw] %ar[#ax #aw2] set %ar[#ax #aw2] 0 set #ay 1 end_if end_if end_for end_if end_for end_for return
:au for #aw 1 6 1 for #ax 1 6 1 if %az [#ax #aw] = 1 set %aj[1] %aj[1] + 5 set #ai #ai + 1 goto ba end_if if %az [#ax #aw] = 10 set %aj[2] %aj[2] + 1 set #ai #ai + 1 goto ba end_if if %az [#ax #aw] = 100 set %aj[3] %aj[3] + 5 set #ai #ai + 1 goto ba end_if if %az [#ax #aw] = 1000 set %aj[3] %aj[3] + 3 set #ai #ai + 1 goto ba end_if if %az [#ax #aw] = 10000 set %aj[3] %aj[3] + 1 set #ai #ai + 1 goto ba end_if :ba set %az [#ax #aw] 0 end_for end_for return
:q for #bn 1 6 1 for #bo 1 6 1 set #ai 0 set #ak 0 set %aj[1] 0 set %aj[2] 0 set %aj[3] 0 set %ar %am for #bnd -1 1 1 set #bm #bn + #bnd if #bm > 0 and #bm < 7 for #bod -1 1 1 set #bq #bo + #bod if #bq > 0 and #bq < 7 set %az [#bq #bm] %ar[#bq #bm] set %ar[#bq #bm] 0 end_if end_for end_if end_for gosub au gosub at set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 1 goto bs end_if gosub au gosub at set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 2 goto bs end_if gosub au gosub at set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 3 goto bs end_if gosub au gosub at set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 4 goto bs end_if gosub au set #av 5 :bs if #av > #t set #t #av end_if set %aj[3] %aj[3] - 20 set #ab %aj[1] + %aj[2] set #bc %aj[2] + %aj[3] set #abc %aj[1] + %aj[2] + %aj[3] if %aj[3] > %h[1 3] set %h[1 1] %aj[1] set %h[1 2] %aj[2] set %h[1 3] %aj[3] set %h[1 4] %m[2 1] set %h[1 5] %m[2 2] set %h[1 6] %bf[#bo #bn] set %h[1 7] %bg[#bo #bn] set %h[1 9] 2 end_if if %aj[3] = %h[1 3] and #asd > %h[1 8] set %h[1 1] %aj[1] set %h[1 2] %aj[2] set %h[1 3] %aj[3] set %h[1 4] %m[2 1] set %h[1 5] %m[2 2] set %h[1 6] %bf[#bo #bn] set %h[1 7] %bg[#bo #bn] set %h[1 8] #ab set %h[1 9] 2 end_if if #abc > %h[2 8] set %h[2 1] %aj[1] set %h[2 2] %aj[2] set %h[2 3] %aj[3] set %h[2 4] %m[2 1] set %h[2 5] %m[2 2] set %h[2 6] %bf[#bo #bn] set %h[2 7] %bg[#bo #bn] set %h[2 8] #abc set %h[2 9] 2 end_if set #s2ab %h[2 1] + %h[2 2] if #abc = %h[2 8] and %aj[3] > 20 and #ab > #s2ab set %h[2 1] %aj[1] set %h[2 2] %aj[2] set %h[2 3] %aj[3] set %h[2 4] %m[2 1] set %h[2 5] %m[2 2] set %h[2 6] %bf[#bo #bn] set %h[2 7] %bg[#bo #bn] set %h[2 8] #abc set %h[2 9] 2 end_if if #ab > %h[3 8] set %h[3 1] %aj[1] set %h[3 2] %aj[2] set %h[3 3] %aj[3] set %h[3 4] %m[2 1] set %h[3 5] %m[2 2] set %h[3 6] %bf[#bo #bn] set %h[3 7] %bg[#bo #bn] set %h[3 8] #ab set %h[3 9] 2 end_if if #ab = %h[3 8] and %aj[3] > %h[3 3] set %h[3 1] %aj[1] set %h[3 2] %aj[2] set %h[3 3] %aj[3] set %h[3 4] %m[2 1] set %h[3 5] %m[2 2] set %h[3 6] %bf[#bo #bn] set %h[3 7] %bg[#bo #bn] set %h[3 9] 2 end_if if #ab > %h[4 8] and %aj[3] > 0 set %h[4 1] %aj[1] set %h[4 2] %aj[2] set %h[4 3] %aj[3] set %h[4 4] %m[2 1] set %h[4 5] %m[2 2] set %h[4 6] %bf[#bo #bn] set %h[4 7] %bg[#bo #bn] set %h[4 8] #ab set %h[4 9] 2 end_if if #ab = %h[4 8] and %aj[3] > %h[4 3] set %h[4 1] %aj[1] set %h[4 2] %aj[2] set %h[4 3] %aj[3] set %h[4 4] %m[2 1] set %h[4 5] %m[2 2] set %h[4 6] %bf[#bo #bn] set %h[4 7] %bg[#bo #bn] set %h[4 8] #ab set %h[4 9] 2 end_if if #bc > %h[5 8] and %aj[2] > 0 set %h[5 1] %aj[1] set %h[5 2] %aj[2] set %h[5 3] %aj[3] set %h[5 4] %m[2 1] set %h[5 5] %m[2 2] set %h[5 6] %bf[#bo #bn] set %h[5 7] %bg[#bo #bn] set %h[5 8] #bc set %h[5 9] 2 end_if if #bc = %h[5 8] and %aj[2] > 0 and %aj[1] > %h[5 1] set %h[5 1] %aj[1] set %h[5 2] %aj[2] set %h[5 3] %aj[3] set %h[5 4] %m[2 1] set %h[5 5] %m[2 2] set %h[5 6] %bf[#bo #bn] set %h[5 7] %bg[#bo #bn] set %h[5 8] #bc set %h[5 9] 2 end_if if #ai > %h[6 10] set %h[6 1] %aj[1] set %h[6 2] %aj[2] set %h[6 3] %aj[3] set %h[6 4] %m[2 1] set %h[6 5] %m[2 2] set %h[6 6] %bf[#bo #bn] set %h[6 7] %bg[#bo #bn] set %h[6 8] #abc set %h[6 9] 2 set %h[6 10] #ai end_if if #ai = %h[6 10] and #dsf > %h[6 8] set %h[6 1] %aj[1] set %h[6 2] %aj[2] set %h[6 3] %aj[3] set %h[6 4] %m[2 1] set %h[6 5] %m[2 2] set %h[6 6] %bf[#bo #bn] set %h[6 7] %bg[#bo #bn] set %h[6 8] #abc set %h[6 9] 2 set %h[6 10] #ai end_if if #ak = 1 set %h[8 1] %aj[1] set %h[8 2] %aj[2] set %h[8 3] %aj[3] set %h[8 4] %m[2 1] set %h[8 5] %m[2 2] set %h[8 6] %bf[#bo #bn] set %h[8 7] %bg[#bo #bn] set %h[8 9] 2 end_if end_for end_for return
:as set #n 0 set #o 0 for #ax 1 6 1 set #line31 0 set #line32 0 set #line33 0 set #line34 0 set #bw %al[#ax 1] + %al[#ax 2] + %al[#ax 3] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line31 1 for #aw 1 3 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #bw %al[#ax 2] + %al[#ax 3] + %al[#ax 4] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line32 1 for #aw 2 4 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #bw %al[#ax 3] + %al[#ax 4] + %al[#ax 5] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line33 1 for #aw 3 5 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #bw %al[#ax 4] + %al[#ax 5] + %al[#ax 6] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line34 1 for #aw 4 6 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #line51 #line31 + #line33 set #line52 #line32 + #line34 if #line51 = 2 or #line52 = 2 set #o 1 end_if end_for for #aw 1 6 1 set #line31 0 set #line32 0 set #line33 0 set #line34 0 set #bw %al[1 #aw] + %al[2 #aw] + %al[3 #aw] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line31 1 for #ax 1 3 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #bw %al[2 #aw] + %al[3 #aw] + %al[4 #aw] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line32 1 for #ax 2 4 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #bw %al[3 #aw] + %al[4 #aw] + %al[5 #aw] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line33 1 for #ax 3 5 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #bw %al[4 #aw] + %al[5 #aw] + %al[6 #aw] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line34 1 for #ax 4 6 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #line51 #line31 + #line33 set #line52 #line32 + #line34 if #line51 = 2 or #line52 = 2 set #o 1 end_if end_for return
третий название
:D load_array %am go3.txt load_array %bf polex.txt load_array %bg poley.txt load_array %m lpanel.txt if %am[7 1] = 1 goto dd end_if wait 500 goto d :Dd set %am[7 1] 0 save_array %am go3.txt for #f 1 8 1 for #g 1 10 1 set %h[#f #g] 0 end_for end_for set %j[1] 0 set %j[2] 0 set %j[3] 0 set #n 0 set #o 0 gosub r for #mx 11 16 1 for #my 1 6 1 set #mx1 #mx - 10 set %h[#mx #my] %am[#mx1 #my] end_for end_for save_array %h result3.txt goto d end_script
:at for #aw 6 2 -1 set #aw1 #aw - 1 for #ax 1 6 1 if %ar[#ax #aw] = 0 set #ay 0 for #aw2 #aw1 1 -1 if #ay = 0 if %ar[#ax #aw2] > 0 set %ar[#ax #aw] %ar[#ax #aw2] set %ar[#ax #aw2] 0 set #ay 1 end_if end_if end_for end_if end_for end_for return
:au for #aw 1 6 1 for #ax 1 6 1 if %az [#ax #aw] = 1 set %aj[1] %aj[1] + 5 set #ai #ai + 1 goto ba end_if if %az [#ax #aw] = 10 set %aj[2] %aj[2] + 1 set #ai #ai + 1 goto ba end_if if %az [#ax #aw] = 100 set %aj[3] %aj[3] + 5 set #ai #ai + 1 goto ba end_if if %az [#ax #aw] = 1000 set %aj[3] %aj[3] + 3 set #ai #ai + 1 goto ba end_if if %az [#ax #aw] = 10000 set %aj[3] %aj[3] + 1 set #ai #ai + 1 goto ba end_if :ba set %az [#ax #aw] 0 end_for end_for return
:r for #bn 1 6 1 for #bo 1 6 1 set #ai 0 set #ak 0 set %aj[1] 0 set %aj[2] 0 set %aj[3] 0 set %ar %am for #bl -2 2 1 set #bm #bn + #bl if #bm > 0 and #bm < 7 set %az [#bo #bm] %ar[#bo #bm] set %ar[#bo #bm] 0 end_if end_for for #bp -2 2 1 set #bq #bo + #bp if #bq > 0 and #bq < 7 and #bq <> #bo set %az [#bq #bn] %ar[#bq #bn] set %ar[#bq #bn] 0 end_if end_for gosub at gosub au set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 1 goto br end_if gosub au gosub at set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 2 goto br end_if gosub au gosub at set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 3 goto br end_if gosub au gosub at set %al %ar gosub as if #o = 1 set #ak 1 end_if if #n = 0 set #av 4 goto br end_if gosub au set #av 5 :br if #av > #t set #t #av end_if set %aj[3] %aj[3] - 20 set #ab %aj[1] + %aj[2] set #bc %aj[2] + %aj[3] set #abc %aj[1] + %aj[2] + %aj[3] if %aj[3] > %h[1 3] set %h[1 1] %aj[1] set %h[1 2] %aj[2] set %h[1 3] %aj[3] set %h[1 4] %m[3 1] set %h[1 5] %m[3 2] set %h[1 6] %bf[#bo #bn] set %h[1 7] %bg[#bo #bn] set %h[1 9] 3 end_if if %aj[3] = %h[1 3] and #asd > %h[1 8] set %h[1 1] %aj[1] set %h[1 2] %aj[2] set %h[1 3] %aj[3] set %h[1 4] %m[3 1] set %h[1 5] %m[3 2] set %h[1 6] %bf[#bo #bn] set %h[1 7] %bg[#bo #bn] set %h[1 8] #ab set %h[1 9] 3 end_if if #abc > %h[2 8] set %h[2 1] %aj[1] set %h[2 2] %aj[2] set %h[2 3] %aj[3] set %h[2 4] %m[3 1] set %h[2 5] %m[3 2] set %h[2 6] %bf[#bo #bn] set %h[2 7] %bg[#bo #bn] set %h[2 8] #abc set %h[2 9] 3 end_if set #s2ab %h[2 1] + %h[2 2] if #abc = %h[2 8] and %aj[3] > 20 and #ab > #s2ab set %h[2 1] %aj[1] set %h[2 2] %aj[2] set %h[2 3] %aj[3] set %h[2 4] %m[3 1] set %h[2 5] %m[3 2] set %h[2 6] %bf[#bo #bn] set %h[2 7] %bg[#bo #bn] set %h[2 8] #abc set %h[2 9] 3 end_if if #ab > %h[3 8] set %h[3 1] %aj[1] set %h[3 2] %aj[2] set %h[3 3] %aj[3] set %h[3 4] %m[3 1] set %h[3 5] %m[3 2] set %h[3 6] %bf[#bo #bn] set %h[3 7] %bg[#bo #bn] set %h[3 8] #ab set %h[3 9] 3 end_if if #ab = %h[3 8] and %aj[3] > %h[3 3] set %h[3 1] %aj[1] set %h[3 2] %aj[2] set %h[3 3] %aj[3] set %h[3 4] %m[3 1] set %h[3 5] %m[3 2] set %h[3 6] %bf[#bo #bn] set %h[3 7] %bg[#bo #bn] set %h[3 9] 3 end_if if #ab > %h[4 8] and %aj[3] > 0 set %h[4 1] %aj[1] set %h[4 2] %aj[2] set %h[4 3] %aj[3] set %h[4 4] %m[3 1] set %h[4 5] %m[3 2] set %h[4 6] %bf[#bo #bn] set %h[4 7] %bg[#bo #bn] set %h[4 8] #ab set %h[4 9] 3 end_if if #ab = %h[4 8] and %aj[3] > %h[4 3] set %h[4 1] %aj[1] set %h[4 2] %aj[2] set %h[4 3] %aj[3] set %h[4 4] %m[3 1] set %h[4 5] %m[3 2] set %h[4 6] %bf[#bo #bn] set %h[4 7] %bg[#bo #bn] set %h[4 8] #ab set %h[4 9] 3 end_if if #bc > %h[5 8] and %aj[2] > 0 set %h[5 1] %aj[1] set %h[5 2] %aj[2] set %h[5 3] %aj[3] set %h[5 4] %m[3 1] set %h[5 5] %m[3 2] set %h[5 6] %bf[#bo #bn] set %h[5 7] %bg[#bo #bn] set %h[5 8] #bc set %h[5 9] 3 end_if if #bc = %h[5 8] and %aj[2] > 0 and %aj[1] > %h[5 1] set %h[5 1] %aj[1] set %h[5 2] %aj[2] set %h[5 3] %aj[3] set %h[5 4] %m[3 1] set %h[5 5] %m[3 2] set %h[5 6] %bf[#bo #bn] set %h[5 7] %bg[#bo #bn] set %h[5 8] #bc set %h[5 9] 3 end_if if #ai > %h[6 10] set %h[6 1] %aj[1] set %h[6 2] %aj[2] set %h[6 3] %aj[3] set %h[6 4] %m[3 1] set %h[6 5] %m[3 2] set %h[6 6] %bf[#bo #bn] set %h[6 7] %bg[#bo #bn] set %h[6 8] #abc set %h[6 9] 3 set %h[6 10] #ai end_if if #ai = %h[6 10] and #dsf > %h[6 8] set %h[6 1] %aj[1] set %h[6 2] %aj[2] set %h[6 3] %aj[3] set %h[6 4] %m[3 1] set %h[6 5] %m[3 2] set %h[6 6] %bf[#bo #bn] set %h[6 7] %bg[#bo #bn] set %h[6 8] #abc set %h[6 9] 3 set %h[6 10] #ai end_if if #ak = 1 set %h[8 1] %aj[1] set %h[8 2] %aj[2] set %h[8 3] %aj[3] set %h[8 4] %m[3 1] set %h[8 5] %m[3 2] set %h[8 6] %bf[#bo #bn] set %h[8 7] %bg[#bo #bn] set %h[8 9] 3 end_if end_for end_for return
:as set #n 0 set #o 0 for #ax 1 6 1 set #line31 0 set #line32 0 set #line33 0 set #line34 0 set #bw %al[#ax 1] + %al[#ax 2] + %al[#ax 3] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line31 1 for #aw 1 3 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #bw %al[#ax 2] + %al[#ax 3] + %al[#ax 4] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line32 1 for #aw 2 4 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #bw %al[#ax 3] + %al[#ax 4] + %al[#ax 5] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line33 1 for #aw 3 5 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #bw %al[#ax 4] + %al[#ax 5] + %al[#ax 6] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line34 1 for #aw 4 6 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #line51 #line31 + #line33 set #line52 #line32 + #line34 if #line51 = 2 or #line52 = 2 set #o 1 end_if end_for for #aw 1 6 1 set #line31 0 set #line32 0 set #line33 0 set #line34 0 set #bw %al[1 #aw] + %al[2 #aw] + %al[3 #aw] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line31 1 for #ax 1 3 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #bw %al[2 #aw] + %al[3 #aw] + %al[4 #aw] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line32 1 for #ax 2 4 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #bw %al[3 #aw] + %al[4 #aw] + %al[5 #aw] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line33 1 for #ax 3 5 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #bw %al[4 #aw] + %al[5 #aw] + %al[6 #aw] if #bw = 3 or #bw = 30 or #bw = 300 or #bw = 3000 or #bw = 30000 set #n 1 set #line34 1 for #ax 4 6 1 set %az [#ax #aw] %al[#ax #aw] set %ar[#ax #aw] 0 end_for end_if set #line51 #line31 + #line33 set #line52 #line32 + #line34 if #line51 = 2 or #line52 = 2 set #o 1 end_if end_for return
|
|
|
|
Яичко |
28.4.2014, 16:33
|
Registred
Сообщений: 5
Регистрация: 28.4.2014 Группа: Пользователи Наличность: 0
Пользователь №: 16.799
Возраст: 36
|
Уважаемый автор, а можно чуть больше описания скрипта, плиз....что за точку ищете в самом начале в качестве привязки? подскрипты volmana, life -сам принцип, что делают подскрипты mind, mindcompress, calcmindsumm? /просто пытаюсь вникнуть -Ваша помощь бы была оч кстати.../ (IMG: style_emoticons/default/rolleyes.gif)
|
|
|
|
Яичко |
3.5.2014, 18:51
|
Registred
Сообщений: 5
Регистрация: 28.4.2014 Группа: Пользователи Наличность: 0
Пользователь №: 16.799
Возраст: 36
|
Цитата(BSW_rama @ 3.5.2014, 14:36) точки уже нет, раньше это была молния банка боя. волмана это количество маны, лифе это уровень здоровья. минд это диспетчер процесса обвала камней, миндкомпрес это алгоритм замещения камнями пустот после ликвидации линий по 3. калкминдсум это подсчёт выбитых очков. помоему этот скрипт ещё содержит ошибки, последняя версия что я делал, уже была разбита на 6 потоков. в 3 потока быстродействия не хватает, а вот если процак тнет хотябы 4 ядра/потока то уже вполне сносно считает.
с точкой разобрался, за остальные пояснения спасибо..не совсем понял зачем Лайф в первом варианте, так как дальше не используется нигде..переделал под свои привязки и культ первый вариант /в логику не лез вроде/ - работает не совсем корректно и не совсем быстро)), хотя ошибок не выдает..сегодня попробую второй вараинт распараллеленный переделать /хочется надеяться что скорость работы удовлетворит, проц 4-хядерник/ а во втором варианте зачем было менять названия массивов и переменных? так было понятнее..или это оптимизация такая -чем меньше букв , тем быстрее? (IMG: style_emoticons/default/biggrin.gif)
|
|
|
|
BSW_rama |
4.5.2014, 10:16
|
Apprentice
Сообщений: 188
Регистрация: 28.1.2013 Группа: Пользователи Наличность: 0
Пользователь №: 15.728
Возраст: 32
|
лайф это зарезервированная функция , вдруг пригодится (IMG: style_emoticons/default/smile.gif), если меает удали (IMG: style_emoticons/default/smile.gif) первый вариант он самый первый, потом пошла оптимизация на производительность и баг фикс. (кстати там в блоке at центральный цикл тоже не оптимизирован (IMG: style_emoticons/default/smile.gif), много холостого наматывает, а учитывая сколько раз он мотает то наверное 50% скорости теряет). и как ты правильно подметил все переменные сокращены, чтобы увеличить быстродействие и причём я бы сказал значительно... так как алгоритм очень популярен, я уже привык к сокращённым названиям блоков и мне уже не нужно в них разбираться, я так уже все переменные и блоки выучил наизусть (IMG: style_emoticons/default/smile.gif). меняю только размеры поля и условия выбора.
|
|
|
|
Яичко |
4.5.2014, 23:42
|
Registred
Сообщений: 5
Регистрация: 28.4.2014 Группа: Пользователи Наличность: 0
Пользователь №: 16.799
Возраст: 36
|
переделал под себя второй вариант -увы, скорости работы не хватает даже при трех потоках /как было замечено выше/,,, успевал сделать токо первый ход, пока мана не набрана ...последующие ждать приходилось секунд на 5 и до бесконечности дольше отмерянного игрой.. (IMG: style_emoticons/default/biggrin.gif) жаль..интересно то, что при вкладках с отдельными подскриптами , как тут рекомендовали корифеи -периодически выдает ошибку распознания какой то позиции...а если открыть три Пилота -все путем..) И самое интересное -скачал недавно СуисНебо -бот (подсказчик ходов)...работает по такому же принципу -учитывает и обвал камней...так он определяет и подсчитывает все варианты секунд за 10...на том же проце..логика вряд ли резко отличается..посетила мысль -может как то перевести скрипт на какой нибудь близкий по синтаксису язык программирования и скомпилировать в машинный код? /не программист, надеюсь термины употребил правильно)/ ..может производительность можно так подтянуть? люди ж какк то пишут боты к этой игре..да и хочется сделать красиво..с интерфейсом..кнопками и тд..для себя и под себя.. Отдельное спасибо за блоки Bestkrest и Bestkub - не придется самому логику разрабатывать..пока попробую сделать примитивного бота на обыск пещеры/бои с монстрами..
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|