Теги:

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

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

(agent_is_human, ":cur_agent"),
Это лишнее .

(is_between, ":hp", 0, 1),
Я не уверен, но наверное лучше все же написать просто
Если можно сделать проще - лучше сделать проще. Мало ли..

(assign, ":cur_agent_new", ":cur_agent"),
Подожди, зачем создавать новую переменную? Если условие с 0 здоровья выполняется, все действия и так можно выполнять на ":cur_agent". Может я что-то не углядел, но как я понимаю, новая переменная тут лишняя. Во всяком случае, когда я делал триггер на постепенную регенерацию, я обошелся без новой переменной. Как по мне, чем меньше лишнего в коде - тем лучше. Вот мой код; может, поможет :

(agent_get_position, pos2, ":cur_agent_new"),
Я не спец в модульной системе (и вообще полез сюда только ради картоделания), но на всякий случай я бы посоветовал написать какой-нибудь pos30 вместо pos2. Просто потому, что у меня в одном скрипте на движение объект при активации двигался к pos1, где находилась точка спауна игроков. Когда я поставил pos30, все исправилось и объект начал двигаться в обозначенную мною точку.

(store_random_in_range, ":chislo", 0, 65),
64 и 65 - точки спауна флагов в режиме захвата флага. Я бы поставил до 63....

(agent_set_slot, ":cur_agent_new", slot_agent_spawn_entry_point, ":chislo"),
Ты уверен, что этот слот прописан в module_constants? И зачем тебе тут слоты в этом коде нужны?

Привет, Луций.

Спасибо за столь быстрый ответ.  ;) У меня есть несколько вопросов по твоему сообщению. Начну по порядку  :)

1.
Цитировать (выделенное)
(agent_is_human, ":cur_agent"),
Это лишнее .

Почему проверка на то что агент является человеком лишняя?  :blink:

2.
Цитировать (выделенное)
Я не уверен, но наверное лучше все же написать просто (lt, ":hp", 1),
Если можно сделать проще - лучше сделать проще. Мало ли..

Написал так как ты говорил, плюс ко всему попробовал убрать новую переменную и изменить условие (store_random_in_range, ":chislo", 0, 65), на (store_random_in_range, ":chislo", 0, 63), номер позиции в операции
(agent_get_position, pos2, ":cur_agent_new"), тоже изменил, но из этого роя, не вышло ничего абсолютно. Проверял на себе)) Мой персонаж после смерти так и продолжает появляться где попало.  >:(

Цитировать (выделенное)
(agent_set_slot, ":cur_agent_new", slot_agent_spawn_entry_point, ":chislo"),

Такой слот точно есть)) Я его брал как раз-таки из файла module_constants  8-) Я решил использовать слот по той причине чтобы операция возрождения игрока была применена для всех агентов на сцене, удовлетворяющих данным условиям.
Кстати, на форуме taleworlds.com мне посоветовали использовать операцию в триггере ti_on_agent_killed_or_wounded и (set_spawn_position, <position>), для появления игрока, но пока либо я туп и не все понял  :D, либо надо использовать другие команды и условия  8-)

Привет.

Почему проверка на то что агент является человеком лишняя? 
Потому что лошадь все равно не будет спауниться на Entry Point'ах, созданных для игроков. Ну впрочем, оставляй - компьютер чуть быстрее будет обрабатывать всех агентов если исключит лошадей. Это не принципиально.

Написал так как ты говорил, плюс ко всему попробовал убрать новую переменную и изменить условие (store_random_in_range, ":chislo", 0, 65), на (store_random_in_range, ":chislo", 0, 63), номер позиции в операции
(agent_get_position, pos2, ":cur_agent_new"), тоже изменил, но из этого роя, не вышло ничего абсолютно. Проверял на себе)) Мой персонаж после смерти так и продолжает появляться где попало. 
Гхм, я тут подумал. Раз агент помер, значит он уже не _alive, да? Он может быть еще _active некоторое время после смерти, но точно уже не _alive ))

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



ti_on_agent_killed_or_wounded и (set_spawn_position, <position>)
Все правильно, я вспомнил как это делается. Вместо первого нолика своего триггера вписывай ti_on_agent_killed_or_wounded...

Ладно, мне лень объяснять, лучше код попробую сам написать.

Кстати, вместо проверки по уровню здоровья можно использовать
(neg|agent_is_alive, ":cur_agent"),.


Скорее всего это будет выглядеть примерно так:

Кстати, я нашел скрипт в module_scripts, на который отсылаются триггеры 'ti_on_agent_killed_or_wounded' из mission_templates. Он называется 'multiplayer_server_on_agent_killed_or_wounded_common'. Там как раз есть код проверки агента на смерть и.т.д...  Если что - найди его и посмотри, как там сделано...
« Последнее редактирование: 16 Марта, 2017, 19:14 от Луций »

В продолжении моего вопроса, касаемо, появления игрока на месте своего трупа  :D
Попробовал я разные варианты написания кода с разными условиями и событиями, но так нифига путнего из этого не вышло. Зато, было установлено, что в файле mission_templates.py в любой миссии, например, deathmatch за появление игрока отвечает триггер такого типа:
Особенно строки выделенные жирным шрифтом. Так вот точка появления игрока случайна и заносится в регистр reg0 в строке (player_spawn_new_agent, ":player_no", reg0), Я пробовал заменить параметр reg0 на цифру 2. Это привело к тому, что я всегда появлялся в одном и том же месте, в точке entry_point = 2. Тогда у меня возник вопрос, как в значение этого регистра reg0 записать позицию, на которой я окочурился в бою?
« Последнее редактирование: 18 Марта, 2017, 10:44 от Valerian60 »

Нужна подсказка, надеюсь что кто-нибудь мне поможет или натолкнет на правильный ход мыслей. Вопрос вот в чем. У меня есть два триггера. Первый срабатывает по событию ti_killed_or_wanted, а второй по событию ti_on_agent_spawn. В первом триггере отслеживается место на котором погиб игрок. В этой позиции генерируется новая entry_point и второй триггер телепортирует игрока на эту точку. Должен сказать, что все работает прекрасно когда игрок только один на сервере, но когда игроков много алгоритм сбивается. Происходит следующее: допустим у нас есть 2 игрока. Первый умирает и первый триггер фиксирует место его смерти. Пусть это будет позиция А. Пока первый умерший игрок не возродился, умирает второй и первый триггер перезаписывает позицию А в позицию Б. Таким образом, второй триггер, срабатывающий после спавна агента, поместит первого игрока, так как он умер раньше в позицию Б, т.е. в место смерти второго игрока.
Так вот, вопрос вот в чём, как мне привязать эту позицию смерти к конкретному игроку? Может есть ещё дополнительные условия... Я думал разные варианты, но в голову пока так ничего и не пришло.... :(
Буду рад любым подсказкам.

  Можно так:  в триггере ti_agent_killed_or_wounded запишите в слот к отдавшему Богу душу агенту (добавьте слот или задействуйте неиспользуемый в ваших условиях) координаты смерти (можно непосредственно из регистра позиций pos(x)), в другой слот время до респавна в виде кол-ва тактов триггера, который будете использовать для спавна. Далее делаете триггер (для спавна) с проверкой на живость агента, ежели агент - труп, то уменьшаем значение в слоте с временем респавна на единицу, и ежели после сего в таковом слоте значение осталось менее единицы, то берём из слота в, каковой записали позицию смерти, координаты и там спавним.
Без комментариев.

Можно так:  в триггере ti_agent_killed_or_wounded запишите в слот к отдавшему Богу душу агенту (добавьте слот или задействуйте неиспользуемый в ваших условиях) координаты смерти (можно непосредственно из регистра позиций pos(x))

Дикий-дикий повар, огромное спасибо Вам за вашу подсказку насчет слотов  :thumbup: Все получилось в лучшем виде)) Еще немного протестирую конечно скрипт, но по игре в течение часа все работает просто супер  :D

Вроде угадал с темой, но не уверен... Простите, если что - заплутал на форуме конкретно.  :crazy:


Сколько ни качал, а никак не было, чтобы у меня работали: Варбэнд, WSE и модулька. Модулька писала ошибку про отсутствие файла "*.рус"... WSE, буду честным, нафиг мне не сдался. Но вот модулька.... Скиньте пожалуйста ссылку на игру и модульку рабочие? (Тут качал на 1.153 - не работает, на 1.60 не нашёл) Версия не принципиальна, но желательно от 1.153. Заранее спасибо!  :embarrassed:
Уважайте своих войнов и берегите каждого из них. И тогда у вас появится шанс стать великим полководцем...

  Вряд-ли модулька не рабочая, скорее неправильно указан путь до установленого питона в переменной окружения. Или можно попробовать дописать его (путь до питона) в батник, который запускает сборку модуля (вроде, там перед каждым process* дописывается в виде "C:\Program files\python 2.6.6\python.exe"). Лучше правильно перепишите значение для переменной окружения, в теме даже сказано как.
Без комментариев.

скорее неправильно указан путь до установленого питона
Всё делал по этой самой теме. Ошибки подобной нигде не видел... Хотя попробую конечно еще раз, может и правда заработает. Если так, то заранее спасибо.)
Уважайте своих войнов и берегите каждого из них. И тогда у вас появится шанс стать великим полководцем...

Вряд-ли модулька не рабочая, скорее неправильно указан путь до установленого питона в переменной окружения. Или можно попробовать дописать его (путь до питона) в батник, который запускает сборку модуля (вроде, там перед каждым process* дописывается в виде "C:\Program files\python 2.6.6\python.exe"). Лучше правильно перепишите значение для переменной окружения, в теме даже сказано как.

Всё делал по этой самой теме. Ошибки подобной нигде не видел... Хотя попробую конечно еще раз, может и правда заработает. Если так, то заранее спасибо.)

Да нафиг Вам сдался этот Питон, один геммор с его установкой, то версия не подходит, то еще какой-то бред напишет... Скачайте как я текстовый редактор типа Notepad++ там все есть и синтаксис питоновского языка подсвечивается и плагинов всяких море и мозг не выносит. А компилировать будете также двойным кликом по файлу build_module.bat Единственное конечно, что путь в файле module_info.py все-таки придется прописать. У меня написано так: export_dir = "C:/Users/vvs/Desktop/My_server_test/Modules/Native/"
Все, больше проблем нет  8-)

   (2, 0, 0, [(multiplayer_is_server),], ####assassin even securety AI check agr and kill players   
      [
   (try_for_agents,":bot_s"),
      (agent_is_active,":bot_s"),
      (agent_is_non_player,":bot_s"),
      (agent_is_human,":bot_s"),(gt,":bot_s",-1),
      (agent_is_alive,":bot_s"),
      (agent_get_troop_id,":troop_id",":bot_s"),(gt,":troop_id",-1),
       (this_or_next|eq,":troop_id","$npc_weapon"),(eq,":troop_id","$npc_armor"),
      (agent_get_position,pos1,":bot_s"),
      (try_begin), (this_or_next|eq,":troop_id","$npc_weapon"),(eq,":troop_id","$npc_armor"),(agent_set_no_death_knock_down_only, ":bot_s", 1),(agent_set_damage_modifier, ":bot_s", 200),(try_end),
      (try_for_agents,":agent_no"),
         (agent_is_active,":agent_no"),(agent_is_alive, ":agent_no"),
         (agent_is_human,":agent_no"),(gt,":agent_no",-1),
         (agent_get_position,pos2,":agent_no"),
         (get_distance_between_positions,":dist",pos1,pos2),
         (try_begin),(agent_get_player_id,":player_no",":agent_no"),(gt,":player_no",-1),
         (try_end),
         (agent_get_wielded_item,":item_equip_r",":agent_no",0), #0-R 1-L
         (try_begin),(neg|agent_is_non_player, ":agent_no"),(is_between,":dist",0,1500),(le,":item_equip_r",-1),
            (try_begin),(this_or_next|eq,":troop_id","$npc_weapon"),(eq,":troop_id","$npc_armor"),(is_between,":dist",0,150), #shop npc
               (try_begin),(eq,":troop_id","$npc_armor"),
                  (call_script,"script_assassin_event_armor",":agent_no"),
               (else_try),(eq,":troop_id","$npc_weapon"),
                  (call_script,"script_assassin_event_weapon",":agent_no"),
               (try_end),
         (else_try),(neg|agent_is_non_player, ":agent_no"),(is_between,":dist",0,1500),  #
            (try_begin),(is_between,":dist",0,199),(gt,":item_equip_r",-1),
            (else_try),(this_or_next|gt,":item_equip_r",-1), #check player
               (agent_set_scripted_destination, ":bot_s", pos2, 1),
            (try_end),
         (else_try),(agent_is_non_player, ":agent_no"),
               (agent_add_relation_with_agent,":bot_s",":agent_no", 1), # #-1 = enemy, 0 = neutral (no friendly fire at all), 1 = ally
               (agent_add_relation_with_agent,":agent_no",":bot_s", 1), # #-1 = enemy, 0 = neutral (no friendly fire at all), 1 = ally
         (try_end),
      (try_end), 
   (try_end),
      ]),


где я ошибся? при компиляции все отлично идет, но в сервере при подходе к боту он смертный и не выдает вещи
— Ты знаешь, какое самое примитивное чувство у людей? Страх.

Да нафиг Вам сдался этот Питон

Valerian60-чудак-человек, ежели модулька (в process_* файлы загляни и узри) написана на Python (есть ещё на C++), то он тебе для сборки модуля необходим.
Скачайте как я текстовый редактор типа Notepad++ там все есть и синтаксис питоновского языка подсвечивается и плагинов всяких море

Здесь уже кому-что, текстовых редакторов существует немало и подсветка много где есть (и не обязательно питоновскую тебе module_* ковырять).
один геммор с его установкой, то версия не подходит, то еще какой-то бред напишет

Тем не менее ты его либо установил, либо он уж был у тебя в системе. А без "геммора" никуда, проще только ничего не делать, как-то так вот.

ARIMA, про смертность, может ещё стоит проверить содержимое переменных "$npc_weapon" и "$npc_armor", более ничего конкретного сказать не могу, т. к. мало описания того, что должен делать триггер, а непосредственно выдача предметов у вас описана в другом месте. Небольшие правки прилагаю:
   (2, 0, 0, [(multiplayer_is_server),], ####assassin even securety AI check agr and kill players   
      [
   (try_for_agents,":bot_s"), # 1 cicle begin
#      (agent_is_active,":bot_s"), # not need?
      (gt,":bot_s",-1),
      (agent_is_non_player,":bot_s"),
      (agent_is_human,":bot_s"),
#      (gt,":bot_s",-1), # above now
      (agent_is_alive,":bot_s"),
      (agent_get_troop_id,":troop_id",":bot_s"),
#      (gt,":troop_id",-1), # equivalent to (agent_is_human,":bot_s"), (used above)
      (this_or_next|eq,":troop_id","$npc_weapon"),
      (eq,":troop_id","$npc_armor"),
      (agent_get_position,pos1,":bot_s"),
      (try_begin),
         (this_or_next|eq,":troop_id","$npc_weapon"),
         (eq,":troop_id","$npc_armor"),
         (agent_set_no_death_knock_down_only, ":bot_s", 1),
         (agent_set_damage_modifier, ":bot_s", 200),
      (try_end),
      (try_for_agents,":agent_no"), # 2 cicle begin
#         (agent_is_active,":agent_no"),
         (gt,":agent_no",-1),
         (agent_is_alive, ":agent_no"),
         (agent_is_human,":agent_no"),
#         (gt,":agent_no",-1),
         (agent_get_position,pos2,":agent_no"),
         (get_distance_between_positions,":dist",pos1,pos2),
#         (try_begin),
#            (agent_get_player_id,":player_no",":agent_no"),
#            (gt,":player_no",-1),
#            end what now?
#         (try_end),
         (agent_get_wielded_item,":item_equip_r",":agent_no",0), #0-R 1-L
         (try_begin), # 1 block begin
            (neg|agent_is_non_player, ":agent_no"),
            (is_between,":dist",0,1500),
#            (le,":item_equip_r",-1),
            (eq,":item_equip_r",-1), # that enough
            (try_begin), # 2 block begin
               (this_or_next|eq,":troop_id","$npc_weapon"),
               (eq,":troop_id","$npc_armor"),
               (is_between,":dist",0,250), # 150 - isn't too close?
               (try_begin), # 3 block begin
                  (eq,":troop_id","$npc_armor"),
                  (call_script,"script_assassin_event_armor",":agent_no"),
               (else_try),
                  (eq,":troop_id","$npc_weapon"),
                  (call_script,"script_assassin_event_weapon",":agent_no"),
               (try_end), # 3 block end
            (else_try),
#               (neg|agent_is_non_player, ":agent_no"), # don't need (used above)
#               (is_between,":dist",0,1500), # don't need (used above)
            (try_begin), # 2 block end
            (is_between,":dist",0,199),
#            (gt,":item_equip_r",-1), # 0 - is "invalid_item"
            (gt,":item_equip_r",0),
         (else_try),
# distantion and is_plyer check is need there?
            (this_or_next|gt,":item_equip_r",0), #check player
            (agent_set_scripted_destination, ":bot_s", pos2, 1),
         (try_end), # 1 block end
      (else_try),
         (agent_is_non_player, ":agent_no"),
         (agent_add_relation_with_agent,":bot_s",":agent_no", 1), # #-1 = enemy, 0 = neutral (no friendly fire at all), 1 = ally
         (agent_add_relation_with_agent,":agent_no",":bot_s", 1), # #-1 = enemy, 0 = neutral (no friendly fire at all), 1 = ally
      (try_end), # 2 cicle end
   (try_end), # 1 cicle end
#   (try_end), # it's from whence?
      ]),
Без комментариев.

спаунится бот по пропу с серверной стороны, мульт, когда бьешь по нему то он за золото продавал наемников, есть ли ошибки какие при декомпиляции гладко?
###constans
slot_agent_is_chat_bot            = 32
slot_agent_is_mercenary_owner     = 33


### trigger

agent_hit_trigger = (ti_on_agent_hit, 0, 0, [
  (multiplayer_is_server),
  ],
   [
        (store_trigger_param_1, ":damage_agent_no"),
        (store_trigger_param_2, ":attacker_agent_no"),
        (store_trigger_param_3, ":damage"),

(agent_get_position, pos1, ":damage_agent_no"),

(scene_prop_get_num_instances, ":object_max", "spr_potlamp"),
(try_begin),
            (ge, ":object_max", 1),
            (try_for_range, ":object_cur", 0, ":object_max"),
                (scene_prop_get_instance, ":instance", "spr_potlamp", ":object_cur"),
(prop_instance_get_variation_id_2, ":variation_id", ":instance"),
(gt, ":variation_id", 0),
(val_mul, ":variation_id", 100),
                (prop_instance_get_position, pos3, ":instance"),
(get_distance_between_positions, ":distance", pos1, pos3),
(le, ":distance", ":variation_id"),
(assign, ":damage", 0),
(set_trigger_result, ":damage"),
(assign, ":object_max", 0),
            (try_end),
  (agent_is_non_player, ":damage_agent_no"),
  (try_begin),
    (agent_slot_eq, ":damage_agent_no", slot_agent_is_chat_bot, 1),
(agent_get_player_id, ":attacker_player_id", ":attacker_agent_no"),
        (player_is_active, ":attacker_player_id"),
  (try_end),
(try_end),


        (assign, "$g_process_interrupter", 1),
        (call_script, "script_cf_mt_neo_agent_hit", ":damage_agent_no", ":attacker_agent_no", ":damage"),
   ])
   
   
   
chat_bot_spawn = (10, 0, ti_once, [
  (multiplayer_is_server),
],
  [
    (scene_prop_get_num_instances, ":instances_number", scene_prop_for_spawn_agent),
    (try_for_range, ":instance_index", 0, ":instances_number"),
  (scene_prop_get_instance, ":instance_no", scene_prop_for_spawn_agent, ":instance_index"),
  (prop_instance_is_valid, ":instance_no"),

  (prop_instance_get_variation_id, ":troop_no", ":instance_no"),
      (is_between, ":troop_type", 1, 15),
  (assign, reg3, ":troop_type"),
  (call_script, "script_get_troop_for_spawn_agent_with_scene_props", ":troop_type"),
 
      (prop_instance_get_position, pos3, ":instance_no"),
  (set_spawn_position, pos3),
  (spawn_agent, ":troop_no"),
  (assign, ":agent_no", reg0),

 
      (agent_set_slot, ":agent_no", slot_agent_is_chat_bot, 1),
  (agent_set_no_death_knock_down_only, ":agent_no", 1),
 
      (try_begin),
  (agent_is_active,":agent_id"),
  (agent_is_alive,":agent_id"),
  (agent_get_player_id, ":player_id", ":agent_id"),
  (player_is_active,":player_id"),
  (player_get_gold, ":player_gold", ":player_id"),
      (prop_instance_get_variation_id_2, reg0, ":instance_no"),
  (val_mul, reg0, 100),
  (try_begin),
  (ge, ":player_gold", reg0),
  (try_begin),
  (prop_instance_get_variation_id, ":troop_type", ":instance_no"),

  (assign, ":troop_id", 0),
  (try_begin),
  (eq, ":troop_type", 1),
  (assign, ":troop_id", "trp_swadian_crossbowman_multiplayer_ai"),
  (else_try),
  (eq, ":troop_type", 2),
  (assign, ":troop_id", "trp_nord_veteran_multiplayer_ai"),
  (try_end),
 
  (gt, ":troop_id", 0),
 
  (val_sub, ":player_gold", reg0),
  (player_set_gold, ":player_id", ":player_gold", multi_max_gold_that_can_be_stored),
 
  (agent_get_position,pos1,":agent_id"),
  (position_move_x, pos1, 150),
      (set_spawn_position, pos1),
      (spawn_agent,":troop_id"),
  (assign, ":mercenary_agent_id", reg0),
  (agent_set_slot, ":mercenary_agent_id", slot_agent_is_mercenary_owner, ":player_id"),
  (call_script, "script_agent_set_relation_with_agent", ":agent_id", ":mercenary_agent_id", 1),
  (agent_set_group, ":mercenary_agent_id", ":player_id"),
  (agent_set_is_alarmed, ":mercenary_agent_id", 1),
 
  (try_for_agents, ":cur_agent"),
  (agent_is_active, ":cur_agent"),
  (agent_is_alive, ":cur_agent"),
  (agent_is_human, ":cur_agent"),
  (agent_slot_eq, ":cur_agent", slot_agent_is_mercenary_owner, ":player_id"),
  (call_script, "script_agent_set_relation_with_agent", ":mercenary_agent_id", ":cur_agent", 1),
  (try_end),

  (call_script, "script_agent_make_neutral_all", ":agent_no"), 
(try_end), 
  (str_store_string, s0, "@You hired mercenary"),
  (multiplayer_send_string_to_player, ":player_id", multiplayer_event_show_server_message, s0),
 
  (try_end),
  (else_try),
      (str_store_string, s0, "@Mercenary cost - {reg0} gold"),
              (multiplayer_send_string_to_player, ":player_id", multiplayer_event_show_server_message, s0),
      (try_end),
  (try_end),
   ])
Vanok (Старший администратор)Большие куски кода вставляются через тег code, либо прячутся под спойлер.
« Последнее редактирование: 04 Июня, 2017, 21:28 от Vanok »
— Ты знаешь, какое самое примитивное чувство у людей? Страх.

Дикий-дикий повар,  спасибо я подругому все сделал) все работает
 
— Ты знаешь, какое самое примитивное чувство у людей? Страх.

Цитировать (выделенное)
Valerian60-чудак-человек, ежели модулька (в process_* файлы загляни и узри) написана на Python (есть ещё на C++), то он тебе для сборки модуля необходим.

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

Парни, есть вопрос)) Допустим, мы имеем какую-то сцену (scene_props), на ней находится бот. Как сделать так, чтобы игрок не мог к нему подойти? Чтобы, например, меня откидывало от него на определенное расстояние назад при приближении к боту или чтобы я упирался словно в невидимую стену...  8-)

Valerian60, барьеры поставь :laught:

Valerian60, барьеры поставь :laught:


Смешно.... :crazy: А по существу?

Кстати, может кто подскажет, есть ли в модульке возможность из фиксированного ряда случайных чисел (например 2, 15, 7, 32) определить минимальное? Такой функции я не нашел, но может кто знает как тут можно схитрить  :)

Почему-то у меня все компилируется бат-файлом, а скрипты  пишутся в текстовом редакторе и все компилируется без проблем. Хотя может и был установлен когда-то... точно не скажу...
  Батник только указывает process_* файлы которые нужно выполнить, которые написаны на python.

  Под барьерами подразумевались scene_props'ы без графики (чисто collision mesh). Невидимые плоские стенки и др. уже входят в состав nativ'а (посмотри props'ы со словом barrier).
может кто подскажет, есть ли в модульке возможность из фиксированного ряда случайных чисел (например 2, 15, 7, 32) определить минимальное?
  Хитрить не обязательно, достаточно пройтись циклом по всем числам в списке, например, поиск наименьшего значения по слотам агента:
...
(assign, ":min_value", 2**31),
(try_for_range, ":slot", 0, ":num_slots"),
  (agent_get_slot, ":cur_value", ":agent", ":slot"),
  (lt, ":cur_value", ":min_value"),
  (assign, ":min_value", ":cur_value"),
(try_end),
...
Без комментариев.

Господа и дамы, я просто задолбался.

Для своей модификации хочу добавить городов, замков и прочих населенных пунктов на уже сделанную карту. Так на англоязычных одни аутдэйтэд инструкции, вообще к 0.7 или 0.8 версии ( а на русских самая ранняя из англоязычных))

Вопрос такой:
Кто может перечислить файлы модульки, которые надо редактировать в 1.011, чтобы добавить город?

А то уже по 3 мануалам пытался добавить город - ни черта. И ведь что обидно - манулов нет, а в куче модов города понадобавляли.

вроде module_parties, module_scenes, трупс для сенешалей и прочи.. А еще?
« Последнее редактирование: 01 Августа, 2017, 19:51 от MasterLichLord »
There is no emotion, there is peace.
There is no ignorance, there is knowledge.
There is no passion, there is serenity.
There is no chaos, there is harmony.
There is no death, there is the Force.

всем привет, хочу написать скрипт на набор пленных в варбанд и добавить в список существующих но нет ни знаний ни инструментов

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

Кто подскажет как сделать?
« Последнее редактирование: 02 Августа, 2017, 11:23 от trader4444 »
Спокойный как монах и несокрушимый как пилигрим.

+1
Ответ #1073 : 02 Августа, 2017, 14:38
А еще?
module_scripts
важно что-бы город в константы попадал типа towns_begin, towns_end и пр. т.е. правильно расположить в партиес

Пасиб. Я сегодня на работе разобрался:) Вместо работы создал полнофункциоальные поселения всех трех типов:) Ошибка была в аренном скрипте и сенешалею
There is no emotion, there is peace.
There is no ignorance, there is knowledge.
There is no passion, there is serenity.
There is no chaos, there is harmony.
There is no death, there is the Force.

Теги: