Как сделать?
…
Mr.Crazzyr:
Спасибо всем за помощь. Буду пробовать, экспериментировать)
Да пожалст, всегда рад :D
Здравствуйте, следующий вопрос “3. В эту же папку(”D:\aerobuild”) положить файл игры в формате .aqsp, он должен называться “game.aqsp”” так вот откуда взять файл .aqsp если Qg позволяет сохранять только .qsp
Illi_ya,
aqsp, это переименнованный zip
т.е. архивируешь папку с файлами от игры в zip и меняешь у полученого архива расширение на aqsp
Всем доброго времени суток! Возникла определенная проблема, ответа как такового не нашел, решил обратиться напрямую к светилам!))
В общем ситуация:
Есть переменная, обозначающая места: $mesto[L+’_’+$punkt]
$punkt - населенный пункт
L - переменная, счетчик
в отдельной локации идет перечисление
L=1 - кузница
L=2 - рынок… и т.д.
Есть задумка - Как входишь в город :
устанавливается переменная $punkt и запускается обработка на проверку наличия тех или иных объектов. Допустим есть только кузница:
Spoiler
L=0
:loop
L+=1
$vr1=$mesto[L+’_’+$punkt]
If $vr1 ! ‘’ :
act’Зайти в <b><<$imya_mesto[$vr1]>></b>’: gt $mesto[L+’_’+$punkt]
jump ‘loop’
end
Все отлично, строит все как положено, но весь затык в том что, L уже не та)), имеет друго значение, в результате - переход не срабатывает. В этом то и вопрос. Как сделать данный вариант рабочим?. Если L фиксировать, все срабатывает. Т.е. если делать прям отдельный переход. типа gt $mesto[2+’_’+$punkt].
lino007,
А через GS действия добавлять нельзя? Как-то сложно ты придумал…
IF местонахождение_персонажа = 1:
act 'В кузницу': gt 'Blacksmith'
act 'В больницу': gt 'Hospital'
END
IF местонахождение_персонажа = 2:
act 'На рынок': gt 'Market'
END
svandrus:
lino007,
А через GS действия добавлять нельзя? Как-то сложно ты придумал…IF местонахождение_персонажа = 1: act 'В кузницу': gt 'Blacksmith' act 'В больницу': gt 'Hospital' END IF местонахождение_персонажа = 2: act 'На рынок': gt 'Market' END
Прошу прощения, но по другому никак) планируется около 20 насел пунктов + каждый из них будет развиваться, то бишь здания будут появляться. И плодить кучами условия… ну не хочу. хочется нормальности))) Но походу не получится…
На локации куда пришёл ставишь метку места
место = 1
И проверяешь вот это:
IF Blacksmith[место]!0:
act 'В кузницу': gt 'Blacksmith_<<место>>'
END
IF Market[место]!0:
act 'На рынок': gt 'Market_<<место>>'
END
Наличие строений на местах всё равно ведь задавать надо. В “место = 1” Blacksmith[1]=1, а Market[1]=0
svandrus:
На локации куда пришёл ставишь метку места
место = 1
И проверяешь вот это:IF Blacksmith[место]!0: act 'В кузницу': gt 'Blacksmith_<<место>>' END IF Market[место]!0: act 'На рынок': gt 'Market_<<место>>' ENDНаличие строений на местах всё равно ведь задавать надо. В “место = 1” Blacksmith[1]=1, а Market[1]=0
Я все эти строения объявил в самом начале. Это удобно, когда у тебя все строения в одно локе и ты можешь сориентироваться. Ну вот не охота городить мне проверку из 20 if….причем в каждом населенном пункте..
lino007,
Делаешь одну локацию, где проверяются сразу все типы строений так, как я написал и проверяешь её через GS когда приходишь в город.
#loc Moskau
место = 1
GS 'Проверка_строений'
#loc Leningrad
место = 2
GS 'Проверка_строений'
Построишь баню в Ленинграде, sauna[2] = 1. Пока не построишь sauna[2]= 0. И действия сходить в ленинградскую баню, соответственно не появится…
lino007, ты представил пример кода, который дойдет только до первой локации в массиве и не обработает следующие, если они есть.
L=0
:loop
L+=1
$vr1=$mesto[L+'_'+$punkt]
If $vr1 ! '' :
act'Зайти в <b><<$imya_mesto[$vr1]>></b>': gt $mesto[L+'_'+$punkt]
jump 'loop'
end
Можно сделать так (как организовать циклы ты знаешь, надеюсь, поэтому дам сокращенный вариант с использованием $FOR):
dynamic $FOR, 'L', 1, ARRSIZE('$mesto'), 1, {
$vr1=$mesto[L+'_'+$punkt]
If $vr1 ! '' : *nl 'Зайти в <a href="exec: gt ''<<$vr1>>''">' + $imya_mesto[$vr1] + '</a>'
}
UPD Исправил ошибки в коде.
Использовать actу меня не получилось. Не хочу утверждать, что это невозможно. Мне кажется, что и этот вариант дает удовлетворительные результаты. Если actпринципиален, то можно подумать еще :)
Кстате, на счет ACT в цикле:
i = 0
:labelloop_i
if i <= 3:
act "<<i>>":
*pl "<<i>>"
end
i+=1
jump 'labelloop_i'
end
Казалось бы все верно, однако при нажатии на все действия будет всегда писать 4. Почему? Потому что на момент нажатия i = 4.
Попробуем исправить с помощью динамик:
$DynamicCode = ""
i = 0
:labelloop_i
if i <= 3:
$DynamicCode += {
act '<<i>>':
*pl '<<i>>'
end }
i+=1
jump 'labelloop_i'
end
dynamic $DynamicCode
Будет только одно действие “4” и все. Потому что каждый раз в динамик будет подставляться значение i, а оно на конец цикла = 4
И наконец правильный вариант:
$DynamicCode = ""
i = 0
:labelloop_i
if i <= 3:
$DynamicCode += "
act '<<i>>':
*pl '<<i>>'
end"
i+=1
jump 'labelloop_i'
end
dynamic $DynamicCode
А применительно к нашему случаю, это будет выглядеть так:
$action = ''
dynamic $FOR, 'L', 1, ARRSIZE('$mesto'), 1, {
$vr1=$mesto[L+'_'+$punkt]
If $vr1 ! '' : $action += "act 'Зайти в <<$imya_mesto[$vr1]>>': gt '<<$vr1>>'
"
}
dynamic $action
Обратите внимание, что в выражении с инкрементом переменной $action обязателен перенос строки перед завершающим знаком “, либо после открывающего знака ”
Вот вы его сейчас научите, а потом роботы поработят всех человеков…
svandrus:
Делаешь одну локацию, где проверяются сразу все типы строений так, как я написал и проверяешь её через GS когда приходишь в город.
ONNEWLOC, мне кажется, тут будет уместнее ($ONNEWLOC = ‘OnNewLoc’):
#loc OnNewLoc
GS 'Проверка_строений'
“Построишь баню в Ленинграде, sauna[’Leningrad’] = 1. Пока не построишь sauna[’Leningrad’]= 0. И действия сходить в ленинградскую баню, соответственно не появится…”
#loc Проверка_строений
if sauna[$CURLOC]: act 'Пойти в баню': gt 'sauna'
evp,
Да я-то знаю… Смысл в том, что я предлагал самый простой способ, без циклов и трехэтажных индексов элементов массива..