Суть в том, что мне нужно спросить у пользователя переменную.
Чтобы к переменной 'x' присваивалось то значение, что пользователь укажет. Укажет, естественно в самой игре, а не в скрипте.
Если такое вообще возможно, конечно.

Moderators: Murderator+, Murderator
1a2a3a4a5a6a wrote:Криво тему назвал, ну да ладно.
Суть в том, что мне нужно спросить у пользователя переменную.
Чтобы к переменной 'x' присваивалось то значение, что пользователь укажет. Укажет, естественно в самой игре, а не в скрипте.
Если такое вообще возможно, конечно.
Code: Select all
string asmInputString(string Request[, string PreValue])
Функция выводит на экран диалоговое окно ввода строки. Параметр Request это тот вопрос, на который пользователь должен ответить. Результатом функции является ответ пользователя. Функция вернет пустую строку если пользователь уклонился от ответа.
Если задан необязательный параметр PreValue, то его значение окажется в поле ввода строки. В противном случае поле ввода строки будет пустым и пользователю придется самостоятельно его заполнить.
Code: Select all
for a = 1 to num
if uo.injournal(mess[a]) then
choise = ch[a]
endif
next
Code: Select all
sub vibor()
VAR a, choise
DIM mess[5]
mess[0]=10
mess[1]=20
mess[2]=30
mess[3]=40
mess[4]=50
DIM ch[5]
mess[0]=10
mess[1]=20
mess[2]=30
mess[3]=40
mess[4]=50
for a = 0 to 4
if uo.injournal(mess[a]) then
choise = ch[a]
endif
next
end sub
Code: Select all
sub waitingforvalue()
while not uo.injournal('секр слово')
wait(100)
wend
var string=uo.journal(uo.injournal('секр слово')-1)
string=GetWord(string,тут с учётом вашего ника и т.д. написать номер)
return string
end sub
#А тут превеед от Edred'a =)
Sub GetWord( st, nom )
; (c) Edred
; Возвращает слово из строки str за номером num
; если такого слова нет - возвращаем ''
;
; Разделителем слов считаем пробел. Несколько пробелов подряд считаются за один.
; Функция сделана без рекурсии специально для считывания слов из сверхдлинных строк!
;
VAR tmpst, i, dlin, kol = 0, start = 0
dlin = len( st )
For i=0 To dlin - 1
If mid( st, i, 1 ) == ' ' OR i == dlin - 1 Then
kol = kol + 1
If kol == nom Then
; это первый пробел после нужного нам слова
tmpst = mid( st, start, i - start )
return tmpst
Else
While mid( st, i, 1 ) == ' '
i = i + 1
Wend
If kol == nom - 1 Then
start = i
Endif
Endif
Endif
Next
tmpst = ''
return tmpst
endsub
Code: Select all
asd 10
1a2a3a4a5a6a wrote:Der, а что значит "тут с учётом вашего ника и т.д. написать номер" ?
Code: Select all
...return string
...
Code: Select all
...
x=waitingforvalue()
...
Code: Select all
sub main()
var x
wait(2000)
uo.print("Vvedite X")
x=waitingforvalue()
wait(2000)
uo.print(x)
end sub
sub waitingforvalue()
uo.deletejournal()
while not uo.injournal('asd')
wait(100)
wend
var string=uo.journal(uo.injournal('asd')-1)
string=GetWord(string,3)
return string
end sub
#А тут превеед от Edred'a =)
Sub GetWord( st, nom )
; (c) Edred
; Возвращает слово из строки str за номером num
; если такого слова нет - возвращаем ''
;
; Разделителем слов считаем пробел. Несколько пробелов подряд считаются за один.
; Функция сделана без рекурсии специально для считывания слов из сверхдлинных строк!
;
VAR tmpst, i, dlin, kol = 0, start = 0
dlin = len( st )
For i=0 To dlin - 1
If mid( st, i, 1 ) == ' ' OR i == dlin - 1 Then
kol = kol + 1
If kol == nom Then
; это первый пробел после нужного нам слова
tmpst = mid( st, start, i - start + 1 )
return tmpst
Else
While mid( st, i, 1 ) == ' '
i = i + 1
Wend
If kol == nom - 1 Then
start = i
Endif
Endif
Endif
Next
tmpst = ''
return tmpst
end sub
Ну я так и понялEdred wrote:Был в каких-то версиях GetWord этот глюк, я обычно, чтобы не заморачиваться, просто во все строки, которые потом гетвордом пилил, в конец пробел добавлял.
DerMeister =) wrote:просто неудобно ему будит пробел добавлять, тем более ему же последнее слово надо, так что я там +1 селал и всё ок -)