Когда игрок марчит местность, под ним создается видимый игрокам предмет.
Предупреждающий, что местность замарчена, тут не стоит ставить базу, дом, загон для животных и тд.
Код
SERV.NEWITEM=I_RUNEBOOK_RUNE
//Запись тэгов на руну на земле
NEW.TAG.LINKED_RUNEBOOK=<UID>
NEW.TAG.LINKED_RUNEBOOK_SLOT=<DLOCAL.FREE_SPACE>
NEW.TAG.LINKED_OWNER_UID=<SRC.UID>
NEW.TAG.LINKED_OWNER_NAME=<SRC.NAME>
TAG.LINKED_RUNE_<DLOCAL.FREE_SPACE>=<NEW.UID>
NEW.P=<SRC.P.X>,<SRC.P.Y>,<EVAL (<SRC.P.Z> - 1)>,<SRC.P.M>
Когда игрок стирает запись в рунбуке - данный видимый предмет удаляется
Код
[FUNCTION REMOVE_RUNE]
//SERV.NEWITEM=I_RETURN_RUNE
//NEW.BOUNCE
TRY TAG.RUNEBOOK.<EVAL <ARGV[0]>>=
TRY TAG.RUNEBOOK.LOCATION.<EVAL <ARGV[0]>>=
IF <ARGV[0]> < 16
FOR <EVAL <ARGV[0]>+1> 16
IF !<ISEMPTY <TAG.RUNEBOOK.<EVAL <LOCAL._FOR>>>>
TRY TAG.RUNEBOOK.<EVAL <LOCAL._FOR>+-1>=<TAG.RUNEBOOK.<EVAL <LOCAL._FOR>>>
TRY TAG.RUNEBOOK.LOCATION.<EVAL <LOCAL._FOR>+-1>=<TAG.RUNEBOOK.LOCATION.<EVAL <LOCAL._FOR>>>
TRY TAG.RUNEBOOK.<EVAL <LOCAL._FOR>>=
TRY TAG.RUNEBOOK.LOCATION.<EVAL <LOCAL._FOR>>=
ENDIF
ENDFOR
ENDIF
Не решена проблема засорения мира такими предметами.
К примеру когда игрок продал НПС/удалил рунбуку из игры.
Какую функцию необходимо написать, которая будет проверять все I_RUNEBOOK_RUNE на наличие рунбуки, к которой они привязаны? А если рунбуки в игре нет - удалять их.
Код
[FUNCTION CHECK_RUNEBOOK_RUNE]
FORINSTANCES I_RUNEBOOK_RUNE
...
ENDFOR
Спасибо всем, кто откликнется.
(IMG:
http://ximages.net/images/71152464687249548233.png)