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

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


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

А что в них не так ?

 

agro_naem_ohr_ и _task в начале и в конце прицепляются к camp_center из center_point.

Если не найдено - цепляется просто agro_naem_ohr_, если и это не найдено - в зависимости от того, что у него в скриптах, подставляется "nil", "default_simulation_path" или непись выбрасывается из смарта, и получает опять же "default_simulation_path". И начинает просто тыкаться в рэндомном направлении.

Есть движок с правками. Одна из них делает равнозначные слоты для стволов. Вопрос: Можно ли исправить вылет когда например в слот кладешь АК-74 или тот-же ТОЗ-34? Видимо дело в клетках, вот как их регулировать в конфигах оружия..

Изменено пользователем Macromelyan
  • Неравнодушный сталкер
@Macromelyan, В ,wpn прописан слот и размер иконки. Кол. клеток, вопрос к автору правок bin.
  • Спасибо 1

Хемуль36рус, следует проверить в config\misc\smart_terrain_presets.ltx, добавлена ли нужная группировка для данной локации (по умолчанию - нет)

 

Macromelyan, количество клеток в слоте редактируется в config\ui\inventory_new.xml (_16), теги dragdrop_ (при редактировании - для соответствия координатам в файле, делается скриншот инвенторя с разрешением 1024х768, да и почти все файлы ui\ настроены под это разрешение), для рюкзака флаг group_similar="0" - отключает "стакуемость" предметов.

  • Спасибо 1
  • Согласен 1

Хемуль36рус, кстати, да - стоит проверить доступность смарта и собственно уровня для тех наймов. Впрочем, уже обсуждалось.

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

Expression : !lst.empty()
Function : CHudItem::animGet
File : E:\stalker\sources\trunk\xr_3da\xrGame\HudItem.cpp
Line : 295
Description : shoot1

 


Вылет стабильно происходит, если поравняться с остановкой напротив АТП (и, соответственно, эта "линия вылета" тянется от одного конца карты, до другого). 

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

Ну наверно игра не находит в худ-модели какого-то оружия анимации shoot1.

Смотри соответствие заданных анимаций в конфиге и в модели оружия.

Во многих шутерах есть 2 способа переходить в режим прицеливания:

1. Игровой персонаж переходит в режим прицеливания при зажатии правой клавиши мыши, выходит при отпускании.
2. Игровой персонаж переходит в режим прицеливания при клике правой кнопкой мыши, выходит при повторном клике.

Возможно ли сделать в сталкере второй режим? Как-то руке тяготит удерживать правую, щелкать левую и водить по столу

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

@TheDeath, второй режим есть только в ЧН/ЗП. Он включается консольным параметром wpn_aim_toggle.

  • Спасибо 1

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

Прописывала "combat_ignore_cond = always", похоже это не то, что нужно((

 

 

use_wpn = true в [meet@что_там_у_него] ?

 

Да, мне бы хотелось, чтобы у человека была возможность защищаться от монстров, поэтому в логике (как у многих из тех, кого спавню скриптом):

[meet]
use = true
use_wpn = true
meet_talk_enabled = true

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

Прописывала "combat_ignore_cond = always", похоже это не то, что нужно((

Пропиши "combat_ignore_cond = {-имя_твоего_поршня =fighting_actor} и с врагами можно говорить, если конечно, у них прописан хоть один диалог. А когда надо будет, чтобы они стреляли, выдай этот твой поршень - и все.

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

Довольно сложно ответить. Надо эту самую LA под рукой иметь, либо найти актуальный файл логики этого самого торговца, в оригинале это был \config\scripts\esc_trader.ltx, узнается из allspawn.

Файл торговли, который указывается в этой самой логике,

внезапно, trade_manager.script, xr_logic.script и биндер торговца (кто он там в LA - непись или монстр ?)

 

Понятно, что все это есть под рукой того, кто непосредственно что-то делает именно с LA, и вряд-ли у тех, у кого другие интересы.

  • Спасибо 2

--[[ ----------------------------------------------------------------------------------------------


File : bind_trader.script
Description: Trader binding (Sidorovich)
Copyright : 2012 © LA-team
Author : ...
Editors :
Last edit : 11.07.2013 [...]
--]] ----------------------------------------------------------------------------------------------

--/ -----------------------------------------------------------------
--/ VARIABLEs
--/ -----------------------------------------------------------------
local tDbgName = {}
local bDebug = false --/ false|true enabled\disabled debug mode
--/ --------------------------
local sModule = script_name()
--/ -----------------------------------------------------------------
local log = function(fmt, ...) _G.log(sModule..":"..tostring(fmt), ...) end
--/ -----------------------------------------------------------------
function InitDebug() --/#+#
if db.tDbgName then
tDbgName = db.tDbgName
bDebug = true
end
end
--/ -----------------------------------------------------------------
--/ Trader binding - registering of objects in binder
--/ -----------------------------------------------------------------
function bind(obj)
if obj:clsid() == clsid.script_trader then
obj:bind_object( trader_binder(obj) )
end
end
--/ -----------------------------------------------------------------------------------------------
class "trader_binder" (object_binder)
--/ -----------------------------------------------------------------------------------------------
function trader_binder:__init(obj) super(obj)
self.loaded = false
self.first_update = true
self.obj_id = obj:id() --/#+#
self.obj_cid = obj:clsid() --/#+#
self.log = bDebug and tDbgName[obj:name()] --/#+# for debug!
end

function trader_binder:reload(section)
object_binder.reload(self, section)
end

function trader_binder:reinit()
object_binder.reinit(self)
db.storage[self.obj_id] = {}
self.st = db.storage[self.obj_id]
db.add_obj(self.object,self.obj_id,self.obj_cid)
end

function trader_binder:net_spawn(server_object)
if not object_binder.net_spawn(self, server_object) then
return false --/>
end
local se_obj = alife():object(self.obj_id) --/ full server object
if not se_obj then
abort("%s:net_spawn:NPC=[%s/%s],server_object=NIL:<%s>", sModule, self.object:name(), self.obj_id, "Error!")
return true --/>
end
--if self.log then log("net_spawn:NPC=[%s/%s],ID=[%s],alive=(%s)", self.object:name(), Get_CharName(self.object), self.obj_id, self.object:alive(), "") end --/#~#
if self.object:alive() then
self:set_callbacks() --/< all CALLBACKs set here
xr_gulag.setup_gulag_and_logic_on_spawn(self.object, self.st, se_obj, modules.stype_trader, self.loaded)
end
event("npc_spawn"):trigger({obj=self.object,obj_id=self.obj_id,obj_cid=self.obj_cid,se_obj=se_obj,binder=self}) --/#+#>
return true --/>
end

function trader_binder:net_destroy()
if self.st then
event("npc_destroy"):trigger({obj=self.object,obj_id=self.obj_id,obj_cid=self.obj_cid}) --/#+#>
if self.st.active_scheme then
xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "net_destroy")
end
end
self:clear_callbacks()
db.del_obj(self.object,self.obj_id,self.obj_cid)

object_binder.net_destroy(self)
end

function trader_binder:update(delta)
object_binder.update(self, delta)

local oNPC = self.object
if self.first_update then
self.first_update = false
if not oNPC:alive() then
self:clear_callbacks()
end
end
event("mob_update_dbg"):trigger({binder=self}) --/#+#> for debug

if oNPC:alive() then
if oNPC:is_talk_enabled() then
oNPC:set_tip_text("character_use")
else
oNPC:set_tip_text("")
end
trade_manager.update(oNPC) --/ trading update

if self.st.active_section then
xr_logic.issue_event(oNPC, self.st[self.st.active_scheme], "update", delta)
end
else
oNPC:set_tip_text_default()
end
event("npc_update"):trigger({obj=self.object,obj_id=self.obj_id,delta=delta}) --/#+#>
end

function trader_binder:net_save_relevant()
return true
end

function trader_binder:save(packet)
event("npc_save"):trigger({obj=self.object,obj_id=self.obj_id}) --/#+#>
set_save_marker(packet, "save", false, sModule, self.object)
object_binder.save(self, packet)
xr_logic.save_obj(self.object, packet)
trade_manager.save(self.object, packet)
set_save_marker(packet, "save", true, sModule, self.object)
end

function trader_binder:load(reader)
self.loaded = true
set_save_marker(reader, "load", false, sModule, self.object)
object_binder.load(self, reader)
if reader:r_eof() then
abort("load:SAVE_FILE_IS_CORRUPT:Obj=[%s],ID=[%s]:<%s>", self.object:name(), self.object:id(), "Error!")
end
xr_logic.load_obj(self.object, reader)
trade_manager.load(self.object, reader)
set_save_marker(reader, "load", true, sModule, self.object)
event("npc_load"):trigger({obj=self.object,obj_id=self.obj_id}) --/#+#>
end

--/------------------------------------------------------------------
--/ CALLBACKs
--/------------------------------------------------------------------
function trader_binder:set_callbacks()
self.object:set_callback(callback.patrol_path_in_point, self.waypoint_callback, self) --/#?# do we need it?
end

function trader_binder:clear_callbacks()
self.object:set_callback(callback.patrol_path_in_point, nil)
end

function trader_binder:waypoint_callback(obj, action_type, index)
if self.st.active_section then
-- log("waypoint_callback:action_type=[%s/%s]:[%s]", action_type, index, ">") --/#~#
xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "waypoint_callback", obj or self.object, action_type, index)
end
end
--/------------------------------------------------------------------------------------------------

 

Этого хватит, или всё перечисленное надо. Всё перечисленное не входит в одно сообщение :)

Если что надо, предоставим ;)

  • Спасибо 2

LA

http://rghost.ru/private/59682551/f8d6d58ea059f21bbbdc2b91d2df996b 

 

Кстати вот если бы кто убрал лишнею пачку пистолетных патронов выпадающею с трупов, было бы вообще здорово :)
Сюрпрайз от алпака :unsure: 
Пистолетные патроны всего навсего надо вписать в предметы запрещённые в выпадения с трупов.
Тогда бы выпадало сколько прописано.
Обычно в Сталкере это в death_manager.script пишут.
Ну это в Сталкере, а тут фиг его знает куда и как писать.

 

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

Существует ли такая функция - "Проверка, есть ли у ГГ определенный инфопоршень?"
 
db.actor:has_info( "определенный_инфопоршень" )
И, соответственно, db.actor:dont_has_info()

А также alife():has_info( 0, "определенный_инфопоршень" ) - даже когда самого актора нет. dc

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

Надо. Можно архивом куда-нибудь положить.

 

upd: Мда... Это надолго...

Причем где у них файл логики торговца - непонятно.

Тоже искал без толку :wacko: косякнул где то и Lost Alpha стала вылетать при загрузки самой игры

Удалил всю gamedata и установил ранее сохранённую. Новую игру начал и прошёл основные КВ на Кордоне без сохранений.

И о чудо!!! Всякий раз проходя границу полигона ассортимент у Сидора менялся. Проверял скупая бинты и делал скрины.

Получается что игрок прописывая сейв блокирует логику торговца?

Видимо Дэзик и Ко специально так сделали (или косяк)

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

Кто может подсказать, в чем дело.
Ставлю метку на рестриктор через нажатие кнопки в главном меню, все прекрасно работает, метка ставится.


function test()
   local obj = alife():object( "generators_mess_doc_2" )
   if obj then
        level.map_add_object_spot_ser(obj.id, "find_item_location", "Неизвестный КПК")
  end
end


 
Пытаюсь сделать то же самое, вызвав функцию в xr_effects из рестриктора:

function end_peleng()
 local obj = alife():object( "generators_mess_doc_2" )
 if obj then
   level.map_add_object_spot_ser(obj.id, "find_item_location", "Неизвестный КПК")
 end
 amk.g_start_timer("pel",0, 0, 3)
end


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

Вывести в лог что-нибудь сразу после if obj then
dc

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

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

По вопросу об LA:

 

Ну, то есть, понятно, что либо config\scripts, либо config\scripts\escape, cordon_sidor.ltx, но вытаскивать конкретный вариант надо из allspawn.

 

сам конфиг торговли - скорее всего trade_trader.ltx - если выше я с логикой угадал. В файле вроде правильно все.

 

Скрипты они, конечно, тупо переписали "венгеркой", оставив все основные глюкобаги, но зато теперь кто попытается разобраться - конкретно затрахается. Добрые люди... А ведь могли и через обфускатор прогнать, чтоб невосстановимо было. И вообще db* банально триплдесом зашифровать, а в движке расшифровывать. Сеансовым ключом, получаемым по инету при запуске...

 

Однако, вопрос к залу: там логи совсем отключены, что-ли ? Было б что не так в конфигах - должен был бы сругаться.

Изменено пользователем Dennis_Chikin
  • Нравится 1

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

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

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

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

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

Войти

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

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

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