Перейти к контенту

Создание нового НПС


Рекомендуемые сообщения

Люди подскажите пожайлуста я заспавнил NPC , у меня всё вышло , он появился на месте своего спауна и сразу куда то идёт либо к костру либо в угол и ложиться спать и потом встаёт и стоит возле того места где спал . Я прописал логику я уже все схемы перепробывал и remark i walker и ещё 2 схемы эффекта 0

Изменено пользователем Sense
Ссылка на комментарий
Sense, он ушел, т.к. у него нет своей точки. Если хочешь, чтобы он стоял на своем месте и не уходил, надо прописывать точки в all.spawn, а так, он будет продолжать убегать. Изменено пользователем Сэр Макс
Ссылка на комментарий

Сэр Макс, в той статье которую ты мне дал я ничего не понял , там идёться про то как сделать что бы НПС ходил с одной точки на другую ! Можешь написать эту секцию , плиз мне очень надо я уже замучился уже я так неделю убиваю время

Ссылка на комментарий

Люди помогите!!! Сделал, в точности как написано в уроке в шапке. NPC появился на месте. Но как только я делаю его торговцем происходит такой вылет:

Expression : fatal error
Function	 : CScriptEngine::lua_error
File		 : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line		 : 73
Description : <no expression>
Arguments	 : LUA error: d:\games\stalker\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)

Подскажите, что я не так сделал?

 

Ты думаешь, что все экстрасенсы и знают чего ты там понаписал!? Если вылетает, то значит всё же, что-то неправильно...

ColR_iT

 

Что я мог понастроить, если я в скрипты не лазил и делал, как написано в шапке?

 

Ещё раз - если ты получил вылет, то значит что-то сделал не так, как написано в шапке. Если занимался бездумным копи-пастом - это так же твои проблемы. Без того, что ты написал - этот пост пустая трата времени.

ColR_iT

 

 

Бездумным копи-пастом я не занимался и делал так, как написано в шапке. Потомучто если я закоментирую строку trade = misc\trade_monohrom.ltx то NPC спавнится без проблем. Может есть другие способы сделать NPC торговцем?

Изменено пользователем mihal239
Ссылка на комментарий

Приветствую, сталкеры!

У меня вопрос по поводу гулагов.

Создал гулаг для 3 одиночек и одного уникального НПС, но они не включаются в работу, а расходятся.

Кто знает в чм моя ощибка?

 

Ты, наверное, что-то неправильно сделал.

"Кэп"

 

Вот мой гулаг:

 

Скрипты:

В xr_gulag.script напсал новый файл:

level_gulags = {gulag_general, gulag_escape, gulag_garbage, gulag_agroprom, gulag_agroprom_underground, gulag_dark_valley, gulag_labx18, gulag_bar, gulag_military, gulag_radar, gulag_radar_u, gulag_yantar, gulag_pripyat, gulag_kishka, gulag_sarcofag, gulag_deadcity, gulag_new}

gulag_new.script:

local t = {}

function load_job(sj, gname, type, squad, groups)

if type == "mrh_derevnya_lager" then

t = { section = "logic@mrh_sansan",

idle = 0,

prior = 100, state = {0,2},

position_threshold = 100,

online = true,

in_rest = "", out_rest = "",

predicate = function(obj_info)

return obj_info.name == "mrh_sansan"

end

}

table.insert(sj, t)

t = { section = "logic@mrh_stalker_lager_walker1",

idle = 0,

prior = 5, state = {0},

online = true,

in_rest = "", out_rest = ""

}

table.insert(sj, t)

t = { section = "logic@mrh_stalker_lager_walker2",

idle = 0,

prior = 5, state = {0},

online = true,

in_rest = "", out_rest = ""

}

table.insert(sj, t)

t = { section = "logic@mrh_stalker_lager_kamp",

idle = 0,

prior = 5, state = {0},

online = true,

in_rest = "", out_rest = ""

}

table.insert(sj, t)

end

end

function load_states(gname, type)

if type == "mrh_derevnya_lager" then

return function(gulag)

return 0

end

end

function load_ltx(gname, type)

return nil

end

function checkStalker(npc_community, gulag_type, npc_rank, se_obj)

if gulag_type == "mrh_derevnya_lager" then

return npc_community == "stalker"

end

return false

end

function checkMonster(npc_community, gulag_type)

return false

end

В gulag_tasks.ltx:

#include "gulag_new.ltx"

gulag_new.ltx:

;**************************************************

;*************** Болота *******************

;**************************************************

;Сан Саныч

[logic@mrh_sansan]

active = walker@sansan

combat_ignore = combat_ignore@sansan

meet = meet@mrh_stalker_lager

[walker@sansan]

path_walk = mrh_sapsan_walk

path_look = mrh_sapsan_look

meet = meet@mrh_stalker_lager

on_signal = move_end | remark@sansan

danger = danger_condition@sansan

[remark@sansan]

anim = guard

target = actor

meet = meet@mrh_stalker_lager

no_move = true

[combat_ignore@sansan]

ignore_distance = 0

 

; охрана лагеря

[logic@mrh_stalker_lager_walker1]

active = walker@mrh_stalker_guard1

[walker@mrh_stalker_guard1]

path_walk = mrh_stalker_guard_walk

path_look = mrh_stalker_guard_look

meet = meet@mrh_stalker_lager

 

; сидящие у костра

[logic@mrh_stalker_lager_kamp]

active = kamp@mrh_stalker_lager

[kamp@mrh_stalker_lager]

center_point = mrh_stalker_camp_center

soundgroup = esc_lager

meet = meet@mrh_stalker_lager

 

; патуль лагеря

[logic@mrh_stalker_lager_walker2]

active = walker@mrh_stalker_walker2

[walker@mrh_stalker_walker2]

path_walk = mrh_stalker_walker_walk

meet = meet@mrh_stalker_lager

[meet@mrh_stalker_lager]

meet_state = 10| wait@talk_hello

meet_state_wpn = 10| threat@threat_weap

victim = 10| actor

victim_wpn = 10| actor

use = true

use_wpn = true

В АLL.spawn:

[10327]

; cse_abstract properties

section_name = smart_terrain

name = mrh_derevnya_lager

position = -49.742325,-10.038876,-64.088760 ;здесь координаты смарта

direction = 0.975047,0.000000,-0.221997

; cse_alife_object properties

game_vertex_id = 77

distance = 4.19999980926514

level_vertex_id = 229856

object_flags = 0xffffffbe

custom_data = <<END

[smart_terrain]

type = mrh_derevnya_lager

capacity = 4

squad = 1

groups = 3

END

; cse_shape properties

shapes = shape0

shape0:type = sphere

shape0:offset = 0,0,0

shape0:radius = 2.0

; cse_alife_space_restrictor properties

restrictor_type = 3

; se_smart_terrain properties

У салкеров:

custom_data = <<END

[smart_terrains]

mrh_derevnya_lager = true

END

g_squad = 1

g_group = 3

upd:g_squad = 1

upd:g_group = 3

 

 

Не нужно раскидывать свои толмуты на пол страницы. Для кодов в большом количестве есть специальные теги, используй их... пожалуйста.

ColR_iT

 

Извиняюсь не заметел. Так что посоветуеш?

Изменено пользователем ColR_iT
Ссылка на комментарий

Я вот не пойму 1 как у вас движок xr_3da.exe выдает код ошибки? Если какой то новый движок есть ссылку кинте

 

Тебе, кроме как постить один и тот же пост в разные темы, заняться не чем?

За оффтоп (не в одной теме) и повторные сообщения - сутки чтения.

ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий

Ну так кто поможет с гулагами?

Научите.

 

Вот от сюда: >>ClicK Me<< и ниже по тексту.

ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий

Script, подскажите пожалуйста, в чем моя проблема? Я сделал всё абсолютно точно как вы. Все несколько раз перепроверил, а начинаю новую игру, и npc не появляется.

Ссылка на комментарий

Люди подскажите пожайлуста я заспавнил NPC , у меня всё вышло , он появился на месте своего спауна и сразу куда то идёт либо к костру либо в угол и ложиться спать и потом встаёт и стоит возле того места где спал .

Это потому, что он входит в гулаг, где имеется свободная работа. Пропишите в секции логики в самом начале:

 

[smart_terrains]
none = true

Изменено пользователем Sany@Prizrak
Ссылка на комментарий

Доброго времени суток!
 
Создал своего НПС по инструкции  через скрипт, долго и внимательно сверял все папки и файлы и всё, что в них было мною прописано.
 
Игра запустилась: НПС появился там, где обычно сталкер по прозвищу Толик отдыхает после ранения. Решил импровизировать: менял группировку, ранг, иконки, костюмы и выдавал разное оружие НПС - все запускалось без вылетов. Наконец, написал диалог с этим НПС. Все работает.
 
Одно но. С помощью известной программы снимаю  координаты для НПС, прописываю их в scripts. Непись спавнится (что видно по мини-карте) в том самом месте, где я хочу но, блин, бежит к  точке, где должен будет отдыхать Толик, т.е.  туда, где первоначально был прописан в примере.
 
Кто-нибудь может объяснить причину? Пробовал remark и walker. НПС упорно бежит к своей точке-пристегу. На моей стоять не хочет. Заранее спасибо!

На будущее - экстрасенсов на форуме нет и угадывать то, что ты понаписал никто не будет. Либо показывай код (под спойлером и с соответствующим тегом), либо помощи можешь не ждать.
ColR_iT


Кодов нет, уважаемые экстрасенсы. Все работает. Внимательней читайте: НПС  не хочет стоять в той точке, которую я ему прописал в scripts. Он спавнится в ней, но прибегает в другую, в ту самую, которая прописана изначально в вашем примере. Как быть?

 

А с чего ты решил, что он там вообще будет стоять? И если ты используешь скрипт для спавна, то значит код есть....

ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий

Waryag- Во первых тебе дали понять если ты хочешь, чтоб тебе помогли выложи коды и скрипты. Если нет то тогда гугли в инете полно инфы, и вопрос, а ты случаем скрипт не с Толика копировал?

Алспавн вскрывал? Если нет то вскрывай и прописывай ему свою работу, тогда будет все норм.

И прислушайся, к словам модератора (полезно) он мне в свое время очень помог.



Для проверки правильности написания скрипта есть утилитка " скрипт синтакс чекер"

http://yadi.sk/d/F4VFq138404VX

Может кому пригодится.

Изменено пользователем smeh
smeh..gif
Ссылка на комментарий

smeh

видимо, кто этот пример слил, копировал скорее всего с Толика, у меня тоже такая мысль была.

 

Я делал не через allspawn, увы.


Проверил через программку, спасибо, показал ОК.

 

А нам ты коды не хочешь показать?

ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий

Разобрался. Удалил и сделал заново через all.spawn. Отыскал декомпилятор и все. :)  Извиняюсь, сущая ерунда оказалась. Вот теперь интересно было бы диалог прописать ему, причем такой, где НПС начинал бы разговор. 
 
ColR_iT,  извини за беспокойство, персонально спасибо!
 
Не за что.
Про "начинал" разговор - читай схему meet: >>ClicK Me<<
ColR_iT

 

Написано доступно. Получилось. Возникла идея сделать из него еще и торговца. Вроде работает, однако оружия в инвентаре у НПС нема, исчезает куда-то. Мочишь его, обыскиваешь, а он пустой. :D

 

Во-первых, прочти правила, в особенности правила цитирования.

Во-вторых, читай статьи на Wiki - там давно всё описано.

ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий

Прошу прощения у модераторов за то, что нужно было-бы проигнорить пость, чтоб человек понял правильность сообщений и поправок, но отвечу.

Waryag- почитай про диалоги внимательно и посмотри как тебе советует модератор, там ни чего сложного нет. Посмотри диалоги Сидора для примера ( он первый всегда начинает диалог ) и ты разберешься с какого тега нужно начинать.



На будущее заведи себе переводчик и почитай про вылеты и логи вылетов, чтоб понимать о чем говорится в случае вылета. 

smeh..gif
Ссылка на комментарий

smeh

Во-первых, все примеры по всему интернету слизаны друг у друга. Принципиально нового ничего нет. Как сделать квест с выдачей ПМ - это мы все делали. Как вот создать последовательность диалогов, где каждый диалог начинал бы НПС, да еще диалог, зависящий от определенных условий. Задачка еще та. Может показаться смешно, но массивы с "некормлеными зелеными человечками у Сидоровича" - это просто тупая калька.

Во-вторых, в инете я облазил все посты - с одной только целью: узнать, как сделать так, чтобы у полноценно созданного НПС-торговца спавнилось оружие, а не вылетало у него из карманов и то чем он торгует, и то, чем стреляет. Увы, нигде нет. Везде один "Петрович" да "Ворон" на основе бедняги-Волка.

 

Понимаю, что, может, написано где-то некорректно, но здесь, думаю, есть модеры, занимающиеся этим на проф.уровне.

 

"Задачка ещё та" для тех, кто банально лениться сделать сам. На Wiki есть статьи в которых описаны принципы построения диалогов, от самых простых, до самых сложных. Прочитай и попробуй сделать. А вот когда не получится - тогда и задавай вопросы.

ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий
Expression    : m_pItemDataVector->end() == t_it

Function      : CXML_IdToIndex<class CCharacterInfo>::InitInternal

File          : e:\stalker\patch_1_0004\xr_3da\xrgame\xml_str_id_loader.h

Line          : 184

Description   : duplicate item id

Arguments     : cit_vp

 

 

При создание нового НПС придерается к этому.

в чем проблема?
Ссылка на комментарий

После убийства созданного мною нпс вылет с кодом:

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...a.l.k.e.r. Òåíè ×åðíîáûëÿ\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)

Спасайте!

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...