Как сделать?

Re: Как сделать?

Дамир Белялов,
А то что я выше давал не ок?

dmvikar
useravatar
Offline
125 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Вот я и говорю тебе за это спасибо

a=0
a_max=arrsize'$module'
:mark
if modulehp[a]=modulemhp[a]: $modstat[a]='<font color=rgb(100,250,100)>Работает</font>'
if modulehp[a]<=modulemhp[a]/2: $modstat[a]='<font color=rgb(190,160,80)>Поврежден</font>'
if modulehp[a]=0: $modstat[a]='<font color=rgb(250,70,70)>Отсутствует</font>'
a+=1
if a<a_max:jump'mark'

оно работает!

Дамир Белялов
useravatar
Offline
49 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Уважаемые знатоки, вопрос - необходимо прописать двумя способами рандомные события на разных локациях, причем пул событий зависит от определенного значения переменной.
Способ 1, запускаемое рандомное событие, через ссылку в выводе текста.
Стандартное описание локации, содержащее ссылку <a href='exec:goto ""СлучайноеСобытие""'> Событие</a></b>"".
Тут я реализовал это с помощью перехода на отдельную локацию СлучайноеСобытие, в которой прописана рандомизация события в зависимости от переменной:

Код:

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)

А затем уже, в зависимости от значения переменной Ивент, будет происходить какое либо событие, с последующим возращением в исходную локацию. Соответственно вопрос по этому способу - 1. Есть ли возможность сделать это как то компактнее? 2. Возможно ли прописать рандомизацию в зависимости от переменной, непосредственно в ссылке <a href='exec:goto ""СлучайноеСобытие""'> Событие</a></b>""?

[b]Способ 2,
Способ описанный выше подразумевает что случайное событие, происходит в локации со 100% вероятностью, а рандомится только тип события. (Для этого и сделано через ссылку, что бы не было замкнутого круга ивент-возвращение-ивент). В способе 2, необходимо сделать лишь ШАНС на возникновение какого либо события, БЕЗ ПЕРЕХОДА на другую локацию.
Реализовано это таким способом. В локации в которой происходит событие, через команду rand (1,2) (Или больше, в зависимости от необходимого шанса события), генерируется возможность возникновения события, с последующей проверкой значения переменной, и последующим рандомизированием выпавшего ивента. Код:

Код:

Ивент2 = rand (1,2)

If Ивент2=1:

!И вот тут затык. Каким образом тут прописать проверку на значение переменной, для последующей рандомизации? (Если не понятно о чем я, см способ 1).
Соответственно вопрос - каким образом можно проще или лучше, реализовать мою идею? Либо продолжить то, что начал я?
Заранее спасибо за ответы

Piksha
useravatar
Offline
8 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

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'СлучайноеСобытие'.

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

dmvikar
useravatar
Offline
125 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

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

Код:

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

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

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

Piksha
useravatar
Offline
8 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Piksha написал(а):

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

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

dmvikar
useravatar
Offline
125 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

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

Код:


! чем больше славы тем больше ивентов становится доступно персонажу
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

Дамир Белялов
useravatar
Offline
49 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Снова возвращаюсь с рубрикой глупых вопросов. Необходимо прописать чуть более заковыристый возврат на предыдущую локацию. Описываю ситуацию:
Есть Локация 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
useravatar
Offline
8 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

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

dmvikar
useravatar
Offline
125 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

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

Код:


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

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

Код:


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

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

Дамир Белялов
useravatar
Offline
49 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
1005
Всего опросов:
14
Всего сообщений:
16790883
Всего сообщений сегодня:
2
Пользователи форума:
 
Всего пользователей:
2570
Последним зарегистрировался:
Jebcek