Показать сообщение отдельно
Непрочитано 17.02.2010, 18:31   #2
Аватар для ViAl
Пользователь

По умолчанию Re: настрока сервера

Цитата:
Сообщение от Piastr Посмотреть сообщение
Интересует несколько вопросов.
Как сделать, чтобы мобы перемещались и как создавать(править) скиллы?
Желательно манул бы по этим вопросам, думаю многим было бы интересно.
1.Как сделать, чтобы мобы перемещались?
Цитата:
Сообщение от TimeLine
Rev.957 - Walker is supported in new spawn xml files ("w" for walker route "rw" for random walk in spawn template)
Начиная с 957й ревизии сервера, для мобов поддерживается передвижение. Спавн-листы для каждой территории лежат в ./gameserver/data/static_data/spawns/Monsters/[ID территории].xml
Рассмотрим на примере территории 210040000(Интердика). Открываем 210040000.xml видим текст примерно следующего содержания:
Код:
  <spawn map="210040000" npcid="211232" pool="12" interval="105">
    <object x="595.8951" y="2846.455" z="108.11885" h="35" />
    <object x="666.9788" y="2838.161" z="107.48254" h="18" />
    <object x="537.2245" y="2845.518" z="107.13677" h="63" />
    <object x="476.6108" y="2911.978" z="101.5" h="116" />
    <object x="448.1725" y="2845.576" z="104.77156" h="33" />
    <object x="425.1798" y="2874.643" z="105" h="67" />
    <object x="479.0565" y="2863.377" z="106.593124" h="28" />
    <object x="722.7897" y="2865.88" z="108.0" h="75" />
    <object x="513.9693" y="2901.582" z="102.927246" h="67" />
    <object x="752.2502" y="2896.655" z="105.2247" h="51" />
    <object x="487.8398" y="2858.835" z="107.552795" h="52" />
    <object x="666" y="2838" z="107.625" h="21" />
  </spawn>
Это - описание спавна для 1 моба в локации Интердика. Рассмотрим код по строкам:
Код:
<spawn map="210040000" npcid="211232" pool="12" interval="105">
map="210040000" - ид зоны в которой будут спавнится мобы.
Ид всех игровых зон:
Код:
АСМОДЕЯ
220030000 - Альтгард
220040000 - Белуслан
220050000 - Брустхонин
220010000 - Исхальген
220020000 - Морхейм

ЭЛИСЕЯ
210030000 - Бертрон
210040000 - Интердика
210060000 - Теомобос
210010000 - Фоэта
210020000 - Элтенен

БЕЗДНА
400010000 - Арэшурат
npcid="211232" - id нпс или моба который будет заспавнен.
pool="12" - количество одновременно респающихся мобов на данной локации. Т.е. если в наше случае указан пул=12, то далее мы должны 12ть раз описать спавн мобов данного типа:
Код:
<object x="595.8951" y="2846.455" z="108.11885" h="35" />
х,y и z - соответственно х,у и z координаты на карте, по которым будет появлятся моб.
h="35" - точными сведениями не располагаю, предполагаю что это т.н. "heading", то есть направление в котором моб будет смотреть сразу после появления. Принимает значения от 1 до 360 градусов.
Теперь о том как сделать чтобы мобы двигались.
Есть два типа движения:
"w"- движение по прямой.
"rw" - хаотичное движение.
Для того чтобы заставить моба двигаться достаточно всего лишь добавить один из этих параметров к нужному мобу:
Код:
<object x="595.8951" y="2846.455" z="108.11885" h="35" w="20"/>
w="20" - номер шаблона передвижения моба.
Шаблоны передвижения мобов лежат в файле gameserver\data\static_data\npc_walker.xml
Открываем файл, видим текст следующего содержания:
Код:
<walker_template route_id="1" >
		<routes>
			<routestep step ="1" loc_x="1755.2654" loc_y="1401.5167" loc_z="575.83844" rest_time="0" />
			<routestep step ="2" loc_x="1768.111" loc_y="1398.0126" loc_z="578.6604" rest_time="0" />
			<routestep step ="3" loc_x="1795.2981" loc_y="1397.8864" loc_z="582.8908" rest_time="0" />
			<routestep step ="4" loc_x="1811.8364" loc_y="1397.8558" loc_z="583.08203" rest_time="0" />
			<routestep step ="5" loc_x="1840.5798" loc_y="1397.8303" loc_z="587.412" rest_time="0" />
			<routestep step ="6" loc_x="1857.4154" loc_y="1398.9735" loc_z="590.00977" rest_time="0" />
			<routestep step ="7" loc_x="1856.7184" loc_y="1409.2963" loc_z="590.01135" rest_time="0" />
			<routestep step ="8" loc_x="1827.8679" loc_y="1406.4335" loc_z="585.30066" rest_time="0" />
			<routestep step ="9" loc_x="1795.916" loc_y="1407.6373" loc_z="582.9019" rest_time="0" />
			<routestep step ="10" loc_x="1743.2365" loc_y="1407.4434" loc_z="572.85254" rest_time="0" />
		</routes>
</walker_template>
Где:
walker_template - тэг открывающий шаблон передвижения.
route_id="1" - номер шаблона передвижения
<routes></routes> - между этими тэгами следует прописать непосредственно шаги передвижения.
1 шаг передвижения выглядит так:
Код:
<routestep step ="1" loc_x="1755.2654" loc_y="1401.5167" loc_z="575.83844" rest_time="0" />
Где:
step="1" - номер шага передвижения.
loc_x,loc_y,loc_z - соответственно x,y,z координаты на которые моб будет перемещаться.
rest_time="0" - время простоя моба между шагами, в секундах.

Допустим мы хотим сделать чтобы моб из файла 210040000.xml(Интердика)
Код:
<spawn map="210040000" npcid="211232" pool="12" interval="105">
    <object x="595.8951" y="2846.455" z="108.11885" h="35" />
Начал перемещаться по созданному нами шаблону. Открываем npc_walker.xml, и добавляем в него нужный нам шаблон перемещения, присвоим ему id=99:
Код:
<walker_template route_id="99" >
		<routes>
			<routestep step ="1" loc_x="600" loc_y="2850" loc_z="115.11885" rest_time="0" />
			<routestep step ="2" loc_x="605" loc_y="2855" loc_z="120.11885" rest_time="0" />
		</routes>
</walker_template>
Сохраняем, файл, и открываем 210040000.xml, находим описание нашего моба:
Код:
<spawn map="210040000" npcid="211232" pool="12" interval="105">
    <object x="595.8951" y="2846.455" z="108.11885" h="35" />
и просто добавляем к нему номер шаблона перемещения:
Код:
<object x="595.8951" y="2846.455" z="108.11885" h="35" w="99"/>
Сохраняем отредактированные файлы, перезапускаем сервер, и проверяем.

Последний раз редактировалось ViAl; 18.02.2010 в 07:53.
ViAl вне форума Ответить с цитированием
Сказали спасибо: