Голосование

Как вы оцениваете Смуту?












Оформление



Пользователей
  • Всего: 28869
  • Последний: Adr3naline
Сейчас на форуме
Пользователи: 0
Гостей: 456
Всего: 456

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

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

  • Сообщений: 32
    • Просмотр профиля
0
« Ответ #1050 : 16 Марта, 2017, 12:30 »
(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? И зачем тебе тут слоты в этом коде нужны?
  • Фракция: Свады
  • Сообщений: 30
    • Просмотр профиля
0
« Ответ #1051 : 16 Марта, 2017, 13:58 »
Привет, Луций.

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

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-)
  • Фракция: Свады
  • Сообщений: 32
    • Просмотр профиля
0
« Ответ #1052 : 16 Марта, 2017, 19:08 »
Привет.

Почему проверка на то что агент является человеком лишняя? 
Потому что лошадь все равно не будет спауниться на 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 от Луций »
  • Фракция: Свады
  • Сообщений: 30
    • Просмотр профиля
0
« Ответ #1053 : 18 Марта, 2017, 10:40 »
В продолжении моего вопроса, касаемо, появления игрока на месте своего трупа  :D
Попробовал я разные варианты написания кода с разными условиями и событиями, но так нифига путнего из этого не вышло. Зато, было установлено, что в файле mission_templates.py в любой миссии, например, deathmatch за появление игрока отвечает триггер такого типа:
Особенно строки выделенные жирным шрифтом. Так вот точка появления игрока случайна и заносится в регистр reg0 в строке (player_spawn_new_agent, ":player_no", reg0), Я пробовал заменить параметр reg0 на цифру 2. Это привело к тому, что я всегда появлялся в одном и том же месте, в точке entry_point = 2. Тогда у меня возник вопрос, как в значение этого регистра reg0 записать позицию, на которой я окочурился в бою?
« Последнее редактирование: 18 Марта, 2017, 10:44 от Valerian60 »
  • Фракция: Свады
  • Сообщений: 30
    • Просмотр профиля
0
« Ответ #1054 : 15 Мая, 2017, 22:08 »
Нужна подсказка, надеюсь что кто-нибудь мне поможет или натолкнет на правильный ход мыслей. Вопрос вот в чем. У меня есть два триггера. Первый срабатывает по событию ti_killed_or_wanted, а второй по событию ti_on_agent_spawn. В первом триггере отслеживается место на котором погиб игрок. В этой позиции генерируется новая entry_point и второй триггер телепортирует игрока на эту точку. Должен сказать, что все работает прекрасно когда игрок только один на сервере, но когда игроков много алгоритм сбивается. Происходит следующее: допустим у нас есть 2 игрока. Первый умирает и первый триггер фиксирует место его смерти. Пусть это будет позиция А. Пока первый умерший игрок не возродился, умирает второй и первый триггер перезаписывает позицию А в позицию Б. Таким образом, второй триггер, срабатывающий после спавна агента, поместит первого игрока, так как он умер раньше в позицию Б, т.е. в место смерти второго игрока.
Так вот, вопрос вот в чём, как мне привязать эту позицию смерти к конкретному игроку? Может есть ещё дополнительные условия... Я думал разные варианты, но в голову пока так ничего и не пришло.... :(
Буду рад любым подсказкам.
  • Фракция: Свады
  • Сообщений: 296
  • За активную деятельность, связанную с публикациями и помощью другим посетителям
    • Просмотр профиля
+1
« Ответ #1055 : 16 Мая, 2017, 14:22 »
  Можно так:  в триггере ti_agent_killed_or_wounded запишите в слот к отдавшему Богу душу агенту (добавьте слот или задействуйте неиспользуемый в ваших условиях) координаты смерти (можно непосредственно из регистра позиций pos(x)), в другой слот время до респавна в виде кол-ва тактов триггера, который будете использовать для спавна. Далее делаете триггер (для спавна) с проверкой на живость агента, ежели агент - труп, то уменьшаем значение в слоте с временем респавна на единицу, и ежели после сего в таковом слоте значение осталось менее единицы, то берём из слота в, каковой записали позицию смерти, координаты и там спавним.
Без комментариев.
  • Сообщений: 30
    • Просмотр профиля
0
« Ответ #1056 : 17 Мая, 2017, 13:32 »
Можно так:  в триггере ti_agent_killed_or_wounded запишите в слот к отдавшему Богу душу агенту (добавьте слот или задействуйте неиспользуемый в ваших условиях) координаты смерти (можно непосредственно из регистра позиций pos(x))

Дикий-дикий повар, огромное спасибо Вам за вашу подсказку насчет слотов  :thumbup: Все получилось в лучшем виде)) Еще немного протестирую конечно скрипт, но по игре в течение часа все работает просто супер  :D
  • Фракция: Свады
  • Сообщений: 7
    • Просмотр профиля
0
« Ответ #1057 : 26 Мая, 2017, 17:22 »
Вроде угадал с темой, но не уверен... Простите, если что - заплутал на форуме конкретно.  :crazy:


Сколько ни качал, а никак не было, чтобы у меня работали: Варбэнд, WSE и модулька. Модулька писала ошибку про отсутствие файла "*.рус"... WSE, буду честным, нафиг мне не сдался. Но вот модулька.... Скиньте пожалуйста ссылку на игру и модульку рабочие? (Тут качал на 1.153 - не работает, на 1.60 не нашёл) Версия не принципиальна, но желательно от 1.153. Заранее спасибо!  :embarrassed:
  • Фракция: Наемники
Уважайте своих войнов и берегите каждого из них. И тогда у вас появится шанс стать великим полководцем...
  • Сообщений: 296
  • За активную деятельность, связанную с публикациями и помощью другим посетителям
    • Просмотр профиля
0
« Ответ #1058 : 27 Мая, 2017, 07:59 »
  Вряд-ли модулька не рабочая, скорее неправильно указан путь до установленого питона в переменной окружения. Или можно попробовать дописать его (путь до питона) в батник, который запускает сборку модуля (вроде, там перед каждым process* дописывается в виде "C:\Program files\python 2.6.6\python.exe"). Лучше правильно перепишите значение для переменной окружения, в теме даже сказано как.
Без комментариев.
  • Сообщений: 7
    • Просмотр профиля
0
« Ответ #1059 : 27 Мая, 2017, 13:17 »
скорее неправильно указан путь до установленого питона
Всё делал по этой самой теме. Ошибки подобной нигде не видел... Хотя попробую конечно еще раз, может и правда заработает. Если так, то заранее спасибо.)
  • Фракция: Наемники
Уважайте своих войнов и берегите каждого из них. И тогда у вас появится шанс стать великим полководцем...
  • Сообщений: 30
    • Просмотр профиля
0
« Ответ #1060 : 01 Июня, 2017, 09:52 »
Вряд-ли модулька не рабочая, скорее неправильно указан путь до установленого питона в переменной окружения. Или можно попробовать дописать его (путь до питона) в батник, который запускает сборку модуля (вроде, там перед каждым 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-)
  • Фракция: Свады
  • Сообщений: 15
  • Skype - xxxaren@yandex.com
    • Просмотр профиля
0
« Ответ #1061 : 02 Июня, 2017, 20:34 »
   (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),
      ]),


где я ошибся? при компиляции все отлично идет, но в сервере при подходе к боту он смертный и не выдает вещи
  • Фракция: Норды
— Ты знаешь, какое самое примитивное чувство у людей? Страх.
  • Сообщений: 296
  • За активную деятельность, связанную с публикациями и помощью другим посетителям
    • Просмотр профиля
0
« Ответ #1062 : 03 Июня, 2017, 05:55 »
Да нафиг Вам сдался этот Питон

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?
      ]),
Без комментариев.
  • Сообщений: 15
  • Skype - xxxaren@yandex.com
    • Просмотр профиля
0
« Ответ #1063 : 04 Июня, 2017, 11:47 »
спаунится бот по пропу с серверной стороны, мульт, когда бьешь по нему то он за золото продавал наемников, есть ли ошибки какие при декомпиляции гладко?
###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 »
  • Фракция: Норды
— Ты знаешь, какое самое примитивное чувство у людей? Страх.
  • Сообщений: 15
  • Skype - xxxaren@yandex.com
    • Просмотр профиля
0
« Ответ #1064 : 04 Июня, 2017, 15:21 »
Дикий-дикий повар,  спасибо я подругому все сделал) все работает
 
  • Фракция: Норды
— Ты знаешь, какое самое примитивное чувство у людей? Страх.
  • Сообщений: 30
    • Просмотр профиля
0
« Ответ #1065 : 17 Июля, 2017, 15:50 »
Цитировать (выделенное)
Valerian60-чудак-человек, ежели модулька (в process_* файлы загляни и узри) написана на Python (есть ещё на C++), то он тебе для сборки модуля необходим.

Почему-то у меня все компилируется бат-файлом, а скрипты  пишутся в текстовом редакторе и все компилируется без проблем. Хотя может и был установлен когда-то... точно не скажу... 8-)
  • Фракция: Свады
  • Сообщений: 30
    • Просмотр профиля
0
« Ответ #1066 : 18 Июля, 2017, 14:09 »
Парни, есть вопрос)) Допустим, мы имеем какую-то сцену (scene_props), на ней находится бот. Как сделать так, чтобы игрок не мог к нему подойти? Чтобы, например, меня откидывало от него на определенное расстояние назад при приближении к боту или чтобы я упирался словно в невидимую стену...  8-)
  • Фракция: Свады
  • Сообщений: 2084
  • За создание крупных модов и других особо сложных проектов
    • Просмотр профиля
0
« Ответ #1067 : 19 Июля, 2017, 13:11 »
Valerian60, барьеры поставь :laught:
  • Фракция: Свады
  • Сообщений: 30
    • Просмотр профиля
0
« Ответ #1068 : 19 Июля, 2017, 13:40 »
Valerian60, барьеры поставь :laught:


Смешно.... :crazy: А по существу?
  • Фракция: Свады
  • Сообщений: 30
    • Просмотр профиля
0
« Ответ #1069 : 19 Июля, 2017, 17:44 »
Кстати, может кто подскажет, есть ли в модульке возможность из фиксированного ряда случайных чисел (например 2, 15, 7, 32) определить минимальное? Такой функции я не нашел, но может кто знает как тут можно схитрить  :)
  • Фракция: Свады
  • Сообщений: 296
  • За активную деятельность, связанную с публикациями и помощью другим посетителям
    • Просмотр профиля
0
« Ответ #1070 : 21 Июля, 2017, 15:14 »
Почему-то у меня все компилируется бат-файлом, а скрипты  пишутся в текстовом редакторе и все компилируется без проблем. Хотя может и был установлен когда-то... точно не скажу...
  Батник только указывает 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),
...
Без комментариев.
  • Сообщений: 20
  • Skype - masterlichlord
    • Просмотр профиля
0
« Ответ #1071 : 01 Августа, 2017, 19:33 »
Господа и дамы, я просто задолбался.

Для своей модификации хочу добавить городов, замков и прочих населенных пунктов на уже сделанную карту. Так на англоязычных одни аутдэйтэд инструкции, вообще к 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.
  • Сообщений: 777
    • Просмотр профиля
0
« Ответ #1072 : 02 Августа, 2017, 11:15 »
всем привет, хочу написать скрипт на набор пленных в варбанд и добавить в список существующих но нет ни знаний ни инструментов

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

Кто подскажет как сделать?
« Последнее редактирование: 02 Августа, 2017, 11:23 от trader4444 »
Спокойный как монах и несокрушимый как пилигрим.
  • Сообщений: 2084
  • За создание крупных модов и других особо сложных проектов
    • Просмотр профиля
+1
« Ответ #1073 : 02 Августа, 2017, 14:38 »
А еще?
module_scripts
важно что-бы город в константы попадал типа towns_begin, towns_end и пр. т.е. правильно расположить в партиес
  • Фракция: Свады
  • Сообщений: 20
  • Skype - masterlichlord
    • Просмотр профиля
0
« Ответ #1074 : 02 Августа, 2017, 15:27 »
Пасиб. Я сегодня на работе разобрался:) Вместо работы создал полнофункциоальные поселения всех трех типов:) Ошибка была в аренном скрипте и сенешалею
  • Фракция: Родоки
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.

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


Powered by SMF 2.0 | SMF © Simple Machines LLC