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

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

Darkscape, если для ТЧ 1.006 патча - попробуй эту:

http://www.amk-team.ru/forum/index.php?sho...st&p=605578

всё легко

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

7.9, верно, mass из cse_alife_object_physic - это не то. Это вроде как масса, определяющая обработку физ-движком, более того, ее можно получить не из нет-пакета, а просто с помощью mass() - метода CScriptGameObject. А инвентарной массы в нет-пакетах нет.

Artos, логика чтения last_spawn_time такая (во всех трех частях):

    local flag = packet:r_u8()
    if flag == 1 then
        self.last_spawn_time = utils.r_CTime(packet)
    end

Для 'se_' классов берите код из соответствующих методов se скриптов.

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

Помогите пожалуйста. Я прописал в логику НПСу воспроизведения звука при приближению к нему(как у Бороды, Сыча и т.д.).

Только звука нет. Вот логика:

[logic]

trade = misc\trade\holod.ltx

active = remark

prior = 200

can_select_weapon = true

level_spot = trader

combat_ignore = combat_ignore

 

[combat_ignore]

 

[remark]

anim = animpoint_stay_table_no_rnd

combat_ignore_cond = true

combat_ignore_keep_when_attacked = true

meet = meet

invulnerable = true

gather_items_enabled = true

help_wounded_enabled = true

corpse_detection_enabled = true

 

[meet]

close_snd_hello = holod_greeting

close_snd_bye = holod_farewell

close_anim = nil

close_victim = nil

far_anim = nil

far_victim = nil

close_distance = 0

far_distance = 0

close_snd_distance = 3

abuse = true

use = {=actor_enemy} false, true

allow_break = true

meet_on_talking = true

 

 

 

Звук пописан здесь:

[list_script_sound_marsh]

holod_greeting

holod_farewell

 

 

[holod_greeting]

type = npc

;npc_prefix = false

path = scenario\marsh\holod\holod_greeting_

shuffle = rnd

idle = 0,0,100

 

[holod_farewell]

type = npc

;npc_prefix = false

path = scenario\marsh\holod\holod_farewell_

shuffle = rnd

idle = 1,1,100

 

 

 

А файл script_sound_marsh.ltx прописан здесь:

#include "script_sound_music_and_stories.ltx"

#include "script_sound_zaton.ltx"

#include "script_sound_jupiter.ltx"

#include "script_sound_pripyat.ltx"

#include "script_sound_underpass.ltx"

#include "script_sound_marsh.ltx"

  • : list_music_and_stories, list_script_sound_zaton, list_script_sound_jupiter, list_script_sound_pripyat, list_script_sound_underpass, list_script_sound_marsh

 

 

 

Подскажите пожалуйста, что я упустил, в чём моя ошибка?

P.S.:Также, есть звуки:

holod_farewell_1,

holod_farewell_2,

holod_greeting_1,

holod_greeting_1

 

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

KD87

Логика то одинакова, но ... нюансы имеются.

а) В SHoC (ТЧ) метод utils.r_CTime(packet) всегда(!) вернет объект таймера, а вот в CS/SCoP (ЧН/ЗП) уже возвратить может и 'nil' и '0'. А вот метод utils.w_CTime(packet,oTimer) во всех версиях игры должен принять не число, а именно объект или 'nil', что упустил некоторое время назад и теперь подправил.

б) В моде Simbion, например, байт flag хранит уже не только в 1-ом бите факт наличия self.last_spawn_time, но еще и в других битах иные обнобитные значения/флаги (статус аномалии, в часности). Т.о. условие 'flag == 1' недостаточно и использовано более узкое: bit_and(flag,1) == 1, что совместимо и с исходными кодами игры. Сделал так, чтобы убрать 'мусор' из кастомдаты, что реализовано в АМК-моде.

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Подскажите пожалуйста, если прописать в логику лидера монолитовца после вступления в долг\свободу (jup_b4_monolith_squad_leader_duty(freedom)_skin) следующию строчку: on_info = {+jup_b4_monolith_squad_in_duty} %=set_squad_goodwill(jup_b4_monolith_squad_leader_duty_skin_duty_leader:1000)%, будет ли все это дело работать.

Ссылка на комментарий
Artos, удачное решение. Но можно было просто добавить своих переменных. Смотри, например, zenobian mod - там сделан свой скриптовый класс аномальных полей (вроде на классе аномалии) и соответствующим образом поправлен acdc, чтобы при паковке добавлялись новые параметры. Вот еще одно решение :)
Ссылка на комментарий

KD87, вариант из Zenobian-mod конечно же смотрел в свое время и даже на каком-то этапе в сборке Симбиона присутствовали оба варианта (AMK+Zen). Однако в процессе работы над кодами принял решение идти оптимальным (на мой взгляд) путем.

Уже и сами разрабы для неписей использовали однобайтовые флаги для расширения (битовые флаги работ для сталкеров), и в том же АМК были добавлены доп. однобитовые флаги для монстров (офф/онлайна) и для сталкеров (состояние ранености).

Добавлять новые переменные и править ACDC в то время было и затруднительно и совместимость страдала ...

Выбранный вариант не зависит ни от версии ACDC, ни требует новых классов, и ресурсов сторонних (доп.байтов в пакетах) не потребляет. :-)

Это же решение позволило упаковать/разгрузить сохранки для таск-менеджера и для диалог-менеджера при сохранении совместимости с предыдущими сэйвами.

 

===

Вот, кстати в тему и топика и по следам модуля нет-пакетов, возник вопрос, который сейчас сам перепроверить не могу на ЧН/ЗП:

В utils.script (ЧН/ЗП) имеется функция 'w_CTime', в которой упоминается переменная 'CTime':

if (CTime == nil) or (t ~= CTime_0) then

- но если она (CTime) НЕ определена нигде выше/ранее - ведь и будет постоянно тождественна 'nil' и все последующие времена будут постоянно перезаписываться, т.е. до условия 't ~= CTime_0' никогда не будет доходить проверка.

Или что-то я упускаю или ... в кодах явный ляп?

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Artos

Похоже на ошибку GSC. Если взять utils.script безпатченной версии, то там функция w_CTime() такая:

 

    if not (t == CTime_0) then
        local Y, M, D, h, m, s, ms = 0, 0, 0, 0, 0, 0, 0
        Y, M, D, h, m, s, ms = t:get( Y, M, D, h, m, s, ms )

 

А в патченой версии я нигде не нашёл, чтобы вызывался код вида utils.CTime

Разве что как то движково.

 

И да, так мне получается параметр updskeleton_flags просто удалить? А то я вставил его чтение\запись :D

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

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

*Shoker*

Да, упоминания про 'updskeleton_flags' нужно просто удалить из кодов.

Если есть желание можешь потестить новую версию:

m_net_utils_111015

- изменен формат получаемой таблицы нет-пакета. Параметры UPDATE выделены в субтаблицу 'Table.upd'

- изменена последовательность аргументов при вызове записи пакета: 'Table,soObj,Flag' -> 'soObj,Table'. Необходимость записи UPDATE_write определяется по наличию субтаблицы 'Table.upd'.

- введены общие функции: Get_NetPacket/Set_NetPacket, самостоятельно определяющие класс серверного объекта и выбирающие соотв.методы чтения/записи.

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

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

В каких случаях в лог выдается запись, если с самим объектом я ничего не делаю:

Scheduler tried to update object "Имя объекта"

И игра вылетает, с указанием только адресов в xrGame?

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

Как можно отследить поедание хлеба (bread)? Думал, через коллбэк на потерю, но так он подаёт сигнал не только, когда съедаем, но и когда выбрасываем.

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

Либо сделать колбек на потерю предмета или по старинке проверять, существует ли предмет, который потерян.

Ссылка на комментарий
но так он подаёт сигнал не только, когда съедаем, но и когда выбрасываем.

Либо сделать колбек на потерю предмета

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

В общем открываем бинд_сталкер.скрипт В функции function actor_binder:reinit() пишем по аналогии инициализацию каллбека

self.object:set_callback(callback.use_object, self.use_object, self)

Вне всяких функций пишем

function actor_binder:use_object(obj,who)
if obj:section() == "bread" then
get_console():execute("Use_detected") --тут просто вывод в лог, что использование прошло, строку удалить
end
end

Ну и вот после then пишем то, что нужно нам сделать. Для полного счастья можно еще прописать в function actor_binder:net_destroy() это

self.object:set_callback(callback.use_object, nil)

Это вроде как удаление каллбека при выходе из игры.

ТЧ 1.0004. SAP и Trans mod

github

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

Desertir верно сказал, колбек на юзание объекта самый удобный способ.

 

А вот

сделать колбек на потерю предмета или по старинке проверять, существует ли предмет, который потерян.
- это было очень популярно в древних модах года три - четыре назад, хотел бы я знать почему :) Способ чреват тем что при скриптовых заменах одного предмета на другой будет срабатывать ваш скрипт, хотя никто этот хлеб не ел.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

Здравствуйте. Для чего используется o_torso в параметрах НПС? Почему ПЫС не хватило такого параметра как direction?

Изменено пользователем _Призрак_

Freedom

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

Привет всем. Подскажите пожалуйста, как заставить НПС юзать только нож? То есть он, ни смотря ни на что, бежит к ГГ и нажинает лупить/резать пока не умрет, либо не убьет ГГ :lol: Благодарю)

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

Есть вопрос:

Зашёл в диалог и вылет:

[error]Expression : no_assert

[error]Function : CXML_IdToIndex<class CPhraseDialog>::GetById

[error]File : e:\stalker\patch_1_0004\xr_3da\xrgame\xml_str_id_loader.h

[error]Line : 112

[error]Description : item not found, id

[error]Arguments : nachalo

Инфопоршень nachalo зарегистрирован, где все инфы.

Тогда в чём дело?

Изменено пользователем ColR_iT

Создаю глобальный мод с новыми локациямЭ

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

Scarabay

Нож для НПС не юзаем. Хочешь сделать - приаттачивай к его руке и махай 'анимацией'.

В общем смотри схемы 'мордобоя' из модов и делай по аналогии.

 

 

Поправлю немного Desertir'а, нет никакой надобности добавлять 'лишний' аргумент (self) в коллбэк актору.

И так понятно, что юзает (who) именно он, а не кто иной.

Также несколько странная фраза:

Desertir: А вот "проверять, существует ли предмет, который потерян" вообще интересен
Если тому же 'батону' в конфиге прописать 'многопорционность', то для таких 'многократных' использований как раз проверка 'съеден' ли батон иль только 'надкушен' (в процессе поедания) - совсем не лишне!

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

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Возникла одна назойливая проблемка и вот я незнаю, возможно ли это исправить.

Возможно ли удаление статей или разделов из ПДА в разделе Справка?

 

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

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

Ребят, у меня такой вопрос: как сделать чтобы НПС сидели вокруг костра, разговаривали, травили анекдоты и т.п. в ЗП? Тут в поиске не нашёл. Заранее спасибо :good: .

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

×
×
  • Создать...