Как сделать?
…
ооо, спасибо выручил нереально! Я теперь понял что я прощёлкал и почему не появлялись, перенёс в свою игруху.
Вот что я ещё хотел спросить, вот у тебя ($loc=$curloc), Я в некоторых играх видел $loc=1, ну то есть переменную Локация в как бы номеруют, есть в этом смысл или нет?
Локации спит и неизвестно где я сделал для диалога с Aleks’ом Versus’ом, что бы как бы быть на одной волне, у меня таких локаций нет. Чуть выше мой вопрос
Не могу найти на форуме следующие. Как сделать что бы НПС передвигался по локациям? Ну допустим с 13 по 16 часов он в таверне, с 16 по 21 в кузнице за работой, с 21 по 06 он спит и лучше его не трогать, а то побьёт :-) Я понимаю что где то на форуме оно есть, может кто ткнёт пальцем? Спасибо.
Lexon:
Вот что я ещё хотел спросить, вот у тебя ($loc=$curloc), Я в некоторых играх видел $loc=1, ну то есть переменную Локация в как бы номеруют, есть в этом смысл или нет?
$loc=$curloc это ты запоминаешь в переменной $loc название локации, для того, что бы ты мог выйти из диалога. Это самый легкий способ если нпс могут перемещаться. А $loc=1 не имеет никаого смысла, так как переменная текстовая, а ты ей число задаешь. Вообще смысла нумеровать локации не особенно много, все можно сделать через названия.
Не могу найти на форуме следующие. Как сделать что бы НПС передвигался по локациям? Ну допустим с 13 по 16 часов он в таверне, с 16 по 21 в кузнице за работой, с 21 по 06 он спит и лучше его не трогать, а то побьёт :-) Я понимаю что где то на форуме оно есть, может кто ткнёт пальцем? Спасибо.
Ну так у тебя Ричард двигается по локациям, что тебе еще надо? Все решается как ты задашь условия. Вот для кузнеца например.
Вот чистое перемещение.
$Кузнец_Андор=''
if hour>=16 and hour<21:$Кузнец_Андор='Кузница'
if hour>=13 and hour<16:$Кузнец_Андор='Таверна'
Если тебе надо, что бы у нпс была разная реакция в разное время и в разном месте, то это надо прописывать уже в коде нпс. Проще показать, чем объяснить. Сделал для кузнеца.
Спасибо за пример :-) Чувством юмора ты не обделён, посмеялся :-)
Мне понравилось как ты код пишешь, теперь в своей игре переписую, компактно, очень понравилось.
Lexon:
Спасибо за пример :-) Чувством юмора ты не обделён, посмеялся :-)
Мне понравилось как ты код пишешь, теперь в своей игре переписую, компактно, очень понравилось.
Если что, обращайся, я на работе с нпс собаку съел. Их можно заставить реагировать и на одежду героя, и друг на друга и вообще на что хочешь, сколько в них жизни вложишь, такими они и получатся. Вот с оформлением это не ко мне, хтмл знаю плохо и всякие менюшечки и кнопочки меня утомляют.
DaGrozz:
slot=slot_num[npc]
memory[’<<npc>>,<<slot>>,<<X[npc]>>,<<Y[npc]>>,<<Z[npc]>>,<<R[npc]>>’]=total_minut
Индексация массива при любый условиях начинается с нуля, то есть memory[’<<npc>>,<<slot>>,<<X[npc]>>,<<Y[npc]>>,<<Z[npc]>>,<<R[npc]>>’] = memory[0]. А по поводу очистки многомерных массивов - многомерных массивов, по типу как в других языках(mass3) в Quest Soft Player не существует, а массив типа [’<<npc>>,<<slot>>,<<X[npc]>>,<<Y[npc]>>,<<Z[npc]>>,<<R[npc]>>’] одномерный и имеет определенный индекс! Например: mass[’Вася Пупкин’], если он идет первым, то его аналог mass[0] и из этого следует, что чтобы удалить значение нужно знать индекс. К пример у тебя идут массивы memory[’1’], memory[’2’]…. Не важно, что в них написано, они будут индексироваться по порядку(с нуля), но это долго и искать их это жесть! Но если ты уверен, что значение массива больше нигде не встретится, то найти индекс массива можно с помощью ARRPOS(0,’имя_массива’, любое значение), Например mass[ARRPOS(0,’mass’,12)] = 0 элемент массива mass, в котором есть значение 12, ноль или через killvar mass[ARRPOS(0,’mass’,12)] удалит переменную вовсе.
Слушай, а вот что бы разговор или квест был только раз в сутки, для этого нужно что то помудрить? Допустим кузнец даёт квест, помыть пол, для подъёма репутации у него, и пол можно мыть только раз в сутки, если раньше подойдёшь он тебя пошлёт, только через 24 часа. Никак не пойму как это прописать, допустим по времени запустить квест, легко, а вот как что бы через сутки
Lexon:
Слушай, а вот что бы разговор или квест был только раз в сутки, для этого нужно что то помудрить? Допустим кузнец даёт квест, помыть пол, для подъёма репутации у него, и пол можно мыть только раз в сутки, если раньше подойдёшь он тебя пошлёт, только через 24 часа. Никак не пойму как это прописать, допустим по времени запустить квест, легко, а вот как что бы через сутки
в локации когда берёшь квест можно прописать:
dayQW = 1
и в локации где у тебя прописан календарь при переходе времени с 23.59 на следующий день сделать обнуление:
dayQW = 0
соответственно квест у тебя будет начинаться-проверяться при посещении локации
if dayQW = 0:
Aleks Versus,
DarkDen,
Спасибо, буду думать. Но скорее всего придется отказаться от памяти нпс. Слишком проблемно.
Lexon,
Ну или другим способом. Как я тебе фингал сделал в твоем примере. quest_timer=time+60*24 И проверять if quest_timer>time: тогда можно запускать разговор
DaGrozz:
quest_timer=time+60*24 И проверять if quest_timer>time: тогда можно запускать разговор
в этом случае квест можно будет взять только через 24 часа, т.е. завтра по времени как сегодня
Aaaspavel:
DaGrozz:
quest_timer=time+60*24 И проверять if quest_timer>time: тогда можно запускать разговор
в этом случае квест можно будет взять только через 24 часа, т.е. завтра по времени как сегодня
Ну а в твоем случае поговорив в 23.55, через пять минут можно говорить опять. И тот и другой способ надо применять в зависимости от ситуации.
Я кстати со знаком ошибся, да и вообще лучше подстраховатся. if quest_timer<time and quest_timer>0:
У меня вопрос. Возможно вы уже отвечали на него, но мне всё же не понятно. Мне нужно сделать рандомный переход на локацию, например: есть три локации, мне надо чтобы рандом перебрасывал на одну из них, при этом была возможность настроить шанс попадание на ту или иную локацию. Всё что я знаю про рандомный переход:
RAND (0,3)
GT “1”+rand(0,1)
GT “2”+rand(2,3) Только всё это работает криво, через раз и не более чем на 2 локациях. Желательно по яснее, я глубоко в коды не погружался. Мне проще делать дольше но не загружать голову огромным количеством кодов.
DRSOPE,
chance=rand(1,100)
if chance<=30:gt'loc1'
if chance>30 and chance<60:gt'loc2'
if chance>=60:gt'loc3'
DaGrozz:
Aaaspavel написал(а):
DaGrozz написал(а):
quest_timer=time+60*24 И проверять if quest_timer>time: тогда можно запускать разговор
в этом случае квест можно будет взять только через 24 часа, т.е. завтра по времени как сегодня
Ну а в твоем случае поговорив в 23.55, через пять минут можно говорить опять. И тот и другой способ надо применять в зависимости от ситуации.Я кстати со знаком ошибся, да и вообще лучше подстраховатся. if quest_timer<time and quest_timer>0:
ну, я исходил из обычной практики, что локация в которой берется квест не круглосуточный супермаркет, а соответственно имеет время работы, к примеру, с утра до вечера и таком случае обнуление квеста переходом дня не запускает автоповтора через 5 минут, а как минимум завтра с начала рабочего времени, а в случае если время на разговор с квестодателем тоже тратится:
if quest_timer<time and quest_timer>0:
time=time+30
quest_timer=time+60*24
то придя сегодня к закрытию кузницы и взяв квест - завтра этот квест обновится уже после закрытия кузницы и взять его будет невозможно до послезавтра
DeathSpace:
Re: Как сделать?
Ребят,мне нужно чтобы мой qsp файл сразу открывался во весь экран а не окошком т.е. чтобы мне не нужно было нажимать ALT+ENTER.
Можно так сделать?
это зависит от источника происхождения qspgui, у меня их уже несколько, они в архивах с играми идут, так вот, одни открываются только в оконном режиме не сохраняя расположения элементов в момент закрытия, другие в полноэкранном и сохраняя расположение элементов
Aaaspavel,
DeathSpace.