RU 📌 Pinned

Как сделать?

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

Piksha,
Я не понял, зачем нужна кликабельная ссылка.
Просто gs’СлучайноеСобытие’
И в локации СлучайноеСобытие убери переход.
Если ссылка все-таки нужна, замени goto на gs

Для второго варианта

Ивент2 = rand (1,2)
If Ивент2=1:gs'СлучайноеСобытие'

Если у тебя вероятность возникновения случайного события зависит от локации, то запиши в локации СлучайноеСобытие дополнительные условия.

if $curloc='НазваниеЛокации':Ивент2=1
if $curloc='НазваниеЛокации1':Ивент2 = rand (1,2)

if Ивент2=1:
If Слава<=20: Ивент = rand (1,2)
If Слава<=40: Ивент = rand (1,4)
If Слава<=60: Ивент = rand (1,6)
If Слава<=80: Ивент = rand (1,8)
If Слава<=100: Ивент = rand (1,10)
end

Тогда будет достаточно только перехода gs’СлучайноеСобытие’.

Сдается мне, что ты знаки < > перепутал ибо в текущем варианте последнее условие будет всегда выполняться.

Спасибо за ответ. Кликабельная ссылка нужна, что бы запускать ивент со 100% вероятностью, но только вручную. Теперь новые вопросы - если использовать gs, то это идеально для мелких ивентов - типа какого либо небольшого события и тд. В моем же случае - необходимо сделать ступенчатое событие с возможностями выбора, и тут упираюсь в уже описанную локацию с действиями. Решил проблему гениально - использовал gs для обработки отдельной локации с ивентом, перед этим очистив список действий и описание локации с которой стартует ивент (cla *clr)
Знаки больше меньше пофиксил, ошибка была.
Прошу обьяснить ваш кусок кода

if $curloc='НазваниеЛокации':Ивент2=1
if $curloc='НазваниеЛокации1':Ивент2 = rand (1,2)

Я так понимаю тут вы в локации, к которой обращается gs задаете условие, что если обращение осуществлено с локации “Название локации” устанавливается значение переменной Ивент2=1 и рандомизация возможности ивента не осуществляется.
В случае, если с локации НазваниеЛокации1 (Нужная локация) То происходит розыгрыш возможности ивента. Я правильно понял?
Т.е вы по сути, установили общий механизм ивентов для нескольких локаций, с которых теперь можно прописать обращение gs.

Piksha:

Т.е вы по сути, установили общий механизм ивентов для нескольких локаций, с которых теперь можно прописать обращение gs.

Ты просил проще и лучше.

Дамир Белялов #654 13.08.2021 15:53 (4 years ago)

Может так получше? Может изначально хотелось этого?

! чем больше славы тем больше ивентов становится доступно персонажу
if Ивент2=1:
If Слава<=20: Ивент = rand (1,2)
If Слава>20 and Слава<=40: Ивент = rand (1,4)
If Слава>40 and Слава<=60: Ивент = rand (1,6)
If Слава>60 and Слава<=80: Ивент = rand (1,8)
If Слава>80 and Слава<=100: Ивент = rand (1,10)
end

Снова возвращаюсь с рубрикой глупых вопросов. Необходимо прописать чуть более заковыристый возврат на предыдущую локацию. Описываю ситуацию:
Есть Локация 1 и Локация 2 в которой прописан следующий код:

Ивент=rand(1,2)
If Ивент=1:
   gt "Ивент"
end

Это механизм создания случайного ивента при переходе между локациями. В случае возникновения ивента, он отсылает на новую локацию “Ивент”, с которого необходимо сделать возврат на Локацию 2.. Для этого был прописан следующий код:
На стартовой локации:

$onnewloc = "ОNNEWLOC"

На локации ОNNEWLOC:

$back_loc=$current_loc
$current_loc=$curloc

И в локации Ивент, с которой осуществляется возврат:

act "Вернуться":
     goto $back_loc
end

В этом случае - возврат производится на Локацию 1, а не 2. (Видимо из за gt).
Прописал не как переход на локацию Ивент, а как её обработку (gs), с чисткой описания и списка действий.
Для того что бы все нормально чистилось, код рандомизации ивента поместил в конец локации.
Вопрос: Я конечно наколхозил как мог, и все как бы работает, но что то мне подсказывает что в будущем мне это аукнется, и это решение уровня “замотать изолентой и забыть”. Реквестирую способы изящно решить данную проблему.

ЗЫ: Парни, пожалуйста, если пишите что то сложнее камня и колеса (в масштабах qsp), особенно массивы, и хтмл, пожалуйста объясняйте попроще. Я вообще ветеринар-провизор, и в вашу отрасль не ногой, но все равно спасибо за то что помогаете

ЗЫ 2: Механизм ивентов простой как гайка с шурупом, но это максимум на что хватило моих знаний и воображения. Если вы имеете идеи, либо реализовывали как то данную вещь в своих проектах - я буду очень рад почитать ваши идеи!

Piksha, на локации ОNNEWLOC ты сохраняешь в переменные текущую локацию и предыдущую. Если ты делаешь переход с локации на локацию Б через gt, то А будет прошлой локацией, а Б текущей, $back_loc=‘А’, $current_loc=‘Б’. Если через gs, то ничего не поменяется, $current_loc=‘А’.
Если нужно запомнить 3 прошлых локации, то нужно в ОNNEWLOC добавить еще переменную.
Это нормальное решение. Только определись, нужно тебе gt или gs.

Дамир Белялов #654 18.08.2021 07:43 (4 years ago)

я совсем запутался и даже не понимаю что ему нужно. вот ты описал свою задачу в словах, напиши ее в коде.
Вот есть локация генератора ивентов, вот есть рандом, если выпадает ивент то просто вернись на задуманную тобой локацию, что сложного? Тебе нужно сохранить предыдущую локацию и текущую локацию? тогда перед переходом на другую локацию пиши:

act'перейти на другую локацию': $old_loc=$curloc & gt'Event_rand'

Если в генераторе ивентов надо будет вернуться обратно то просто пиши следующее:

Ивент=rand(1,2)
If Ивент=1: gt "Ивент"
if Ивент=2: gt $old_loc

Я не понимаю чего ты хочешь! Изъяснись доходчиво

Дамир Белялов #654 19.08.2021 15:07 (4 years ago)

Кто может подсказать в чем отличие отображения характеристик?

*pl'Здоровье: <<>>/<<>>'
*pl'Здоровье: '+str(hp)+'/'+str(mhp)

Дамир Белялов,
В первом варианте используется подвыражение.
т.е. в <<>> представлена переменная, значение которой вписывается в вывод ‘Здоровья’.

Во втором варианте мы выводим:
1) ‘Здоровье:’
2) добавляем к выводу значение hp, попутно переведя его в строковый тип (вроде и без этого можно)
3) добавляем ‘слэш’ (или обратный слэш, могу путать)
4) добавляем (и преобразуем в строковый формат) значение mhp

В двух словах - только формой записи. Плеер работает шустро, так что обе записи не сильно его нагрузят.
Тут уже зависит от удобства. Кому-то удобнее сокращать, кто-то усложняет…

Дамир Белялов #654 10.09.2021 14:57 (4 years ago)

Никто не помнит, как Mioirel в игре Zona Выводил здоровье? У него это так красиво выходило, у него там все так намудрено что я запутался, есть простой код как сделать так же, но не расписывать по 10 строк статус?

Дамир Белялов,
Скрин есть?

Дамир Белялов #654 10.09.2021 19:54 (4 years ago)

Дамир Белялов,
Полоски делаются таблицей, цвет - фоновый цвет ячеек.
Потом привязываешь количество ячеек к статам, ХП например. Можешь напрямую, можешь пропорцией.
Далее красишь полоску в зависимости от количества ХП. Например если уровень ХП 50%, то половину полоски в один цвет, половину в другой.

Aleks Versus Moderator 11.09.2021 15:52 (4 years ago)

Дамир Белялов,
есть тема со статьёй по отрисовке шкал https://qsp.org/forum/578-otrisovka-skaly

Прошу помочь разобраться в возврате не предыдущую локацию. Дано:
Локация 1, Локация 2. При переходе на локацию 2, в коде локации прописано следующее:

СлучайнаяВстреча=rand(1,2)
If СлучайнаяВстреча=1:
	gt "СлучайноеСобытиеКоридор"
end

Если выпадает 1, случается ивент и нас отсылает на локацию Ивента, на которой происходит какое либо действие. Затем с неё нужно сделать возврат на Локацию 2. Каким образом это сделать?
Путем гуглинга и ломания головы, было сделано следующее:
В начале игры - $ONNEWLOC=“ПЕРЕХОДЫ” - локация обработчик
В локации ПЕРЕХОДЫ следующий код:

IF $CURLOC <> $nextLoc:
    $prevLoc = $nextLoc
    $nextLoc = $CURLOC
END

И в локации ивента, откуда нужно сделать возврат на предыдущую локацию следующее:

act "Продолжить путь":
	GOTO $prevLoc
end

Но таким образом, почему то происходит возврат на локацию 1, хотя предыдущей локацией, является Локация 2 ( На которой происходит рандомизация, и в случае выпадения шанса переход на локацию ивента.
Парни, помогите кто чем может, я практически спился пока это ковырял, раньше ивент вообще вызывался через команду gs, но по факту, мне удобнее и проще с отдельными локациями работать, или я не прав? Заранее спасибо

Log in or Register to post comments.