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

[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.

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

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

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

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

Извиняюсь если было, но как можно изменить расположение интро-текстуры локации при загрузке и убрать надписи про "100 советов ..."?

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

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

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

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

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

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

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

Спасибо, 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:

И ешё: он у меня тоже идёт куда глаза гледят, а веть я припысывал как Larry! ( даже приписывать не пришлось! Оно там уже было!)

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

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

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

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

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

 

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

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

 

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

Larry76

Это не скрипт, поэтому комментировать надо не через "--", а через ";" (точка с запятой). И комментировать можно что хочешь.

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

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

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

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

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

Войти

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

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

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