Голосование

Какие нововведения War Sails вы ожидаете в большей степени?

Вы можете выбрать 5 вариантов ответа.











Оформление



Пользователей
  • Всего: 29565
  • Последний: Demon__
Сейчас на форуме
Пользователи: 1
Гостей: 284
Всего: 285

0 Пользователей и 1 Гость просматривают эту тему.

Тема: Модульная система. Вопросы и ответы.  (Прочитано 311475 раз)

  • Сообщений: 2562
  • За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов
    • Просмотр профиля
    • Портфолио
0
Ответ #475 25 Августа, 2012, 02:23
проверь.
  • Сообщений: 317
    • Просмотр профиля
0
Ответ #476 25 Августа, 2012, 02:35
Проверил. Поставил число 5.
Замер одного выполнения: 5.05 секунд
Замер 5 последовательных выполнений: 25,13 секунд.
С учетом человеческого фактора вполне можно сказать, что 5 - это 5 секунд.
Погрешность вычислений составила 2,4% =)
« Отредактировано: 25 Августа, 2012, 02:40 (Arantir) »
Багов в чужих скриптах не исправляю! Скриптов по просьбе не пишу и на заказ не делаю! Я всего лишь любитель поиграть в M&B, и ничего более.
  • Сообщений: 23
    • Просмотр профиля
    • фоны для айфона
0
Ответ #477 25 Августа, 2012, 06:41
Люди, помогите! Кто нибудь пробовал уменьшить частоту перехода лордов от короля к королю?

Частые перебежчики сильно портят все впечатление от игры, перебегают нереально часто! Пожалуйста посоветуйте-научите как это исправить через МС.
Когда качнет земную твердь
Сраженья торжество,
То каждый сможет выбрать смерть,
Достойную его.
  • Сообщений: 1027
  • За создание технических проектов различного характера
    • Просмотр профиля
    • WarHammer Fantasy Mod для WarBand.
0
Ответ #478 25 Августа, 2012, 09:04
Arantir, дело в том, что мне нужно что бы этот триггер проверялся постоянно, а не только на спауне агента. А ti_on_agent_spawn только так и работает, верно? Или я неправильно знаю?

Легионер, не помогло. Дело в том, что при запуске карты игроков на ней нет. Скрипт же всё равно берёт несуществующее количество игроков, ищет там активных а потом уже смотрит, есть ли у них в руках определённый предмет. Так как агентов-то и нет как таковых до спауна, то эта строка:

(agent_get_wielded_item,":atm",":other",0),

будет ругаться на неверного (несуществующего) агента ":other", да так, что безвозвратно (буквально) загадит чат первому подключившемуся к серверу игроку. Не катастрофа, конечно, учитывая что после спауна никаких проблем не будет, однако...
  • Сообщений: 2562
  • За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов
    • Просмотр профиля
    • Портфолио
0
Ответ #479 25 Августа, 2012, 09:16
если проблема только в загаживании, то можно попробывать отключить сообщения. не знаю правда в мульте будет работать, в сингле работает -
(set_show_messages, <value>), #0 disables window messages 1 re-enables them.
До спауна первого игрока
  • Сообщений: 317
    • Просмотр профиля
0
Ответ #480 25 Августа, 2012, 11:18
Андреус Ас, твой триггер и так по идее выполняется постоянно, раз за разом.
Ошибка скорее логическая:
Цитировать (выделенное)
(0, 0, 0, [
       (get_max_players, ":num_players"),                   
       (try_for_range, ":player", 0, ":num_players"),
       (ge, ":player", 1),
       (player_is_active, ":player"),
       (player_get_agent_id, ":other", ":player"),
       (agent_get_wielded_item,":atm",":other",0),

Ты делаешь так, как будто ":player" - это уже некий объект, представляющий игрока. но это не так. Это всего лишь переменная, инкрементируемая циклом. В данном случае поочередно принимающая значения 0, 1, 2, ..., ":num_players". Строка "(ge, ":player", 1)" как бы бессмысленна.
В данном случае ":player" - это некий ID игрока из списка игроков. Чтобы проверить, есть ли действительно агент с таким ID, нужно попробовать у этого агента извлечь какое-то значение и проверить его на корректность.
Например, "(player_get_agent_id, ":other", ":player")". Если с ID равным ":player" нету ни одного агента, то, скорее всего, в ":other" попадет значение -1.
Соответственно надо сделать как-то так:
Цитировать (выделенное)
(0, 0, 0, [
       (get_max_players, ":num_players"),                   
       (try_for_range, ":player", 0, ":num_players"),
         (player_is_active, ":player"),
         (player_get_agent_id, ":other", ":player"),
         (ge, ":other", 0), # Агент существует
         (agent_get_wielded_item,":atm",":other",0),

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

Можно, например, вот так:
Цитировать (выделенное)
(ti_on_agent_spawn, 0, 0, [],
  [
    (store_trigger_param_1, ":agent_no"),
    (agent_set_slot, ":agent_no", 999, 1), # set as spawned
  ]),
(0, 0, 0, [
       (get_max_players, ":num_players"),                   
       (try_for_range, ":player", 0, ":num_players"),
         (player_is_active, ":player"),
         (player_get_agent_id, ":other", ":player"),
         (agent_get_slot, ":spawned", ":player", 999),
         (gt, ":spawned", 0),

         (agent_get_wielded_item,":atm",":other",0),
         ...
« Отредактировано: 25 Августа, 2012, 11:31 (Arantir) »
Багов в чужих скриптах не исправляю! Скриптов по просьбе не пишу и на заказ не делаю! Я всего лишь любитель поиграть в M&B, и ничего более.
  • Сообщений: 3008
  • За регистрацию на форуме не позже декабря 2011 года и не менее 3000 постов
    • Просмотр профиля
0
Ответ #481 25 Августа, 2012, 19:53

Третья цифра - через какое время проверяется этот триггер, если он сработал. ti_once фактически означает "больше не проверять".
  • Сообщений: 317
    • Просмотр профиля
0
Ответ #482 25 Августа, 2012, 20:02
Третья цифра - через какое время проверяется этот триггер, если он сработал. ti_once фактически означает "больше не проверять".
В другой интерпретации ti_once означает "запустить через ∞ сек.", т.е. никогда. Ну это если сводить все к одной основе (временному интервалу).
Багов в чужих скриптах не исправляю! Скриптов по просьбе не пишу и на заказ не делаю! Я всего лишь любитель поиграть в M&B, и ничего более.
  • Сообщений: 2562
  • За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов
    • Просмотр профиля
    • Портфолио
0
Ответ #483 25 Августа, 2012, 20:03
Цитировать (выделенное)
Третья цифра - через какое время проверяется этот триггер, если он сработал. ti_once фактически означает "больше не проверять".
согласен...
  • Сообщений: 870
    • Просмотр профиля
0
Ответ #484 25 Августа, 2012, 20:44
Ну вас и занесло с этим скриптом :)
Достаточно тупо поставить перед циклом проверку на то что есть один или больше игроков.
Кроме того есть смысл проверять существует ли агент у игрока.
(0, 0, 0, [
       (get_max_players, ":num_players"),                   
       (ge, ":num_players", 1),
       (try_for_range, ":player", 0, ":num_players"),
       (player_is_active, ":player"),
       (player_get_agent_id, ":other", ":player"),
       (ge ":other", 0),
       (agent_get_wielded_item,":atm",":other",0),
Чисто для информации. Комментарий самих разработчиков по поводу времени срабатывания триггера:
Цитировать (выделенное)
(1, 0, 0, [], #do this in every new frame, but not at the same time
  • Сообщений: 252
    • Просмотр профиля
0
Ответ #485 26 Августа, 2012, 13:55
Спасибо за подробный разбор триггера! :thumbup:
  • Сообщений: 1027
  • За создание технических проектов различного характера
    • Просмотр профиля
    • WarHammer Fantasy Mod для WarBand.
0
Ответ #486 28 Августа, 2012, 08:50
Всем спасибо за помощь, вроде бы вариант с отключением-включением чата работает.
  • Сообщений: 449
    • Просмотр профиля
0
Ответ #487 27 Сентября, 2012, 12:57
Доброго времени суток!

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

1. Как они объявляются, как используются, как уничтожаются (если уничтожаются вообще)?
2. Какой у них срок жизни и область видимости?

Например: можно ли привязать к агенту слот, задать ему значение в триггере, прописанном в module_items.py, а затем уже в module_missions_templates.py проверять значение этого слота? Или можно ли привязать слот к трупсу, задавать его в одной миссии, а проверять в другой?

Если у кого-то еще под рукой окажутся наглядные примеры использования, буду благодарен до конца дней своих.
  • Сообщений: 7578
  • За наиболее важные для развития сайта идеи За особо выдающиеся авторские тексты За регистрацию на форуме не позже декабря 2011 года и не менее 3000 постов И создали они сайт... Призер конкурса Футболка по версии Всадников
    • Просмотр профиля
+1
Ответ #488 27 Сентября, 2012, 13:02
Пояснение понятия Слот.

(автор Dargor, )

Моя конфигурация:
Нормальная, мне хватает.
  • Сообщений: 449
    • Просмотр профиля
0
Ответ #489 27 Сентября, 2012, 13:09
Спасибо огромное! Все понятно и по полочкам. Еще небольшой вопрос.
Можно ли в слот писать не число, а например, позицию, которая, если я правильно понимаю, по сути набор из 6-и чисел.
  • Сообщений: 870
    • Просмотр профиля
0
Ответ #490 27 Сентября, 2012, 18:57
Можно записать айди позиции, но это не лучший вариант, так как другие скрипты могут изменить данные которые хранит позиция. Лучше сохранять нужные данные позиции в отдельные слота, это избавит от потенциальных багов.
  • Сообщений: 3508
  • За создание крупных модов и других особо сложных проектов За активную деятельность, связанную с публикациями и помощью другим посетителям За регистрацию на форуме не позже декабря 2011 года и не менее 3000 постов
    • Просмотр профиля
0
Ответ #491 27 Сентября, 2012, 21:55
Спасибо огромное! Все понятно и по полочкам. Еще небольшой вопрос.
Можно ли в слот писать не число, а например, позицию, которая, если я правильно понимаю, по сути набор из 6-и чисел.
По идее не 6, а 9, там ещё масштабирование есть.
Вытащить все нужные компоненты в fixedpoint (position_get_*, position_get_scale_* , position_get_rotation_around_* ) и записать в слоты.
Более простого способа не знаю.

PS у позиции есть ещё origin, т.е. ещё 3 компоненты, вроде как.
« Отредактировано: 27 Сентября, 2012, 22:12 (Rongar) »
  • Сообщений: 449
    • Просмотр профиля
0
Ответ #492 28 Сентября, 2012, 00:43
Ну мне только трех координат хватит :) Спасибо большое!
  • Сообщений: 43
    • Просмотр профиля
0
Ответ #493 27 Октября, 2012, 12:11
Доброго времени суток! У меня вопрос по модульке, а именно по диалогам. Третий день с ними мучаюсь, а толку никакого.

module_dialogs.py (З.Ы.: на текст диалогов не смотрите, я плохо знаю английский.)
  [trp_dhara_soldiers,"start",[],"Hello. Did you need troops?","dhara_soldiers_talk",[]],
  [anyone|plyr,"dhara_soldiers_talk",[],"Yes, I need","dhara_soldiers_yes",[]],
  [anyone|plyr,"dhara_soldiers_talk",[],"No, thank`s","dhara_soldiers_no",[]],
  [anyone,"dhara_soldiers_yes",[],"We very surprised. Ok. We attach to your group","close_window",[
  (troop_join,"trp_dhara_soldiers")]],
  [anyone,"dhara_soldiers_no",[],"Ok. We wait you.","close_window",[]],
module_parties.py
("dhara_soldiers","SOLDIERS",icon_vaegir_knight|pf_limit_members, no_menu, pt_none,fac_neutral,0,ai_bhvr_hold,0,(19, 53),[(trp_dhara_soldiers,54,0)]),
На карте появляются, всё норм, но диалог не срабатывает (точнее срабатывает, но не мой). Срабатывает вот этот:
Цитировать (выделенное)
Чего вы хотиите?
-Сдавайся или умри!
-Ничего. Мы оставим вас в покое.

Подскажите, что нужно сделать чтобы при встрече на карте партии dhara_soldiers, срабатывал мой диалог?
  • Фракция: Свады
  • Сообщений: 3508
  • За создание крупных модов и других особо сложных проектов За активную деятельность, связанную с публикациями и помощью другим посетителям За регистрацию на форуме не позже декабря 2011 года и не менее 3000 постов
    • Просмотр профиля
0
Ответ #494 27 Октября, 2012, 12:14
Куда добавлен диалог? В начало, конец, середину?
Срабатывает первый подходящий.
Возможно в этом проблема.
  • Сообщений: 43
    • Просмотр профиля
0
Ответ #495 27 Октября, 2012, 12:18
Rongar, в самый конец
 

Добавлено: 27 Октября, 2012, 12:19

Rongar, а куда лучше всего новые диалоги добавлять?
 

Добавлено: 27 Октября, 2012, 12:30

О! Теперь диалог выыводится, воин добавляется, но после всего этого меня бросает в бой с этой партией. =(
« Отредактировано: 27 Октября, 2012, 12:30 (Saturn35) »
  • Фракция: Свады
  • Сообщений: 3508
  • За создание крупных модов и других особо сложных проектов За активную деятельность, связанную с публикациями и помощью другим посетителям За регистрацию на форуме не позже декабря 2011 года и не менее 3000 постов
    • Просмотр профиля
0
Ответ #496 27 Октября, 2012, 12:53
а куда лучше всего новые диалоги добавлять?
Спроси что-нибудь по-проще. Там в модулке такое рубилово, что ничего конкретного посоветовать невозможно. Правильно может добавлять диалоги только человек, который наизусть знает их всех.

О! Теперь диалог выыводится, воин добавляется, но после всего этого меня бросает в бой с этой партией. =(
Это проблемы того, как это всё работает.
Нужно добавить
(assign, "$g_leave_encounter",1)

[anyone,"dhara_soldiers_yes",[],"We very surprised. Ok. We attach to your group","close_window",[
  (troop_join,"trp_dhara_soldiers"), (assign, "$g_leave_encounter",1)]],

 [anyone,"dhara_soldiers_no",[],"Ok. We wait you.","close_window",[(assign, "$g_leave_encounter",1)]],
« Отредактировано: 27 Октября, 2012, 13:52 (Rongar) »
  • Сообщений: 43
    • Просмотр профиля
0
Ответ #497 27 Октября, 2012, 13:17
Rongar, А что это за переменная
$g_leave_encounter ?
  • Фракция: Свады
  • Сообщений: 3508
  • За создание крупных модов и других особо сложных проектов За активную деятельность, связанную с публикациями и помощью другим посетителям За регистрацию на форуме не позже декабря 2011 года и не менее 3000 постов
    • Просмотр профиля
0
Ответ #498 27 Октября, 2012, 13:53
Эта переменная инициализируется то ли в скриптах, когда начинается встреча с другой партией, то ли в game_menu. И потом в game_menu проверяется значение.
  • Сообщений: 43
    • Просмотр профиля
0
Ответ #499 28 Октября, 2012, 12:11
А можно ли найти где-нибудь чистую модульку (Без фракций, воинов, диалогов и т.д., только с основными триггерами и скриптами) ?
  • Фракция: Свады
 

Сайт "Всадники Кальрадии" не является СМИ. Администрация не несет ответственность за высказывания и публикацию каких-либо материалов, сделанные любыми пользователями форума, в том числе посредством личных и публичных сообщений. Материалы, размещенные на ресурсе третьими лицами, могут содержать информацию, не предназначенную для лиц, не достигнувших совершеннолетия. При обнаружении на ресурсе материалов, нарушающих законодательство Российской Федерации, необходимо обращаться к администрации.

Powered by SMF 2.0 | SMF © Simple Machines LLC | Сайт работает на быстром VPS/VDS хостинге от FASTVPS