Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  1 2 >  
Ответить в эту темуОткрыть новую тему
> бот для битвы гладиаторов "Небеса", да будет жесть!
BSW_rama
сообщение 27.3.2013, 21:33
Сообщение #1


****

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 27.3.2013, 21:45
Сообщение #2


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



название
код

нажмите под моим сообщением "Ответить" и увидите, как делается спойлер


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BSW_rama
сообщение 2.4.2013, 17:13
Сообщение #3


****

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BSW_rama
сообщение 16.4.2013, 18:18
Сообщение #4


****

Apprentice
Сообщений: 188
Регистрация: 28.1.2013
Группа: Пользователи
Наличность: 0
Пользователь №: 15.728
Возраст: 32



у кого 6 ядер пишите в личку, тут не выкладывается.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 8.8.2013, 18:06
Сообщение #5


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Цитата(BSW_rama @ 16.4.2013, 18:18) *

у кого 6 ядер пишите в личку, тут не выкладывается.

Уже какой раз пытаюсь запустить этот скрипт и почему то он не работает.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 13.8.2013, 19:39
Сообщение #6


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Вот мне интересно на кой черт 3 пилота, если каждая вкладка пилота является отдельным потоком?


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
xolost
сообщение 13.8.2013, 20:13
Сообщение #7


******

Expert
Сообщений: 517
Регистрация: 17.6.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.035



Цитата(DarkMaster @ 13.8.2013, 20:39) *

Вот мне интересно на кой черт 3 пилота, если каждая вкладка пилота является отдельным потоком?

+1
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Яичко
сообщение 28.4.2014, 16:33
Сообщение #8


*

Registred
Сообщений: 5
Регистрация: 28.4.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 16.799
Возраст: 36



Уважаемый автор, а можно чуть больше описания скрипта, плиз....что за точку ищете в самом начале в качестве привязки? подскрипты volmana, life -сам принцип, что делают подскрипты mind, mindcompress, calcmindsumm? /просто пытаюсь вникнуть -Ваша помощь бы была оч кстати.../ (IMG:style_emoticons/default/rolleyes.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BSW_rama
сообщение 3.5.2014, 14:36
Сообщение #9


****

Apprentice
Сообщений: 188
Регистрация: 28.1.2013
Группа: Пользователи
Наличность: 0
Пользователь №: 15.728
Возраст: 32



точки уже нет, раньше это была молния банка боя.
волмана это количество маны, лифе это уровень здоровья.
минд это диспетчер процесса обвала камней, миндкомпрес это алгоритм замещения камнями пустот после ликвидации линий по 3. калкминдсум это подсчёт выбитых очков.
помоему этот скрипт ещё содержит ошибки, последняя версия что я делал, уже была разбита на 6 потоков. в 3 потока быстродействия не хватает, а вот если процак тнет хотябы 4 ядра/потока то уже вполне сносно считает.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Яичко
сообщение 3.5.2014, 18:51
Сообщение #10


*

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)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BSW_rama
сообщение 4.5.2014, 10:16
Сообщение #11


****

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). меняю только размеры поля и условия выбора.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Яичко
сообщение 4.5.2014, 23:42
Сообщение #12


*

Registred
Сообщений: 5
Регистрация: 28.4.2014
Группа: Пользователи
Наличность: 0
Пользователь №: 16.799
Возраст: 36



переделал под себя второй вариант -увы, скорости работы не хватает даже при трех потоках /как было замечено выше/,,, успевал сделать токо первый ход, пока мана не набрана ...последующие ждать приходилось секунд на 5 и до бесконечности дольше отмерянного игрой.. (IMG:style_emoticons/default/biggrin.gif) жаль..интересно то, что при вкладках с отдельными подскриптами , как тут рекомендовали корифеи -периодически выдает ошибку распознания какой то позиции...а если открыть три Пилота -все путем..)

И самое интересное -скачал недавно СуисНебо -бот (подсказчик ходов)...работает по такому же принципу -учитывает и обвал камней...так он определяет и подсчитывает все варианты секунд за 10...на том же проце..логика вряд ли резко отличается..посетила мысль -может как то перевести скрипт на какой нибудь близкий по синтаксису язык программирования и скомпилировать в машинный код? /не программист, надеюсь термины употребил правильно)/ ..может производительность можно так подтянуть? люди ж какк то пишут боты к этой игре..да и хочется сделать красиво..с интерфейсом..кнопками и тд..для себя и под себя..

Отдельное спасибо за блоки Bestkrest и Bestkub - не придется самому логику разрабатывать..пока попробую сделать примитивного бота на обыск пещеры/бои с монстрами..
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 5.5.2014, 3:11
Сообщение #13


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Цитата
так он определяет и подсчитывает все варианты секунд за 10...на том же проце..

это еще надо было создать такой тормоз чтобы скомпиленный 10 секунд ворочал... 90-98% времени обработки пилота - это парсинг скрипта.

Вообще весь этот скрипт изначально сделан по ошибочной архитектуре из-за чего упирается в мифические проблемы быстродействия. Я консультировал одного формучанина по написанию аналогичного скрипта, вся обработка занимала не более 2 секунд. Формучанин скрылся, скрипт не закончили. Темка называлась "упростить скрипт" на 40+ страниц.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 5.5.2014, 17:23
Сообщение #14


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Цитата(DarkMaster @ 5.5.2014, 3:11) *

Формучанин скрылся, скрипт не закончили.

Я не скрылся, Вы сказали что заняты, вот я и жду когда освободитесь))
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 5.5.2014, 17:50
Сообщение #15


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Ты скрылся, через пол года появился. Сейчас реально не до этого. Хотя были мысли быро самому дописать, если честно...


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
veiron
сообщение 5.5.2014, 18:40
Сообщение #16


********

Master
Сообщений: 1.264
Регистрация: 22.5.2012
Группа: Пользователи
Наличность: 0
Из: Белоруссии
Пользователь №: 14.972



Цитата(DarkMaster @ 5.5.2014, 17:50) *

Сейчас реально не до этого.

Вот я и жду когда будет время свободное.

Цитата(DarkMaster @ 5.5.2014, 17:50) *

Хотя были мысли быро самому дописать, если честно...

Хорошая мысль, жаль что не дописали...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BSW_rama
сообщение 5.5.2014, 20:12
Сообщение #17


****

Apprentice
Сообщений: 188
Регистрация: 28.1.2013
Группа: Пользователи
Наличность: 0
Пользователь №: 15.728
Возраст: 32



народ чё вы тут критикуете? это была первая партия из серии вычисления ходов из 3.
щас у меня за 50 мс вычисляется
1) 5 вариантов ходов
2) обсчёт остатка после хода.
3) и самый тяжёлый алгоритм - подстава. это когда делается ход, потом ход противника, и потом уже ты получаешь свои дивиденты. правда для другой игры где поле не 6 на 6, а 8 на 8. и сканируется такое поле за 200мс.
реализовано арифметическое ядро на дэлфи... а для небес я щас поднял кальк который просчитывает всё что можно за сотню мс собраный на автохоткее. даже делфи ворочить не нужно. и алгоритм блоки значительно оптимизированы.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 5.5.2014, 20:37
Сообщение #18


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Цитата
народ чё вы тут критикуете?

ну потому что оно реально криво изначально. подход ошибочен. Если бы собирался массив из изображений, а не постоянно проверялись точки, то вот это:
Цитата
реализовано арифметическое ядро на дэлфи... а для небес я щас поднял кальк который просчитывает всё что можно за сотню мс собраный на автохоткее. даже делфи ворочить не нужно. и алгоритм блоки значительно оптимизированы.

просто бы не имело смысла. Ну будет работать оно на пилоте в течении 200 мс собирая картинки и еще 1500 математику пересчитывать. Ну какая разница для шариков эти 1,5 секунды? Не думаю, что там реальный прирост скорости боя будет. Как минимум он не критичный будет.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
BSW_rama
сообщение 6.5.2014, 4:51
Сообщение #19


****

Apprentice
Сообщений: 188
Регистрация: 28.1.2013
Группа: Пользователи
Наличность: 0
Пользователь №: 15.728
Возраст: 32



на ход даётся 30 сек, сканируетя поле исключительно пилотом, спасибо автору за шикарный findcolor. имеено пилот сканирует поле 8х8 с 6 разными предметами за 200мс, это при двойной точности, т.е. неизменное поле сканируется 2 раза. а вот математика тут уже пилот канешно никак не тянет.
шас в небесах сделали защиту от ботов, так обойти её не прибегая к findimage, мне пришлось повозиться всего-то пару часов (IMG:style_emoticons/default/smile.gif).
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 6.5.2014, 7:41
Сообщение #20


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Цитата
а вот математика тут уже пилот канешно никак не тянет.

Зайди в тему "упростить скрипт" и объясни почему у меня тянет и что я делаю неправильно.

Сообщение отредактировал DarkMaster - 6.5.2014, 11:34


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

2 страниц V  1 2 >
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 27.4.2024, 19:17
Designed by Nickostyle