Тема:Изменения (для билдеров)Автор:Керд Дата и время:09.06.2004 02:42
Тут отдельно новости для билдеров, чтобы не мешать в кучу. - Добавил 3 доп. проверки для if: - isthief - позволяет проверить, является ли аргумент вором - iskiller - позволяет проверить, является ли аргумент убийцей - iswanted - позволяет проверить, является ли аргумент убийцей в розыске У iskiller, iswanted возможен доп. параметр - vnum, позволяющий проверить, убийца ли в конкретной зоне (которой пренадлежит внум). Если vnum = 0, то проверяет, является ли убийцей где угодно в мире. Если не указано, то в текущей для моба зоне. Например: if isthief $$n - имеет ли флаг ВОР if iskiller $$n 0 - является ли убийцей где угодно в мире if iswanted $$n 1001 - является ли убийцей, которого ищут в Триграде if iskiller $$n - является ли убийцей в той же зоне, что и моб. Само собой, лишь один знак доллара перед 'n' должен быть в прогсе. - Прототипу объекта (oedit-ом который редактируется) добавлено новое поле timer, а также extra флаг gettimer. Когда создается новый объект, поле timer у него принимает такое же значение, как и у прототипа. Пока у объекта с полем timer, которое имеет значение больше 0, установлен флаг gettimer, таймер не изменяется. Флаг gettimer снимается, когда персонаж (не моб) каким-либо образом получает объект. В комбинации с флагом rot_death флаг gettimer работает несколько иначе: после смерти моба оба флага снимаются, в результате чего таймер начинает тикать. Не ставьте флаг rot_death на объекты, которые даете мобам, после смерти которых не остается труп. Флаг при этом не снимается. Эта ошибка будет исправлена немного позже. Исходя из того, что я написал, использование mob settimer не рекомендуется, т.к. практически все, что необходимо, можно реализовать указанным выше способом. Кроме того, в определенном случае mob settimer может не поставить таймер на объекте. Так что настоятельно рекомендую пользоваться новой возможностью. Примеры использования: - У прототипа timer = 5 и флаг gettimer: созданный объект получит таймер, равный 5, который не будет тикать до тех пор, пока объект не попадет к персонажу. - У прототипа timer = 5 и нет флага gettimer: созданный объект получит таймер, равный 5, который начнет тикать сразу после создания объекта. - У прототипа timer = 100, нет флага gettimer, есть флаг rot_death: будет создан объект с таймером, равным 100, который начнет тикать сразу после создания объекта. Если моба, у которого данный объект, убъют до того, как 100 тиков истечет, то флаг rot_death будет снят, а таймер у объекта будет установлен в значение между 5 и 10-ю. - Если у прототипа timer = 20, есть флаг gettimer и флаг rot_death: будет создан объект с таймером, равным 20. Таймер не будет тикать. Когда убъют моба, у которого данный объект, то снимутся оба флага и таймер начнет тикать. Особо хочу отметить, что билдер должен следить, чтобы объект с флагом rot_death нельзя было забрать у моба каким-либо иным способом, кроме как убить моба. Если же получилось так, что предмет с флагами gettimer и rot_death лежит на земле, то после того, как персонаж возьмет такой предмет, сбросится флаг gettimer, останется флаг rot_death, таймер начнет тикать (если не 0). Если потом персонаж, который несет предмет, будет убит, то тогда произойдет нормальное срабатывание флага rot_death. Если поле timer равно 0, а флаг gettimer присутствует, то после взятия персонажем предмета, флаг будет сброшен, а таймер не будет тикать (т.к. он равен 0). Еще хотелось бы попросить не использовать флаг had_timer. Это служебный флаг, который ни на что не влияет. Скорее всего будет вообще перенесен в отдельное поле, недоступное билдерам. Вроде как на данный момент все.