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

[CoP] Ковыряемся в файлах


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

Доброго Всем времени суток.

Я вот ковыряясь в спавне с объектами типа physic_object решил поиграть со значениями поля mass.

Я так понимаю, что это означает массу объекта.

Заспавнил ящик и стал присваивать разные значения этому полю, собирал all.spawn и запускал новую игру.

Дошел до значения в 200 тонн (дальше уже надоело просто).

И каждый раз ГГ спокойно двигал этот ящик! :blink: Трактор "Беларусь" go to пенсия :grin2:

Получается, что движку плевать на массу объекта.

Или это у меня кривые руки?

 

2Larry76

Я тоже не волшебник, а только учусь. Но вот у меня есть дикие сомнения в правильности написания строки:

params.custom="[logic]\ncfg = scripts\\test_npc_logic.ltx"

А конкретно, напрягают \n и двойной слеш в scripts\\test.

Сверьтесь с другими рабочими примерами. Имхо, вид должен быть вроде: [logic] cfg = scripts\test_npc_logic.ltx

 

Что касается 1-й и 3-ей строк, то не сложно вбить в поиск в Тотале в поиск строчку write_stalker_params.

Таким образом я нашел файл amk_pk.script, автором которого является комрад Kolmogor

--- Читает STATE и UPDATE нет-пакеты сталкера и разбирает их

-- @param sobj Серверный объект сталкера

-- @return Таблица параметров сталкера

function read_stalker_params(sobj)

g_stpk:w_begin(0)

g_uppk:w_begin(0)

sobj:STATE_Write(g_stpk)

sobj:UPDATE_Write(g_uppk)

g_stpk:r_seek(2)

g_uppk:r_seek(2)

local tbl=parse_se_stalker({}, g_stpk, g_uppk)

return tbl

end

 

--- Собирает и пишет STATE и UPDATE нет-пакеты сталкера

-- @param sobj Серверный объект сталкера

-- @return Таблица параметров сталкера

function write_stalker_params(sobj, tbl)

g_stpk:w_begin(0)

g_uppk:w_begin(0)

fill_se_stalker(tbl, g_stpk, g_uppk)

g_stpk:r_seek(2)

g_uppk:r_seek(2)

sobj:STATE_Read(g_stpk)

sobj:UPDATE_Read(g_uppk)

end

 

 

Хотя может быть, я как всегда ошибаюсь. :)

Удачи.

Изменено пользователем AK74
Ссылка на комментарий
Я тоже не волшебник, а только учусь. Но вот у меня есть дикие сомнения в правильности написания строки:

params.custom="[logic]\ncfg = scripts\\test_npc_logic.ltx"

А конкретно, напрягают \n и двойной слеш в scripts\\test.

Сверьтесь с другими рабочими примерами. Имхо, вид должен быть вроде: [logic] cfg = scripts\test_npc_logic.ltx

Мой файл это первый спойлер, а второй это я привел пример из тутора.

У меня по ходу используется файл xr_logic.script,но что-то там не стыкуется и непись берёт какую-то общую логику(а не ту,что я ему прописал) и отправляется бродить по локации.

При использовании строчек из тутора,я стабильно вылетаю.... ссылается на строчки в файле amk.script в различных вариациях.Сорри лог уже "затёрся"

попробую повторить.

Изменено пользователем Larry76
Правильно заданный вопрос- уже половина ответа!
Ссылка на комментарий

AK74,

решил поиграть со значениями поля mass...

Получается, что движку плевать на массу объекта.

Масса складывается из отдельных масс частей физической оболочки, которые прописаны в визуале и задаются в SDK. Сдаётся мне, что этот параметр просто игнорируется. Я видел ещё такой ph_mass, но он тоже не влияет.

 

params.custom="[logic]\ncfg = scripts\\test_npc_logic.ltx"

А конкретно, напрягают \n и двойной слеш в scripts\\test.

Это эскейп-последовательности, которые означают соответственно "перевод строки" и "одиночный бэкслеш". Всё здесь нормально.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

AK74,Как-то пробовал модель болта подменять чем-то вроде киприча,

массу модельке задавал в СДК (уже не помню, сколько) - на доходчивость

попадания в голову влияет.

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

Вот решил заспавнить НПС в ЗП. Почтитал поиск, нашёл урок, всё сделал... А в конце написано:

"- И последнее- регестрация скрипта в \scripts\db.script"

Так вот вопрос: У меня нет бд скрипта. Для ТЧ есть, а для ЗП нет!

Просьба: выложите пожалуйста этот файлик для ЗП, пожалуйста!

Ссылка на комментарий
straj, если ты пользуешься утилитой для распаковки архивов игры, то етот файл по-любому должен быть.
Жду ли я Сталкер 2? Хм...
Ссылка на комментарий

Нет, не пользуюсь, так-как создаю аддон к Сигероусу и не хотел бы его переустонавливать!

Можешь выложить?

Спасибо, VlaDOS !

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

Фух... разобрался наконец-то со своим неписем.

"ларчик просто открывался" При моём способе спавна через скрипт(с привязкой к файлу xr_logic )

Надо было просто при регистрации в файле npc_profile.xml добавить строчку:

<specific_character>***профиль непися***</specific_character>

А я посмотря на предыдущих,подумал что незачем это. В файле из оригинала такая строчка только у актора имеется.Это меня сперва и смутило.

А без неё НПС не приписанный ни к какому смарту действует по логике "идусамнезнаюкуда" не смотря на прописанный путь к логике в "custom_data"

Правильно заданный вопрос- уже половина ответа!
Ссылка на комментарий

Larry76, Это значит что без неё непись мотается по локе? Если да- то ты не знаешь как ты мне помог!

Помогите! Я заспавнил НПСа, а он не говорит! Чё делать!

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

Larry76 Так в итоге где прописал путь к файлу логики - в скрипте

или в spawn_sections_xxx.ltx . custom_data = ... ?

 

straj А каким методом спавнил - вопрос освети пошире, так ведь проблемы не понять!

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

nuklia, вот этим способом:

Нам нужны следующие файлы:

- \configs\creatures\spawn_sections_zaton.ltx

- \configs\gameplay\npc_profile.ltx

- \Configs\gameplay\charecter_desc_zaton.ltx

- \scripts\db.script

И создадим сами файлы

- \scripts\npc.script

- \configs\sripts\snaiper_lg.ltx

 

- Для начала создадим нашему неписю логику(( после мы её сможем часто пользоваться).

 

- Для этого заходим в \configs\sripts\snaiper_lg.ltx

И там вбиваем следующие строки:

[logic]

active = remark1

danger = danger_ignore

anim = desk_idle

 

[danger_ignore]

ignore_distance = 5

 

[remark1]

invulnerable = true

no_move = true

meet = meet_guide

 

[meet_guide]

close_anim = nil

close_victim = nil

far_anim = nil

far_victim = nil

close_distance = 0

far_distance = 0

close_snd_distance = 3

abuse = false

use = {=actor_enemy} false, true

allow_break = false

meet_on_talking = false

meet_on_talking = false

 

 

Теперь всё по порядку:

[logic] – обозночает, что это функция логи

active = remark1- функция его действий

danger = danger_ignore – можно ли рядом достать оружие

anim = desk_idle- анимка, но вроде не влияет

 

[danger_ignore]

ignore_distance = 5 – на сколько близко можно махать стволом

 

[remark1]

invulnerable = true - бессмерте. True-бессмертный, false- смертный

no_move = true (будет стоять на месте) или false что б ходил

meet = meet_guide название функции

 

[meet_guide] сама функция

close_anim = nil- анимка при прощании

close_victim = nil- вроде анимка при встречи

far_anim = nil

far_victim = nil

close_distance = 0

far_distance = 0

close_snd_distance = 3- на каком расстоянии будет слышен звук приветствия

abuse = false- вроде разрешение говорить

use = {=actor_enemy} false, true- ?

allow_break = false- ?

meet_on_talking = false –говорить можно(диалог)

meet_on_talking = false- говорить можно(диалог)

 

 

Теперь заходим в \configs\creatures\spawn_sections_zaton.ltx

После

[test_body_5]:stalker

$spawn = "respawn\test_body_5"

;character_profile = zat_a2_stalker_mechanic

community = stalker

;story_id = test_body_5

custom_data = scripts\test_cfg5.ltx

прописываем это:

[snaiper]:stalker

$spawn = "respawn\snaiper"

character_profile = snaiper

spec_rank = master

community = stalker

custom_data = scripts\snaiper_lg.ltx

story_id = stalker_snaiper

где

 

[snaiper]:stalker название функции

 

$spawn = "respawn\snaiper"- респавн

character_profile = snaiper

spec_rank = master ранг

community = stalker группировка( здесь роли не играет

custom_data = scripts\snaiper_lg.ltx Логика, которую мы создали

story_id = stalker_snaiper - уникальный ID , не знаю но вроде что-то про квесты

 

Тепрь заходим в

- \configs\gameplay\npc_profile.ltx

И в самый конец ( перед хмл)пишем

<character id="snaiper">

<class>snaiper</class>

<specific_character>snaiper</specific_character>

</character>

 

Должно получиться примерно так:

<character id="conrack_selo_stalker">

<class>jup_b6_freedom_stalker_1</class>

</character>

 

<character id="snaiper">

<class>snaiper</class>

<specific_character>snaiper</specific_character>

</character>

 

</xml>

 

Теперь по порядку:

<character id="snaiper"> ID

 

<class>snaiper</class> - сласс , это типа метки

<specific_character>snaiper</specific_character>- ID

</character>- массив закрыт

 

Теперь создадим профиль для нашего непися. Заходим в

- \Configs\gameplay\charecter_desc_zaton.ltx

И в самый конец (перед <xml>) прописываем

 

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

<name>Дрюня</name>

<icon>ui_inGame2_merc_4</icon>

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

</map_icon>

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

 

<class>snaiper</class>

<community>stalker</community>

<terrain_sect>stalker_terrain</terrain_sect>

<snd_config>characters_voice\human_01\bandit\</snd_config>

 

<rank>40</rank>

<money min="1500" max="3500" infinitive="1"/>

<reputation>0</reputation>

 

<visual>actors\stalker_soldier\stalker_soldier_1</visual>

<supplies>

 

[spawn] \n

wpn_svd \n

ammo_9x39_ap = 1 \n

wpn_beretta \n

ammo_9x19_fmj = 1 \n

grenade_rgd5 = 2 \n

#include "gameplay\character_items.xml"

#include "gameplay\character_food.xml"

#include "gameplay\character_drugs.xml"

</supplies>

#include "gameplay\character_criticals_4.xml"

 

<start_dialog>zat_b215_stalker_guide_start</start_dialog>

 

<actor_dialog>zat_b215_stalker_guide_leave_zone</actor_dialog>

<actor_dialog>zat_b215_stalker_guide_maps</actor_dialog>

<actor_dialog>zat_b215_stalker_guide_to_pripyat_no_way</actor_dialog>

<actor_dialog>zat_b215_stalker_guide_to_pripyat</actor_dialog>

<actor_dialog>zat_b215_stalker_guide_to_jupiter</actor_dialog>

<actor_dialog>zat_b215_stalker_guide_to_zaton</actor_dialog>

<actor_dialog>zat_b215_stalker_guide_where_to</actor_dialog>

<actor_dialog>zat_b215_stalker_guide_about_himself</actor_dialog>

<actor_dialog>zat_b215_stalker_guide_about_anomalies</actor_dialog>

<actor_dialog>zat_b215_stalker_guide_about_surge</actor_dialog>

 

<actor_dialog>actor_break_dialog</actor_dialog>

</specific_character>

 

Где:

<specific_character id="snaiper" team_default="1"> - ID

<name>Дрюня</name> -имя

<icon>ui_inGame2_merc_4</icon>- иконка

<map_icon x="1" y="0">- иконка на карте

</map_icon>-?

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

 

<class>snaiper</class> сласс типа метка

<community>stalker</community> группировка

<terrain_sect>stalker_terrain</terrain_sect> - ?

<snd_config>characters_voice\human_01\bandit\</snd_config> -голос

 

<rank>40</rank> - ранг( не используется в игре)

<money min="1500" max="3500" infinitive="1"/> Колличество денег. infinitive="1"- бесконечные, infinitive="0"- заканчивающиеся

<reputation>0</reputation> репутация

 

<visual>actors\stalker_soldier\stalker_soldier_1</visual> модель непися

<supplies>

 

[spawn] \n- вещи в рюкзаке

wpn_svd \n

ammo_9x39_ap = 1 \n

wpn_beretta \n

ammo_9x19_fmj = 1 \n

grenade_rgd5 = 2 \n

#include "gameplay\character_items.xml"- случайный спавн вещей в рюкзаке

#include "gameplay\character_food.xml"

#include "gameplay\character_drugs.xml"

</supplies>

#include "gameplay\character_criticals_4.xml"

 

<start_dialog>zat_b215_stalker_guide_start</start_dialog>- диалоги. В нашем случае диалоги лоцмана

 

<actor_dialog>zat_b215_stalker_guide_leave_zone</actor_dialog>

<actor_dialog>zat_b215_stalker_guide_maps</actor_dialog>

<actor_dialog>zat_b215_stalker_guide_to_pripyat_no_way</actor_dialog>

<actor_dialog>zat_b215_stalker_guide_to_pripyat</actor_dialog>

<actor_dialog>zat_b215_stalker_guide_to_jupiter</actor_dialog>

<actor_dialog>zat_b215_stalker_guide_to_zaton</actor_dialog>

<actor_dialog>zat_b215_stalker_guide_where_to</actor_dialog>

<actor_dialog>zat_b215_stalker_guide_about_himself</actor_dialog>

<actor_dialog>zat_b215_stalker_guide_about_anomalies</actor_dialog>

<actor_dialog>zat_b215_stalker_guide_about_surge</actor_dialog>

 

<actor_dialog>actor_break_dialog</actor_dialog>

</specific_character>

 

 

Теперь создаём скрипт спавна

- \scripts\npc.script

Вбиваем в него

function snaiper ()

if not db.actor:has_info("spawn_snaiper")

then

 

alife():create("snaiper",vector():set(116.238,2.250,183.199),1165999,316)

db.actor:give_info_portion("spawn_snaiper")

end

end

 

Строчка alife():create("snaiper",vector():set(116.238,2.250,183.199),1165999,316) отвечает за координаты, на которых спавнится объект. В нашем случае- непись. Подробнее о них:

Pos- 116.238,2.250,183.199

Ivid- 1165999

Gvid- 316

 

Чтобы их получить качаем позишн информер ]]>Отсюда]]>

- И последнее- регестрация скрипта в \scripts\db.script

Открываем дБ скрипт. Находим строки

function add_actor( obj )

actor = obj

actor_proxy:net_spawn( obj )

add_obj( obj )

end

 

И меняем на такие

function add_actor( obj )

actor = obj

actor_proxy:net_spawn( obj )

add_obj( obj )

npc.snaiper()

end

 

Ссылка на комментарий
Larry76 Так в итоге где прописал путь к файлу логики

Путь указан как и рекомендуется в spawn_sections_xxx.ltx . custom_data = ...

Просто если в npc_profile.xml НЕ добавить строчку:

<specific_character>***профиль непися***</specific_character>

То он почему-то этот путь игнорирует и идёт одному ему известной дорогой. :crazy:

Правильно заданный вопрос- уже половина ответа!
Ссылка на комментарий
Как-то пробовал модель болта подменять чем-то вроде киприча,

массу модельке задавал в СДК (уже не помню, сколько) - на доходчивость

попадания в голову влияет.

Рискну предположить что болт, как и оружие иначе обрабатывается движком, чем физ.объекты.

Хотя, может быть, что этот параметр будет влиять, если например бюргера "попросить" этим ящиком бросить в ГГ.

 

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

straj,а у тебя такая строчка в логике есть?

[smart_terrains]

none = true

Может у тебя логика работает,но он к ближайшему гулагу направился?

Вот для примера моя логика часового на кордоне.

[logic]

suitable = {=check_npc_name(esc_a17_military_sergeant_morozov)} true

prior = 200

active = walker

post_combat_time = 0, 0

 

[walker]

path_walk = esc_chasowoy_walk

path_look = esc_chasowoy_look

combat_ignore_cond = false

combat_ignore_keep_when_attacked = false

meet = meet

gather_items_enabled = false

help_wounded_enabled = false

corpse_detection_enabled = false

use_camp = false

def_state_standing = ward_noweap

def_state_moving1 = patrol

no_retreat = true

target = story | actor

wounded = wounded

danger = danger

 

[smart_terrains]

none = true

 

[meet]

close_snd_hello = = nil

close_snd_bye = = nil

close_anim = guard_na

close_victim = actor

far_anim = nil

far_victim = nil

close_distance = 2

far_distance = 0

close_snd_distance = 3

abuse = false

use = {=actor_enemy} false, true

allow_break = false

meet_on_talking = false

 

[wounded]

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

 

[danger]

ignore_distance = 5

ignore_distance_grenade = 5

ignore_distance_corpse = 5

ignore_distance_hit = 5

ignore_distance_sound = 5

 

 

А вот пути в файле way_escape.ltx

[esc_chasowoy_look]

points = p0

p0:name = name00

p0:position = -124.602172851563,-26.3923282623291,-471.800170898438

p0:game_vertex_id = 1272

p0:level_vertex_id = 131667

 

 

[esc_chasowoy_walk]

points = p0

p0:name = name00

p0:position = -116.466064453125,-25.9364833831787,-465.897827148438

p0:game_vertex_id = 1272

p0:level_vertex_id = 142074

 

 

И ещё,для таких же "знатоков ЛУА" как и я:

Комментировать двумя дефисами -- можно только целиком строку,но никак не давать комментарий в самой строке.

У меня было написано custom_data = scripts\escape\esc_a17_military_sergeant_morozov.ltx --Логика НПС

И я получил вылет,где была ссылка на то,что невозможно найти файл esc_a17_military_sergeant_morozov.ltx --Логика НПС

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

 

Изменено пользователем Larry76
Правильно заданный вопрос- уже половина ответа!
Ссылка на комментарий

Как убрать отметки на карте об упавших вертолетах в самом начале игры?

 

А то по ним столько информации дается он нпц, что хочется сделать их появление постепенным - по мере получения ее.

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

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

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

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

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

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

Войти

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

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

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