RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2425858 views

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,
Да я-то знаю… Смысл в том, что я предлагал самый простой способ, без циклов и трехэтажных индексов элементов массива..

Log in or Register to post comments.