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

52 страниц V « < 50 51 52  
Ответить в эту темуОткрыть новую тему
> Упростить скрипт
DarkMaster
сообщение 30.5.2018, 12:25
Сообщение #1021


***********

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



Цитата
Картинки какого размера? 50*50? Лучше меньше сделать.

Там фишка в том, что подразумевается, что все размеры кратные. Если оно плавает, то:
Цитата
set #fieldX ( %arr [ #n 1 ] - #startOffsetX ) / #cellOffsetX + 1
set #fieldY ( %arr [ #n 2 ] - #startOffsetY ) / #cellOffsetY + 1

Покажет бяку.
В качестве костыля можно воспользоваться тем, что в пилоте идет целочисленное деление:
Код
       set #fieldX ( %arr [ #n 1 ] +1 - #startOffsetX ) / #cellOffsetX + 1
        set #fieldY ( %arr [ #n 2 ] + 1 - #startOffsetY ) / #cellOffsetY + 1

Должно сработать. +1 - это то, на сколько плавает сетка. По идее это значение может быть любым, главное, чтобы оно было меньше чем #cellOffsetX и #cellOffsetY соответственно.


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


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Цитата
можно воспользоваться тем, что в пилоте идет целочисленное деление

Поэтому я и предложил сделать картинки меньшего размера.
Например каринка 50*50, сохраняем 40*40, только не от левого верхнего угла, а скажем на 10 правее и ниже. Тогда смещение даже на 10 пикселей роли не сыграет.
Возьмём 4ю картинку, по X будет 160 (будем считать что #startOffsetX = 0), т. к. 50*3+10(на 10 пикселей правее сохраняли).
set #startOffsetX 0
set #cellOffsetX 50
set #fieldX ( %arr [ #n 1 ] - #startOffsetX ) / #cellOffsetX + 1 // = (160 - 0) / 50 + 1 = 4
Допустим есть смещение первых 3х картинок, значит 49*3+10, четвёртая найдётся не в 160, а 157.
(157 - 0) / 50 + 1 = 4 (т. е. смещение никак не повлияло)


Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 18.3.2019, 10:53
Сообщение #1023


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1317
Пользователь №: 18.346
Возраст: 25



Можно ли подсократить?
Код

Код

log clear
log mode compact
for #i 1 5 //Сколько глав будем чистить
    set #kk 0 //общий подсчет комнат в каждой главе = 20
    while_not #kk = 20
        log открыли подземелье
        for #j 1 #i
            log #j //осуществляем нажатие для перехода к главе
        end_for
        set #kk #kk + 1
        log #kk комната
        switch #kk
            case 1: log просто чистим
                log делаем клик на комната 1
                break
            case 2: log просто чистим
                log делаем клик на комната 2
                break
            case 3: log просто чистим
                log делаем клик на комната 3
                break
            case 4: log просто чистим
                log делаем клик на комната 4
                break
            case 5: log просто чистим
                log делаем клик на комната 5
                break
            case 6: log просто чистим
                log делаем клик на комната 6
                break
            case 7: log делаем 1 клик
                log делаем клик на комната 1
                break
            case 8: log делаем 1 клик
                log делаем клик на комната 2
                break
            case 9: log делаем 1 клик
                log делаем клик на комната 3
                break
            case 10: log делаем 1 клик
                log делаем клик на комната 4
                break
            case 11: log делаем 1 клик
                log делаем клик на комната 5
                break
            case 12: log делаем 1 клик
                log делаем клик на комната 6
                break
            case 13: log делаем 2 клика
                log делаем клик на комната 1
                break
            case 14: log делаем 2 клика
                log делаем клик на комната 2
                break
            case 15: log делаем 2 клика
                log делаем клик на комната 3
                break
            case 16: log делаем 2 клика
                log делаем клик на комната 4
                break
            case 17: log делаем 2 клика
                log делаем клик на комната 5
                break
            case 18: log делаем 2 клика
                log делаем клик на комната 6
                break
            case 19: log делаем 3 клика
                log делаем клик на комната 1
                break
            case 20: log делаем 3 клика
                log делаем клик на комната 2
                break
        end_switch
        log чистим
        log вышли из подземелья
    end_while
end_for
end_script

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 18.3.2019, 11:28
Сообщение #1024


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Цитата
Можно ли подсократить?

Код
switch #kk
    case 1: log просто чистим
        log делаем клик на комната 1
        break
    case 2: log просто чистим
        log делаем клик на комната 2
        break
    case 3: log просто чистим
        log делаем клик на комната 3
        break
    case 4: log просто чистим
        log делаем клик на комната 4
        break
    case 5: log просто чистим
        log делаем клик на комната 5
        break
    case 6: log просто чистим
        log делаем клик на комната 6
        break
end_switch

Тоже самое:
Код
if  #kk >=1 and #kk <= 6
    log просто чистим
    log делаем клик на комната #kk
end_if
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 18.3.2019, 12:06
Сообщение #1025


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1317
Пользователь №: 18.346
Возраст: 25



Цитата(cirus @ 18.3.2019, 11:28) *

Тоже самое:
Код
if  #k >=1 and #k <= 6
    log просто чистим
    log делаем клик на комната #k
end_if


Да тока в if каждый раз должна быть разная комната от 1 до 6...не знаю как записать что бы был только 1 клик на комнату
Код

set %k [1] 1 1
set %k [2] 2 2
set %k [3] 3 3
set %k [4] 4 4
set %k [5] 5 5
set %k [6] 6 6
log clear
log mode compact
for #i 1 5 //Сколько глав будем чистить
    set #kk 0 //общий подсчет комнат в каждой главе = 20
    while_not #kk = 20
        log открыли подземелье
        for #j 1 #i
            log #j //осуществляем нажатие для перехода к главе
        end_for
        set #kk #kk + 1
        log #kk комната
        if #kk >= 1 and #kk <= 6
           log просто чистим
           for #k 1 size(%k)
               //left %k [#k]
               log делаем клик на комната #k
           end_for
        end_if
        if #kk >= 7 and #kk <= 12
           log l   делаем 1 клик
           for #k 1 size(%k)
               //left %k [#k]
               log делаем клик на комната #k
           end_for
        end_if
        //... if 13 - 20
        log чистим
        log вышли из подземелья
    end_while
end_for
end_script

вот что будет в логе
открыли подземелье
1
1 комната
просто чистим
делаем клик на комната 1
делаем клик на комната 2
делаем клик на комната 3
делаем клик на комната 4
делаем клик на комната 5
делаем клик на комната 6
чистим
вышли из подземелья
открыли подземелье
1
2 комната
просто чистим
делаем клик на комната 1
делаем клик на комната 2
делаем клик на комната 3
делаем клик на комната 4
делаем клик на комната 5
делаем клик на комната 6
чистим
вышли из подземелья
а нужно:
открыли подземелье
1
1 комната
просто чистим
делаем клик на комната 1
чистим
вышли из подземелья
открыли подземелье
1
2 комната
просто чистим
делаем клик на комната 2
чистим
вышли из подземелья
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 18.3.2019, 12:18
Сообщение #1026


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Цитата
делаем клик на комната 1
делаем клик на комната 2
делаем клик на комната 3
делаем клик на комната 4
делаем клик на комната 5
делаем клик на комната 6

а нужно:
делаем клик на комната 1

Сами же цикл добавили непонятно зачем:
Цитата
if #kk >= 1 and #kk <= 6
log просто чистим
for #k 1 size(%k) // и зачем?
//left %k [#k]
log делаем клик на комната #k // тут #k исправить на #kk
end_for
end_if
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 18.3.2019, 18:14
Сообщение #1027


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1317
Пользователь №: 18.346
Возраст: 25



Цитата(cirus @ 18.3.2019, 12:18) *

Сами же цикл добавили непонятно зачем:

Потому что координаты кликов комнат меняются :
1 ГЛАВА =20 комнат
20 комнат размещены 4х страницах
первые 3 по 6 комнат(1,2,3,4,5,6), 4ая состоит из координат 1й и 2й
Прикрепленное изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 19.3.2019, 2:17
Сообщение #1028


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Цитата
20 комнат размещены 4х страницах
первые 3 по 6 комнат(1,2,3,4,5,6), 4ая состоит из координат 1й и 2й

Код
set %k [1] 1 1
set %k [2] 2 2
set %k [3] 3 3
set %k [4] 4 4
set %k [5] 5 5
set %k [6] 6 6

log clear
log mode compact
log open -1 -1 400 400

for #i 0 19     // 20 комнат
    if  #i > 0 and mod(#i 6) = 0
        log    Нажать на стрелку чтобы перейти к комнате eval(#i + 1)
    end_if
    set #j mod(#i 6) + 1
    log #j    %k [#j]
end_for
end_script

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 19.3.2019, 10:35
Сообщение #1029


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1317
Пользователь №: 18.346
Возраст: 25



Цитата(cirus @ 19.3.2019, 2:17) *

Код
set %k [1] 1 1
set %k [2] 2 2
set %k [3] 3 3
set %k [4] 4 4
set %k [5] 5 5
set %k [6] 6 6

log clear
log mode compact
log open -1 -1 400 400

for #i 0 19     // 20 комнат
    if  #i > 0 and mod(#i 6) = 0
        log    Нажать на стрелку чтобы перейти к комнате eval(#i + 1)
    end_if
    set #j mod(#i 6) + 1
    log #j    %k [#j]
end_for
end_script


Не это все не то...там после зачистки комнаты, игра как бы закрывает все окна и нужно заново открывать главу и переходить к нужной комнате. Вот если бы мы запоминали предыдущий фор(зачистки комнаты), то да было бы норм. А так свич самый оптимальный вариант походу. я и так с нескольких тысяч строк сократил да нескольких десятков...просто поинтересовался можно ли ещё компактней сделать. Благодарю за старание и помощь!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 19.3.2019, 12:46
Сообщение #1030


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Цитата
Вот если бы мы запоминали предыдущий фор

Проще посчитать.
Код
set #k 10  // комната 10

log Страница div(#k 6)
log Позиция  mod(#k 6)
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 20.3.2019, 4:47
Сообщение #1031


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1317
Пользователь №: 18.346
Возраст: 25



Цитата(cirus @ 19.3.2019, 12:46) *

Проще посчитать.
Код
set #k 10  // комната 10

log Страница div(#k 6)
log Позиция  mod(#k 6)
end_script


Всё вроде разобрался, ток как присвоить переменную клика нужной комнаты div(#k 6)
Код

set %k [1] 1 1
set %k [2] 100 1
set %k [3] 200 1
set %k [4] 300 1
set %k [5] 400 1
set %k [6] 500 1

log clear
log mode compact
log open -1 -1 400 400
set #g 2 // задаем скриптом сколько глав будем чистить

for #i 1 #g
    set #kk 0 //общий подсчет комнат в каждой главе = 20
    while_not #kk = 20
        log открыли подземелье
        for #j 1 #i
            log #j //осуществляем нажатие для перехода к главе
        end_for
        set #kk #kk + 1
        log #kk комната
        set #k #kk  // комната 10

        log Страница div(#k 6)
        log Позиция  mod(#k 6)
        set #z div(#k 6) // переход к нужной странице
        for #x 1 #z
            log клик страница
        end_for
        move %k [mod(#k 6)] // клик на нужную позицию %k как?
        log чистим
        log вышли из подземелья
        if #i = #g and #kk = 2
            end_script
        end_if
    end_while
end_for
end_script

на 6 комнате выбивает:
move - (29): Ошибка! Проверьте правильность скрипта! EAccessViolation Access violation at address 004063E4 in module 'uopilot241.exe'. Read of address 00000002
move %k [mod(#k 6)]

Сообщение отредактировал FREEON - 20.3.2019, 6:08
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 20.3.2019, 11:41
Сообщение #1032


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Цитата
move %k [mod(#k 6)] // клик на нужную позицию %k как?

Проблема в том что индексация массивов начинается с 1, а не 0.
Код
set #pos mod(#k 6)
if  mod(#k 6) = 0
    set #pos #pos + 6
    move %k [#pos] // клик на нужную позицию
else
    move %k [#pos] // клик на нужную позицию
end_if
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 20.3.2019, 15:27
Сообщение #1033


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1317
Пользователь №: 18.346
Возраст: 25



Код

set #g 3  // Задаем скриптом сколько глав будем чистить
set #ii 2 // С кокой главы начинаем зачистку
set #gl 0 //Если нужно зачистить все главы включая последнюю (1 ГЛАВУ), то вместо 0 подставить 1
set %k [1] 1 1
set %k [2] 100 1
set %k [3] 200 1
set %k [4] 300 1
set %k [5] 400 1
set %k [6] 500 1
set delimiter ' '
log clear
log mode compact
log open -1 -1 400 400


for #i 1 #g
    set #kk 0 //общий подсчет комнат в каждой главе = 20
    while_not #kk = 20
        log открыли подземелье
        for #j 1 #i
            log + //#j //осуществляем нажатие для перехода к главе
            if #ii > 0
                set #iii #ii - 1
                repeat #iii
                    log +
                end_Repeat
            end_if
        end_for
        set #kk #kk + 1
        log #kk комната
        set #k #kk  // комната 10

        log Страница div(#k 6)
        log Позиция  mod(#k 6)
        set #z div(#k 6) // переход к нужной странице
        for #x 1 #z
            log клик страница
        end_for
        set #pos mod(#k 6)
        if  mod(#k 6) = 0
            set #pos #pos + 6
            move %k [#pos] // клик на нужную позицию
        else
            move %k [#pos] // клик на нужную позицию
        end_if
        log чистим
        log вышли из подземелья
        if #gl = 1 // Если нужно зачистить все главы включая 1 Главу 1-2 комнаты
            if #i = #g and #kk = 2
                end_script
            end_if
        end_if
    end_while
end_for
end_script

Как можно задать параметр #iii (если зачистка нам нужна не с начала), что бы к примеру for #i 1 #g начинало зачистку с главы 2(делала 2 клика сразу) вместо 1, проблема в том что в текущем варианте если начинать зачистку сперва идет хорошо, но когда начинается 3 глава то мы совершаем 4 клика(лог +) вместо 3

а все разобрался минусуем #j
Код

set #iii #ii - #j

а не этот вариант не катит так как если начинаем зачистку с главы 4 то 4 глава идет нармально 4 клика(плюсика) а 5 глава уже аж 7 кликов (IMG:style_emoticons/default/huh.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 20.3.2019, 16:10
Сообщение #1034


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1317
Пользователь №: 18.346
Возраст: 25



вроде разобрался
Код

set #g 6  // Задаем скриптом сколько глав будем чистить
set #a 5 // С кокой главы начинаем зачистку
set #b 1 //шаг

set #gl 0 //Если нужно зачистить 1 ГЛАВУ, то вместо 0 подставить 1
set %k [1] 1 1
set %k [2] 100 1
set %k [3] 200 1
set %k [4] 300 1
set %k [5] 400 1
set %k [6] 500 1
set delimiter ' '
log clear
log mode compact
log open -1 -1 400 400

for #i #a #g #b
    set #kk 0 //общий подсчет комнат в каждой главе = 20
    while_not #kk = 2
        log открыли подземелье
        for #j 1 #i
            log + //#j //осуществляем нажатие для перехода к главе
        end_for
        set #kk #kk + 1
        log #kk комната
        set #k #kk  // комната 10

        log Страница div(#k 6)
        log Позиция  mod(#k 6)
        set #z div(#k 6) // переход к нужной странице
        for #x 1 #z
            log клик страница
        end_for
        set #pos mod(#k 6)
        if  mod(#k 6) = 0
            set #pos #pos + 6
            //move %k [#pos] // клик на нужную позицию
        else
            //move %k [#pos] // клик на нужную позицию
        end_if
        log чистим
        log вышли из подземелья
        if #gl = 1 // Если нужно зачистить все главы включая 1 Главу 1-2 комнаты
            if #i = #g and #kk = 2
                end_script
            end_if
        end_if
    end_while
end_for
end_script
по идее так должно быть

Сообщение отредактировал FREEON - 20.3.2019, 16:52
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 22.3.2019, 14:59
Сообщение #1035


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1317
Пользователь №: 18.346
Возраст: 25



Чысто ради спортивного интереса, как можно записать условия проверки данных...что в веденный текст в prompt должен быть числом? делал проверку выдает ошибку, но можно ли теоретически сделать msg Типа введи число.
Код

set #v 7 //*Открытое количество глав(всех). ТЕКУЩАЯ глава - которая открывается сразу же после
set #error 0
set #proverka 0
while_not #proverka = 2
    set $a prompt (Введите № ГЛАВЫ, с которой будем ЧИСТИТЬ подземелье.)
    set $y prompt (Введите № ГЛАВЫ, по которую будем ЧИСТИТЬ включительно.)
    if $a >= $y               //Если пользователь указал верные переменные по правилу убывания глав 987...1
        set #a $a             //Назначаем главу с которой будем чистить.
        set #y $y             //Назначаем по какую главу(включительно) будем чистить.
        set #proverka #proverka +1
    else                      //Если правило не верное, то меняем их местами
        set #a $y             //Переназначаем главу с которой будем чистить.
        set #y $a             //Переназначаем главу по какую главу будем чистить.
        set #proverka #proverka +1
    end_if
    if #v > #a and #v > #y    //Если главы зачистки меньше Текущей главы
        set #proverka #proverka +1
    else
        msg № ГЛАВ ЗАЧИСТКИ НЕ МОЖЕТ СОВПАДАТЬ ИЛИ БЫТЬ БОЛЬШЕ ТЕКУЩЕЙ ГЛАВЫ!!!
        set #proverka 0
        set #error #error + 1
    end_if
    if #error = 2 // Если пользователь 2 раза указал неверно главы, остановить скрипт.
        msg Проверте(отредактируйте) ТЕКУЩУЮ главу с данными указанными в скрипте
        end_script
    end_if
end_while
log работаем
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 23.3.2019, 1:40
Сообщение #1036


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Цитата
как можно записать условия проверки данных...что в веденный текст в prompt должен быть числом?

Код
set $a 123
set #n regexp (#position $hitstring $a ^\d+$)
if #n = 1
    log Число
else
    log Не число
end_if
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 28.3.2019, 2:29
Сообщение #1037


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1317
Пользователь №: 18.346
Возраст: 25



Цитата(cirus @ 20.3.2019, 11:41) *

Проблема в том что индексация массивов начинается с 1, а не 0.
Код
set #pos mod(#k 6)
if  mod(#k 6) = 0
    set #pos #pos + 6
    move %k [#pos] // клик на нужную позицию
else
    move %k [#pos] // клик на нужную позицию
end_if


Чо-то косячит оно, при испытаниях. Для теста выбирал Забивка.. вводил 7 главу в принципе это роли не играет...ошибки одни и те-же. В коде убрал все действия для полноценного тестирования, можно не опасаться чо чо-то скрипт наклацает!
Код

set #v 8 //*Открытое количество глав(всех). ТЕКУЩАЯ глава - которая открывается сразу же после нажатия на иконку Подземелья.
//===== Ваши данные для настройки(подставить и сохранить Скрипт) =====
//----- ИКОНКА ПОДЗЕМЕЛИЯ -----
set %ic [1] 823, 78 12901358     //*Координаты и цвет иконки Подземелие
set %ic [2] 823, 78           //*Координаты клика иконки Подземелие
//----- ОКНО ГЛАВ ПОДЗЕМЕЛИЯ -----
set %gl [1] 746, 128 3093369    //*Координаты и цвет окна Подземелье
set %gl [2] 253, 137           //*Координаты перехода между ГЛАВАМИ(влево)
set %gl [3] 1113, 531           //*Координаты перехода между КОМНАТАМИ
set %k [1] 325, 607               //*Координаты Комната 1
set %k [2] 469, 612              //*Координаты Комната 2
set %k [3] 601, 616              //*Координаты Комната 3
set %k [4] 752, 606              //*Координаты Комната 4
set %k [5] 885, 610              //*Координаты Комната 5
set %k [6] 1024, 611              //*Координаты Комната 6
//----- ОКНО ЛОКАЦИИ ПОДЗЕМЕЛЬЯ -----
set %ex [1] 1315, 85 723848     //*Координаты и цвет кнопки ВЫХОД
set %ex [2] 1315, 85          //*Координаты клика кнопки ВЫХОД
set %ak [1] 683, 495            //*Координаты кнопки АФК
set %mk [1] 785, 258 264493       //*Координаты и цвет окна Перевернуть карту
set %mk [2] 419, 348            //*Координаты Карта 1
set %mk [3] 535, 345            //*Координаты Карта 2
set %mk [4] 654, 356            //*Координаты Карта 3
//===== Настройка отображения журнала выполнения действий =====
log clear                     //Очистить журнал
log mode compact              //Включить компактный режим записи лога
log open 1 1 400 400          //*Открыть окно лога в координатах 1 1 размером 250x120 пикселей
//===== ОСТАЛЬНОЕ НЕ МЕНЯТЬ =====
//=== Проверка привязки к игре ===
set #okno workwindow          //Сохранить в переменной #okno хендл рабочего окна
log #okno                     //Выводим PID привязки окна
if #okno = 0                  //Если окно не привязано
    set delimiter '\n'        //Установить разделитель \n - перенос строки
    set %text [1 1] ОШИБКА:  ПРИВЯЖИТЕ UOPILOT К ИГРЕ!
    set %text [1 2]
    set %text [1 3] Сделать    окно    пилота     активным,
    set %text [1 4] навести мышку на игру(не нажимать),
    set %text [1 5] нажмите    на    клавиатуре    Ctrl + A.
    Msg %text [1]             //Вывести в сообщение с переносом строк
    set #okno workwindow      //Сохранить в переменной #okno хендл рабочего окна
    if #okno = 0              //Если во время отображения сообщения пользователь не привязал скрипт, остановить его.
        end_script
    end_if
    set delimiter             //Установить разделитель по умолчанию
end_if
get windowpos #okno #X #Y #width #height    //Получить позицию и размеры активного окна.
log #X #Y #width #height                    //Показать в логе позицию и размеры активного окна.
//=== Настройка отображения сообщений Promt ===
set promptpos_x #width / 2                  //для отображения окна Prompt, установить координату 'Х' посередине активного
set promptpos_y #height / 2                 //для отображения окна Prompt, установить координату 'Y' посередине активного
//=== Вывод Prompt с подсказкой ===
set $str "Что будем делать с подземельем?"  //Подсказка(вопрос)
set #var prompt (!$str Забивать Зачищать)//Выбор вариантов действия
set #err 0
set #error 0
set #proverka 0
while_not #proverka = 2
    If #var = 1                             //ПОДГОТОВИТЬ ПОДЗЕМЕЛЬЕ
        set $a prompt (Введите № ГЛАВЫ подземелья, которую будем ЗАБИВАТЬ)
        //set #a $a                         //Назначаем главу которую будем солить. ТУТ ОШИБКА ЗАБИВКИ ТЕКУЩЕЙ ГЛАВЫ
        set #n regexp (#position $hitstring $a ^\d+$) //Проверяем что введенная глава забивки число
        if #n = 1
            if #v > #a                      //Если глава забивки меньше Текущей главы
                set #a $a                   //Назначаем главу которую будем солить.
                set #proverka #proverka + 2
            else
                msg № ГЛАВЫ ЗАБИВКИ НЕ МОЖЕТ СОВПАДАТЬ ИЛИ БЫТЬ БОЛЬШЕ ТЕКУЩЕЙ ГЛАВЫ!!!
                set #proverka 0
                set #error #error + 1
            end_if
        else
            msg Номер введенной главы должен состоять только из цифр!
            set #err #err + 1
        end_if
    else
        set $a prompt (Введите № ГЛАВЫ, с которой будем ЧИСТИТЬ подземелье.)
        set $y prompt (Введите № ГЛАВЫ, по которую будем ЧИСТИТЬ включительно.)
        set #n regexp (#position $hitstring $a ^\d+$)
        set #m regexp (#position $hitstring $y ^\d+$)
        if #n = 1 and #m = 1
            if $a >= $y                     //Если пользователь указал верные переменные по правилу убывания глав 987...1
                set #a $a                   //Назначаем главу с которой будем чистить.
                set #y $y                   //Назначаем по какую главу(включительно) будем чистить.
                set #proverka #proverka +1
            else                            //Если правило не верное, то меняем их местами
                set #a $y                   //Переназначаем главу с которой будем чистить.
                set #y $a                   //Переназначаем главу по какую главу будем чистить.
                set #proverka #proverka +1
            end_if
            if #v > #a and #v > #y          //Если главы зачистки меньше Текущей главы
                set #proverka #proverka +1
            else
                msg № ГЛАВ ЗАЧИСТКИ НЕ МОЖЕТ СОВПАДАТЬ ИЛИ БЫТЬ БОЛЬШЕ ТЕКУЩЕЙ ГЛАВЫ!!!
                set #proverka 0
                set #error #error + 1
            end_if
        else
            msg Номер введенных глав должен состоять только из цифр!
            set #err #err + 1
        end_if
    end_if
    if #error = 2
        msg Проверте(отредактируйте) ТЕКУЩУЮ главу с данными указанными в скрипте!
        end_script
    end_if
    if #err = 2
        msg Вы неверно указали номер главы!
        end_script
    end_if
end_while
set #b 1                       //шаг
set #aa #v - #a                //Начало отсчета ГЛАВ
set #g #v - 1                  //Предпоследняя комната MAX ГЛАВА
if #var = 1
    set #c #g - #a + 1         //Для забивки N ГЛАВЫ
else
    set #c #g - #y + 1         //Для чистки определенного колличества ГЛАВ
end_if
//log #aa #g #c
for #i #aa #g #b
    set #kk 0                  //Переменная подсчета количества комнат
    while_not #kk = 20         //Число комнат max в главе = 20
        log вход
        for #j 1 #i            //Для кликов между главами
            log +
        end_for
        set #kk #kk + 1        //Подсчет комнат в ГЛАВЕ + 1
        set #vv #v - #i        //Расчет № главы для вывода в лог
        log ГЛАВА #vv Комната #kk //Пишем лог текущей комнаты
        set #k #kk             //Передаем текущее общее число комнаты
        set #z div(#k 6)       //Записываем число кликов страницы
        for #x 1 #z            //Цикл для кликов страницы
            set #xx #x +1      //для отображения в логе страницы
            log >>Стр #xx      //Пишем лог перехода страницы
        end_for
        log Комната mod(#k 6)
        set #pos mod(#k 6)     //Рассчитываем № комнаты
        if  mod(#k 6) = 0      //Привязываем № комнаты к координатам
            set #pos #pos + 6
            log %k [#pos]     //Клик на нужную комнату

        else
            log %k [#pos]     //Клик на нужную комнату
        end_if

        if #var = 1            //Если забиваем
            log Забили.
            log =================
            if #i = #c and #kk = 20 //Толька забивка
                end_script
            end_if
            if #a = 1 and #i = #c and #kk = 2 //Если забиваем 1 Главу 1-2 комнаты
                end_script
            end_if
        else //Если зачищаем
            log Зачистили.
            log =================
            if #i = #c and #kk = 20 //Для зачистки ОТ и ДО
                end_script
            end_if
            if #y = 1 and #i = #c and #kk = 2 //Если нужно зачистить все главы включая 1 Главу 1-2 комнаты
                end_script
            end_if
        end_if
    end_while
end_for
end_script

Цитата

2949806
0 48 1366 676
вход
+
ГЛАВА 7 Комната 1
Комната 1
325, 607
Забили.
=================
вход
+
ГЛАВА 7 Комната 2
Комната 2
469, 612
Забили.
=================
вход
+
ГЛАВА 7 Комната 3
Комната 3
601, 616
Забили.
=================
вход
+
ГЛАВА 7 Комната 4
Комната 4
752, 606
Забили.
=================
вход
+
ГЛАВА 7 Комната 5
Комната 5
885, 610
Забили.
=================
вход
+
ГЛАВА 7 Комната 6
>>Стр 2 <<------------------ НЕ ВЕРНО. Должно быть все еще 1
Комната 0
1024, 611
Забили.
=================
вход
+
ГЛАВА 7 Комната 7
>>Стр 2
Комната 1
325, 607
Забили.
=================
вход
+
ГЛАВА 7 Комната 8
>>Стр 2
Комната 2
469, 612
Забили.
=================
вход
+
ГЛАВА 7 Комната 9
>>Стр 2
Комната 3
601, 616
Забили.
=================
вход
+
ГЛАВА 7 Комната 10
>>Стр 2
Комната 4
752, 606
Забили.
=================
вход
+
ГЛАВА 7 Комната 11
>>Стр 2
Комната 5
885, 610
Забили.
=================
вход
+
ГЛАВА 7 Комната 12
>>Стр 2
>>Стр 3 <<------------------ НЕ ВЕРНО. Должно быть все еще 2
Комната 0
1024, 611
Забили.
=================
вход
+
ГЛАВА 7 Комната 13
>>Стр 2
>>Стр 3
Комната 1
325, 607
Забили.
=================
вход
+
ГЛАВА 7 Комната 14
>>Стр 2
>>Стр 3
Комната 2
469, 612
Забили.
=================
вход
+
ГЛАВА 7 Комната 15
>>Стр 2
>>Стр 3
Комната 3
601, 616
Забили.
=================
вход
+
ГЛАВА 7 Комната 16
>>Стр 2
>>Стр 3
Комната 4
752, 606
Забили.
=================
вход
+
ГЛАВА 7 Комната 17
>>Стр 2
>>Стр 3
Комната 5
885, 610
Забили.
=================
вход
+
ГЛАВА 7 Комната 18
>>Стр 2
>>Стр 3
>>Стр 4 <<------------------ НЕ ВЕРНО. Должно быть все еще 3
Комната 0
1024, 611
Забили.
=================
вход
+
ГЛАВА 7 Комната 19
>>Стр 2
>>Стр 3
>>Стр 4
Комната 1
325, 607
Забили.
=================
вход
+
ГЛАВА 7 Комната 20
>>Стр 2
>>Стр 3
>>Стр 4
Комната 2
469, 612
Забили.
=================

Косяк где-то зарыт в расчетах div, до 5 считает нормально, но на шестой комнате переходит на следующую страницу, а переход должен делать на 7ой, 13ой, 19ой (IMG:style_emoticons/default/sad.gif)
Код
set #k #kk             //Передаем текущее общее число комнаты
        set #z div(#k 6)       //Записываем число кликов страницы
        for #x 1 #z            //Цикл для кликов страницы
            set #xx #x +1      //для отображения в логе страницы
            log >>Стр #xx      //Пишем лог перехода страницы
        end_for
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 28.3.2019, 3:00
Сообщение #1038


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Так зачем это:
Код
set #xx #x +1
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 28.3.2019, 8:07
Сообщение #1039


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1317
Пользователь №: 18.346
Возраст: 25



Цитата(cirus @ 28.3.2019, 3:00) *

Так зачем это:
Код
set #xx #x +1


Да это просто переменная для вывода лога количества нажатий на страницу. Просто несёт информацию о кликак в цикле for #x для удобства. Это тоже самое что скрипт просто имел бы вид...
Код

set #k #kk             //Передаем текущее общее число комнаты
        set #z div(#k 6)       //Записываем число кликов страницы
        for #x 1 #z            //Цикл для кликов страницы
            log >>Стр +     //Пишем лог перехода страницы
        end_for

без него такая же ситуёвина выходит. Часть лога:
Цитата

вход
+
ГЛАВА 7 Комната 5
Комната 5
885, 610
Забили.
=================
вход
+
ГЛАВА 7 Комната 6
Стр +
Комната 0
1024, 611
Забили.
=================
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 28.3.2019, 12:49
Сообщение #1040


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Код
set #k 6  // комната

set #pos mod(#k 6)
if  mod(#k 6) = 0
    set #pos #pos + 6
    set #z div(#k 6) - 1
else
    set #z div(#k 6)
end_if
log Позиция: #pos     Страница #z
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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