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

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


Halford

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

(изменено)

Всем здорово...Ну, у меня вопрос:

<info_portion id="ui_pda_jobs_hide">

<disable>ui_pda_jobs</disable>

</info_portion>

 

Что означают зеленые строки и для чего они?

<info_portion id="global_dialogs">

<dialog>actor_break_dialog</dialog>

</info_portion>

 

Что за диалог в оранжевой строке?Это если получить инфопоршень и диалог как-то появится или что?

 

SanekKZN

Понятно, спасибо за полное пояснение.

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

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

shooting unicorn

Жми СЮДА.Там расписано, как спавнить переходы.

Или через all.spawn можно заспавнить(нужна новая игра):

[919]

; cse_abstract properties

section_name = level_changer

name = exit_to_lab_x14

position = 142.776275634766,0.65879100561142,348.384643554688

direction = 0,0,0

 

; cse_alife_object properties

game_vertex_id = 231

distance = 0

level_vertex_id = 447889

object_flags = 0xffffff3e

story_id = 6500

 

; cse_shape properties

shapes = shape0

shape0:type = box

shape0:axis_x = 2.22939944267273,0,0

shape0:axis_y = 0,4.83859968185425,0

shape0:axis_z = 0,0,2.22939944267273

shape0:offset = 0,0,0

 

; cse_alife_space_restrictor properties

restrictor_type = 3

 

; cse_alife_level_changer properties

dest_game_vertex_id = 2803

dest_level_vertex_id = 1782

dest_position = -1.81663203239441,-34.5705871582031,-8.4624662399292

dest_direction = 0,0,0

dest_level_name = lab_x14

dest_graph_point = start_actor_01

 

Поменяй на свои координаты и все.

---------------------------------------------------------------------------------------------------------------------------------

У меня вопрос:

Недавно у меня произошел такой вылет:

FATAL ERROR

 

[error]Expression : fatal error

[error]Function : out_of_memory_handler

[error]File : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp

[error]Line : 336

[error]Description : <no expression>

[error]Arguments : Out of memory. Memory request: 58611 K

 

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

 

Сообщение от модератора n6260
Изменено пользователем n6260

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Ни кто не знает функцию, которая восстанавливала жизни/оживляла бы мертвого НПС'а.?Id этого НПС'а известен.И вообще возможно ли такое?

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

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Не подскажите функцию, при вызове которой, Бандиты становились нейтралами по отношению к ГГ?

Jurok

Так вылетает.

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

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Вообщем я заспавнил метку в ПДА такой функцией:

local ObjId=0

function pda_killer_spawn()
    local obj= alife():create("pda_merc_killer_glav",vector():set(-223.700,-7.678,-129.688),17000,281)
    local text = "Типа текст"
    level.map_add_object_spot_ser(obj.id, "blue_location", text)
    ObjId=obj.id  
end

 

 

Потом пытался удалить эту метку такой функцией:

function delete_spot(ObId)
    if level.map_has_object_spot(ObId,"blue_location") then
    level.map_remove_object_spot(ObId,"blue_location")
   end
end

 

 

игра не вылетала, но и метка не удалялась...Не подскажите, как эту метку можно удалить?

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

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

меченый(стрелок)

Можно по подробнее...

То есть удалять метку так?:

function delete_spot(ObId)
    level.map_remove_object_spot(ObId,"blue_location")
end

 

 

 

------------------------------------------------------------------------------------

Так тоже не удаляется...

------------------------------------------------------------------------------------

меченый(стрелок)

Не совсем понял, что за описание и параметры...

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

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Я метку без присвоения id'а спавнил, а вот убрать не получается.

Real Wolf

Я в скриптах не очень, а функцию удаления где-то нарыл, но не рабочую.Других больнше не нашел.

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

Поделиться этим сообщением


Ссылка на сообщение

Как сделать так, чтоб когда подходишь к НПС в упор(или на расстоянии, когда можно завести разговор с НПС), диалог появлялся не при нажатии на (F), а чтоб сам появлялся.(Образно говоря: НПС сам жмет на (F), чтоб говорить :) )? ...Раньше юзал логику, но потом понял, что это скрипт нужен(наверно)...Так вот не подскажите, как описанное мною реализовать?

Сообщение от модератора n6260
А зачем? В бою, будешь разговаривать со всеми, кто подойдет близко?

 

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

n6260

Ну-у...Нужно просто такое сделать :) ...Не всем НПС, а одному какому-нибудь..Ну так что, знает кто-нибудь, как такое сделать?

Поделиться этим сообщением


Ссылка на сообщение

Ну так я и юзал и ЧН и ЗП - ни чего не нашел...

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

malandrinus

Так, уже что-то есть, спасибо :) .Можно поподробнее.. Как будет выглядеть функция полностью, вот так правильно?:

function function()
      db.actor:run_talk_dialog(npc)
end

 

 

А как ее использовать, на апдейт ставить?

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

Поделиться этим сообщением


Ссылка на сообщение

malandrinus

Я не совсем понял, как эту функцию вызывать.Пробовал засунуть в actor_binder:update(delta) - вылетает при загрузке.Вызывал таймер и стоял рядом с НПС - функция вызывалась, но диалог сам не появлялся(вылета не было).Вызывал эту функцию:

function function()
      db.actor:run_talk_dialog(npc)
end

 

 

Почему не срабатывает - не знаю :huh: .Как ее правильно вызывать то?

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

malandrinus

В скриптах мало, что понимаю - как будет выглядеть функция в полном виде - с заданным 2 обьектом?Типа такого?:

local npc = level.object_by_id( 006 ) --id Волка(Диалог должен появится сам именно с Волком)
function function()
      db.actor:run_talk_dialog(npc)
end

 

 

Я знаю, что я не правильно написал :) .Помогите правильно сделать?

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

Поделиться этим сообщением


Ссылка на сообщение

Попробовал такую функцию:

function on_talk()
  local npc = level.object_by_id( 006 ) --id Волка(Диалог должен появится сам именно с Волк
    db.actor:run_talk_dialog(npc)
end

 

 

Вызвал через таймер, стоял рядом с Волком, но диалог сам все равно не появляется ...Что не так я сделал?

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

ФеНиКс, Garry_Galler

Теперь заработало.

P.S

Garry_Galler

Я запутался.На СП вы мне говорили, что Sid, например Волка, = 6.Хотя может я и ошибаюсь...

верно подмечено - не пошли на пользу все наши уроки товарисчу на СП. :-)

Ну почему не пошли, я немного разобрался с клиентскими и северными обьектами и седня впервые сам дописал строку в функцию, правда не в то место, но.. :)

 

 

 

---------------------------------------------------------------------------

ФеНиКс

я бы ещё добавил проверку на расстояние вот так:...

Да я рестриктором воспользуюсь :)

А строка

 if npc:position():distance_to(db.actor:position()) < 3 then

проверяет дистанцию от всех НПС, я правильно понял?

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

Поделиться этим сообщением


Ссылка на сообщение
function give_sidor_2_bumazhki_sidora(first_speaker, second_speaker)
   for i=1,2 do
    dialogs.relocate_item_section(second_speaker, "2_bumazhki_sidora", "out")
  end
end

 

Если я отдам "2_bumazhki_sidora" Волку, то функция нормально сработает, а если отдам Сидрычу - получаю вылет с логом:

FATAL ERROR

 

[error]Expression : e_entity->ID_Parent == id_parent

[error]Function : xrServer::Process_event_reject

[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_process_event_reject.cpp

[error]Line : 24

[error]Description : 2_bumazhki_sidora27905

[error]Arguments : single_player

 

.Это как понимать?Типа Сидрыч особенный, ему дукументы противопоказано в руки брать :D

Поделиться этим сообщением


Ссылка на сообщение

Я вот хотел заспавнить предмет НПС в инвентарь(Сид и ид НПС не известен), так вот подскажите, что там нужно сделать?Преребирать айди и получать ид НПС:local obj_id = obj.id или как?

Поделиться этим сообщением


Ссылка на сообщение

malandrinus

Ну-у...Его секция известна и профиль...

 

Вот, что у меня пока что имеется:

Основная функция erlik'а:

local count = 0 
function uni_spawn_mnogo_itemsov(tab_items,tab_where)
    local pos, lvid, gvid, id
     for k, v in pairs(tab_items) do
       if type(tab_where)=='table' then
        for k, v in pairs(tab_items[k]) do 
        count = k
         for i=1, count do
         alife():create(v,vector():set(tab_where['x'],
          tab_where['y'],tab_where['z']),
          tab_where['lv'],tab_where['gv'])
           end
            end
             elseif type(tab_where)=='string' then 
               for k, v in pairs(tab_items[k]) do 
               count = k
                for i=1, count do
                 alife():create(v, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
                end
               end
                 elseif type(tab_where)=='number' then 
                  local obj = level_object_by_sid(tab_where)
                   if obj ~= nil then
                   id = obj:id()
                   pos = obj:position()
                   lvid = obj:level_vertex_id()
                   gvid = obj:game_vertex_id()
                    elseif obj == nil then
                     obj = alife():story_object(tab_where)
                       id = obj.id
                       pos = obj.position
                      lvid = obj.m_level_vertex_id
                     gvid = obj.m_game_vertex_id
                       for k, v in pairs(tab_items[k]) do 
                       count = k
                         for i=1, count do
                         alife():create(v, pos, lvid, gvid, id)
                     end
                  end
              end
          end
     end
end

 

И "вызывная" есть(только работает, когда Id определен):

function spawn_pda_in_killer()
   local tab_items ={{[1]="PDA"}
       local tab_where = 006
       this.uni_spawn_mnogo_itemsov(tab_items,tab_where)
end

 

Нужно преобразовать 2 функцию, чтоб спавнила "Без Id'ному НПС", я подумал, но ни чего толкового не пришло в голову...Зная, что не смогу, все равно попробовал.:-).Вот, что получилось(не полностью - как дальше - не знаю):

function spawn_pda_in_killer()
  for a=1,65534 do         --наверно надо добавить Перебор айди
   local obj = alife():object(a)
   if obj and obj:section_name() == "Секция нужного НПС" then
    local tab_items ={{[1]="PDA"}
        local tab_where = 006
       this.uni_spawn_mnogo_itemsov(tab_items,tab_where)
end

 

Незнаю куда деть local tab_where = 006 - может просто стереть и аргумент tab_wherе убрать...Да и ваще, в правильную "сторону" я копаю...

Дальще не знаю, как делать.Знаю, что написал полную лажу, но старался :) ...Не подскажете, как дельше правильно сделать?

 

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

Как можно НПС'у поменять его группировку.Вот например, поговорил с Волком, вызвал функцию и Волк стал Бандитом.Можно так сделать?

 

 

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

Поделиться этим сообщением


Ссылка на сообщение
(изменено)

ФеНиКс

Спасибо.

 

А не подскажите еще кто-нибудь функцию, которая удалила бы, например, Волка?

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

Поделиться этим сообщением


Ссылка на сообщение

1 функция(и):

local ObjId=0
function spawn_pm_for_kvest_zadumka_mercs()
   local obj = alife():create("wpn_pm",vector():set(-233.41,-32.22,-337.19),21722,36) --pda_merc_killer_glav
   local text = "Место последнего прибывания Наемников"
    level.map_add_object_spot_ser(obj.id, "blue_location", text)
    ObjId = obj.id 
end

function delete_spot_kvest_zadumka_mercs_pm()
  for a = 1,65534 do   --Перебор айди
  local obj = alife():object(a)
   if obj and obj:section_name() == "wpn_pm" then
    level.map_remove_object_spot(obj.id,"blue_location")
     break
    end
  end
end

 

2 функция(и):

local ObjId=0
function spawn_pm_for_kvest_zadumka_mercs()
   local obj = alife():create("pda_merc_killer_glav",vector():set(-233.41,-32.22,-337.19),21722,36) --pda_merc_killer_glav
   local text = "Место последнего прибывания Наемников"
    level.map_add_object_spot_ser(obj.id, "blue_location", text)
    ObjId = obj.id 
end

function delete_spot_kvest_zadumka_mercs_pm()
  for a = 1,65534 do   --Перебор айди
  local obj = alife():object(a)
   if obj and obj:section_name() == "pda_merc_killer_glav" then
    level.map_remove_object_spot(obj.id,"blue_location")
     break
    end
  end
end

 

В первой функции спавнится метка на ПМ, а потом удаляется.

Во второй функции тоже самое, что и первое, только спавнится квестовый предмет pda_merc_killer_glav - из файла qest_items.ltx.

Вопрос:Почему метка на ПМ не удаляется - функция не срабатывает(вылета нет), а метка с ПДА (pda_merc_killer_glav) удаляется?

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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

AMK-Team.ru

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