Створення системи інвентаризації, яка впливає на статистику (вага ваги тощо) - Форум шпагатів

Привіт усім!
Це обговорення, щоб побачити, як інші можуть подумати над цією конкретною проблемою.

інвентаризації

Я хочу зробити інвентаризацію кількох предметів, які мають переносну вагу
Екіпіровані предмети впливають на статистику (Е.Г., Збільшення DAM тощо)
Я також хочу можливість викинути згадані предмети та використовувати їх за потреби (робити табір вночі тощо)

Деякі предмети легко.
Наявність спального місця активує кнопку "просто поспи тут", яка рухає годинник на 8 годин, запускає подію "час минув 24" тощо.

Я трохи борюся з тим, як мати персонажа з 5 зіллями для здоров'я, кожне з яких важить 1.

Я, мабуть, занадто амбіційний, але не можу бути єдиним, хто намагається розібратися в цьому!

(Використання цукрового очерету в шпагаті 1.4.2, але я вмію використовувати будь-який інший формат збірки)

Крім того, для тих, хто просто хоче систему інвентаризації, я розкрив це: https://strugglingwithtwine.blogspot.co.uk/2014/03/handling-inventory.html?showComment=1483911375627#c3406710617839643496 Я розумію, що потрібно трохи взуття, але я думаю, що це може спрацювати. але це не буде робити те, що я хочу тут.

Коментарі

Я створив такий для Harlowe (шпагат 2.x), тому припускаючи, що ви хочете переробити всю нашу роботу і вивчити новий формат, слідкуйте далі

Спочатку я хочу знати, що ти хочеш досягти, тому що моє, можливо, складніше, ніж те, що тобі потрібно

ти хочеш систему магазинів (що, між іншим, займе багато часу)

які типи предметів ви хочете

чи є обмеження запасів чи це нескінченна чорна діра предметів

яку статистику ви хочете, яку статистику ви маєте у грі

це система інвентаризації, дійсно корисна для вашої ситуації, тим що я маю на увазі, чи можете ви відмовитись від передачі або її просто замінюють автоматично

якщо шестерню просто замінили, все, що вам потрібно - це карта даних

з будь-якої причини, коли ви хочете скинути спорядження або витягти спорядження з награбованого, вам потрібна система інвентаризації

базується на здобичі або це конкретний предмет

робить стек передач, якщо так, то скільки складає кожен предмет

Я не можу втриматися, якщо ти занадто проклятий

[РЕДАКТУВАТИ] Я не можу використовувати шпагат 2, тому що я нічого на ньому не бачу.
Я дальтонік, і що-небудь на синьому фоні неможливо побачити
Фарширували це.

Немає магазину. Це буде лише на бабло
Предмети поділяються на чотири категорії: Зброя. Броня. Їжа. Вода. (і монети, але їх буде досить легко відстежувати за допомогою змінної +1)
Буде обмеження. Щоб гра не ставала занадто простою. Кожен елемент буде збалансований відповідно до біому, в якому він буде знайдений.
Поточна статистика: Сила, спритність, стелс, кмітливість, винахідливість, витривалість, удача, носіння, шкода, S-шкода, захист, S-захист, критичний, руки.
Система інвентаризації була б дуже корисною для предметів, що перевозяться, але зброю та обладунки можна замінити, оскільки немає потреби витрачати на це свій кишеньковий простір.
Лут базується на удачі
Механізм буде складений так високо, як дозволяє вантажопідйомність (для обговорення). Звичайно, ви не хочете носити з собою нічого, крім цілющих зілля та вашого спорядження.

Я не хотів викидати всі деталі моєї гри, коли не знаю, яка інформація є релевантною. Я ніде не згадував магазин, і якщо б про це не запитали, я б навіть не думав про це.

загальні поради (оскільки в шпагаті 1.x немає харлоу, я б хотів насправді допомогти)

1. зменшити кількість статистичних даних - це занадто багато. Я не уявляю, якими можуть бути руки, а також я не знаю різниці між силою/шкодою, розумом/винахідливістю, витривалістю/захистом, тому що як гравець мені не сподобалася б така гра занадто складний погляд на популярні ігри пісочниці (я припускаю, що ви робите гру пісочниці), наприклад Не голодуй або Minecraft, вони мають приблизно 3-4 статистичні дані, навіть у більшості mmorpgs/rpgs не так багато

2.можливо, ви можете оновити/зачарувати своє обладнання, щоб отримати конкретну статистику, яку ви шукаєте

удачі це прикро, що я не міг допомогти

Деякі з них можуть бути найпростішими - це ваш базовий предмет - це стек, а не один предмет. Отже, цілюще зілля - це стопка з 1 цілющим зіллям. Ви б зберігали атрибути окремих елементів у основі стека і використовували віджет (припускаючи, що ви використовуєте Sugarcane 2 з 1.4.2) для перерахунку загальних атрибутів стека:

цілюще_зілля: < tag: 'Healing Potion',
одиночний: [1, 0, 0, 0, 0, 0]
кількість: 3,
усього: [3, 0, 0, 0, 0, 0]>

Загальний масив - це просто один масив, помножений на рахунок. Щоб скласти загальний запас, вам просто потрібно скласти всі окремі масиви.

Тег використовується для пошуку об'єктів при переміщенні деяких з них на нове місце. Якщо ви можете знайти стек об’єкта в новому місці, просто відрегулюйте кількість і повторно складіть кожен стек. Якщо стек закінчується з 0 рахунком, знищіть його (але дивіться клон проти покажчика - встановіть $ a на $ b просто робить $ точку на $ b, вам потрібно встановити $ a для клонування ($ b), щоб отримати новий об'єкт що не залежить від об’єкта $ b.) Якщо ви не можете знайти існуючий стек у новому пункті призначення, вам потрібно буде створити новий (тобто, коли ви вперше берете цілюще зілля).

Можливо, ви зможете зберегти трохи пам’яті зі значенням „type”, яке вказує на запис у головному одиночному масиві, але це ускладнює ситуацію.

Я все ще новачок у всьому цьому, використовуючи Harlowe та SugarCube (зосереджуючись більше на SC, тому що це здається потужнішим), але я хотів би додати свій внесок. Я скажу це, не вдаючись до функцій javascript та/або не використовуючи систему віджетів SugarCube, у вас буде приємний час, щоб підтримувати речі акуратними, чистими та придатними для використання. В даний час я розглядаю кращі способи використання карт даних або будь-якої структури ключ-значення, щоб я міг створювати складні об'єкти (наприклад, елементи) на льоту. Важкою частиною є створення функцій, які чудово граються з ними та сценарієм Twine. Я витратив 95% свого часу, просто досліджуючи, як змусити користувацькі функції Javascript працювати, і JS була моєю першою мовою.