никогда не встречал, чтоб непись с none подхватывался смартом
Ну с чего бы он подхватывался. Его не один смарт не возьмет. Тут надо понимать и разделять две вещи. Движковая часть примитивна. С определенным интервалом он запускает для каждого, у кого smart_terrain_id() == 65535, цикл по всем смартам. Для каждого смарта вызывается метод enabled() и потом для всех, кто вернул true, вызывается метод suitable(). Кто вернет наибольшее число, id того смарта мобу и присвоится. Ну а дальше он начнет выполнять свою alife task, т.е. по графпоинтам идти туда, куда ему скажут. Обычно говорят идти на первую точку пути назначенной работы. А вот скриптовая часть немного сложнее и она прячется за этими enabled() и suitable(). И именно скриптовая часть обрабатывает все эти none и т.п. Движок об этом понятия не имеет. Его дело цикл прокрутить и так до посинения.
то обычно удаляются по прошествии некоторого времени
Кто же его удалит, он же памятник. Само ничего не удаляется.
все это по десять раз переделано
Мало где это переделано. У меня есть впечатление, что вообще нигде. Вся эта часть, вместе со своими глюками, тянется с оригинала.
мусора в сейве никакого не накопляется со временем?
Откуда там мусору взяться. Торговлю обновляет метод buy_supplies(), в соответствии с указанным конфигом. Он удаляет все, что на текущий момент есть в инвентаре торговца и спаунит новое, в соотв. с указанным конфигом. Единственное, что можно посчитать мусором, это то, что игрок продал торговцу. У меня, к примеру, эти предметы удаляются сразу после закрытия окна торговли. Иначе они болтались бы в инвентаре торговца до следующего вызова buy_supplies(), а это может случиться и через игровые сутки.
Сообщение отредактировал dsh: 13 March 2017 - 11:30 PM
_________________________________________________________________________________________________________