Случайная подборка модов
На Болотах
3.7
Волей Случая
3.5
Nature Winter v2.0 «Квантовый скачок»
4.0
FeaR Zone: История Холода
2.6
Darkest Time
3.5
Oblivion Lost Remake
4.1
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
Модострой:Вопросница
Российская Федерация  Wolfstalker
Среда, 02.03.2011, 09:50 | Сообщение # 1
Статус:
Легенда:
Сообщений: 2258
Награды: 15
Регистрация: 05.04.2010

Задаем разные вопросы касательно создания модов.
  Злобная реклама
Среда, 02.03.2011, 09:50
Статус:
Сообщений: 666
Регистрация: 05.04.2010
Российская Федерация  RICK
Вторник, 09.08.2011, 13:05 | Сообщение # 1096
Статус:
Опытный:
Сообщений: 1205
Награды: 4
Регистрация: 10.05.2011

;------------
;EnerjaiZer
;-------------

--------всем прив для вас k.a.i.l.-------

сегодня будем учится создавать нового нпс и спавнить его.

нам нужно;
character_desc_локация.xml
npc_profile.xml
spawn_section.ltx
stable_bio_name.xml
info_portion.xml
ну и сам скрипт спавна мы его напишим

поехали

шаг 1

идем сюда config/gameplay/character_desc_escape.xml

и копируем любого нпс

например того же волка и переделаем немного вотак

<!---------------------------------------new_npc----------------------------------------------------->
<specific_character id="new_npc" team_default = "1">--это айди нпс пишим также как и в npc_Profile
<name>сюда имя писать любое хоть дацент</name>
<icon>ui_npc_face</icon>-- его иконка в инвенторе можно другую вписать название иконки внимание иконка уменя своя так что увас она небудет работать вписывайте другое
<bio>esc_wolf_bio</bio> -- можно нетрогать в игре вроде неисполуезтся
<class>new_npc</class>
<community>stalker</community>--- это строка отвечает в какой наш нпс состоит в группировке сейчас он в группировке нейтральные сталкеры можно вписать любую другую
<terrain_sect>stalker_terrain</terrain_sect>

<rank>434</rank>- его ранк сейчас он опытный если поставить например 700,800,900 то он будет ветераном или мастером
<reputation>5</reputation>
<money min="600" max="2000" infinitive="0"/>--- его денги можно вписать любое число или зделать бесконечные денги где стоит вскобках 0 поставить надо 1 и все у нашего нпс бесконечные денги

<snd_config>characters_voice\human_01\stalker\</snd_config>-- его голос
<crouch_type>-1</crouch_type>

<visual>actors\neytral\stalker_neytral_balon_1</visual>--- визуал как он выглядит так же можно изменить
<supplies>
[spawn] \n-- это его рюкзак можно много что вписать
wpn_pm \n
ammo_9x18_fmj = 1 \n
wpn_ak74 \n
ammo_5.45x39_fmj \n
device_torch \n
hand_radio \n
</supplies>

#include "gameplay\character_criticals_4.xml"
</specific_character>

шаг 2

идем в папку config/gameplay/npc_profile.xml

открыли этот файл и видим

-------------------------------------------------------------------------------

<?xml version='1.0' encoding="UTF-8"?>

<xml>
<!-- НОВЫЕ ПРОФИЛЯ -->
<character id="actor">
<class>Actor</class>
<specific_character>actor</specific_character>
</character>
<character id="default">
<class>Stalker_general</class>
</character>
<character id="mp_actor">
<class>mp_actor</class>
<specific_character>mp_actor</specific_character>
</character>

<!-- Escape -->
<character id="escape_trader">
<class>Trader</class>
<specific_character>escape_trader</specific_character>
</character>

<character id="esc_wolf">
<class>esc_wolf</class>
</character>

ну и там дальше... давайте вставим нашего нпс вотак

<character id="new_npc">
<class>new_npc</class>
</character>

в итоге получится так

<!-- Escape -->
<character id="escape_trader">
<class>Trader</class>
<specific_character>escape_trader</specific_character>
</character>

<character id="esc_wolf">
<class>esc_wolf</class>
</character>
<character id="new_npc">
<class>new_npc</class>
<specific_character>new_npc</specific_character>
</character> --внимание следите за порядком тагов что бы неповтарались два раза </character>,или </character id=>

иначе будет вылет с предположительно такой ошибкой eror read end tag

шаг 3 идем дальше в папку config/creaturs/файл spawn_section.ltx

окрыли его и видим

ищем такую конструкцию

;--------Escape--------------
;--------neutrals-------------
[esc_stalker_respawn_1]:stalker
$spawn = "respawn\esc_stalker_respawn_1"
character_profile = sim_stalker_novice
spec_rank = novice
community = stalker

[esc_stalker_respawn_2]:stalker
$spawn = "respawn\esc_stalker_respawn_2"
character_profile = sim_stalker_general
spec_rank = regular
community = stalker ну и там много еще давайте напишим нашу конструкцию вотак

[new_npc]:stalker -- внимание название нашего нпс должно быть везде одинаково тоесть в character_desc_escape написано new_npc значит и здесь пиши так
если в одном файле напишите new_npc а вдругом вообще moy_npc допустим то будет вылит с предположительно такой ошибкой new_npc no found id это означает что наш нпс ненайден тоесть неправильно мы его гдето в каком то файле описали
$spawn = "respawn\new_npc"
character_profile = new_npc -- его профиль пишим такой же какой и писали в npc_profile.xml тоесть new_npc
spec_rank = novice --ранк тоесть новичек здесь пожалуй ничего нетрогаем
community = stalker --- групировка в каторой состоит наш нпс можно вписать другую название группировок можно посмотреть в файле config/creaturs/game_relations.ltx
custom_data = scripts\new_npc.ltx-- это строка нужна для того что бы дать нашему новому нпс логику вобщем общий вид такой должен быть

;--------Escape--------------
;--------neutrals-------------
[new_npc]:stalker
$spawn = "respawn\new_npc"
character_profile = new_npc
spec_rank = regular
community = stalker
custom_data = scripts\new_npc.ltx

[esc_stalker_respawn_1]:stalker
$spawn = "respawn\esc_stalker_respawn_1"
character_profile = sim_stalker_novice
spec_rank = novice
community = stalker

[esc_stalker_respawn_2]:stalker
$spawn = "respawn\esc_stalker_respawn_2"
character_profile = sim_stalker_general
spec_rank = regular
community = stalker

шаг 4 дадим нашему нпс имя идем в папку config/text/rus/stable_bio_name

открыли и видим

<string id="aes_Monolit_master_bio">
<text>Хранитель группировки "Монолит". Лучше держаться от него подальше. Детальная информация отсутствует.</text>
</string>
<string id="aes_Monolit_rpg_bio">
<text>Сталкер группировки "Монолит". Детальная информация отсутствует.</text>
</string>
<string id="aes_Monolit_sniper_bio">
<text>Сталкер группировки "Монолит". Детальная информация отсутствует.</text> ну итд там много давайте впишим нашего нпс в самый конец

вотак

</string>
<string id="new_npc">--его айди
<text>Штырь</text> -- его имя
</string> -- внимание будьте внимальны смотрите что бы </string> два раза в подряд неповтарались иначе будет вылет

шаг 5 сам спавн нпс нам нужны кординаты а как их получить незнаем давайте сходим вот сюда gamedata/scripts/ui_main_menu

и в самый конец файла напишим такой текст

function main_menu:OnButton_credits_clicked()
local text
local vid
local gvid
local a = vector()
local text
a = db.actor:position()
vid = db.actor:level_vertex_id()
gvid = db.actor:game_vertex_id()
text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid
news_manager.send_tip(db.actor, text, nil, nil, 3000)
end

вы спросите а зачем вы это написали это конструкция поможет нам снять кординаты теперь заходим в игру идем в любое место допустим в лагере новичков в любой дом заходим выходим в глав меню жмем создатели услышим щелчек возврат в игру и видим в низу экрана координаты которые нам и нужны все сними скриншот можно этот текст который мы написали в ui_main_menu удалить

кординаты выглядят так

x=цифирки
y=цифирки
z=цифирки
level_vertex=цифирки
game_vertex_id=цифирки

так кординаты есть ну нету скрипта создадим его в папке gamedata/scripts/new_npc

function new_npc()
alife():create("new_npc",vector():set(кординаты по х,у,z),level_vertex тут пишим циферки ,циферки game_vertex)
end

так все

P.S если кто незнает как создать скрипт это легко создадим в папке gamedata/scripts/ простой текстовый документ туда в пишим наш текст тотчо я писал выше этого текста затем жмем по вкладке файл/сохранить как выбираем все файлы а название пишим new_npc.script

все скрипт готов

шаг 6 мы же недали логику нашему нпс мы же нехотим что бы он по зоне гулял

идем в папку gamedata/config/scripts/создадим файл new_npc.ltx

в файле пишим такой текст

логику я написал так

[logic]
active = remark1 -- ознчает что он стоит на одном месте
danger = danger_ignore

[danger_ignore]
ignore_distance = 5

[remark1]
no_move = true -- означет будет он стоять на одном месте здесть стоит true то есть да если поставим false то он пойдет гулять

[remark@base]
anim = hello_wpn а вот это логика когда гг бежит к нашему нпс то нпс будет его приветсвовать рукой как волк
no_move = true
target = actor
meet = meet
on_actor_dist_le = 2| remark@sit

шаг 7 мы же неактивировали нашего нпс давайте сходим сюда config/gameplay/info_portion.xml

и видим

<?xml version='1.0' encoding="windows-1251"?>

<game_information_portions>
<info_portion id="storyline_actor_start">
<task>storyline_eliminate_gunslinger</task> -- вставим по этот строкой активацию на нашего нпс вотак <action>new_npc.new_npc</action>

p.s а как активировать через диалог просто вставляем в скелет диалога после <text> тут любой текст</text>
<action>название скрипта.название функции</action> тоесть название скрипт допустим moy_npc название функции пишим то что идет после первого слова fucntion допустим там spawn или give или new_ npc а значит так <action>new_npc.new_npc</action>

ps небольшое дополнение можно также через аллспавн заспавнить нпс его можно с нуля создать или другого спавнить

унас уже создан нпс new_npc но он появится через поршень давайте сделаем что бы он появился сразу в начале игры и что бы если на него напали он вернулся обратно где стоял просто в аллспавне добавим новую секцию
в alife_ваша локация.ltx
[107]
; cse_abstract properties
section_name = stalker_monolith -- эту строку нетрогать если измените допусти moy_npc аллспавн незапакуется
name = cop_monolith_river_0005 -- а сдесь уже можно любое имя вписать
position = 272.86505126953,5.8489871025085,270.28271484375 -- кориданты где наш нпс будет стоять
direction = -8.54346671985695e-006,-0.86760002374649,-2.06313507078448e-006 -- положение модели по х,у.Z тоесть куда сталкер будет смотреть

; cse_alife_trader_abstract properties
money = 5000
character_profile = cop_monolit_sniper -- а вот его айди вписаем новый свой который мы создали new_npc

; cse_alife_object properties
game_vertex_id = 73
distance = 4.90000009536743
level_vertex_id = 466007
object_flags = 0xffffffff
custom_data = <<END
[logic]
active = camper@monolith_river4 -- логика слова monolith_river4 просто для привязки логики можно другое вписать допустим moy_npc вписавать только где видим monolith_river4 остальное нетрогать
combat_ignore = combat_ignore

[camper@monolith_river4]
path_walk = monolith_river4_walk -- точка куда идет нпс
path_look = monolith_river4_look -- точка куда смотрет все знаю сначало сталкер смотрим вточку поента а потом туда идет
meet = meet@monolith_river4
danger = danger_condition@monolith_river4

[danger_condition@monolith_river4]
ignore_distance = 0
ignore_distance_corpse = 0

[meet@monolith_river4]
use = true
use_wpn = true
meet_talk_enabled = true

[smart_terrains]
none = true - это смарт значит под гулаг неидет сам по себе будет
END

; cse_visual properties
visual_name = actors\monolit\stalker_mo_head_1 - а визуал можно даже неменять визуал будет братся из профиля new_npc

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 18
g_group = 15
health = 1
dynamic_out_restrictions =
dynamic_in_restrictions =

upd:health = 1
upd:timestamp = 0x23dd3
upd:creature_flags = 0xd4
upd:position = 272.86505126953,5.8489871025085,270.28271484375
upd:o_model = 0
upd:o_torso = -0.86760002374649,-8.54346671985695e-006,0
upd:g_team = 0
upd:g_squad = 18
upd:g_group = 15

; cse_alife_monster_abstract properties

upd:next_game_vertex_id = 65535
upd:prev_game_vertex_id = 65535
upd:distance_from_point = 0
upd:distance_to_point = 0

; cse_alife_human_abstract properties
predicate5 = 2,2,2,0,2
predicate4 = 1,0,0,0

; cse_ph_skeleton properties

upd:start_dialog =

; se_stalker properties

так ну и допишим логику в way_ваша_локация.ltx

[monolith_river4_look]
points = p0
p0:name = wp00
p0:flags = 0x1
p0:position = 272.86505126953,5.8489871025085,270.28271484375 кординаты куда пойдет нпс после атаки указывать кординаты где раньше нпс стоял если указать другие то он пойдет искать эту точку с кординаты которые вы написали и там будет стоять

p0:game_vertex_id = 73
p0:level_vertex_id = 466007

[monolith_river4_walk]
points = p0
p0:name = wp00
p0:flags = 0x1
p0:position = 272.86505126953,5.8489871025085,270.28271484375
p0:game_vertex_id = 73
p0:level_vertex_id = 466007

вот и все если что обращайтесь
Сообщение отредактировал Kail - Вторник, 09.08.2011, 13:20
  Злобная реклама
Вторник, 09.08.2011, 13:05
Статус:
Сообщений: 666
Регистрация: 10.05.2011
Российская Федерация  EnerjaiZer
Вторник, 09.08.2011, 13:05 | Сообщение # 1097
Статус:
Отмычка:
Сообщений: 116
Награды: 5
Регистрация: 07.08.2011

Character_desc_escape



Вот npc_profile


Вот spawn_sections_escape
Сообщение отредактировал EnerjaiZer - Вторник, 09.08.2011, 13:09
  Злобная реклама
Вторник, 09.08.2011, 13:05
Статус:
Сообщений: 666
Регистрация: 07.08.2011
Российская Федерация  gif
Вторник, 09.08.2011, 20:00 | Сообщение # 1098
Статус:
Новичок:
Сообщений: 397
Награды: 4
Регистрация: 31.05.2011

EnerjaiZer,

Вот это на 100% рабочий!!!
  Злобная реклама
Вторник, 09.08.2011, 20:00
Статус:
Сообщений: 666
Регистрация: 31.05.2011
Российская Федерация  EnerjaiZer
Вторник, 09.08.2011, 20:10 | Сообщение # 1099
Статус:
Отмычка:
Сообщений: 116
Награды: 5
Регистрация: 07.08.2011

Нет sad не помогло.Я если что на Кордон в сталкере Зов припяти спауню.Простых солдат и сталкеров нормально заспаунил, а уникальных не в какую.Может выложишь еще npc_profile и spawn_section етого нпс просто замучился уже.
Сообщение отредактировал EnerjaiZer - Вторник, 09.08.2011, 20:21
  Злобная реклама
Вторник, 09.08.2011, 20:10
Статус:
Сообщений: 666
Регистрация: 07.08.2011
Российская Федерация  gif
Вторник, 09.08.2011, 20:28 | Сообщение # 1100
Статус:
Новичок:
Сообщений: 397
Награды: 4
Регистрация: 31.05.2011

Ну сейчас вылужу для ТЧ npc_profile и spawn_section

И Профиль
Сообщение отредактировал gif - Вторник, 09.08.2011, 20:29
  Злобная реклама
Вторник, 09.08.2011, 20:28
Статус:
Сообщений: 666
Регистрация: 31.05.2011
Российская Федерация  EnerjaiZer
Вторник, 09.08.2011, 20:38 | Сообщение # 1101
Статус:
Отмычка:
Сообщений: 116
Награды: 5
Регистрация: 07.08.2011

Ладно спасибо тебе за то что откликнулся smile Но все равно пишет что не может найти.

[error]Expression : no_assert
[error]Function : CXML_IdToIndex<class CSpecificCharacter>::GetById
[error]File : d:\prog_repository\sources\trunk\xrserverentities\xml_str_id_loader.h
[error]Line : 112
[error]Description : item not found, id
[error]Arguments : esc_doctor
Сообщение отредактировал EnerjaiZer - Вторник, 09.08.2011, 20:38
  Злобная реклама
Вторник, 09.08.2011, 20:38
Статус:
Сообщений: 666
Регистрация: 07.08.2011
Российская Федерация  RICK
Вторник, 09.08.2011, 20:55 | Сообщение # 1102
Статус:
Опытный:
Сообщений: 1205
Награды: 4
Регистрация: 10.05.2011

;-----------------
;EnerjaiZer
;-----------------

выложи все файлы которые ты затронул сюда

;------------------
;вопрос по тч
;------------------

тут такое дело я написал схему патруль для зомбированых сталкеров, что бы они ходили от точки к точке я хочу немного усовершенствовать ,а теперь вопрос как сделать что бы мои зомбированные сталкеры начинали ходить в 12 часов ночи ,а в 5 устра они уходили в офлайн в 12 ночи опять в онлайн и ходили по точкам которые я указал такое возможно сделать?
Сообщение отредактировал Kail - Вторник, 09.08.2011, 20:57
  Злобная реклама
Вторник, 09.08.2011, 20:55
Статус:
Сообщений: 666
Регистрация: 10.05.2011
Российская Федерация  EnerjaiZer
Вторник, 09.08.2011, 21:13 | Сообщение # 1103
Статус:
Отмычка:
Сообщений: 116
Награды: 5
Регистрация: 07.08.2011

А вот они в спойлерах 4 постами выше посмотри.
Сообщение отредактировал EnerjaiZer - Вторник, 09.08.2011, 21:14
  Злобная реклама
Вторник, 09.08.2011, 21:13
Статус:
Сообщений: 666
Регистрация: 07.08.2011
Российская Федерация  RICK
Вторник, 09.08.2011, 21:17 | Сообщение # 1104
Статус:
Опытный:
Сообщений: 1205
Награды: 4
Регистрация: 10.05.2011

попробуй по моему примеру слепить нпс
  Злобная реклама
Вторник, 09.08.2011, 21:17
Статус:
Сообщений: 666
Регистрация: 10.05.2011
Российская Федерация  gif
Вторник, 09.08.2011, 21:26 | Сообщение # 1105
Статус:
Новичок:
Сообщений: 397
Награды: 4
Регистрация: 31.05.2011

Помогите пожалуйста посадить НПС, что мне надо прописать в логике что-бы НПС мой сидел?
  Злобная реклама
Вторник, 09.08.2011, 21:26
Статус:
Сообщений: 666
Регистрация: 31.05.2011
Российская Федерация  RICK
Вторник, 09.08.2011, 21:29 | Сообщение # 1106
Статус:
Опытный:
Сообщений: 1205
Награды: 4
Регистрация: 10.05.2011

вот логика сидеть но нпс будет молчать и есть глюк если он встанет то он может обратно не сесть

[logic]
active = remark1
danger = danger_ignore

[danger_ignore]
ignore_distance = 5

[remark1]
anim = sit_ass
no_move = true

[smart_terrains]
none = true
END
Сообщение отредактировал Kail - Вторник, 09.08.2011, 21:29
  Злобная реклама
Вторник, 09.08.2011, 21:29
Статус:
Сообщений: 666
Регистрация: 10.05.2011
Российская Федерация  gif
Вторник, 09.08.2011, 21:32 | Сообщение # 1107
Статус:
Новичок:
Сообщений: 397
Награды: 4
Регистрация: 31.05.2011

ну а как сделать чтобы он говорил, ведь в оригенале они сидят и говорят
Сообщение отредактировал gif - Вторник, 09.08.2011, 21:33
  Злобная реклама
Вторник, 09.08.2011, 21:32
Статус:
Сообщений: 666
Регистрация: 31.05.2011
Российская Федерация  RICK
Вторник, 09.08.2011, 21:37 | Сообщение # 1108
Статус:
Опытный:
Сообщений: 1205
Награды: 4
Регистрация: 10.05.2011

создай гулаг пиши работу для своего нпс и логику для нпс что бы он в гулаг пошол

сразу скажу я немогу гулаг написать сколько пробывал неполучается
  Злобная реклама
Вторник, 09.08.2011, 21:37
Статус:
Сообщений: 666
Регистрация: 10.05.2011
Соединенные Штаты  demover123
Вторник, 09.08.2011, 21:58 | Сообщение # 1109
Статус:
Неопытный:
Сообщений: 523
Награды: 2
Регистрация: 27.06.2011

gif,

Вот логика. НПЦ будет идти в лагерь и сидать около костра и травить байки.

[logic]
active = kamp

[kamp]
center_point = camp_center
radius = 1.5
soundgroup = esc_lager
def_state_moving = run
Сообщение отредактировал demover123 - Вторник, 09.08.2011, 21:58
  Злобная реклама
Вторник, 09.08.2011, 21:58
Статус:
Сообщений: 666
Регистрация: 27.06.2011
Российская Федерация  RICK
Вторник, 09.08.2011, 22:00 | Сообщение # 1110
Статус:
Опытный:
Сообщений: 1205
Награды: 4
Регистрация: 10.05.2011

если гулага небудет сталкер помойму непойдет в лагерь но будет гулять по локации
  Злобная реклама
Вторник, 09.08.2011, 22:00
Статус:
Сообщений: 666
Регистрация: 10.05.2011
Поиск: