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

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


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

_Призрак_, лови - http://stalker-2.com.ua/Stalker-COP.exe файл до завтра держую

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

 

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

А насчет функции - кажись сам нашел, от это оно:

Проверка на заданный период времени

Время задается в минутах

Параметры: (time_shift:period_min)

time_shift - периодичность срабатывания

period - период срабатывания на котором мы получаем true

 

Примеры:

time_period(60:10) - возвращает true каждый час на протяжении первых 10 минут

 

 

И еще вопрос - а можно заспавнить один и тот же сквад сразу в нескольких количествах со старта? Потому что в start_position прописывается только один скавад и спавнится он один раз, а потом только если в респавн количество загонишь, то он постепенно набирается, а нужно чтобы сразу заселение было (это к предыдущему вопросу по заселению базы). А иначе придется прописывать несколько однотипных сквадов типа gar_a1_stalker_1_squad, gar_a1_stalker_2_squad.. ит.т.п.. что вроде тоже не есть хорошо...

А что собственно мешает?

Ты только посмотри чтобы у тебя не было одинаковых стори_айди и таргет_смарт был пуст

я создал нового НПС но с ним нельзя поговорить "Иди к старшему" как это исправить ?

вот профиль:

<specific_character id="zat_vagon" team_default="1">
        <name>Вагон</name>
        <icon>ui_inGame2_neutral_2_mask</icon>
        <map_icon x="1" y="0">
        </map_icon>
        <bio>Опытный сталкер. Детальная информация отсутствует.</bio>

        <class>zat_vagon</class>
        <community>stalker</community>
        <terrain_sect>stalker_terrain</terrain_sect>
        <snd_config>characters_voice\human_02\stalker\</snd_config>

        <rank>35</rank>
        <reputation>0</reputation>

        <visual>actors\stalker_neutral\stalker_neutral_2_mask</visual>
        <supplies>

        [spawn] \n
        stalker_outfit_barge =1 \n
        wpn_ak74 \n
         ammo_5.45x39_fmj = 1 \n
        wpn_fort \n
        ammo_9x18_fmj = 1 \n
        grenade_rgd5 = 1 \n

#include "gameplay\character_items_2.xml"
#include "gameplay\character_food.xml"
#include "gameplay\character_drugs_3.xml"
    </supplies>
#include "gameplay\character_criticals_4.xml"
                <start_dialog>zat_a2_stalker_barmen_start_dialog</start_dialog>
                <actor_dialog>vodka_quest_dialog</actor_dialog>
                <actor_dialog>vodka_quest_prines</actor_dialog>
                <actor_dialog>actor_break_dialog</actor_dialog>
#include "gameplay\character_dialogs.xml"
  </specific_character>

 

 

Крупные куски - под спойлер!

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

В ЗП сквады нужно создавать. Если нужен эксклюзив - сквад из одного человека. Хотя я помню когда еще не знал этого, спавнил в сдк непися, прописывал логику и диалоги и все работало...

А сталкервики на что? http://stalkerin.gameru.net/wiki/index.php...7_smart_terrain

 

А я тут такую картину интересную наблюдал - а сквады сами по себе пересобираются?

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

И еще вопрос - как сделать, чтобы при рандомном выборе неписей в скваде командиолм был именно тот, который нужен? Ну допустим я хочу сделать:

npc_random = опытный, новичек

npc_in_squad = 2, 3

И чтобы опытный был всегда командиром, а при такой схеме не получается, все равно рандом. А писать npc = опытный, новичек, новичек - неинтересно, потому как все время одинаковое кол-во будет...

2 вопроса:

1. Как проверить ранк непися?

2. Как проверить возможное количество патронов в оружии?

Clayman

Попробуй так:

Файл sim_squad_scripted.script

~580 строка

Замени:

for i = 1,random_count do
    local random_id = math.random(1, #random_spawn)
    self:add_squad_member(random_spawn[random_id], base_spawn_position, base_lvi, base_gvi,random_id)
end

на

self:add_squad_member(random_spawn[1], base_spawn_position, base_lvi, base_gvi,random_id)
for i = 2,random_count do
    local random_id = math.random(2, #random_spawn)
    self:add_squad_member(random_spawn[random_id], base_spawn_position, base_lvi, base_gvi,random_id)
end

И тогда у тебя всегда будет в отряде первый человек, прописанный в npc_random и он всегда будет командиром

 

Po-meceniy

local npc = ... --получаем любым способом НПС

local npc_rank = npc:rank()

В теории должно сработать

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

Как все нормальные люди решил перейти на universal ACDC, но далеко не ушёл: даже при распаковке ПЫСовского спавна вот такой сюрприз:

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

SibireaStalker,

не крайний патч на ЗП?

выложи свой алл.спавн и КД поправит распаковщик

abramcumner, чё его выкладывать-то..? Качал со сталкерина по этой ссылке.

И - да! - патч крайний (1602)

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

SibireaStalker, ну, скажем так, это у тебя не совсем пысовский спавн. Оригинальный спавн распаковывается на ура. Такая ошибка возникает при попытке разобрать спавн, который до этого был собран обычным acdc для ЗП. Этот acdc из-за немного глючного алгоритма паковки структур типа l8szbv пишет дополнительные байты в секции M_STATE смарт-каверов - вроде по два нулевых байта на одну бойницу. Я в un_acdc это исправил и поставил вылет при распаковке, если есть такие "левые" байты. Зря, наверное, мало ли людей будут вот так же распаковывать старые спавны. Как бы то ни было, в репозитории уже давно лежит un_acdc, в котором принудительный вылет типа state left заменен на вывод предупреждения.

На сталкерине un_acdc не очень часто обновляется, качай с репозитория по ссылке в моей подписи.

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

Камрады, если кто сталкивался, подскажите :

1. какая функция отвечает за сбор НПСами артефактов и где её найти ?

2. какая функция и в каком в каком файле отвечает за перевод ГГ в офлайн после гибели?

Изменено пользователем Серый Волк
Серый Волк, это не функция, это работа в смарте и путь в спавне который называется смарт_collector_1_walk (look), где в точках пути look прописаны анимации с детектором. А вот находясь на этой работе, собирают ли действительно нпс арты (т.е. перемещаются ли арты из аномальной зоны в инвентарь к нпс) я не заметил.
Серый Волк, по поводу 2 вопроса: почему ты решил, что после гибели гг переводится в оффлайн? Может там просто включается вид от 3 лица? Тогда же и появляется надпись "Игра окончена". Воспользуйся поиском, и сначала найди, где выводится эта надпись.

PavelSnork,

почему ты решил, что после гибели гг переводится в оффлайн

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

 

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

function _main()
    game_over_dlg = ui_game_over.dlg_game_over()
    level.start_stop_menu(game_over_dlg,true)
end

class "dlg_game_over" (CUIScriptWnd)

function dlg_game_over:__init() super()
   self:InitControls()
end

function dlg_game_over:__finalize()
end

function dlg_game_over:InitControls()
    local xml             = CScriptXmlInit()
    xml:ParseFile        ("ui_game_over.xml")
    xml:InitWindow        ("main",0,self)
     
    local st             = xml:InitStatic("background", self)
    self.scroll_view     = xml:InitScrollView("scroll", st)
    
    for nm = 0, 30 do
    local pth = "item_"..nm
    
     local itm = xml:InitStatic        (pth, nil)
    
    if itm ~= nil then
        xml:InitAutoStaticGroup        (pth..":auto", itm)
        self.scroll_view:AddWindow    (itm, true)
        else 
            break
        end
    end
    
    self.scroll_view:ScrollToBegin()
    self.min_pos = self.scroll_view:GetMinScrollPos()
    self.max_pos = self.scroll_view:GetMaxScrollPos()
    self.cur_pos = self.min_pos
    self.scroll_view:SetScrollPos(self.cur_pos)
    self.start_time = time_global()
    
end

function dlg_game_over:Update()
    CUIScriptWnd.Update(self)
    
    local dt = time_global()-self.start_time
    
    self.cur_pos = self.min_pos+dt*0.35
    
    self.scroll_view:SetScrollPos(self.cur_pos)
    
--    if(self.cur_pos>=(self.max_pos)) then
--            self:GetHolder():start_stop_menu(self,true)
--    end
    
end

function dlg_game_over:OnKeyboard(dik, keyboard_action)
    CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
    
    if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
    if dik == DIK_keys.DIK_ESCAPE then
            self:GetHolder():start_stop_menu(self,true)
        end
    end
    return true
end

 

здесь описаны функции которые должны происходить уже после смерти ГГ (выход в меню, нажмите клавишу и т.д.)

 

Видимо я неправильно выразился:

При ранениях и т.п. значение здоровья уменьшается до "0" и после этого ГГ умирает. Так вот, мне нужно найти функцию/конфиг которые отвечают за смерть ГГ, что бы значение не доходило до "0", а допустим до "0.1" и с этого момента запустить анимацию/постэффект и т.д.

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

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

Изменено пользователем Antnigm
Antnigm, по принципу того, что наступает ночь. И это правда так, т.к. ровно в 21:00 любой НПС который находится вне рестриктора sr_light (где прописывается возможность НПС юзать\не юзать фонари в любое время суток) включает фонарик. А уж движковое это или нет - лично я незнаю :).
iDreD, имелось ввиду - где-нибудь можно отрегулировать, чтобы, например, НПС одевали фонари раньше/все время их носили и включали позже? Название файла логики в общем интересует... Изменено пользователем Antnigm

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

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

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

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

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

Войти

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

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

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