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

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


Halford

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

Подскажите пожалуйста, есть A:position() и B:position(). Мне нужно получить направление из A в B. Я правильно понимаю, что в результате vector():sub( B:position(), A:position() ) я как раз получаю нужный direction?

 

@Карлан, я пытаюсь использовать level.perform_ray_pick_query() и не могу понять, что именно не работает. Слишком много неизвестных. Вот и уточняю.

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

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


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

Подскажите, пожалуйста, про actor_stats.add_points(string, string, number, number). Не могу найти описание параметров.

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


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

@UnLoaded, не, не понятно. Если вторая цифра - на сколько увеличить ранг, то что означает первая цифра? А если последняя цифра - это на сколько увеличить ранг, то в чем отличие от db.actor:set_character_rank(db.actor:character_rank()+value)?

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

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


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

@Карлан, я тестирую add_points() на движке из OGSE 0.6.9.3. Возможно, там что-то изменили на эту тему, но работает оно явно не так, как в приведенном коде. Вот такой вызов:

actor_stats.add_points( "stalkerkills", "bandit_expirenced", 1, 1 )

не всегда приводит к увеличению счетчиков. Так, пора определиться с терминами. В ПДА, раздел статистика разделен на две части. В левой - общая статистика. В правой - список сталкеров с рангами и соотв. им счетчики. Притом, на каждого приходится два счетчика. Превый отображается, как xN, а второй - просто число. Так вот, при выполнении вышеуказанной функции, напомню, что я это делаю на движке из OGSE 0.6.9.3, число xN всегда увеличивается на 1, сколько бы раз я не выполнил это. А вот со вторым числом все хуже. Покажу лучше по другому. В начале имеем

Бандит, опытный x0 0

Вызываю функцию, как указано. В ПДА вижу

Бандит, опытный x1 1

Вызываю еще раз. В ПДА вижу

Бандит, опытный x2 1

 В дальнейшем, последнее число увеличиваться не будет. А изменится оно только в том случае, если я выполню add_points() с последним аргументом отличным от того, что показывается в ПДА, в последней колонке. И величина в ПДА изменится на разницу, а не просто прибавится. Вот такие вот чудеса.

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

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


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

Направьте, пожалуйста, в нужном направлении. Хочу понять, по каким условиям непись выставляет в торговлю оружие, которое у него текущее. Да и не только текущее. Чем вообще определяется, будет-ли первый встреченный сталкер продавать что-то, что у него есть, или не будет?

 

Спасибо.

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


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

@UnLoaded@Карлан, не-не, я наверное не точно выразился. Меня интересует не то, что сталкер в принципе будет продавать или не будет. Меня интересует именно то оружие, которое у него в руках/за спиной. Вот открываю я торговлю со сталкером и вижу, что он спокойно продает свой единственный калаш. Вот как мне это изменить? Нужно, что бы сталкеры ни в каком случае не выставляли в продажу свое единсвенное оружие.

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


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

@Dennis_Chikin@Карлан, вот смотрю я в rx_wmgr.script соляночный. Там вижу манипулирование какими-то запрятанными инвентарными ящиками и постоянный трансфер оружия между ящиком и неписем. И это все только для того, что бы у сталкеров спрятать оружие, что бы они свое единственное не продали?

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


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

@Dennis_Chikin, может кто-то задался тем-же вопросом, что и я, и сделал такое. Что бы неразумные неписи не продали хитрому Меченному единственный калаш. :) У меня, собственно говоря, этот вопрос возник потому, что я перенес в ОП-2 rx_wmgr из OGSE 0.6.9.3, в котором убрано все это манипулирование ящиками, и обнаружил вот такое вот поведение. Вот теперь думаю, что с этим делать. Объявить фичей или багом. :)

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


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

Может кто-нибудь мне подскажет. Вот бежит у нас отряд Макса, на Армейских складах, штурмовать группу Черепа на хуторе. А на пути бац и аномалия. И обойти они ее почему-то не могут, хотя скрипт обхода аномалий есть. Он рестрикторы для них расставляет, а они мечутся вперед-назад и все. Кто-нибудь может рассказать, почему так происходит?

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

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


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

А что на радиусы смотреть. Даже если обход аномалий заставит кого-то из группы Макса аномалию обойти, он сразу же бежит назад, в исходную точку. Что-то мне начинает казаться, что единственный вариант - это прописывать их путь в исключения, чтобы там не генерировались аномалии.

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


Ссылка на сообщение
, если ты из OGSE взял анимации, то нужно из всех моделей костюмов удалить анимацию экзоскелета. Кажется exo_animation.omf. Под рукой компьютера нет, поэтому в названии могу ошибаться.

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


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

Поиском не нашел, т.ч. спрошу здесь. Как можно отловить клик мышью на карте в ПДА? Если это вообще возможно.

 

Спасибо.

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


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

Подскажите пожалуйста, знающие люди, как правильно организовывать прокручиваемый текст, который в свою область не помещается? Вот сейчас у меня есть:

    <descr_scroll x="247" y="10" width="355" height="150" always_show_scroll="0"/>
    <descr_text x="0" y="0" width="335" height="250" complex_mode="1">
      <font font="letterica16" r="255" g="255" b="255"/>
    </descr_text>

Все это инициализируется вот так:

  self.descr_scroll = xml:InitScrollView(
    "main_dialog:descr_scroll", self.dialog
  )
  self.item_descr = xml:InitStatic(
    "main_dialog:descr_text", self.descr_scroll
  )

Далее просто делается

  self.item_descr:SetText( game.translate_string( text ) )

Текст скроллируется, с этим все нормально. Но не нравится мне, что у descr_text пришлось сделать фиксированную высоту в 250 и поэтому, что особенно хорошо видно с коротким текстом, скроллируется пустое место. Как бы это правильно сделать, что бы если текст помещается в descr_text, то скроллинга бы не было, а если не помещается, то уже был скроллинг?

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


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

Поправлю. Этот метод называется AdjustHeightToText(). Эксперименты показывают, что он работает, как надо. Только мне не помогает. Складывается такое впечатление, что ScrollView, после инициализации, игнорирует изменение размеров своего содержимого. А если у него выполнять Clear(), с последующим AddWindow() нового статика с текстом, то все работает, но через пару секунд, после такой манипуляции, игра вылетает. Такое впечатление, что вылетает при очистке мусора. Такое предположение у меня из-за наличия паузы перед вылетом.

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


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

, спасибо большое - работает! У меня вылетало из-за того, что я не делал DetachFromParent() статику.

 

Если просто делать AdjustHeightToText(), без очистки скоролла и добавления туда нового статика - не реагирует. Естественно, я вызывал AdjustHeightToText() после SetText().

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


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

То-ли я не могу найти, то-ли что. Подскажите пожалуйста, есть GUI элемент для ввода многострочного текста? EditBox - однострочный.

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


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

Кто использует респаунеры из Солянки, которые при спауне мутантов делают вот так:

      local t = amk.read_monster_params( obj )
      if ( not t.custom ) or string.len( t.custom ) == 0 then
        local cfg_name = utils.cfg_get_string(
          sini, "respawn", "creature_binded_logic", false, false, false, ""
        )
        t.custom = "[logic]\ncfg = scripts\\amk\\" .. cfg_name .. ".ltx"
        amk.write_monster_params( t, obj )
      end

Имейте ввиду, если в файле, подключаемом через вышеуказанный "cfg", есть

[smart_terrains]
none = true

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

 

Вообще, соляночный код меня поражает. Кто-то, вероятно, сделал подключение логики таким образом. А кто-то другой начал писать файлы логики со smart_terrains, даже не удосужившись проверить, а работает-ли оно. И все это годами используется и всем пофиг. А я удивляюсь, да что за фигня, куда делись тушканы на остановке АТП, которые там раз в сутки должны респаунится. А они ушли на АТП, в гулаг тушканов.

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


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

 

 

А я вот всю дорогу думал, что он вообще ни в какой гулаг не пойдет. Может я не прав ?

 

При наличии

[smart_terrains]
none = true

не пойдет. Ты правильно думал. Но! При условии, что эту секцию кто-нибудь прочитает и соотв. действия выполнит. Например, в приведенном мной примере

[logic]
cfg = tra\la\la\mylogic.ltx

наличие [smart_terrains] в файле mylogic.ltx ни на что не влияет. Секцию [logic] читает xr_logic.script, а ему смарт террейны до лампочки. Но в приведенном мной примере проблема даже не в этом, а в том, что сразу после alife():create() мутанта и до записи ему custom data, которая идет в следующих строках,  мутант попадает в свободный гулаг.

 

Как я это обошел, можно посмотреть тут:

 

https://github.com/dsh2dsh/op2ogse/commit/4a8691d89e89b1aaa5323258566ac70b3e9c0ab1

 

См. в самом низу изменения в se_monster.script и se_respawn.script. Грязный хак, но лучше решения я придумать не смог.

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


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

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