Правила сайта FAQ Мини-чат
Для добавления необходима авторизация!
15.11.2024, Пятница, 14:30


Модератор форума: romale  
Разборочная комната ТЧ
Сообщение #1
Вы задаёте интересующий вас вопрос и тот, кто может вам на него ответить, пишет свой ответ. Правила темы:

1. Прежде чем задать вопрос, желательно прочитать все предыдущие страницы темы. Даже если вы не найдете там нужного ответа - я уверен, вы узнаете много нового. Второй вариант - воспользоваться поиском по ключевому слову.

2. Вы можете задавать вопросы, только непосредственно касающиеся создания модификаций и редактирования файлов игры

3. Личные вопросы не допускаются

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

5. Отвечать вы можете только в том случае если уверены в правильности ответа, если не знаете - просто не отвечайте. Авторы неправильных, вводящих в заблуждение ответов будут наказываться.

6.Соблюдайте грамотность и правильность построения вопросов и ответов, во избежание их удаления. "Спасибо / пожалуйста / не знаю" и прочие односложные и
не несущие смысловой нагрузки сообщения, будут удаляться немедленно, а их авторы - наказываться.

Основная цель темы - помочь новичкам-модостроителям, второстепенная - свести на нет тенденцию создания новых тем по каждому интересующему новичков вопросу.

Уважение: 133
Награды: 32
Сообщение #741
Цитата (Frankenshtayn)
я это не проверял, но слышал
Сейчас проверю))))
Сообщение #742
:) Парни, ну что вы "простыни ни о чём" разложили почти на страницу? В первом своём посте
( http://stalker-gamers.ru/forum/73-364-31189-16-1380212239) по поводу вопроса Giznyhvatit я уже всё описал - и функции и последствия.
Ну, хоть под спойлер коды прячьте. А? И тут тема по "ковыряниям в файлах ТЧ", а не по модингу ( в частности, уже на функции перешли, логику, скриптинг и диалоги). Предлагаю плавно перейти с этим туда.
ЗЫ: Просьба к админам, перенести посты данного толка в соответствующую тему (создайте её, если нет) , а тут почистить.
Или поправьте меня, если я не прав.

Сообщение отредактировал Korpus - Пятница, 27.09.2013, 00:44


Уважение: 169
Награды: 31
Облучение: 0%
Сообщение #743
Цитата (Frankenshtayn)
экшен надо вставлять в текст "произносимый" ГГ,

1) Вобщем так, экшен можно ставить хоть в конец диалога без разницы работает!
2)Третья функция рабочая, я на ней и пробовал!
3)ГГ стоял рядом с удаляемым нпс все работает, исчезает на глазах!
4)удаляется нпс заспавненый через скрипт.
5)спавненый через алл.спавн нпс не удалился

Огромное спасибо за помощь всем!

Добавлено (27.09.2013, 01:15)
---------------------------------------------

Цитата (Korpus)
И тут тема по "ковыряниям в файлах ТЧ", а не по модингу

2. Вы можете задавать вопросы, только непосредственно касающиеся создания модификаций и редактирования файлов игры
Сообщение #744
Друзья, всем привет. Korpus, прав! Можно было-бы создать тему именно по модингу. А то большинству людей не понятно, что мы тут за каракули пишем? Тем более что "кучка" людей , интересующихся такими вопросами уже есть и тема не будет мертвой.
Вот такой вопрос: как присвоить заспавненному скриптом НПС-у id? Будет ли работать id по имени из секции в профиле "guk"вот так: 10015 = "guk". Или же необходима специальная функция спавна с присвоением id?

Уважение: 31
Награды: 3
Облучение: 0%
Сообщение #745
Ну а зачем делать по 10 тем, где обсуждается впринципе одно и тоже? Тема и звучит - разборочная комната, где можно задать вопрос как что то сделать, какой написать скрипт и т.д
Единственное что, это разделение - на ТЧ и ЗП, но тут думаю понятно почему...

По поводу удаления, возможно удалить все что угодно, зная лишь только его имя. Ф-ия уже давалась выше. Зачем же мудрить с ID и тому подобным? Закроем этот вопрос.

Цитата (butrikA)
как присвоить заспавненному скриптом НПС-у id?

id назначает сама игра при спавне. его можно только получить.
Может быть sid нужен?
Сид можно прописать в алл спавне. Или если стоит АМК мод, через функцию нет пакетов:
Например спавн НПС с присвоением ему sid-а:
Код
function spawn_npc()
local obj = alife():create("ozersky",vector():set(-158.317,0.840,-134.393),451237,3715)
local params = amk.read_stalker_params(obj)
params.sid = 30000
amk.write_stalker_params(params,obj)
end


Присвоенный sid будет 30 000.

Уважение: 650
Награды: 97
Облучение: 0%
Сообщение #746
Добрый день, хочу спросить возможно ли нанести хит нпс(у) с помощью функции? И второй вопрос есть какой нибудь код с помощью которого можно отнять здоровье у нпс? Если да подскажите его пожалуйста. :)
Сообщение #747
Giznyhvatit, нанести хит:
Код
function hit_npc(id)  
local npc = level.object_by_id(id)  
     if npc then  
       local h = hit()  
       h.power = 3  
       h.impulse = 3  
       h.draftsman = npc  
       h.direction = vector():set(0,0,0)  
       h.type = hit.fire_wound  
       npc:hit(h)  
     end  
end


Остается только передать в функцию id нужного НПС-а. При желании можно переделать на sid.
Ну и соотв. настроить как вам нужно параметры power и impulse. Значение 3 - это слишком много.

На 2 вопрос можно ответить с помощью первого. Нанесите небольшой хит и все.

Уважение: 650
Награды: 97
Облучение: 0%
Сообщение #748
Giznyhvatit, для использования с sid-ом, надо переделать строку:
Код
local npc = level.object_by_id(id)

На:
Код
local npc = level.object_by_sid(sid)

Также изменить (это уже больше "косметическое"...):
Код
function hit_npc(id)

На:
Код
function hit_npc(sid)


Ну и вызывать так (если вызов идет в том же файле, где лежит эта ф-ия):
hit_npc(sid), где вместо sid подставляем нужное число.

Иначе указываем файл с ф-ей:
файл.hit_npc(sid)

Уважение: 650
Награды: 97
Облучение: 0%
Сообщение #749
Цитата (volazar)
для использования с sid-ом, надо переделать строку
Огромное человеческое спасибо!
:)
Это снова я, вот что происходит: В игру захожу нормально, но как только подхожу к рестриктору (нужен для звук.смс к стати работал до этого ) происходит вылет...

Нужна помощь!

Сообщение отредактировал Giznyhvatit - Пятница, 27.09.2013, 14:55

Сообщение #750
Giznyhvatit,
а как и откуда вызываешь функцию? Если из рестриктора, то вызов должен выглядеть так:
Код
[logic]
active = sr_idle

[sr_idle]
on_actor_inside = %=hit_npc%

т.е. имя функции заключается в знак процента
сама функция естественно должна лежать в xr_effects.script
Веселый Роджер
Уважение: 936
Награды: 112
Сообщение #751
Цитата (Frankenshtayn)
а как и откуда вызываешь функцию?
Привет, функцию положил в свой скрипт, вызывал через акцион в диалоге. Решил пойти по другому пути, раз нпс нельзя удалить при разговоре с ним самим, пробую вывести его в оф. лайн. (стреляю в ногу исчезает). Думаю вывести его в офлайн при помощи хита, через функцию... пока вылет

Сообщение отредактировал Giznyhvatit - Пятница, 27.09.2013, 15:44

Сообщение #752
Giznyhvatit, :) я уже не знаю, как с Вами бороться... :D
http://youtu.be/KIsr4DK8HVo


хотя все прекрасно удаляется и без этих "танцев с бубном"
Веселый Роджер
Уважение: 936
Награды: 112
Сообщение #753
Цитата (Frankenshtayn)
я уже не знаю, как с Вами бороться

Спасибо конечно, а сразу нельзя было тыкнуть носом. Аж цельное видео сняли))). Я тут с кодом выставленным выше мучаюсь... А им смешно...))))))). Сейчас проверю ваш суповой набор... К стати это на тч 04 подходит?
Сообщение #754
Цитата (Giznyhvatit)
а сразу нельзя было тыкнуть носом.

Цитата (Frankenshtayn)

Giznyhvatit,
эти две функции рабочие на 100%
Код
function del_nps()
local sim = alife()
local se_obj = sim:story_object(888) --номер обьекта в game_stori_ids
if se_obj then
sim:release(se_obj, true)
end
end

Код
function del_chto-to()
local se_obj = alife():object("имя_секции_в_аллспавне")
if se_obj then
alife():release(se_obj, true)
end
end

хм... ну, вроде говорил, что эти функции рабочие o_O :D
ЗЫ... Да, это пробовалось на 04
Веселый Роджер
Уважение: 936
Награды: 112
Сообщение #755
Цитата (Frankenshtayn)
Да, это пробовалось на 04
Усе собрал в кучу))). Все отлично работает!
cool Респектище тебе) . А так же всем кто принял участие и помогал советами.
Сообщение #756
Всем, привет!
Цитата (Giznyhvatit)
раз нпс нельзя удалить при разговоре с ним самим

Это почему Вы так решили? Попробуйте вот так.



Терпение......
И все получится!

Сообщение отредактировал makdm - Суббота, 28.09.2013, 07:51


Уважение: 999
Награды: 31
Облучение: 0%
Сообщение #757
Цитата (makdm)
Это почему Вы так решили? Попробуйте вот так.
Добрый день а можно по подробней, пробовал ваш вариант, ничего не происходит, может я что то не так делал. покажите ваш пример. если не трудно, в спойлере макеты.
по правьте меня)))

Сообщение отредактировал Giznyhvatit - Суббота, 28.09.2013, 16:10

Сообщение #758
--мой диалог--

<phrase id="33333">
<text>otdai_33333</text>
<give_info>otdai_info_done</give_info>
<action>moi_dialog.otdai</action>
<action>end_dialog</action> -------------!!!!
<action>dialogs.break_dialog</action>
</phrase>
</phrase_list>
</dialog>
здесь нужно выдавать инфопоршень а не вызывать функцию.
пробуй так:

--мой диалог--

<phrase id="33333">
<text>otdai_33333</text>
<give_info>otdai_info_done</give_info>
<action>moi_dialog.otdai</action>
<give_info>end_dialog</give_info>
<action>dialogs.break_dialog</action>
</phrase>
</phrase_list>
</dialog>
Веселый Роджер
Уважение: 936
Награды: 112
Сообщение #759
Giznyhvatit, Добрый день!
А зачем Вы в логике делаете секцию? Нужно просто написать:

[walker]
path_walk = grom20_walk
path_look = grom20_look
on_info = {+end_dialog !_used} %=destroy_object%


Терпение......
И все получится!

Уважение: 999
Награды: 31
Облучение: 0%
Сообщение #760
Цитата (makdm)
Добрый день!
Ваш код прост, и очень мощный! :D А с помощью кода от Frankenshtayn можно регулировать время исчезновения! Вобщем оба кода отличные! Еще раз всем спасибо.

Сообщение отредактировал Giznyhvatit - Среда, 02.10.2013, 16:11

Поиск: