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

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


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

panzyuza, ну да, так я и понимал. в радиусе 10м от места спавна.

Секунду, не пинайте сильно, сейчас открыл x18.ltx, и увидел там только бюреров:

[x18_burer1]
xyzlg = -13.74,-10.82,-4.31,1249,1150
respawn_section = burer_normal
spawn_once = true
max_count = 1
creature_binded_logic = logic\x18_burer1

[x18_burer2]
xyzlg = -39.57,-13.01,-15.61,233,1153
respawn_section = burer_normal 
spawn_once = true
max_count = 1
creature_binded_logic = logic\x18_burer2

[x18_burer3]
xyzlg = -13.65,-12.43,-10.48,4780,1156
respawn_section = burer_normal
spawn_once = true
max_count = 1
creature_binded_logic = logic\x18_burer3

 

Причем ясно помню, что видел там снорков.. (в лаборатории)

Ничего не понимаю, подскажите, где еще могут спавнящиеся монстры прописываться. пардон за глупый вопрос

 

С использованием данной логики можно хоть десять мутантов в данном хоуме оставить

Вот, этого я и хочу!

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

panzyuza, reboot

Вы неверно трактуете параметры. Нет никагого 'min_spawn', а есть 'min_count'.

'min_count' и 'max_count' - минимальное и максимальные кол-ва спавнящихся объектов данной секции.

'max_spawn' - кол-во попыток заспавнить объект с данной секцией.

 

Иными словами: Разрешено заспавнить объектов с данной секцией в кол-ве: не менее "min_count' и не более 'max_count', и для каждого объекта сделать не более 'max_spawn'-попыток заспавнить.

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

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

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

Artos, секунду, в коде, кот. я скопипастил, нет min_count. Есть max_count , min_spawn , max_spawn. У меня АМК 1.4.1.2

для каждого объекта сделать не более 'max_spawn'-попыток заспавнить.

А чем обусловлены попытки? Неудачей в случае спавна с пересечением какого нить игрового объекта?

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

reboot

Модмейкеры (в том числе и из АМК) все же люди и порой тоже могут (могли) ошибаться ... :-)

А вот привычка только копипастить и не задумываться ... все больше и чаще в наши дни подводит т.н. 'модеров'.

Загляни в 'se_respawn.script', который и обрабатывает все эти параметры. Нет ни в оригинальном скрипте, ни в АМК'шном, никакого считывания 'min_spawn', а вот 'min_count' - обязателен, хотя и не обязателен в конфиг-файле (дефолтно будет приравнен к 0).

 

Максимальное число попыток спавна обусловлено тем, что:

1. Если объектов с такой секцией уже более чем 'max_count' - отбой спавна

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

(читаем скрипт 'se_respawn:create(prob)')

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

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

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

Обнаружил вот какую неприятность: при использовании изменённого game.graph (дополнительные "АИ-связи" локаций), на большом расстоянии от "перехода" исчезает укзатель (стрелка на миникарте) на маркер задачи, назначенной на другой локации. Что не есть гуд. Кто-нибудь решал такую проблемку?

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

Подскажите, какие строки в файле "ui_mm_main.xml" отвечают за положение текста?

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

Жить – значит делать вещи, а не приобретать их.

 

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

FLIKER, в файле ui_main_main_tab.script вот этот код

btn:SetTextAlign(CGameFont.alCenter)

Неважно – сколько у тебя друзей. Важно - сколько из них помогут тебе в трудную минуту и сколько вспомнят о тебе когда им хорошо.

"Худ" и "Умное выпадание частей монстров" для Народной солянки

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

Люди подскажите как задействовать эту функцию в bind_monster.script

 

local zombie_particle = particles_object("ogsm\\ogsm_zombieblow")

local zombie_sound1 = sound_object([[anomaly\anomaly_body_tear_1]])

local zombie_sound2 = sound_object([[weapons\f1_explode_]])

 

-- Атака насекомых чумного зомби

function zombie_insect(p_obj)

if p_obj then

 

local posit = p_obj:position()

local actor = db.actor:position()

local zh = hit()

zh.draftsman = db.actor

zh.type = hit.wound

zh.direction = p_obj:position():sub(actor)

zh:bone("pelvis")

zh.power = 0.35

zh.impulse = 0.1

 

if not insect_particle:playing() then

 

insect_particle:play_at_pos(vector():set(actor.x, actor.y+1.8, actor.z))

 

if not insect_sound:playing() then

insect_sound:play_at_pos(db.actor, actor)

db.actor:hit(zh)

else

insect_sound:set_position(actor)

end

 

else

 

insect_particle:move_to(vector():set(actor.x, actor.y+1.8, actor.z),vector():set(actor.x, actor.y+1.8, actor.z))

 

if not insect_sound:playing() then

insect_sound:play_at_pos(db.actor, actor)

db.actor:hit(zh)

else

insect_sound:set_position(actor)

end

end

end

end

 

 

---

Artos Да, прочитал Ваш пост и сам понял это, по умней спросить не смог, увы.

1. Нет, не добавлены.

2. Собака, любая, секция монстра (то есть это монстер) не важна, звуки и партиклы на сомом деле не важны, урон тоже не особо нужен. Мне нужно только притягивания ГГ к самой собаке при расстоянии 15-20м.

Спасибо за то что глянул.

 

Да, я помню вашу фразу на СП "'Народ' весь там ..., а тут все сами по себе"

 

 

 

-----

 

 

По моему вопросу:

 

Kirag:

Что-то типа:

 

if self.object:section() == "что-там-нужно" then
    if self.object:position():distance_to(db.actor:position()) <= радиус_действия then
        zombie_insect(self.object)
    end
end

Предполагается, что функция вписана в bind_monster.script.

Все работает. Притягивание там реализовано толчками (импульсами) - хитами. Так как и говорил Artos

Если со скриптами не в ладах - то так и напиши
Ага, не в ладах.

 

Спасибо, вопрос закрыт.

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

Мой архив

Сталкером не занимаюсь.

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

amik

Ты дал недостаточно информации, поэтому только предполагалками что-то можно посоветовать.

1. В чистом ТЧ (SHoC) отсутствуют классы 'insect_particle' и 'insect_sound', так что предполагается они у тебя уже как-то добавлены.

2. Нет информации что за гейм-объект (p_obj) передается на вход указанной тобою функции. Если это некий зомби - то почему то 'выдача хитов' дается не от него, а от'актора' (см. 'zh.draftsman = db.actor').

3. Вероятно, эту функцию требуется вешать (вызывать) на апдейт ('generic_object_binder:update(delta)'), раз она предусматривает проверки отыгрывания партиклов и звучания звуков, но совершенно не ясно - от трупа зомби должна функция вызываться иль от живого.

 

Заглянув в OGSE v.0692, стало понятно ... Тебе придется или подключать 'ogsm_mutants.script' со всей его обвязкой или вырезать из него нужные и необходимые куски, помимо указанной тобою функции.

Упрощенно можно подключить так:

function generic_object_binder:update(delta)
  --/...
  if self.object:section() == "rat_plague" and self.object:alive() then
    if self.object:position():distance_to(db.actor:position()) < 3 then
      zombie_insect(self.object)
    end
  end
end

 

- подразумевается и наличие нужной секции и включение самой функции в скрипт биндера монстров, но(!) тут немало других упущенных условий!

Для чего взывать "Люди" иль "Народ" в вопросе? Можно подумать на митинге иль нелюди могут ответить?

Если нет нужды упоминать адресата в вопросе - ну так и задавайте вопрос без всяких 'люди/пацаны/чуваки/...'

 

 

 

Добавлено через 138 мин.:

P.S. Хм. все не нужно что было в вопросе, а нужно совсем иное ...

 

В АМК-моде (да и во мноогих других на его базе) имеется добавление, когда атакует собака. Там уже есть определение что именно собака и определяется дистанция до актора.

А вот с притягиванием ГГ к собаке, да еще и с дистанции в 15 метров - это что-то 'новенькое' и вроде не встречал подобного.

Учитывая, что актор (ГГ) не физ-объект и управляем самим игроком за компом, то притянуть можно если только хитами импульсов в нужном направлении или 'телепортами'.

Взгляни на ... коды мода с 'засосом' кровососа, может оттуда что будет полезным.

 

Примечание: Если со скриптами не в ладах - то так и напиши, что мол требуется то-то и то-то, сформулировав подробно 'что и с кем' требуется делать и каков результат нужен. Может кто и напишет нужное тебе.

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

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

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

Подскажите функцию отдачи предмета(пда скажем) неписю, только что бы его(предмета этого) у него не было в рюкзаке, ну ГГ его как бы отдал, но у непися его не будет..

 

Добавлено через 31 мин.:

И еще, если в предмете написать quest_item = true, то неписи его поднимать будут или нет..?

FANAT.gif

Мой канал на ютабчике... / Недельки из жизни фаната STALKER'a / Клуб 'Фанат Отчуждения'

Я нет-нет, а думаю, может я неправильно жил, надо ж брать деньги у богатых и давать их бедным, а таким как ты давать по морде, шоб у мире была красота и гармония.(с)Ликвидация

Всё в порядке, всё нормально, я беру тебя с собой, я беру тебя с собой. В тёмный омут головой.(с)Смысловые Галлюцинации

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

FANAT,

-- Удалить предмет
function relese(item)
dialogs.relocate_item_section(first_speaker, item, "out")
end

За место items пишешь секцию предмета, который нужно удалить.И ставишь в своем скрипте на вызов.

А если нужно, то есть еще и такая функция

--Функция УДАЛЕНИЯ предмета из рюкзака актора
function Delete_from_Actor(section)
local oItem = db.actor:object(section) --/ определяем предмет у ГГ
if oItem then --/ у ГГ есть предмет
db.actor:drop_item(oItem) --/ выбрасываем предмет (опционально)
alife():release(alife():object(oItem:id()), true) --/ удаляем из игры
end
end

 

Тут при вызове заместо section пишешь свой предмет.

Если же данный предмет спавнил через all.spawn, то есть следующее

-- Удаление объекта по имени
function del_so(name)
    local sim = alife()
    local se_obj = sim:object(name)
    if se_obj ~= nil then
        sim:release(se_obj, true)
    end
end

 

Изменено пользователем Artos
Ссылка на комментарий
только что бы его(предмета этого) у него не было в рюкзаке,

Велосипед изобретаем?

Загляни в любой мод, где присутствует NLC - там есть sak.script и там я создал такую функцию (три года назад):

function out_item_namber(itm_section,need_number)

где itm_section - секция удаляемого предмета;

need_number - количество этих вещей.

 

 

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

FANAT

См. 'amk.remove_item_from_inventory(...)' в АМК-моде. Определив нужный тебе предмет (хоть КПК) в рюкзаке актора (ГГ) - передаешь его на вход функции, которая и удалит предмет из игры.

Если потребуются сообщения - см. как сделано в модах.

 

panzyuza

А чем так выделяются предметы, которые спавнятся через 'all.spawn', что для них нечто особенное советуешь применять? ;)

 

Сяк

дабы не тратить время в поисках ...

В NLC5, на базе которых делалось немало модов, функция 'out_item_namber' только проверяет кол-во заданных предметов и вызывает менеджер новостей, сообщая о кол-ве отданных ... Удаления предмета(ов) не происходит

В NLC6 (вышедший менее года назад и сторонних модов на его базе вроде как нет) - уже в указанной функции используется 'amk.remove_item_from_inventory' (из AMK-мода, написанная 4 года назад).

 

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

Ссылка на комментарий
Artos, просто я только знаю, что в all.spawn спавниться секция обьекта, и можно произвольное имя написать, какое нужно.Не знаю скриптовых функций с возможностью установки имени заспавненому обьекту.
Ссылка на комментарий

panzyuza

1. В all.spawn'е спавнятся предметы и им заранее задается их имя. Имя не любое, а эксклюзивное, т.е. не должно повторятся на одной локации.

2. Если тебе стало известно имя (полное) объекта на локации, и не обязательно этот объект был заспавнен через 'all.spawn' - то по этому имени (например, 'kolbasa23456'), можно проверить/получить его серверный объект: 'se_obj = sim:object("kolbasa23456")' - и далее удалить.

Т.е. определение серверного объекта никак не привязано именно к all.spawn'у, а требуется только полное имя объекта.

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

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

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

panzyuza

Странный вопрос из категории ФАК'овых.

(исходя из исходного вопроса) Если тебе известна секция иль стори_ид иль еще какой признак искомого предмета - при итерации по рюкзаку ГГ иль напрямую ( oItem = db.actor:object("kolbasa") ) - получаешь клиентский объект предмета (oItem). Ну и банальное oItem:name() тебе выдаст полное имя предмета => kolbasa23456. Т.е. то, которое было задано в all.pawn'e иль присвоено при скриптовом спавне (к секции пристыковывается игровой идентификатор). Ву-а-ля!

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

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

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

Просто не задумывалься раньше по поводу данного имени.Как то через spawn спавнил, или для скриптов для уникального обьекта создавал специальную секцию.

Все познается со временем, при наличии желания познавать. Главное - не навешивать себе (и другим) шоры, искуственно сужая путь к знаниям и навыкам.

(флуд заканчиваем)

--/ Artos

 

Добавлено через 111 мин.:

Я так понял, что в момент спавна нпс он автоматически береться под смарттерейн,если он свободен.Просто сделал смарт на Затоне для бандитов, поставил секцию респавна рядом.Но бандиты. которые респавнились, уходят и в смарт не идут.Способ конечно же через логику прописать им данный смарт, и сделать специальную секцию для респавнера.Но все таки непонятно, почему стандартные секции сталкеров не работают для этого?Смарт на основе схемы general_lager.Все необходимые предустановки для локации в конфигах сделал.

Посмотри на название топика - это по ТЧ (SHoC).

Если твой вопрос по ЗП (судя по Затону) - переадресуй вопрос в соотв.топик.

И если что-то не так работает - то значит что-то не так сделал/не доделал. А что(?) - тут нет кашпировских, чтобы по неведомым кодам судить ...

--/ Artos

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

По моему вопросу:

Kirag: Что-то типа:
if self.object:section() == "что-там-нужно" then
    if self.object:position():distance_to(db.actor:position()) <= радиус_действия then
        zombie_insect(self.object)
    end
end

Предполагается, что функция вписана в bind_monster.script.

Все работает. Притягивание там реализовано толчками (импульсами) - хитами. Так как и говорил Artos

Если со скриптами не в ладах - то так и напиши
Ага, не в ладах.

 

Спасибо, вопрос закрыт.

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

Мой архив

Сталкером не занимаюсь.

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

Кто нибудь в курсе, как в ЛВР сделано так, что все метки которые отражаются на миникарте, отражаются в ПДА..?

FANAT.gif

Мой канал на ютабчике... / Недельки из жизни фаната STALKER'a / Клуб 'Фанат Отчуждения'

Я нет-нет, а думаю, может я неправильно жил, надо ж брать деньги у богатых и давать их бедным, а таким как ты давать по морде, шоб у мире была красота и гармония.(с)Ликвидация

Всё в порядке, всё нормально, я беру тебя с собой, я беру тебя с собой. В тёмный омут головой.(с)Смысловые Галлюцинации

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

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

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

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

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

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

Войти

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

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

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