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

Создание NPC "привязанного к точке" без редактирования all.spawn


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

Диологи кому именно ? :rolleyes:

У сидора они и так прописанны

Сидор отказывается говорить именно с ГГ Почему ?

 

По поводу торговцев если кто не знает то Сидор монстр

И вот цитата Singapur22 http://www.gsc-game.ru/index.php?t=communi...amp;offset=-240

 

 

Обсалютно просто. В принципе ничем не отличается от спавна нпс.

Есть лишь не большие отличия.

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

В логике добавляется функция:

trade = misc\trade_new_trader.ltx

 

Где имя файла может быть любым, в котором прописываются предметы для торговли. И всё.

 

Я ваще не понимаю. В чём вы нашли проблему, что пришлось создавать пост на данную тему? Торговцем можно сделать любого сталкера, и не только сталкера, но и работу под гулагом. Достаточно создать файл с предметами для торговли и прописать в логике любого непися или работы гулага функцию "trade" с сылкой на данный файл.

 

 

Вот еще до кучи цитата Singapur22 http://www.gsc-game.ru/index.php?t=communi...amp;offset=-240

 

Нашёл, из за чего нпс не торгуют оружием, а торговцы торгуют. Протестировал на Бармене. Установив в all.spawn имя секции stalker вместо m_barmen он стал как и нпс выбрасывать лишнее оружие, и имеющееся не продаёт. Будем искать настройку в конфигах.

 

Вот и настроичка нашлась

 

В файле m_stalker, строки:

 

 

use_single_item_rule = off

can_select_items = off

 

 

 

Где, первая -чтоб не выбрасывал. вторая -чтоб торговал.

 

 

 

Модераторы не могу понять почему полные сылки на посты нормально не вставляются

две вышеприведенные сылки должны были указывать на конкретные страницы форума

вместо этого по ним попадаеш на главную страницу (сылки обрезаются) ?

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

Создал снайпера на АТП и хочу убить Шустрова им, но со 100% гарантией. Потскажите мне как это сделать, дайте скрипт или что-нибудь в этом роде, я думал логикой снайпера это сделать, но не нашёл ни одного пораметра убийства непеся непесем по логике. Желательно убить Шустрова не находясь возле него. Может его как-нибуть привезать к Шустрову на подобии тех наёмников, которые хотят убить Крота, но не знаю что именно работает при этом!

Вот обзор снайпера:

x_d855df3b.jpg

 

Крыша.

Изменено пользователем Halford
Ссылка на комментарий
Greh921, ну может в логике поставить camper, а target = story_id (последнее - стори айди Шустрого)
Ссылка на комментарий

Такой вопрос:

игра тч 1.0006 чистая

пытаюсь заспавнить нпц на кордоне на втором этаже здания которое рядом с местом спавна лиса, а он появляется всегда под тем местом где должен. Я и через алл.спавн и через скрипт пытался - результат один и тот же. Однако гг там спавнится без проблем.

Чё делать? Подскажите плиз... :russian_ru:


Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу.

 

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

У меня таже проблема, думаю проблема в досках, которые не запрограммированы на удержание нпс и тупо пропускают сквозь себя. А насчет снайпера Pihan 13 я побробую, но после днюхи, да и отдохнуть от работы.

 

Я спавнил под точкой спавна динамический объект (плакат 3х4 из архивов игры) под точкой спавна нпц (а по моему через динамику персы не проходят). И он всё равно появляется на первом этаже.

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

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

Например:

Откроем фаил character_****.xml - а такого нет файла!

Сообщение от модератора Halford
О как запущено... Звездочки - любое имя.... Там много таких файлов.
<specific_character id="название_секции" team_default = "1"> - и как она должна называться? по английски по русски?

Сообщение от модератора Halford
А примеры в файлах глянуть?!
<rank>цифры от 0 до 900</rank>

<reputation>цифры от 0 до 1000</reputation> и какие цифры ставитьи что они значат? и т. д.

Сообщение от модератора Halford
Разве это не интуитивно понятно? Даже без знания английского...

да если бы я это знал зачем бы читал а?

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

Вот что мне не нравится,что каждый критиковать может,но не каждый делать. Для примера.

characters_**** -это не файл такой,просто вот эти самые точечки,это слово. Название локи.

specific_character id="название_секции" team_default = "1"> --- Скорее всего по английски,вместо пробелов "_".

Цифры любые,от 0 до 900 (1000),уж здесь то что непонятно. А значат они,и не надо быть гением в английском,чтоб понять,ранг и репутацию непися.

Изменено пользователем Guzerus
Мой ник читается гузерус.
Ссылка на комментарий

Хотел создать снайпера в деревне новичков на кордоне,на 4-ом патче игра чистая,но когда запускаю игру,она долго грузится ,

а когда захожу снайпера нет,помогите,в чём я ошибся?

 

 

 

1.Работа с файлом character_desc_escape

<!---------------------------------------esc_Vitya----------------------------------------------------->

<specific_character id="esc_Vitya" team_default = "1">

<name>esc_Vitya_neme</name>

<icon>ui_npc_u_stalker_neytral_balon_1</icon>

<map_icon x="1" y="0"></map_icon>

<bio>Опытный сталкер. Детальная информация отсутствует.</bio>

 

<class>esc_Vitya</class>

<community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>

<snd_config>characters_voice\human_01\stalker\</snd_config>

 

<rank>545</rank>

<reputation>53</reputation>

 

<visual>actors\neytral\stalker_neytral_balon_1</visual>

<supplies>

[spawn] \n

wpn_svd \n

ammo_7.62x54_7h1 = 5 \n

</supplies>

#include "gameplay\character_criticals_4.xml"

</specific_character>

 

2. работа с файлом npc_profile

 

<!-- Escape -->

 

<character id="esc_Vitya">

<class>esc_Vitya</class>

<specific_character>esc_Vitya</specific_character>

 

3 работа с файлом spawn_section

 

;--------Escape--------------

;--------neutrals------------

[esc_Vitya_respawn]:stalker

$spawn = "respawn\esc_Vitya_respawn"

character_profile = esc_Vitya

spec_rank = regular

community = stalker

</character>

 

4 работа с файлом xr_conditions.script

 

--

function is_Vitya_enemy(enemy, object)

return enemy:id() ~= db.actor:id()

end

 

5,5.1,5.2 всё сделал

 

5.3 работа с Vitya_add.script

 

spawn_Vitya()

end

 

function esc_Vitya()--\\spawn_esc_Vitya()

local x= -215.986328125

local y= -15.848692893982

local z= -133.29975891113

local level_vertex= 33476

local game_vertex_id= 63

alife():create("esc_Vitya_respawn",vector():set(x,y,z),level_vertex,game_vertex_id)

end

 

function save_variable(variable_name, value)

xr_logic.pstor_store(db.actor, variable_name, value)

end

function load_variable(variable_name, value_if_not_found)

return xr_logic.pstor_retrieve(db.actor, variable_name, value_if_not_found)

end

 

5.4 рабоат с bind_stalker.script

 

if Vitya_add.load_variable("spawn_Vitya",false)==false then

Vitya_add.Vitya_add_spawn()

Vitya_add.save_variable("spawn_Vitya",true)

end

 

6 работа с папкой Vitya_addon

 

6.1 Vitya_addon_enemy_logic.ltx ,Vitya_addon_friend_logic.ltx

 

6.2

 

Vitya_addon_enemy_logic.ltx

 

[logic]

active = walker

combat_ignore = combat_ignore

trade = misc\Vitya\vitya.ltx

 

[remark]

anim = ward

combat_ignore_cond = always

danger_ignore = danger_ignore

 

[combat_ignore]

 

[danger_ignore]

ignore_distance = 0

 

[walker]

path_walk = walk

path_look = look

 

Vitya_addon_friend_logic.ltx

 

[logic]

active = remark

combat_ignore = combat_ignore

trade = misc\Vitya\Vitya.ltx

 

[remark]

anim = ward

combat_ignore_cond = always

danger_ignore = danger_ignore

 

[combat_ignore]

 

[danger_ignore]

ignore_distance = 0

 

 

 

 

 

В чём тут проблема? Скажите пожалуста

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

Ребята, а подскажите, как сделать враждебного NPC, который стоит на месте при любых условиях? А то замечает меня и сразу сматывается. Цель: нужна неподвижная мишень для опытов =)

 

Ниже текущий код логики (сталкер - наёмник, враждебен):

;SNIPER ADDON
;Меченый(Стрелок)
[logic]
active = remark@search

[remark@fire]
combat_ignore_cond = always
danger_ignore = danger_ignore
radius = 0
anim = ward
wounded = wounded@work
sniper = true

[smart_terrains]
none = true

[remark@search]
combat_ignore_cond = always
combat_ignore_keep_when_attacked = true
danger_ignore = danger_ignore
anim = ward
target = actor
wounded = wounded@work

[wounded@work]
hp_state = 0|wounded_heavy@help_heavy
hp_state_see = 0|wounded_heavy@help_heavy
hp_victim = 0|nil
hp_fight = 0|false
hp_cover = 0|false

 

P.S. Оружие и броню я этому чудику не "выдал". Нужна просто неподвижная мишень.

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

Bogdanio91

В bind_stalker, под строкой object_binder.update(self, delta) функции actor_binder:update(delta) пропиши:

Vitya_add.esc_Vitya()

Кстати, зачем так много строк кода спавна?

alife():create("esc_Vitya_respawn",vector():set(-215.986, -15.848, -133.299), 33476, 63)

Удобнее, согласись.

 

И ещё, куда в бинд_сталкере ты вписывал проверку?:

if Vitya_add.load_variable("spawn_Vitya",false)==false then
Vitya_add.Vitya_add_spawn()
Vitya_add.save_variable("spawn_Vitya",true)
end

 

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

Darien,спасибо большое конечно,я вписал, но снайпер всёравно не появился :( но игра стала нормально грузится

 

Насчёт строк кода,я если чесно незнал что так можно

А в Бинд_сталкере проверку вписал в самый конец вот этого раздела object_binder.update(self, delta) функции actor_binder:update(delta) Перед последни andом

Остальное то хоть правельно прописал? в чём ещё может быть причина?

уже вторые сутки не без передышки сижу мучаюсь :shok: не как не получается, научится уш очень надо и хочется :dash2:

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

Bogdanio91

в bind_stalker.script вместо

Vitya_add.Vitya_add_spawn()

поставь

Vitya_add.esc_Vitya()

 

У тебя же там стоит вызов функции Vitya_add_spawn. А функция спавна у тебя называется esc_Vitya. По этому и не спавнится, наверное. (функцию Vitya_add_spawn я у тебя вообще ну вижу...)

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

При создании нового непися вылет:

 

FATAL ERROR

 

[error]Expression : !m_error_code

[error]Function : raii_guard::~raii_guard

[error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp

[error]Line : 748

[error]Description : ....e.r. - Зов Припяти\gamedata\scripts\xr_logic.script:939: bad argument #1 to 'gfind' (string expected, got nil)

 

 

stack trace:

 

Чтос этим делать?

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

Po-meceniy,

Чтос этим делать?

для начала:Привести 939 строку скрипта xr_logic :)

потом: узнать как туда(string.gfind) попало вместо "строки" - пустая переменная :)... Да, в ЗП "логика" немного другая :)...Сори , привести не могу..ЗП удалил,а диск будет только числа 2-3

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

В xr_logic нашёл только три функции в которых есть gfind из-за которого происходит вылет

function parse_infop1(rslt, str)

--printf("_bp: parse_infop: %s", utils.to_str(str))

if str then

local infop_name, sign

local infop_n = 1

for s in string.gfind(str, "%s*([%-%+%~%=%!][^%-%+%~%=%!%s]+)%s*") do

--printf("_bp: parse_infop: s=%s", utils.to_str(s))

sign = string.sub(s, 1, 1)

infop_name = string.sub(s, 2)

if sign == "+" then

rslt[infop_n] = { name = infop_name, required = true }

elseif sign == "-" then

rslt[infop_n] = { name = infop_name, required = false }

elseif sign == "~" then

rslt[infop_n] = { prob = tonumber(infop_name) }

elseif sign == "=" then

rslt[infop_n] = { func = infop_name, expected = true }

elseif sign == "!" then

rslt[infop_n] = { func = infop_name, expected = false }

else

abort_syntax_error_in_cond(npc, section, field)

end

infop_n = infop_n + 1

end

end

end

 

function parse_func_params(str)

local lst = {}

local n

for par in string.gfind(str, "%s*([^:]+)%s*") do

n = tonumber(par)

if n then table.insert(lst, n)

else table.insert(lst, par) end

end

return lst

end

 

function parse_infop(rslt, str)

--printf("_bp: parse_infop1: %s", utils.to_str(str))

if str then

local infop_name, sign

local infop_n = 1

local at, params

for s in string.gfind(str, "%s*([%-%+%~%=%!][^%-%+%~%=%!%s]+)%s*") do

--printf("_bp: parse_infop: s=%s", utils.to_str(s))

sign = string.sub(s, 1, 1)

infop_name = string.sub(s, 2)

params = nil

 

-- парсим параметры функций

at = string.find(infop_name, "%(")

if at then

if string.sub(infop_name, -1) ~= ")" then

abort("wrong condlist %s", str)

end

if at < string.len(infop_name) - 1 then

params = parse_func_params(string.sub(infop_name, at + 1, -2))

else

params = {}

end

infop_name = string.sub(infop_name, 1, at - 1)

end

 

if sign == "+" then

rslt[infop_n] = { name = infop_name, required = true }

elseif sign == "-" then

rslt[infop_n] = { name = infop_name, required = false }

elseif sign == "~" then

rslt[infop_n] = { prob = tonumber(infop_name) }

elseif sign == "=" then

--printf("_bp: n = %s; r = %s", infop_name, utils.to_str(params))

rslt[infop_n] = { func = infop_name, expected = true, params = params }

elseif sign == "!" then

--printf("_bp: n = %s; r = %s", infop_name, utils.to_str(params))

rslt[infop_n] = { func = infop_name, expected = false, params = params }

else

abort_syntax_error_in_cond(npc, section, field)

end

infop_n = infop_n + 1

end

end

end

 

EuShikari.png
Ссылка на комментарий
EvilMax, проблема в том, что непись у тебя находится в онлайне с уже готовой логикой, а ты даешь ему другую. Переведи его в оффлайн и убери флаг sniper = true.
Цензура ограничивает творчество © by me
Ссылка на комментарий

СПС теперь я смогу сделать повелитель зоны и спавнить квестовых неписей!!!!!!!! :beach: :ny_z_7:

Строгое предупреждение от модератора n6260
А я могу вас наказать за нарушение правил форума!!! :good2::beach:
Ссылка на комментарий

Здравствуйте,а вот такая логика пойдёт новому торговцу?:

[smart_terrains]
none = true
[dont_spawn_loot]
[logic]
trade = misc\ross_trader.ltx
trader_flags = 0
inv_max_weight = 10000
active = remark
walker = walker
combat_ignore = combat_ignore

[combat_ignore]
[remark]
anim = wait
combat_ignore_cond = always

[walker]
path_walk = trader_walk 
path_look = trader_look
meet = meet

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

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

Сделал все по мануалу. NPC появился, все вроде бы отлично... Правда есть одно НО: он меня отправляет к "главному". Как это лечить? Он меня посылает даже если он вообще один на всей локации. :(

P.S. Спавнил в ЗП

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

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

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

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

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

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

Войти

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

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

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