1

Тема: Как начать выполнение скрипта с определенной строки [SA:MP]

Доброго времени суток уважаемые форумчане. И вновь я к вам за помощью. Постараюсь объяснить суть как можно понятнее.

Есть у меня к примеру такой вот бинд:


>!1::
{
sendinput {f6}Текст1{enter}
sleep 2000
sendinput {f6}Текст2{enter}
sleep 2000
sendinput {f6}Текст3{enter}
sleep 2000
sendinput {f6}Текст4{enter}
sleep 2000
sendinput {f6}Текст5{enter}
sleep 2000
}
return

Так вот, как реализовать такую систему что бы я мог запускать выполнение этого бинда с определенного момента. К примеру вводя "/startb [номер строки]" мне нужно что бы бинд начал выполняться например с строки "Текст3" и поехал дальше. Как это можно реализовать?

P.S. Заранее благодарен за любую помощь.

2 (изменено: serzh82saratov, 2015-07-13 04:03:13)

Re: Как начать выполнение скрипта с определенной строки [SA:MP]

вводя "/startb [номер строки]" мне нужно что бы бинд начал выполняться

Если запускать именно по факту печати такой строки, то так:


inp := {1:["Текст1",2000],2:["Текст2",2000],3:["Текст3",2000],4:["Текст4",2000],5:["Текст5",2000]}
 
:b0*?:/startb [1]::
:b0*?:/startb [2]:: 
:b0*?:/startb [3]:: 
:b0*?:/startb [4]:: 
:b0*?:/startb [5]::  
    RegExMatch(A_ThisHotkey, "\[(\d+)]", d) 
    Loop % inp.MaxIndex() - d1 + 1 
    {  
        SendInput % "{f6}" inp[d1][1] "{enter}"
        Sleep % inp[d1++][2]
    } 
return 

inp := {1:["Текст1",2000]

Массив усложнён для возможности ввода разных задержек между строками, иначе так:

+ открыть спойлер
inp := {1:"Текст1",2:"Текст2",3:"Текст3",4:"Текст4",5:"Текст5"}
 
:b0*?:/startb [1]::
:b0*?:/startb [2]:: 
:b0*?:/startb [3]:: 
:b0*?:/startb [4]:: 
:b0*?:/startb [5]::  
    RegExMatch(A_ThisHotkey, "\[(\d+)]", d) 
    Loop % inp.MaxIndex() - d1 + 1 
    {  
        SendInput % "{f6}" inp[d1++] "{enter}"
        Sleep 2000
    } 
Return 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: Как начать выполнение скрипта с определенной строки [SA:MP]

Увы но не работает. вводя в игре в чат эту команду ничего не происходит.

4

Re: Как начать выполнение скрипта с определенной строки [SA:MP]

Ну а в блокноте то работает?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5

Re: Как начать выполнение скрипта с определенной строки [SA:MP]

serzh82saratov пишет:

Ну а в блокноте то работает?

Как его в блокноте то проверить))

6 (изменено: yalanne, 2015-07-13 17:21:47)

Re: Как начать выполнение скрипта с определенной строки [SA:MP]

Drusik пишет:

Как его в блокноте то проверить))

Просто ввести вручную /startb [1] (или другие цифры).


А можно например по другому сделать:

start_str := {set:1,str:["Текст1","Текст2","Текст3","Текст4","Текст5"]}
alt & 1::
keywait 1    ,T0.150
if !ErrorLevel and ( !(start_str.set = start_str.str.MaxIndex()) ? (start_str.set+=1) : (start_str.set:=1) )
    tooltip % start_str.set ") " substr( start_str.str[ start_str.set ]    ,1,10) "..."
else
{
tooltip
loop % start_str.str.MaxIndex() - start_str.set + 1
    {
    SendInput % "{f6}" start_str.str[ start_str.set - 1 + A_Index ] "{enter}"
    if (start_str.str.MaxIndex() - start_str.set + 1 != A_Index)
        Sleep 2000
    }
}
return

Что бы переключить строку надо сделать короткий клик alt+1. alt можно не отпускать и тыкать быстро 1ку для выбора строки.
Для запуска цикла с нужной строки просто удерживать alt+1 и цикл начнется.

7

Re: Как начать выполнение скрипта с определенной строки [SA:MP]

Все, разобрался. Просто я эту команду копировал в чат а не вводил в ручную.

inp := {1:"Текст1",2:"Текст2",3:"Текст3",4:"Текст4",5:"Текст5"}
 
:b0*?:/startb [1]::
:b0*?:/startb [2]:: 
:b0*?:/startb [3]:: 
:b0*?:/startb [4]:: 
:b0*?:/startb [5]::  
    RegExMatch(A_ThisHotkey, "\[(\d+)]", d) 
    Loop % inp.MaxIndex() - d1 + 1 
    {  
        SendInput % "{f6}" inp[d1++] "{enter}"
        Sleep 2000
    } 
Return 

больше подходит.
Только вот одна проблема. я открываю чат, ввожу команду в блокноте например "/satrtb [1]" выполнение начинаеться как положенно с Текст1 и так далее.
Вводя в игре эту команду у меня сразу получается так "/startb [1]Текст2" отправляется, естественно сам сервер команды "/startb" не знает и дальше уже в чат у меня идет "Текст3" и так далее. по сути дела я теряю "Текст1" и "Текст2" как это можно исправить?

8

Re: Как начать выполнение скрипта с определенной строки [SA:MP]

Возможно так:

inp := {1:"Текст1",2:"Текст2",3:"Текст3",4:"Текст4",5:"Текст5"}
 
:K10*?:/startb [1]::
:K10*?:/startb [2]:: 
:K10*?:/startb [3]:: 
:K10*?:/startb [4]:: 
:K10*?:/startb [5]::  
    RegExMatch(A_ThisHotkey, "\[(\d+)]", d) 
    Loop % inp.MaxIndex() - d1 + 1 
    {  
        SendInput % "{f6}" inp[d1++] "{enter}"
        Sleep 2000
    } 
Return 

Если в блокноте работает, то надо иметь опыт с конкретной программой чтобы что то предположить.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9

Re: Как начать выполнение скрипта с определенной строки [SA:MP]

serzh82saratov пишет:

Возможно так:

inp := {1:"Текст1",2:"Текст2",3:"Текст3",4:"Текст4",5:"Текст5"}
 
:K10*?:/startb [1]::
:K10*?:/startb [2]:: 
:K10*?:/startb [3]:: 
:K10*?:/startb [4]:: 
:K10*?:/startb [5]::  
    RegExMatch(A_ThisHotkey, "\[(\d+)]", d) 
    Loop % inp.MaxIndex() - d1 + 1 
    {  
        SendInput % "{f6}" inp[d1++] "{enter}"
        Sleep 2000
    } 
Return 

Если в блокноте работает, то надо иметь опыт с конкретной программой чтобы что то предположить.

Спасибо. Теперь правда пропадает только "Текст1" если использовать /startb [1] в игре. Но это уже не так важно. С этим еще можно жить)

Всем огромное спасибо.