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

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


Halford

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

karavan

 

Вот здесь есть целая тема, почитай, у некоторых людей получается вставить видео, у некоторых нет. Вставка видео капризная вещь, лично у меня x-ray ругается даже на ogg-комментарий к заставке ATI

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


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

у тебя в логике active = walker1

Ты где это видел?!

active = walker@1

Синтаксис:

[имя_схемы@любое_имя]

Во всяком случае так в ЧН.

 

Можно и так, как делает Sektor1986, никто не запрещает, в том числе и движок. :)

ColR_iT

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

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


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

Не встречал таких вылетов, но попробуй начать с простого - то есть в логике рестриктора или НПС сначала один элемент, потом два, и так далее, лично мне помогает отслеживать вылеты, благо новую игру начинать не надо.
 

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


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

karonbaron

Немного поправлю: чтобы сделать как ты хочешь, неплохо бы это добавить:

on_info = {=gulag_enemy_actor(имя_смарта) =is_smart_in_combat(имя_смарта)} схема

Так больше шансов, что вертолет прилетит когда надо, а не когда на базу нападет стая собак  :)

А насчет твоей проблемы подсказать вряд ли смогу, т.к. сам на ЗП не работаю. И сейчас у меня возник вопрос а есть ли вообще в ЗП такое состояние у сквада, как "defence", по-моему его просто урезали, как и много еще чего. 

P.S. И насчет "combat" тоже непонятно у сквада предположим есть такое состояние, а вот у смарта? Вот и получается вопросов больше чем ответов...

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


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

 

Earth2Space

Процитирую кусок actor.ltx

 

sprint_k                                =        75;150;185;180;200;        ;коэффициент на "sprint" бег (умножается walk_power, walk_weight_power)

По-моему все ясно. Ну а уж если нет, вот выдержка из actor.ltx с комментариями от разработчиков игры:

 

 

;;;;;;;;
;actor_condition only
 
jump_power                 = 0.01 ;умешьшение силы с прыжком без учета веса ноши
jump_weight_power       = 0.05                ;0.045                                        ;умешьшение силы с прыжком с учетом веса ноши, для максимального допустимого веса
overweight_jump_k                        =        5;10                ;10                                        ;коэффициент влияние перегрузки прыжок с весом (умножается на jump_weight_power)
 
stand_power                                =  -0.005
walk_power                                =        0.00001                                ;умешьшение силы за секнду во время ходьбы без учета веса ноши
walk_weight_power                =        0.00005;                        ;умешьшение силы за секнду во время ходьбы с учетом веса ноши, для максимального допустимого веса
overweight_walk_k                =        5;9        ;10                                ;коэффициент влияние перегрузки ноши (умножается на walk_weight_power)
accel_k                                        =        3;5                                        ;коэффициент на бег (умножается walk_power, walk_weight_power)
sprint_k                                =        75;150;185;180;200;        ;коэффициент на "sprint" бег (умножается walk_power, walk_weight_power)

 

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


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

 Viktor_KrisShredder

Есть способ гораздо проще:

   в файле _g.script измени переменную(в самом начале) dev_debug = false на значение true.

И у тебя в пда будут обозначены все смарты точками, при наведение на которые отображается имя смарта, squad_id, вместимость этого смарта(squad_capasity), каким отрядом он занят, какой группировки, и все дополнительные свойства типа(respawn_point)

 

  • Нравится 1

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


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

karavan

Странно очень, в ЧН работает точно лично проверил, но все равно посмотрел скрипт smart_terrain.script от ЗП - функции там эти остались. Вот только почему у тебя не отображается?

-- Обновление.
-- В онлайне вызывается через binder.
-- Также может вызваться принудительно из xr_effects
function se_smart_terrain:update()
cse_alife_smart_zone.update( self )
if dev_debug then
self:refresh() -- Не забыть потом заремить
end
...
Отсюда вызываем refresh, если у нас dev_debug = true

--' Обновление информации о смарте на игровом поле
function se_smart_terrain:refresh()
self:show()
end

Отсюда функцию show:

function se_smart_terrain:show()

 

В ней и добавляются по идее отметки.

 
И вот из всех мыслей почему не работает только одна в голову приходит: может быть записать так в первой функции: (_G.dev_debug)
P.S. Я чего-то не пойму просто то ли это глобальная переменная, если да, то зачем в других функциях у этого класса ее пишут так, как я написал выше. 

 

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


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

И как, успешно? Тоже встречался с проблемой когда НПС с СВД в кабана в плотную лупил(т.к. НПС был бессмертный, и все выстрелы он промахивался) т.е. этот процесс мог длиться до бесконечности, но ИНОГДА если ГГ подходит к этому неписю с СВД вплотную, то если повезет, нпс достает пистолет. Ну про дальность смысла говорить нет, как сказал *Shoker*, нпс любят с большой дистанции с пистолета да двустволки лупить.

 

 А в каком скрипте вообще родной менеджер выбора оружия??? Помню на ТЧ был хороший скрипт: там бралось все оружие, которое есть у нпс, бралась дистанция до цели и на основе этого делался выбор. И если по-моему нпс не мог "дострелить" до цели то он сваливал, или старался подойти ближе.

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


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

on_game_timer2 = {+sec_heli_black_box_black_screen -sec_heli_black_box_awake} 20 - честно говоря не знаю можно так или нет, но вроде можно)

у меня похожий вылет был, когда при вызове функции из рестриктора не дописал параметры в скобках, и ты проверь)

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


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

Viktor_Kris

 Я посмотрел xr_effects.script от ЧН, и функции remove_npc я не нашел, там есть destroy_object. Но судя по тому что у тебя нет вылета, мне кажется, ты передаешь неправильный параметр. Ты уверен что в параметре надо писать имя_профиля?

 

Обычно передается story_id или имя_объекта(редко). Вся фишка в том что имя_объекта - это либо значение name из all.spawn, либо(если я не ошибаюсь) имя_секции + id_объекта(для сталкеров точно так)

 

========

Все-таки из любопытства глянул скрипт ЗП, вот маленький код функции:

 

 

function remove_npc(actor, npc, p)
if p and p[1] then
npc_id = get_story_object_id(p[1])
end
if npc_id ~= nil then
alife():release(alife():object(npc_id), true)
end
end

 

 

Тебе не кажется, что надо story_id передать?

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

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


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

Была такая проблема. Обычно вылет происходит когда нпс входит в состав сквада, и этот сквад зарегистрирован в каком-нибудь смарт-терраине. Причем текущее действие у сквада - stay(вроде так называется), т.е. сквад отдыхает в смарте. Возможна такая  ситуация: нпс идет в смарт - а ты ему тут переназначаешь точку пути, да еще и в то место где она не в зоне смарта.

 Решение - либо внеси точку прямо по тем же координатам что и сам смарт терраин заспавнен, либо делай апдейт для состояния сквада. 

 

P.S. глюк этот был в ЧН... может быть и перекочевал в ЗП.

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


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

Это все очень здорово. Но если уж ты взялся транспорт ковырять. То попробуй до ума довести, как бы это назвать, физику транспорта, что ли. Я к тому что, да по ровной дороге оно здорово ездится. А как твой транспорт себя поведет по бездорожью? То есть это может быть дорога на которой валяются кирпичи, разнообразный мусор. Или неровность рельефа как на Затоне рядом с Скадовском. Просто видел моды, вроде как со скриптовой стороны на отлично сделаны(БТР с его комплектующими), а вот в плане физики, не айс. На уклон в 30 градусов было невозможно заехать, только с разгону.

 

P.S. Помню кто-то писал: "Сам движок позволяет хоть велосипед сделать..." Весь гемор вроде как в костях модели и настройке параметров(конфига).

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


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

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

По твоему примеру логики видно, что ты используешь таймера. В некоторых случаях удобно, а в некоторых губительно. К примеру лаганул комп там, сям - секунды на 3-5 происходит сдвиг.(Это не только к машинам относится). Попробуй использовать сигнал arrived, в ТЧ помнится работал. А вообще, если для сцены, то делай рестрикторы. Как только машина заехала в него - выдавай инфу. Вообщем вариантов много :)

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


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

Подскажите, вот есть к примеру xml файл, который читается сразу движком. И есть предположим поле какое-то, можно как-то из xml перейти в script?

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


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

Конкретнее: файл ui_team_panels_tdm.xml - отвечает за таблицу статистики на TAB которая. Очевидно, что обращение к ней идет прямо из движка. Я могу удалять некоторые поля(ненужные мне). А вот как добавить? Всмысле сделать текстовое поле, текст в котором берется из скрипта.

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


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

Мне кажется, он имел ввиду другое)

andreyich

В файле configs\creatures\game_relations.ltx, Там идет таблица нужно на пересечении долга со свободой и свободы с долгом поставить 1000 например.

Другие значения:

-5000 - не примеримый враг

-1000 - враг

0 - нейтрал

1000 - друг

5000 - друг(даже если убиваем)

 

P.S. Также еще можно поменять в логике рестриктора, или в скрипте на определенном моменте игры.

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


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

Всем привет, никто не знает ответ на такой вопрос: почему при спавне предмета на каком-нибудь этаже здания на столе(или другом объекте) он оказывается на земле? Координаты взяты из all.spawn. Спавн произвожу скриптом.

 

P.S. Объекты "physic_destroyable_object" и "physic_object" спавнятся тютелька в тютельку.

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


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

Подскажите можно ли объединить два сквада сталкеров в один по получению определенного инфопоршня?

 

 

Можно! Такое возможно и без убийства сквадов(проверил в ЧН). Посмотри, что происходит в скваде при спавне/смерти НПС-члена сквада?

На примере ЗП:

 

Смерть:

-- Убийство НПС
function sim_squad_scripted:on_npc_death(npc)

Тут явно, его исключают из сквада (self:unregister_member(npc.id) )

 

Спавн:

function sim_squad_scripted:add_squad_member(spawn_section, spawn_position, lv_id, gv_id, sect_number)

А тут, его как раз таки добавляют ( self:register_member(obj.id) ).

 

Ответ: можно, ч.т.д.)

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


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

 fastique

Я могу тебе только немного подсказать: 

1. В логике делаешь действие: %=my_function%

2. В xr_effects объявляешь функцию:

function my_function(actor, npc, p)
--code
end

В зависимости из чьей логики вызовешь, первые два аргумента будут разные. На твой вопрос я ответил - в логике именно так и записать. Теперь вопрос в следующем: как это связать с функциями из моего предыдущего поста? Тут тебе уже надо идти в тему "Скриптование"... Я тебе могу посоветовать только первое, что на ум приходит:

 

1. Очень нехорошее, но пожалуй самое простое: в биндер сквадов sim_squad_scripted на метод Update повесить проверку по типу:

Если есть_инфа И id_squad==нашему ТО
   делаем анрегистр НПС из сквада

А для регистрации аналогично. Вот только тебе лучше на НПС повесить стори_ид, чтобы легче было получить их объекты.

2. Посмотри что лежит в таблице squads в sim_board? По-моему там таблица нечто: squad_id = squad_obj(серверный объект причем)

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


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

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