Как сделать?

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

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

Код:


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

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

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

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

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

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

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

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

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

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

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

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

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

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

http://qsp.su/components/com_agora/img/members/669/mini_Screenshot_1.png

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

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

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

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

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

Дамир Белялов,
есть тема со статьёй по отрисовке шкал http://qsp.su/index.php?option=com_agor … ;Itemid=57

Aleks Versus
воздвигатель башни
useravatar
Онлайн
1614 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

Прошу помочь разобраться в возврате не предыдущую локацию. Дано:
Локация 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, но по факту, мне удобнее и проще с отдельными локациями работать, или я не прав? Заранее спасибо

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

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

Piksha,
Это происходит потому, что код на локации 2 не выполняется полностью, соответственно, после его выполнения не запускается выполнение кода на локации onnewloc. То есть при переходе на локацию 2 у тебя не выполняется код на локации onnewloc. Тебе нужно либо goto делать уже из onnewloc, либо goto завернуть в действие на локации 2. Я бы выбрал последнее:

Код:

СлучайнаяВстреча=rand(1,2)

If СлучайнаяВстреча=1:
    act "Внезапно!..":
        gt "СлучайноеСобытиеКоридор"
    end
end

Aleks Versus
воздвигатель башни
useravatar
Онлайн
1614 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

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

Спасибо за ответ. Механизм уяснил, как это сделать с локации onnewloc не уяснил, но вы мне подали идею для гениального решения):
Во первых - перенес бросок кости на ивент, в действие перехода, а не на саму локацию - логически это будет вернее:

Код:

    act "В локацию 2":

        время = время + 2
        СлучайнаяВстреча=rand(1,2)   
        If СлучайнаяВстреча=1:
            ВозвратИвентКоридор=2
            gt "СлучайноеСобытиеКоридор"
        else
            gt "Локация 2"
        end   
    end

Основное тут - то что в переменную ВозвратИвентКоридор, записывается откуда был совершен коридор, что в дальнейшем реализуется в механизме возврата из локации ивента на следующую локацию (Что бы было понятнее, Локация 1 -> Коридор(Ивент) -> Локация 2 на которую происходит продолжение пути). Реализовано таким образом:
   

Код:

    If ВозвратИвентКоридор=2:

            act "Продолжить путь":
                ВозвратИвентКоридор=0
                gt "Локация 2"
            end
        end

И значение ВозвратИвентКоридор - сбрасывается до нуля.
По сути, единственным минусом этого способа является загромождение кода ивента лишними копиями переходов в зависимости от условий. К примеру если используется ивент в коридоре,а  у вас 4 локации, то нужно 4 отдельных условий продолжения пути на локацию. Но более рационального способа решить это я не нашел.

Возник другой вопрос - ивент, на то и ивент что не должен часто встречаться. Необходимо встроить таймер на срабатывание рандомизации.
К примеру, При срабатывании ивента Используется переменная ИвентСработал=1
А в условие каждого ролла ивента, встраивается следующее:

Код:

act "В главный зал":

    время = время + 2
    If ИвентСработал=1:
        wait 30000
        ИвентСработал=0
    Else
        СлучайнаяВстреча=rand(1,2)   
        If СлучайнаяВстреча=1:
            ВозвратИвентКоридор=2
            gt "СлучайноеСобытиеКоридор"
        else
            gt "Локация 2"
        end   
    end
end

Но это все больше увеличивает количество буковок, которые меня начинают все больше пугать. Есть ли более экономный способ встроить таймер на срабатывание рандомизации ивента? Заранее спасибо

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

Информация

Статистика форума:
 
Всего тем:
1005
Всего опросов:
14
Всего сообщений:
16790881
Сообщений на этой неделе:
3
Пользователи форума:
 
Всего пользователей:
2569
Последним зарегистрировался:
Ивентюрист