Fantom2323, не совсем ясны общие намерения, но и на этом могу сказать, что несколько "неадекватная" функция у тебя получается. Очень много неясностей.
Основную твою задачу я понял: у тебя есть определённые НПС, на которых не должны распространятся действ
Те мнения, которые пишутся с ошибками, не воспринимаются как умные…
Лучше иной раз тупить, но умным быть, чем постоянно умничать, но быть тупым.
Все, кто еще говорит «ИХНИЙ», будут гореть в аду!
ColR_iT
Объясню. Имею функцию которая добавляет звуковое приветствие при разговоре с НПС. Она распространена для всех, абсолю**50056c9725ff35736f77**c == "experienced" and exceptions ~= "esc_wolf" then
meet_phrases_stalkers_voise_2()
talking = true[/code]
Новый проект в разработке, ищи в моём журнале.
В теории - всё легко, а вот на деле - гораздо сложнее.
Fantom2323, с получением профиля в игре не всё так просто. Дело в том, что для симуляционных НПС получить имя профиля из файла character_desc_*****.xml нельзя, только для уникальных НПС, аля Волк, Фанат, Серый, Сахаров и т.д. Почему это так можешь почитать вот здесь: >>Click Me<<
Те мнения, которые пишутся с ошибками, не воспринимаются как умные…
Лучше иной раз тупить, но умным быть, чем постоянно умничать, но быть тупым.
Все, кто еще говорит «ИХНИЙ», будут гореть в аду!
В этом не вижу надобности. При таком подходе save/load потребует записывать полученные данные, что не всегда, а порою чаще всего, лишне.
Те мнения, которые пишутся с ошибками, не воспринимаются как умные…
Лучше иной раз тупить, но умным быть, чем постоянно умничать, но быть тупым.
Все, кто еще говорит «ИХНИЙ», будут гореть в аду!
ColR_iT ну в таком случае, я вижу только один оптимальный вариант - это спавнить сталкера назначая ему сид через пакет, ибо запоминать/загружать айди действительно здесь крайне не рационально(хотя я у себя завел хранилище нужных айдишек на крайний случай(на кучку заспавненных скриптом сталкеров метки поставить/удалить например и т.п.)), ну а собственные профили...дело 'вкуса' и времени.
Задолбали меня собаки... ну не хотят они подчиняться конфигам!
Выложите кто нить m_dog.ltx, в котором собаки настроены так, что бы сдыхали от двух/трёх пуль.
Пожалуйста.
Arist, не нужно предлагать, не правильно составленную логику новичку, в дал
Те мнения, которые пишутся с ошибками, не воспринимаются как умные…
Лучше иной раз тупить, но умным быть, чем постоянно умничать, но быть тупым.
Все, кто еще говорит «ИХНИЙ», будут гореть в аду!
Если подходить близко к некоторым аномалиям (например, к трамплину), то экран начинает светлеть. Как от этого избавиться, может в конфиге какая-то строка?
Конечно! Параметры которые есть в этой схеме. Дело в том, что в се**50016c9725ff35736f77**alker_look
;--------------------------------
new_path = new_walker_walk
target = actor
no_move = true
kakaya_to_labuda = 10[/code]НЕ ВЫЗОВЕТ ВЫЛЕТА!!!
Просто параметры, которых нет в схеме, не будут считываться и не важно написаны они там или нет. Они будут игнорироваться!
Так что твоя схема:[code][remark]
no_move = true[/code]Равносильна такой:[code][remark][/code]Это одно и тоже. И про какой вылет ты говоришь, тоже не совсем ясно. Если не указать параметры в схеме (не во всех схемах это можно сделать), то будут взяты значения по умолчанию, как правило прописаны они в управляющем файле схемы.
Не накосячил ли я?
Лично я критичного ничего не вижу. Если есть ошибка, то разве что в точках путей...
Это логика моих турелей.
Никогда не имел с ними дело.
Те мнения, которые пишутся с ошибками, не воспринимаются как умные…
Лучше иной раз тупить, но умным быть, чем постоянно умничать, но быть тупым.
Все, кто еще говорит «ИХНИЙ», будут гореть в аду!
Ещё один вопрос возник:
Заспавнил 3 квестовых нпс единой функцией, всё, везде прописал, НО! при проверке в игре, выяснилось что 1 из 3 заспавненых ведёт себя неадеква**50016c9725ff35736f77**r_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ... Тень Чернобыля\gamedata\scripts\xr_motivator.script:215: attempt to index field 'object' (a nil value)[/code]
В скриптах ничего не трогал. В чём может быть проблема?
отредактировал(а) Fantom2323: 22-09-2012 12:33 GMT3 час. Новый проект в разработке, ищи в моём журнале.
В теории - всё легко, а вот на деле - гораздо сложнее.
AristFantom2323
Ремарковая логика служит переходной от одной схемы к другой, не следует ее использовать как основную на всю игру, лучше пользоваться валкером, тогда и НПС будет на место возвращаться, а ремарк активировать только на время диалога с гг, например так:
[smart_terrains] означает что непись не будет браться под смарт...
none = true
[logic]
active = walker@idle активная логика (схема)
trade = misc\trade_brigade_barman.ltx (означает что НПС назначается торговцем)
[walker@idle]
path_walk = твое название в way... all.spawn путь где ходит или стоит
path_look = твое название в way...all.spawn путь куда смотрит
on_actor_dist_le_nvis = 10 | remark@idle ГГ приблизится на расстояние 10 метров и НПС перейдет в ремарк
[remark@idle]
anim = wait_trade анимация непися
no_move = true не работает зачем писать...
meet = meet возможность диалога
combat_ignore = combat_ignore игнорирование боя если нужно
danger = danger_condition отношение к опасности нпс
on_actor_dist_ge_nvis = 10 | walker@idle ГГ отойдет от непися на расстояние 10 метров и тот станет опять валкером, цифры произвольные, можно и 5 поставить к примеру...
[danger_condition]
ignore_distance = 0 расстояние свыше которого игнорируется "живая" опасность (150 метров по умолчанию).
[combat_ignore]
ignore_distance = 0 к чему это так и не понял у тебя написано???
В качестве одного из множества примеров, можно использовать и другие варианты перехода из схемы в схему согласно скрипта logic:
on_actor_dist_le = |<название_схемы> - если дистанция в метрах до игрока меньше либо равно number.
on_actor_dist_le_nvis = |<название_схемы> - если дистанция в метрах до игрока меньше либо равно number без проверки на видимость.
on_actor_dist_ge = |<название_схемы> - если дистанция в метрах до игрока больше number.
on_actor_dist_ge_nvis = |<название_схемы> - если дистанция в метрах до игрока больше number без проверки на видимость.
on_signal = <имя_сигнала>|<название_схемы> - срабатывает по приходу сигнала имя_сигнала от текущей активной схемы.
on_info = <название_схемы> - срабатывает всегда.
on_timer = |<название_схемы> - срабатывает через number миллисекунд после включения схемы.
on_game_timer = |<название_схемы> – срабатывает через number секунд игрового времени, после включения схемы.
on_actor_in_zone = <имя_зоны>|<название_схемы> – если актер в находится в указанной зоне (указывается имя рестриктора).
on_actor_not_in_zone = <имя_зоны>|<название_схемы> – если актер не в указанной зоне (указывается имя рестриктора).
on_npc_in_zone = |<имя_зоны>|<название_схемы> – если NPC со story_id равному number, в указанной зоне.
on_npc_not_in_zone = |<имя_зоны>|<название_схемы> - если NPC со story_id равному number, не в указанной зоне.
on_actor_inside = <название_схемы> - зона проверяет, находится ли игрок внутри нее (используется со space_restrictor).
on_actor_outside = <название_схемы> - зона проверяет, находится ли игрок за ее пределами (используется со space_restrictor).
Секция [combat_ignore] - Если для NPC установлена данная секция то он, не переходит в боевой режим.
Для секции нет дополнительных полей.
combat_ignore = combat_ignore
[combat_ignore]
В любой другой схеме можно задать оверрайд, который позволит игнорировать бой только по выполнению условия:
[walker]
combat_ignore_cond = {+info –info =func !func ~number} – условия для игнорирования боя.
Если для оверрайда задать значение always, то в данной схеме NPC будет игнорировать бой всегда, пока не перейдет в схему, где бой не игнорируется.
Таким образом, можно задавать игнорирование боя только будучи под определённой схемой, в отличии от секции, которая запрещает бой в любом случае. Фактически эта секция разрешает или запрещает бой в тех или иных обстоятельствах!!!
отредактировал(а) losiara: 22-09-2012 18:43 GMT3 час. Внатуре пацаны, гаси их... Как сделать НПС бессмертным...
Логика в ТЧ!
Здесь нарисована цифра четыре "8", если вы видите восемь, то вам нужно к нам...
Ну и я ещё раз свои пять копеек вставлю...
Вот лично я браню всех за использование схемы remark в качестве активной схемы секции logic. Многие при этом задаются вопросом: "почему нельзя, ведь работает!?".
Ответ не сложен...
Давно, на заре эры модостроения S.T.A.L.K.E.R. многие искали разные способы спавнить новых НПС не вмешиваясь в файл all.spawn, потому, как всем известно, для этого требуется компиляция этого самого файла, а как следствие - новая игра. Поэтому, кто-то нашёл лазейку в работе схемы remark (бедная) и стал ею пользоваться. "Лазейка" заключается в том, что находясь под этой схемой НПС будет стоять на месте без указания точек пути, т.е. где заспавнил - там и будет стоять.
Но этот выход из ситуации был абсолютно опрометчив!
То, что после перекомпиляции файла all.spawn нужно начинать новую игру - это факт. НО!
ТОЛЬКО ЕСЛИ ВЫ РЕДАКТИРОВАЛИ ФАЙЛЫ alife_xxx.ltx!!!
После добавления ТОЛЬКО точек пути в файлы way_xxx.ltx и последующей компиляции файла - НОВУЮ ИГРУ НАЧИНАТЬ НЕ ОБЯЗАТЕЛЬНО!!! Просто загрузите сохранение и вы увидите результат!
Поэтому, ПОЖАЛУЙСТА, не используйте вышеупомянутую схему в качестве активной, вы избавитесь при этом от кучи проблем. Используйте walker, kamp, camper, словом любую схему - прописывайте точки пути и не мучайтесь!
Те мнения, которые пишутся с ошибками, не воспринимаются как умные…
Лучше иной раз тупить, но умным быть, чем постоянно умничать, но быть тупым.
Все, кто еще говорит «ИХНИЙ», будут гореть в аду!
А вообще статьи по логике очень удачно написаны, на ВИКИ например смотрите, что непонятно объяснят! ВИКИ Fantom2323
И еще раз посмотри на свою логику, секция combat_ignore либо пропиши условия какие то, либо вообще оставь в нетронутом виде типа: [combat_ignore] ignore_distance = ... сие является полем секции Danger и означает - расстояние свыше которого игнорируется "живая" опасность, там есть еще расстояние для игнорирования гранаты, хитов и много чего еще по надобности мододела!!!:-)
отредактировал(а) losiara: 22-09-2012 23:31 GMT3 час. Внатуре пацаны, гаси их... Как сделать НПС бессмертным...
Логика в ТЧ!
Здесь нарисована цифра четыре "8", если вы видите восемь, то вам нужно к нам...
ARIST
и
ColR_iT (спасибо, что тоже вмешался)
Я не компьютерщик и немного путаюсь в терминологии , до всего добираюсь методом тыка. Если что то работает то и ладно, а если не фурычит тогда приходится разбираться. Принцип - ощупью поменял чуток файл - загрузился посмотрел. Долго , но познавательно и много нового с практичной точки зрения. Поэтому не скрываю, у меня много прорех с некоторыми элементарными базовыми знаниями.
Я НЕМНОГО О ДРУГОМ ПИСАЛ
схема mar_lager работает только на 2 файлах
вопрос - КАК? Почему её аналог не работает? Или этот гулаг поместили на карту в SDK перед компиляцией карт - такое возможно? Или я что то упустил......
скрипт здесь
Итак гулаг mar_lager упоминается в 4 файлах :
scripts\gulag_escape.script, misc\gulag_escape.ltx , all.spawn, gameplay\character_desc_escape.xml,
далее цитаты
1. scripts\gulag_escape.script
local t = {}
function load_job(sj, gname, type, squad, groups)
--- mar лагерь ---
if type == "mar_lager" then
t = { section = "logic@mar_lager_marsh_provodnik",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
end
--- baza_mar лагерь ---
if type == "baza_mar_lager" then
t = { section = "logic@baza_mar_lager_baza_marsh_provodnik",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
end
;;;;;;далее чуть ниже
function load_states(gname, type)
--- mar лагерь ---
if type == "mar_lager" then
return function (gulag)
return 0
end
end
--- baza_mar лагерь ---
if type == "baza_mar_lager" then
return function (gulag)
return 0
end
end
;;;;;;и в конце
--------------------------------------------------------------------------
-- Dynamic ltx
--------------------------------------------------------------------------
function load_ltx(gname, type)
return nil
end
function checkStalker(npc_community, gulag_type, npc_rank, se_obj)
--- mar лагерь ---
if gulag_type == "mar_lager" then
return se_obj:profile_name() == "marsh_provodnik"
end
--- baza_mar лагерь ---
if gulag_type == "baza_mar_lager" then
return se_obj:profile_name() == "baza_marsh_provodnik"
end
2. misc\gulag_escape.ltx ,
-- kostya_level
[logic@mar_lager_marsh_provodnik]
active = kamp@mar_lager_marsh_provodnik
номер 11070 кол-в 12344 вер 6
Entity
smart_terrain
имя объекта
mar_lager
level_ID
3407 неизменять
story
-1
скрипт
[smart_terrain]
type = mar_lager
capacity = 1
;;;;; теперь НПС для этого террайна
номер 11071 кол-в 12344 вер 6
Entity
stalker
имя объекта
mar_stalker
level_ID
5000 неизменять
story
-1
путь к объекту\имя файла без расширения
actors\neytral\stalker_neytral_rukzak_1
скрипт
[smart_terrains]
mar_lager = true
--- mar лагерь ---
if type == "mar_lager" then
t = { section = "logic@mar_lager_marsh_provodnik",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
end
--- baza_mar лагерь ---
if type == "baza_mar_lager" then
t = { section = "logic@baza_mar_lager_baza_marsh_provodnik",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
end
--- predbannik лагерь ---
if type == "predbannik_lager" then
t = { section = "logic@predbannik_lager_predbannik_provodnik",
idle = 0,
prior = 5, state = {0},
in_rest = "", out_rest = ""
}
table.insert(sj, t)
end
function load_states(gname, type)
--- mar лагерь ---
if type == "mar_lager" then
return function (gulag)
return 0
end
end
--- baza_mar лагерь ---
if type == "baza_mar_lager" then
return function (gulag)
return 0
end
end
--- predbannik лагерь ---
if type == "predbannik_lager" then
return function (gulag)
return 0
end
end
--------------------------------------------------------------------------
-- Dynamic ltx
--------------------------------------------------------------------------
function load_ltx(gname, type)
return nil
end
function checkStalker(npc_community, gulag_type, npc_rank, se_obj)
--- mar лагерь ---
if gulag_type == "mar_lager" then
return se_obj:profile_name() == "marsh_provodnik"
end
--- baza_mar лагерь ---
if gulag_type == "baza_mar_lager" then
return se_obj:profile_name() == "baza_marsh_provodnik"
end
---predbannik лагерь---
if gulag_type == "predbannik_lager" then
return se_obj:profile_name() == "predbannik_provodnik"
end
2. misc\gulag_escape.ltx ,
-- kostya_level
[logic@mar_lager_marsh_provodnik]
active = kamp@mar_lager_marsh_provodnik
номер 12345 кол-в 12346 вер 6
Entity
smart_terrain
имя объекта
predbannik_lager
level_ID
2792 неизменять
story
-1
скрипт
[smart_terrain]
type = predbannik_lager
capacity = 1
;;;;; теперь НПС для этого террайна
номер 12346 кол-в 12346 вер 6
Entity
stalker
имя объекта
predbannik_stalker
level_ID
2898 неизменять
story
-1
путь к объекту\имя файла без расширения
actors\alco\stalker_bandit_6_drunktest
скрипт
[smart_terrains]
predbannik_lager = true
и вносим изменения к остальным маячкам в scripts\actor_need_help.script
l12_stancia = {
none="aes_heli_attack_desant_walk1_2" -- взял из spawn.ini надо проверять
},
l12u_sarcofag = {
none="aes_heli_attack_desant_walk1_2" -- не нашёл
},
l12u_control_monolith = {
none="aes_heli_attack_desant_walk1_2" -- не нашёл
},
l12_stancia_2 = {
none="aes_heli_attack_desant_walk1_2" -- не нашёл
},
aver = {
none="aver_lager_kamp" -- не нашёл
},
marsh = {
none="mar_lager_marsh_provodnik_kamp"
},
predbannik = {
none="predbannik_lager_marsh_predbannik_kamp"
}
}
ещё раз проверяем запятые и молимся......Good Luck Lola
вылетает и пишет такую дрянь......
Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ...erate\s.t.a.l.k.e.r\gamedata\scripts\xr_gulag.script:271: bad argument #1 to 'getn' (table expected, got nil)
Здравствуйте, вот не понятный вылет с таким логом:
Function : xrServer::Process_event_reject
File : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_process_event_reject.cpp
Line : 11
Description : parent not found. id_parent=3081 id_entity=3090 frame=38519
Вылетает при подходе к переходу с бара на милитари. посмотрел в СДК, на пути к переходу стоит один путь размером в два вейпоинта, удалил для теста путь, прошлый лог пропал, но уже при в ходе в переход у меня вылетает без лога...
"За ЗОЖ поднимем бокалы старик, за легализацию три подхода на турник, за Русь дико в плейстейшн рублюсь" - Бледный (25\17)
Те мнения, которые пишутся с ошибками, не воспринимаются как умные…
Лучше иной раз тупить, но умным быть, чем постоянно умничать, но быть тупым.
Все, кто еще говорит «ИХНИЙ», будут гореть в аду!
susdan2000, методом drop_item. Например для "Флеш**50016c9725ff35736f77**object("gunslinger_flash"))
end[/code]
Те мнения, которые пишутся с ошибками, не воспринимаются как умные…
Лучше иной раз тупить, но умным быть, чем постоянно умничать, но быть тупым.
Все, кто еще говорит «ИХНИЙ», будут гореть в аду!
Help! Я пытался создать костюм по этой инструкци:
Как создать абсолютно новый костюм с уникальным визуалом.
Сложность:Тяжело
1. Открываем outfit.ltx (gamedata/config/misc)
Копируем секцию например СКАТ-10М в конец файла и редактируем:
2.Открываем файл string_table_outfits.xml из папки (gamedata/config/text/rus) и в конец файла
пишем:
Код То, что отображается в игре (название)
То, что отображается в игре (описание)
3. Находим в папке gamedata/meshes/actors/soldier файл stalker_military_black.ogf делаем его
копию и переназываем её как хочется.
Например в stalker_military_white.ogf
Открываем её блокнотом и находим это: act\act_stalker_military_1.
Меняем на любой текст, но главное чтобы символов было столько же, иначе модель не будет работать. Меняем например на это:
_ct_stalker_military
4.Делаем тоже самое с stalker_comander_suit.ogf (gamedata/meshes/equipments).
Получаем stalker_comander_suit_white.ogf
5.Создаём текстуру с названием _ct_stalker_military.dds (можно взять готовую из любого
текстурного мода и переназвать как надо.
6.Прописываем в продажу торговцу и радуемся.
Я почти всё сделал, но у меня нет папки soldier (в пункте 3).
Но эта папка есть в другом моде, но там нет stalker_military_black.ogf!
Кстати, в инструкции написано, что ogf-файл открывается блокнотом. Там одни закорючки:-(
Если кто-нибудь знает, что делать или название мода с такими папками, напишите:obstenu:
Mэрвин
Во-первых в файлах оригинальной игры есть папка "soldier ", а в ней соответсвующий файл stalker_military_black.ogf..., во-вторых, закорючки при открытии блокнотом файлов типа ogf, и должны появляться, в мануале же написано, найти строку следующего вида:act\act_stalker_military_1, это значит среди закорючек найти надо, несложно сделать тем более если включить опцию "найти" в блокноте! Распокуй файлы игры по новой и все найдется, никакие моды не нужны!!!
Простыню если можно спрячь под спойлер!!!
Внатуре пацаны, гаси их... Как сделать НПС бессмертным...
Логика в ТЧ!
Здесь нарисована цифра четыре "8", если вы видите восемь, то вам нужно к нам...
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.