Помощь в создании "Асатамы III"

Re: Помощь в создании "Асатамы III"

Engineer, вот ситуация:

Re: Как сделать?
Ошибка 123
Слишком много переменных с одинаковым хэшем!

Через 3 игровых дня начинает ругаться на эту строку.

Код:

!код добавляющий нпс на локацию
dynamic '$loc_<<X[num]>>_<<Y[num]>>_<<Z[num]>>_<<R[num]>>[] = num'

А чит в том, что символы <> недопустимы в названии переменной, согласно документации. Но я не исключаю того, что я просто мало знаю о qsp и dynamic специально для такого случая и придумали.

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

Re: Помощь в создании "Асатамы III"

В названии переменной не участвуют символы <>, это подвыражение для dynamic.
В указанном примере проблема в том, что слишком много разных строковых переменных имеют одинаковое значение. Похоже, автор упустил утечку, или просто забыл их подчищать. К названию переменной это не имеет никакого отношения.

Опытным путем определил, что может быть максимум 8149 переменных с одинаковым хэшем.

Код:

i=0

:jump
i+=1
dynamic '$g<<str(i)>> = "test"'
dynamic '*nl $g<<str(i)>> + "+" + "$g<<str(i)>>"'
if i<=10000: jump 'jump'
!выводит строку 8149 раз, после чего - ошибка 123

Изменено: Engineer
29.Янв.20 21:13:21
Engineer
useravatar
Offline
30 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Помощь в создании "Асатамы III"

Engineer, по документации 50 переменных может быть с одинаковым хешем.
Я ковырял аналог этого кода с этой переменной, там не было утечки и все подчищалось, даже там, где не надо. Я выводил список образованных переменных каждый ход и они топтались в районе количества 1100-1300 (если не путаю ничего), а потом внезапный крах.
Я сейчас использовал твой код:
сделал переменную <<str(i)>><<str(i)>><<str(i)>><<str(i)>>, получил 4617 записей;
сделал переменную <<str(i)>><<str(a)>><<str(b)>><<str(c)>>, где a,b,c =rand(0,10), получил 8407 записей;
сделал rand(0,100) - 9091;
сделал rand(0,1000) - 7615.
Возможно, из всего этого и можно вывести какую-то закономерность, но главный вывод - не злоупотреблять в dynamic <<>>.

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

Re: Помощь в создании "Асатамы III"

Значит я перепутал, хэш действительно идет для имени переменной, но может быть одинаковым для разного, но похожего набора символов. И когда одного из вариантов полученного хэша становится больше 50 - игра выдает ошибку.
Трудно злоупотребить dynamic. Только может запутаешь себя кодом. Но вот 1100 сгенерированных переменных... конечно такой кошмар никогда не рекомендуется, с dynamic или без.
А на предыдущий мой комментарий не обращайте внимания.

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

Re: Помощь в создании "Асатамы III"

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

Re: Помощь в создании "Асатамы III"

Добрый день!
Не могу разобраться с OBJ.
Колонка предметов у меня в игре оформлена так:

МЕНЮ
ИНВЕНТАРЬ:

Соответственно, все новые предметы, что появляются у игрока, добавляются в колонку под "инвентарь", и меня это устраивало. Но как "obj" у меня оформлены не только мечи да луки, но и возможные спутники игрока.

Возможно ли сортировка? Возможно ли, если в начале игры добавить поочередно "МЕНЮ" "ИНВЕНТАРЬ:" "СПУТНИКИ:". Какие-то obj добавлять строго под "инвентарем", а какие-то строго под "спутниками"?

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

Re: Помощь в создании "Асатамы III"

mkir, я бы рекомендовал тебе уже отказаться от стандартного инвентаря, который предлагается движком и запилить уже свой. У тебя сразу откроется большой простор для творчества и возможность детальной настройки как предметов так и других объектов для взаимодействия. Это так же решит твои вопросы со спутниками и нормальной сортировкой.

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

Re: Помощь в создании "Асатамы III"

Знать бы как! Да и ломать то, что уже сделано, под новый инвентарь, нет желания. В общем, если отвечать на вопрос, - можно сказать, что тем, что предлагает стандартный qsp, сделать сортировку невозможно?

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

Re: Помощь в создании "Асатамы III"

mkir,
Дык я уже присылал тебе образец, в т.ч. и с сортировкой, даже интегрированный, но, конечно не полностью. Правда, не через obj.

Попробуй индекс вручную писать, для оружия со 100, для спутников с 1000


ADDOBJ [$название],[$путь к файлу изображения],[#индекс] - добавление предмета с названием [$название] и изображением [$путь к файлу изображения] в инвентарь на место с номером [#индекс].
Параметр [$индекс] может отсутствовать. По умолчанию предметы добавляются в конец списка.
Индексация предметов рюкзака ведётся с 1.

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

Re: Помощь в создании "Асатамы III"

mkir,
сортировка возможна. Это сто процентов. Если тебе нужно конкретное решение, нужно знать, как у тебя точно организовано добавление/удаление предметов. Есть функции countobj, $getobj, которые помогут в сортировке. По хорошему, нужно хранить объекты и их свойства в разных массивах, и можно сортировать по любому из свойств.

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

Информация

Статистика форума:
 
Всего тем:
987
Всего опросов:
14
Всего сообщений:
16790757
Сообщений на этой неделе:
3
Пользователи форума:
 
Всего пользователей:
2452
Последним зарегистрировался:
R_seniy