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

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

@AndrewMor

Ты бы лучше, вместо прямой работы с нет-пакетом, использовал какой-нить модуль, ну хотя бы того же Artos'а. Меньше проблем бы было...

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

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

[logic]
active = ph_door@locked

[ph_door@locked]
locked = true
snd_open_start = trader_door_unlock
on_info = {+esc_trader_can_leave} ph_door@closed %=play_snd(device\door_servomotor)%

[ph_door@closed]
closed = true
locked = false
on_use = ph_door@open %-esc_close_door%
snd_open_start = trader_door_open_start
snd_close_start = trader_door_close_start
snd_close_stop = trader_door_close_stop

[ph_door@open]
closed = false
locked = false
on_use = ph_door@closed
on_info = {+esc_close_door} ph_door@closed
snd_open_start = trader_door_open_start
snd_close_start = trader_door_close_start
snd_close_stop = trader_door_close_stop

 

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

@aka_sektor, наверное, имеешь в виду, разблокированы? Тогда так

[logic]

active = ph_door@closed
Изменено пользователем naxac
  • Спасибо 1
  • Согласен 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

@naxac блин, думал только дверью обойтись, но если её пробежать, голос Сидоровича в башке.

Может подскажешь, что в логике Сидоровича изменить, чтобы пропустить туториал?

 

[logic]
active = {+esc_trader_hello_played} mob_trader@new_idle1, mob_trader@new_start_wait
on_trade = mob_trade@new
trade = misc\trade_trader.ltx

; ------------------------------------------------------------------------------------------------------
; ÑÒÀÐÒ
; ------------------------------------------------------------------------------------------------------
; Æäåì íåìíîãî
[mob_trader@new_start_wait]
anim_global = chair_hack_idle
on_timer = 5000| mob_trader@new_start_intro1
can_talk = false
tip_text = 

;Ïîäâèãàåìñÿ ê èãðîêó
[mob_trader@new_start_intro1]
anim_global = chair_hack_to_desk
on_signal = animation_end| mob_trader@new_start_intro2 %+esc_trader_hello_played%
can_talk = false
tip_text =

;Ïåðâàÿ ôðàçà "ÿ òåáÿ ñïàñ..."
[mob_trader@new_start_intro2]
anim_global = first_phrase
anim_head	= first_phrase
sound_phrase = trader_monolog1
on_signal = animation_end| mob_trader@new_start_intro3
can_talk = false
tip_text =

; Æäåì íåìíîãî, âêëþ÷àåì óïðàâëåíèå
[mob_trader@new_start_intro3]
anim_global = desk_idle
tip = tips_esc_trader_how_to_talk
on_info = {=talking} mob_trader@new_idle1
on_timer = 5000 | mob_trader@new_start_intro4


; Ãîâîðèì âòîðóþ ôðàçó (÷òî ñòîèøü? ïîäõîäè)
[mob_trader@new_start_intro4]
anim_global = desk_talk
anim_head = normal
sound_phrase = trader_come_here2
on_signal = sound_phrase_end | mob_trader@new_idle1
;on_info = {=talking} mob_trader@new_idle1 ; îáðûâàòü ôðàçó
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played%

;----------------------------------
;------------- Idle ---------------
;----------------------------------

;Îñíîâíîé idle (1) - çà ñòîëîì
[mob_trader@new_idle1]
anim_global = desk_idle
on_signal = animation_end| {~25} mob_trader@new_idle1_to_idle3, {~50} mob_trader@new_idle1_to_idle5, {~75} mob_trader@new_idle1_to_idle2, mob_trader@new_idle1_to_idle1
on_info = {=talking} mob_trader@new_idle1_to_idle3
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played%
on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait

; Idle (2) - ïî äèàãîíàëè
[mob_trader@new_idle2]
anim_global = diagonal_idle
on_signal = animation_end| {~25} mob_trader@new_idle2_to_idle3, {~50} mob_trader@new_idle2_to_idle4, {~75} mob_trader@new_idle2_to_idle1, mob_trader@new_idle2_to_idle2
on_info = {=talking} mob_trader@new_idle2_to_idle3
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played%
on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait

; Idle (3) - îòêèíóâøèñü íà ñïèíêó
[mob_trader@new_idle3]
anim_global = chair_hack_idle
on_signal = animation_end| {~30} mob_trader@new_idle3_to_idle2, {~70} mob_trader@new_idle3_to_idle1, mob_trader@new_idle3_to_idle3
on_info = {=talking} mob_trader@new_talking
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played%
on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait

; Idle (4) - çà êîìïüþòåðîì
[mob_trader@new_idle4]
anim_global = compute_idle
on_signal = animation_end| {~40} mob_trader@new_idle4_to_idle2, mob_trader@new_idle4_to_idle4
on_info = {=talking} mob_trader@new_idle4_to_idle2
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played%
on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait

; Idle (5) - ÷èòàåò
[mob_trader@new_idle5]
anim_global = listen_idle
on_signal = animation_end| {~45} mob_trader@new_idle5_to_idle1, mob_trader@new_idle5_to_idle5
on_info = {=talking} mob_trader@new_idle5_to_idle1
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played%
on_actor_dist_ge_nvis2 = 12 | mob_trader@new_wait
;----------------------------------
;--------   Àâòîïåðåõîäû   --------
;----------------------------------

; Ñòîë - ñòîë (ïðîìåæóòî÷íàÿ)
[mob_trader@new_idle1_to_idle1]
anim_global = desk_idle
on_signal = animation_end| mob_trader@new_idle1

; Äèàãîíàëü - äèàãîíàëü (ïðîìåæóòî÷íàÿ)
[mob_trader@new_idle2_to_idle2]
anim_global = diagonal_idle
on_signal = animation_end| mob_trader@new_idle2

; Ñïèíêà - ñïèíêà (ïðîìåæóòî÷íàÿ)
[mob_trader@new_idle3_to_idle3]
anim_global = chair_hack_idle
on_signal = animation_end| mob_trader@new_idle3

; Êîìïüþòåð - êîìïüþòåð (ïðîìåæóòî÷íàÿ)
[mob_trader@new_idle4_to_idle4]
anim_global = compute_idle
on_signal = animation_end| mob_trader@new_idle4

; ×èòàåò - ÷èòàåò (ïðîìåæóòî÷íàÿ)
[mob_trader@new_idle5_to_idle5]
anim_global = listen_idle
on_signal = animation_end| mob_trader@new_idle5

;----------------------------------
;----- Ïåðåõîäû  ìåæäó idle-ìè ----
;----------------------------------

; Äèàãîíàëü - êîìïüþòåð
[mob_trader@new_idle2_to_idle4]
anim_global = diagonal_to_compute
on_signal = animation_end| mob_trader@new_idle4

; Êîìïüþòåð - äèàãîíàëü
[mob_trader@new_idle4_to_idle2]
anim_global = compute_idle_to_diagonal
on_signal = animation_end| mob_trader@new_idle2

; Äèàãîíàëü - ñïèíêà
[mob_trader@new_idle2_to_idle3]
anim_global = diagonal_to_chair_hack
on_signal = animation_end| {=talking} mob_trader@new_talking, mob_trader@new_idle3

; Ñïèíêà - äèàãîíàëü
[mob_trader@new_idle3_to_idle2]
anim_global = chair_hack_to_diagonal
on_signal = animation_end| mob_trader@new_idle2

; Ñòîë - ñïèíêà
[mob_trader@new_idle1_to_idle3]
anim_global = desk_to_chair_hack
on_signal = animation_end|{=talking} mob_trader@new_talking, mob_trader@new_idle3

; Ñïèíêà - ñòîë
[mob_trader@new_idle3_to_idle1]
anim_global = chair_hack_to_desk
on_signal = animation_end| mob_trader@new_idle1

; Ñòîë - äèàãîíàëü
[mob_trader@new_idle1_to_idle2]
anim_global = desk_to_diagonal
on_signal = animation_end| mob_trader@new_idle2

; Äèàãîíàëü - ñòîë
[mob_trader@new_idle2_to_idle1]
anim_global = diagonal_to_desk
on_signal = animation_end| mob_trader@new_idle1

; Ñòîë - ÷èòàåò
[mob_trader@new_idle1_to_idle5]
anim_global = desk_to_listen
on_signal = animation_end| mob_trader@new_idle5

; ×èòàåò - ñòîë
[mob_trader@new_idle5_to_idle1]
anim_global = listen_to_desk
on_signal = animation_end| mob_trader@new_idle1


;--------------------------------------
;------------- Ðàçãîâîð ---------------
;--------------------------------------

[mob_trader@new_talking]
anim_global = chair_hack_talk
anim_head = normal
on_info = {!talking} mob_trader@new_idle3

;--------------------------------------
;------------ Òîðãîâëÿ ----------------
;--------------------------------------

[mob_trade@new]
anim_global = chair_hack_idle
on_info = {=trading =trade_exchanged} mob_trader@new_trade_exchanged
on_info2 = {!trading =trade_exchanged} mob_trader@new_trade_good
on_info3 = {!trading !trade_exchanged} mob_trader@new_trade_bad

[mob_trader@new_trade_bad]
;anim_global = diagonal_talk
anim_global = chair_hack_idle
anim_head = angry
sound_phrase = trader_bad_trade
on_signal = sound_phrase_end | mob_trader@new_idle2
on_actor_dist_ge_nvis = 12 | mob_trader@new_wait

[mob_trader@new_trade_exchanged]
;anim_global = diagonal_talk
anim_global = chair_hack_idle
anim_head = normal
sound_phrase = trader_exchanged
on_signal = sound_phrase_end | mob_trader@new_idle2
on_actor_dist_ge_nvis = 12 | mob_trader@new_wait

[mob_trader@new_trade_good]
;anim_global = diagonal_talk
anim_global = chair_hack_idle
anim_head = good
sound_phrase = trader_good_trade
on_signal = sound_phrase_end | mob_trader@new_idle2
on_actor_dist_ge_nvis = 12 | mob_trader@new_wait


;-------------------------------------
;---------- Ïðèâåòñòâèÿ --------------
;-------------------------------------

[mob_trader@new_hello]
anim_global = hello
anim_head = normal
sound_phrase = trader_hello_what_have_you_got
on_signal = animation_end | mob_trader@new_idle2

[mob_trader@new_bye]
on_actor_dist_ge_nvis = 12 |mob_trader@new_wait
anim_global = hello
anim_head = normal
sound_phrase = trader_bye
on_signal = animation_end | mob_trader@new_wait

[mob_trader@new_wait]
anim_global = diagonal_idle_short
on_actor_dist_le_nvis = 3 | {-esc_trader_hello_played} mob_trader@new_hello %+esc_trader_hello_played%
on_actor_dist_ge_nvis = 5 | {-esc_trader_bye_played +esc_trader_hello_played} mob_trader@new_bye %+esc_trader_bye_played%
on_actor_dist_ge_nvis2 = 12    | %-esc_trader_hello_played -esc_trader_bye_played%

 

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

@AndreySol, Я нашел уже готовый скрипт спавна аномалий. Вот и подумал, а почему бы и Радиацию рандомно не спавнить? А про модуль Артоса читал в свое время, но ничего тогда не понял :)

Сталкер - наше всё!

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

Ребят, спасайте! Не могу понять, это у меня баг или фича такая (хотя одно другому не мешает). В общем после попытки поднять раненого НПС он либо остается другом, либо через какое-то время становится врагом. Трабл в том, что я изначально дружелюбного сталкера, долговца, свободовца если вылечу, то он может стать врагом. Куда смотреть, что подкручивать? Есть мыслишки?

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

@aka_sektor, чтобы без "я тебя спас и в благородство играть не буду?". Вот так попробуй

active = mob_trader@new_idle1

  • Спасибо 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

@aka_sektor, это рестриктор в бункере, на месте спавна ГГ.

 

Вот этот: trader_zone_task

Скрытый текст

[logic]
active = sr_idle

[sr_idle]
on_actor_inside = {-esc_kill_gunslinger} nil %+esc_kill_gunslinger =run_postprocess(agr_u_fade)%

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

Удалить можно так:

Скрытый текст

local obj = alife():object("trader_zone_task")
if obj then
	alife():release(obj, true)
end

 

 

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

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий
12 часов назад, AndrewMor сказал:

А про модуль Артоса читал в свое время, но ничего тогда не понял

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

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

Как убрать рандом после воскрешения НПС? Имеется в виду фишка. когда вылеченный тобою НПС либо другом становится, либо врагом. Где копаться, подскажите пожалуйста.

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

@aka_sektor, в net_spawn актёра можно (в bind_stalker.script).

 

@_Sk8_AsTeR_, ни в одной из частей игры такого нет, что хоть за мод?

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

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

Здрасьте.

 

Существует ли в явном виде переменная, в которой хранится текущий вес предметов в инвентаре?

Есть ли способ чтения текущего веса, кроме прямого перебора или специальной функции в X-Ray Extensions?

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

Ссылка на комментарий
20 часов назад, AndreySol сказал:

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

Давно уже читал, но на тот момент не разбирался. А сейчас видать настал сей момент, когда все ж таки придется разбираться. Всему свое время, походу, мое время само ко мне пришло...

Сталкер - наше всё!

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

@naxac, если я правильно понял так:

 

 


function actor_binder:net_spawn(data)
	printf("actor net spawn")		

	level.show_indicators()

	self.bCheckStart = true
	self.weapon_hide = false -- ñïðÿòàíî èëè íåò îðóæèå ïðè ðàçãîâîðå.
	weapon_hide = false -- óñòàíàâëèâàåì ãëîáàëüíûé äåôîëòîâûé ôëàã.

	if object_binder.net_spawn(self,data) == false then
		return false
	end

	db.add_actor(self.object)
	
	if self.st.disable_input_time == nil then
		level.enable_input()
	end

	self.weather_manager:reset()
--	game_stats.initialize ()

	if(actor_stats.add_to_ranking~=nil)then
		actor_stats.add_to_ranking(self.object:id())
	end

	--' Çàãðóæàåì íàñòðîéêè äðîïà
	death_manager.init_drop_settings()

	return true

	--' Удаляем рестриктор в бункере Сидоровича,
	--' который затемняет экран
local obj = alife():object("trader_zone_task")
if obj then
	alife():release(obj, true)
end
end

 

 

UPD: похоже что нет...

 

 


Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ...alker shadow of chernobyl\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)

 

 

UPD2: вот так не вылетает, но затемнение осталось.

 

 


function actor_binder:net_spawn(data)
	--' Удаляем рестриктор в бункере Сидоровича,
	--' который затемняет экран
local obj = alife():object("trader_zone_task")
if obj then
	alife():release(obj, true)
end

	printf("actor net spawn")		

	level.show_indicators()

	self.bCheckStart = true
	self.weapon_hide = false -- спрятано или нет оружие при разговоре.
	weapon_hide = false -- устанавливаем глобальный дефолтовый флаг.

	if object_binder.net_spawn(self,data) == false then
		return false
	end

	db.add_actor(self.object)
	
	if self.st.disable_input_time == nil then
		level.enable_input()
	end

	self.weather_manager:reset()
--	game_stats.initialize ()

	if(actor_stats.add_to_ranking~=nil)then
		actor_stats.add_to_ranking(self.object:id())
	end

	--' Загружаем настройки дропа
	death_manager.init_drop_settings()

	return true
end

 

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

@aka_sektor, попробуй так:

Скрытый текст

        if not has_alife_info("твой инфо") then
         for a=10,65535,1 do
          local obj=alife():object(a)
          if obj and string.find(obj:name(),"trader_zone_task") then
           alife():release(obj,true)
          end
         end
         db.actor:give_info_portion("твой инфо")
        end    

 

Сталкер - наше всё!

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

@aka_sektor, наверное, рестриктор успевает сработать,, т.к. клиентский объект живет ещё какое-то время после удаления серверного. Попробуй в __init этот код запихать. Хотя, по-моему, проще его из спавна в ручную вырезать, все равно же новую игру начинаешь...

  • Согласен 2

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий
В 09.06.2019 в 04:27, naxac сказал:

ни в одной из частей игры такого нет, что хоть за мод?

Соль да дмх...

Понимаю что ДМХ тут не обсуждается, но надеялся что это фишка соли такая, даже читал о ней в описании. Но не нашел куда копать

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

Всем привет! Появилась необходимость распарсить xml. Единственный наиболее удобный для меня вариант, который вспоминается это LuaXML. В версии xrLuaFix для ТЧ я так понял нет функции require, тогда как быть?

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

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