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

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


Halford

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

@ted.80 , нет желания ни вспоминать, ни пробовать, какой именно вызов коллбека в итоге сработает в итоге: первый или последующий, но 2 обработчика на одно событие совместно работать не будут.

self.object:set_callback(callback.use_object, self.on_use_object, self)
...
function actor_binder:on_use_object (obj)
    --* действия раз
    --* действия два
end

А дальше уже домысливать желаемую задумку.

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


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

@андрей дронав , а что мешает или не работает в таком варианте?

function actor_binder:net_destroy()
...
self.object:set_callback(callback.use_object, nil)
...
end

function actor_binder:reinit()
...
self.object:set_callback(callback.use_object, self.use_object, self)
...
end

function actor_binder:use_object(obj)
    sound_for_eat.use_snd(obj) --* озвучка еды
    teleportator.use_tele(obj) --* 'полетушка'
end

 

Вместо:

function actor_binder:reinit()
...
self.object:set_callback(callback.use_object, self.use_object, self) --* 2 одинаковых
self.object:set_callback(callback.use_object, self.on_use_object, self) --* вызова одного коллбека
...
end

function actor_binder:use_object(obj)
    sound_for_eat.use_snd(obj)    
end

function actor_binder:on_use_object(obj, who)
    teleportator.use_tele(obj)
end

 

А, вообще, прицепить использование телепорта к верхней функции.

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

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


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

@AndrewMor , прошу пардону, вышесказанное больше к @андрей дронав относится.

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

 

Как видишь, даже после всего, что накропали, у камрада определённые вопросы всё-таки остались.

А по поводу "...использовать один синтаксис колбека, а уже в обработчике обрабатывать ситуации по-разному"(c). Вот перевели бы вы всё это на хотя бы русский алгоритмический. Терминология - она такая :biggrin:. Тут вон за один только метод вызова коллбека целая дискуссия разгорелась.

 

 

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


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

Вводные: task_manager, циклические задания типа "найти объект" (арт, конечность etc).

При выкладывании/выбрасывании квестового предмета информация о стадии задания не изменяется (pda, ньюсы)

Что-то нашкодил или действительно имеет место быть? Если всё-таки второе, где-то можно посмотреть культурное исправление этого безобразия?

 

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


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

@naxac , т.е. никто это правил? Т.е., уточню, что хотелось-бы:

1. Взяли цикличку.

2. Получили предмет. Статус задания обновился (в pda + ньюс о стадии задания)

3. На сдавая задания - предмет "потеряли" <-  (в pda + ньюс о стадии задания) ?

  • Сомнительно 1

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


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

@ted.80 , разговор про "циклички":

А найди-ка мне Медузу, хвост псевдособаки. Квестовые предметы? ;)

 

@Rod_K , ключевой момент: искомый ящик находится онлайн ( в пределах алайфа) или нет?

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


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

@aromatizer , потому что. То, что заявлено отключаемым, должно отключаться. :guru:

Изменено пользователем Купер
  • Жуть! 1

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


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

@aromatizer , БАЛАбол и БАЛАгур! Отключить-то, блин, как?!!

Примечательно, что, как минимум, 2 OGSR-ца объявились и многозначительно так промолчали.

@mmindwork , из разряда "угадаек": allow_inertion в худовых секциях?

  • Смешно 1

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


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

 

Да я то чё, я, вообще, со Светочем нашим всеведущим пикировался. Главным образом.

@mmindwork , попробуй это:

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

allow_zoom_inertion         = true  ;Разрешает применять инерцию худ модели оружия в режиме прицеливания.
; inertion_origin_offset    = -0.05 ;отклонение модели от "курса" из за инерции во время движения
; inertion_tendto_speed     = 5     ;скорость возврата худ модели в нужное положение
inertion_zoom_origin_offset = -0.03 ;отклонение модели от "курса" из за инерции во время движения с прицеливанием
inertion_zoom_tendto_speed  = 10    ;скорость возврата худ модели в нужное положение во время прицеливания
allow_scope_zoom_inertion   = true  ;позволяет выключить инерцию при прицеливании через сквозную оптику и оставить её только при прицеливании без оптики. По умолчанию принимает значение `allow_zoom_inertion`.

По конфигам поискать. Где - :unknw:. У меня, так например, фантазия богатая.

 

 

  • Нравится 1
  • Согласен 1
  • Полезно 1

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


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

@killersan6 ,

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


float CWeapon::GetConditionMisfireProbability() const
{
    if( GetCondition()>0.95f ) return 0.0f;
    float mis = misfireProbability+powf(1.f-GetCondition(), 3.f)*misfireConditionK;
    clamp(mis,0.0f,0.99f);
    return mis;
}


 

Не оно? Weapon.cpp

И дальше выборка рандом:

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

 

BOOL CWeapon::CheckForMisfire    ()
{
    if (OnClient()) return FALSE;

    float rnd = ::Random.randF(0.f,1.f);
    float mp = GetConditionMisfireProbability();
    if(rnd < mp)
    {
        FireEnd();

        bMisfire = true;
        SwitchState(eMisfire);        
        
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}

 

 

Изменено пользователем Купер

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


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

@андрей дронав , ну чудес не бывает. Даже с СТАЛКЕРе по большей части (кроме как иногда) :biggrin:

конфиги:

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

Screenshot-1.jpg

all.spawn (ACDC):

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

Screenshot-2.jpg

Что-то где-то...:biggrin:

  • Нравится 1

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


Ссылка на сообщение
20 минут назад, mole venomous сказал:

И ещё, пора бы юзать огср движок, там с этим много меньше проблем. 

@mole venomous , :smehs-241:

 

@андрей дронав , теор. часть (c российских IP - прокся, VPN) . Возможно, чем-то поможет.

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


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

@mole venomous , ну... справедливости ради, оно и на "классике" в ~ 80% случаев вылетало не совсем из-за кривизны движка, уж будем откровенны.

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

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


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

@mole venomous , именно "рамки" именно у бинокля? Похоже?, что всё-таки да.

А вообще, начиная с XRE добавлена функция отлова объекта:

game_object*<obj> get_target_obj() - возвращает игровой объект (если он имеет шейпы), на который в данный момент направлена камера.

Можно так попробовать. Отладчики, сделанные на её основе: тынц тынц

+ емнип, ещё даже в АМК есть что-то подобное на "классическом" движке.

  • Спасибо 1

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


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

@Domestoz , врут вдохновенно сочиняют! :biggrin: В том смысле,что:

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

Screenshot.jpg

Т.е., как минимум XRE c какой-то вариацией этого. Используется ли функционал "расширителя" именно в файлах апгрейда - тут уже по месту смотреть. Ну, естественно, необходимая скриптовая "обвязка".

Альтернативный вариант есть в Shadows Addon у @RayTwitty.

 

 

 

 

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


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

Не хватает сала в черепе.

В task_manager.script добавлена множественность целей.

Т.е. по аналогии с существующими параметрами добавлено количество необходимых для выполнения объектов, условно:

        if self.task_ini:line_exist(id, "target_count") then
            curr_task_info.target_count = self.task_ini:r_u32(id, "target_count")
        end

 

Как добавить считывание параметра  в диалоги и описание задания?

 

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

 

Screenshot-1.jpg

 

Screenshot.png

 

 

 

Где бы подсмотреть?

Изменено пользователем Купер

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


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

@Domestoz , там база - старый, добрый XRE c минимальными изменениями в движке на самом деле, собирается одним батником после настройки и очень просто настраивается. Не факт, что для модуля апгрейда используется что-то из его функционала. Главное, аккуратно перетащить добавленную скриптовую "обвязку". Вылетает  GetUpgrade?

-- вот эта функция что использует?
function GetUpgrade(sSection)
	return cfg_read(system_ini(), "str", sSection, "upg", "nil")
end

->

lwc_utils.script:

-- Функция чтения из конфига значений(string, float, boolean)
_G.cfg_read = function(ini, mode, section, line, val)
    ini = ini or system_ini()
    if is_sect_exist(section, ini) and is_line_exist(section, line, ini) then
        if mode == "str" then
            return tostring(ini:r_string(section, line) )
        elseif mode == "num" then
            return tonumber(ini:r_float(section, line) )
        elseif mode == "bool" then
            return ini:r_bool(section, line)
        end
    end
    return val
end

Добавленная очередная оптимизация "потому что мы сделаем так".

 

И т.д., весело насвистывая :biggrin:

 

Изменено пользователем Купер

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


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

@Stalkersof , alife.ltx:

[alife]

...
    autosave_interval = ...

 

Не оно?

Изменено пользователем Купер
  • Спасибо 1

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


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

@mole venomous , да, откровенно говоря, не помню :biggrin:. Быстрее ingame попробовать, имхо, чем в исходниках лазить. Поставить меньший интервал и посмотреть. Время, по-моему, реальное.

---

Как ни странно :biggrin:, но да. По крайней мере, на "оригинальных" движках.

Изменено пользователем Купер

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


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

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