Как сделать?
…
dmvikar:
Та можешь сгенерировать все, что будет происходить в конкретном месте при конкретных условиях.
Да, я как-то зациклился на локациях, но что мне в теории мешает просто генерить текстом то, что персонаж находится там-то и происходит то-то, без привязки к локациям, ты прав, спасибо
Щас потыкался в игрушку Zone - примерно то, что я хотел бы сам сделать, но чуть более иммерсивно, в принципе выглядит не супер сложно, наверное смогу повторить через 3-4 месяца, только карта и перемещение по ней смущает - с перемещением все понятно, но как это привязать к карте.. круто сделано, короче
я ваще балдею от этого вашего ксп,
Вот тут без массива как раз никуда)
Без понятия как иначе делать, чтобы не превращать код в простыню влетвлений.
$map['title', 0, 0] = 'Таверна'
$map['desc', 0, 0] = 'Здесь полно людей. Все они пьют, жрут, матерятся, поют, курят, плачут... в общем, весело тут, аж выть охота.'
$map['action_title', 0, 0, 0] = 'Подойти к Василию'
$map['action_title', 0, 0, 1] = 'Выпить стаканчик местного пойла'
$map['action_title', 0, 0, 2] = 'Грозно окинуть всех взглядом очей своих'
$map['action_code', 0, 0, 0] = {
msg 'Допустим к Василию вы подошли, а дальше история умалчивает.'
}
$map['action_code', 0, 0, 1] = {
msg 'Вкус отвратительный, так ещё и не в то горло пошло, как итог вы фатально захлебнулись.'
}
$map['action_code', 0, 0, 2] = {
msg 'Никто не поежился, более того, все дружно отпинали вас ногами. Посмертно.'
}
$map['action_count', 0, 0] = 3
let player_x = 0
let player_y = 0
*PL $map['title', player_x, player_y]
*PL $map['desc', player_x, player_y]
loop i=0 while i<$map['action_count', player_x, player_y] step i+=1:
*PL '<a href="exec: dynamic $map[''action_code'', <<player_x>>, <<player_y>>, <<i>>]"><<$map["action_title", player_x, player_y, i]>></a>'
end
Dominus:
Вот тут без массива как раз никуда)
Без понятия как иначе делать, чтобы не превращать код в простыню влетвлений.
Я пока от этого отказался, решил реализовать систему регулируемой сложности - либо ходи по периметру локации и вычищай его за пару минут, таская всякий мусор, в итоге очень медленно развиваясь, или углубляйся когда душе угодно, но вместе с качеством лута будет расти и риск столкновений с врагами и прочих негативных событий + если далеко зайти, то труднее вернуться))
У меня уже код - это выполнение 5-10 задач на одной локации, но вроде пока что все работает так, как мне надо))
А как выбрать рандомный элемент из массива? Что-то не понимаю..
Пробую что-то типа chosen_artifact = $мусорные_артефакты[rand(0, 13)] В массиве всего 14 значений, но выдает ошибку на этих попытках как раз
я ваще балдею от этого вашего ксп,
Ошибка какая? Несоответствие типов? Если код один в один скопировал, то ты числовой переменной задаешь строковое значение.
Блин, мб если я возвращаю в текстовый массив числовые данные, то он поэтому ломается? Ошибка 101 - несоответствие типа данных, но где-то читал, что плеер сам преобразует данные в нужный формат, если может..
я ваще балдею от этого вашего ксп:
Несоответствие типов?
Не увидел твоего ответа, вот только об этом написал)
А как правильно сделать? Вот кусок кода одного из массивов
! Мусорные артефакты
$мусорные_артефакты[0] = “Игла”
$мусорные_артефакты[1] = “Жмых”
$мусорные_артефакты[2] = “Хурма”
$мусорные_артефакты[3] = “Болванка”
$мусорные_артефакты[4] = “Черняжка”
$мусорные_артефакты[5] = “Пластилин”
$мусорные_артефакты[6] = “Спайка”
$мусорные_артефакты[7] = “Головастик”
$мусорные_артефакты[8] = “Перстень”
$мусорные_артефакты[9] = “Очко”
$мусорные_артефакты[10] = “Вилка”
$мусорные_артефакты[11] = “Песчанник”
$мусорные_артефакты[12] = “Клетка”
$мусорные_артефакты[13] = “Пискун”
arti_number = rand(0,13)
chosen_artifact = $мусорные_артефакты[arti_number]
p “Вы нашли мусорный артефакт!”
pl
! Добавляем артефакт в инвентарь игрока
AddObj chosen_artifact
я ваще балдею от этого вашего ксп,
$chosen_artifact = $мусорные_артефакты[arti_number]
dmvikar:
Код:
$chosen_artifact = $мусорные_артефакты[arti_number]
Огромное спасибо, выручил)
Я понял, то есть если хочу, к примеру, из массива вытягивать текст, то переменная, к которой я этот текст хочу привязать тоже должна быть текстовой, верно?
Оно мне просто 0 выдало на addobj, я туда $ добавил и теперь выдает что нужно)
я ваще балдею от этого вашего ксп,
Тут вместо int ничего, а вместо string - $.
Массив можешь не именовать по индексу, если он тебе не нужен. Так удобнее, если ты захочешь в середину что-то потом воткнуть, да и возни меньше и ошибки не будет, если индекс пропустишь или опечатку сделаешь.
$мусорные_артефакты[] = "Игла"
$мусорные_артефакты[] = "Жмых"
В таком виде он автоматом задает следующий индекс.
А вот оптимизация). Можешь добавлять сразу из массива, без дополнительной переменной. А чтоб не менять крайний индекс в рандоме при добавлении элементов в массив, сразу втыкаешь размер массива.
AddObj $мусорные_артефакты[rand(0,arrsize('$мусорные_артефакты')-1)]
Все, кайф
Поиск артефактов реализовал, с простыми массивами +- разобрался, думаю сегодня соберу простенький прототип, где можно что-то продать и получить гейм-овер
В принципе из сложного останется реализация пошаговой боевки, все-таки решил концепцию больше в Сталкер свести - тут без боевки никуда, и мб запарюсь с квестами и рандомными ивентами + динамическим магазином
Начать думаю с магазина, чтобы можно было прогрессировать как-то уже в прототипе, то есть умирать, фармить лут - опять умирать, пожелайте мне удачи…
я ваще балдею от этого вашего ксп:
ожешь добавлять сразу из массива, без дополнительной переменной.
О, а вот это прикольно, думаю сразу сейчас сделаю все в таком формате, пока не слишком много кода, спасибо)
Так-с, а переменная мне все равно наверное нужна, потому что при нахождении артефакта я еще для красоты вывожу в лог его название, то есть я в теории могу задать какой-то переменной значение $a = $мусорные_артефакты[rand(0,arrsize(’$мусорные_артефакты’)-1)], и оно в рамках одной итерации будет выдавать мне название того арта, который добавился в инвентарь?
Щас имя арта при его получении вот так реализовано p “Вы нашли редкий артефакт: ” + $chosen_artifact + “!” , тут $chosen_artifact как раз та моя переменная, но пока не понимаю, как без нее название добавлять)
я ваще балдею от этого вашего ксп,
Если нужно название, то без временной переменной никак. Используй вложенное выражение вместо плюсов
p "Вы нашли редкий артефакт: <<$a>>!"
dmvikar:
Код:
AddObj $мусорные_артефакты[rand(0,arrsize(’$мусорные_артефакты’)-1)]
А я правильно понимаю эту строчку?
Мы добавляем предмет из массива мусорные артефакты с индексом [случайное между: нулем, длиной массива(arrsize же именно ее определяет, верно?)] а минус один здесь для чего? Мы не можем сделать rand(arrsize(’$мусорные артефакты’)?