• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Форум » TrinityCore » Установка / Настройка TrinityCore » Создание скриптов с помощью EventAI
Создание скриптов с помощью EventAI
forj
Скаут
Данный гайд повествует о том, как посредством creature_ai_script привязывать спелы мобам. Конечно удобнее воспользоватся конструктором EventAI от Константина, но я хотел бы расмотреть каждое значение, как это может быть записанно в БД. На данном этапе я не буду затрагивать фазы.
Итак для того чтобы приступить к созданию своих скриптов, нужно понимать что это такое.

EventAI скрипт работает на основе двух данных: "Что сделать?" и "Когда сделать это?". Т.е. "Что делать?" это есть само действие скрипта, а"Когда сделать это?" - в каком случае и в какое время скрипт будет выполнятся.
Сам скрипт может содержать в себе до 3 действий сразу (без фаз)

Для начала простенький пример =) :
Quote
INSERT INTO `creature_ai_scripts` VALUES ('900011382', '8836', '6', '0', '100', '0', '0', '0', '0', '0', '11', '19740', '6', '2', '0', '0', '0', '0', '0', '0', '0', '0', 'MyScript');

После убийства моба (в данном скрипте это курица)))) на игрока убившего её будет повешен баф "Благословение могущества" (п.с. убивается гмом командой дай)

Как записывается скрипт в базу:
Quote

INSERT INTO `creature_ai_scripts` VALUES ('id скрипта', 'id моба, к которому привязывается скрипт', 'в каком случае сработает скрипт ', 'фаза', 'шанс срабатывания случая', 'флаг случая', '1 параметр случая', '2 параметр', '3 параметр', '4 параметр', 'какое действие сработает', '1 допольнительный параметр к действию (не для всех действий)', '2 доп. параметр', '3 доп. параметр', '2 действие', 'параметр', 'параметр', 'параметр', '3 действие', 'параметр', 'параметр', 'параметр', 'ваш коментарий к скрипту');

Что может быть записанно в каждой колонке:

Id:
Нумерация вашего скрипта, значение на ваш выбор (важно не ставить числа которые уже есть, а то затерете то что уже было в БД)

Id моба:
Cущество в игре к которому вы хотите добавить скрипт

Случаи для скрипта и их параметры:


Шанс срабатывания в %:

При 50% записываем 50

Флаг случая:


Действие скрипта и параметры действия:


Теперь когда мы подставили желаемые параметры колонок в запрос и накатили в БД, нам необходимо привязать моба к скрипту, для этого мы используем следующий запрос:
Quote

UPDATE `creature_template` SET `AIName` = 'EventAI' WHERE `entry` = 'ID моба';


P.s.: Данный гайд был написан на основе YTDB wiki, по структуре подойдет как и для Mangos, так и для Trinity-core
Сообщение # 1 отредактировано forj - Вторник, 26.07.2011, 12:41
Vray3d
Trinity Core
Добавлю к написанному!

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

Пример шаблона спеллов:

Code
--bolt--
('30004850','474','0','0','100','0','0','0','0','0','21','0','0','0','0','0','0','0','0','0','0','0','Defias Rogue Wizard - Stop Movement on Aggro'),
('30004851','474','4','0','100','0','0','0','0','0','11','13322','1','0','22','1','0','0','0','0','0','0','Defias Rogue Wizard - Cast Frostbolt and Set Phase 1 on Aggro'),
('30004852','474','4','0','50','0','0','0','0','0','1','-1038','0','0','0','0','0','0','0','0','0','0','Defias Rogue Wizard - Chance Say on Aggro'),
('30004853','474','3','13','100','0','15','0','0','0','21','1','0','0','22','2','0','0','0','0','0','0','Defias Rogue Wizard - Start Movement and Set Phase 2 when Mana is at 15%'),
('30004854','474','0','13','100','1','0','0','1500','3000','11','13322','1','0','0','0','0','0','0','0','0','0','Defias Rogue Wizard - Cast FrostBolt above 15% Mana (Phase 1)'),
('30004855','474','3','11','100','0','100','28','0','0','21','0','0','0','22','1','0','0','0','0','0','0','Defias Rogue Wizard - Set Ranged Movement and Set Phase 1 when Mana is above 28% (Phase 2)'),
('30004856','474','9','0','100','1','30','50','0','0','22','1','0','0','0','0','0','0','0','0','0','0','Defias Rogue Wizard - Start Movement Beyond 30 Yards'),
('30004857','474','7','0','100','0','0','0','0','0','22','0','0','0','0','0','0','0','0','0','0','0','Defias Rogue Wizard - On Evade set Phase to 0'),

---Shoot----

('30005467','500','0','0','100','0','0','0','0','0','21','0','0','0','0','0','0','0','0','0','0','0','Riverpaw Scout - Stop Movement on Aggro'),
('30005469','500','4','0','100','0','0','0','0','0','11','6660','1','0','22','1','0','0','0','0','0','0','Riverpaw Scout - Cast Shoot and Set Phase 1 on Aggro'),
('30005470','500','0','13','100','1','2200','4700','2200','4700','11','6660','1','0','0','0','0','0','0','0','0','0','Riverpaw Scout - Cast Shoot (Phase 1)'),
('30005471','500','9','13','100','1','20','100','0','0','21','1','0','0','0','0','0','0','0','0','0','0','Riverpaw Scout - Start Movement at 20 Yards (Phase 1)'),
('30005472','500','9','13','100','1','6','10','0','0','21','0','0','0','0','0','0','0','0','0','0','0','RiverpawScout - Stop Movement at 10 Yards (Phase 1)'),
('30005473','500','9','13','100','1','0','5','0','0','21','1','0','0','0','0','0','0','0','0','0','0','RiverpawScout - Start Movement at 5 Yards (Phase 1)'),
('30005474','500','2','0','100','0','15','0','0','0','22','2','0','0','0','0','0','0','0','0','0','0','RiverpawScout - Set Phase 2 at 15% HP'),
('30005475','500','2','11','100','0','15','0','0','0','21','1','0','0','25','0','0','0','1','-47','0','0','Riverpaw Scout - Start Movement and Flee at 15% HP (Phase 2)'),
('30005476','500','7','0','100','0','0','0','0','0','22','0','0','0','0','0','0','0','0','0','0','0','RiverpawScout - On Evade set Phase to 0'),

--Throw--

('30005382','95','9','0','100','1','5','20','0','0','21','0','0','0','0','0','0','0','0','0','0','0','Defias Smuggler - Stop Moving when in Throw Range'),
('30005383','95','9','0','100','1','0','5','0','0','21','1','0','0','0','0','0','0','0','0','0','0','Defias Smuggler - Start Moving when not in Throw Range I'),
('30005384','95','9','0','100','1','20','100','0','0','21','1','0','0','0','0','0','0','0','0','0','0','Defias Smuggler - Start Moving when not in Throw Range II'),
('30005385','95','9','0','100','1','5','20','3500','4100','11','10277','1','0','0','0','0','0','0','0','0','0','Defias Smuggler - Cast Throw'),
('30005386','95','0','0','65','1','1300','7300','4800','4900','11','53','1','0','0','0','0','0','0','0','0','0','Defias Smuggler - Cast Backstab'),
('30005387','95','2','0','100','0','15','0','0','0','25','0','0','0','1','-47','0','0','21','1','0','0','Defias Smuggler - Flee at 15% HP'),

--Healing--

('787402','7874','2','0','100','1','25','0','10300','12900','11','11431','0','0','0','0','0','0','0','0','0','0','Razorfen Thornweaver - Cast Healing Touch When Below 25% HP'),

-- Renew --

('1529402','15294','2','0','100','1','50','0','12300','14900','11','31325','0','0','0','0','0','0','0','0','0','0','Feral Tender - Casts Renew at 50% HP'),

--On Friends Healing--

('30004012','3732','14','0','100','0','300','40','0','0','11','2054','6','1','0','0','0','0','0','0','0','0','Forsaken Seeker - Casts Heal on Friendlies'),

--Summon Imp --

('466801','4668','1','0','100','0','0','0','1000','1000','11','688','0','0','0','0','0','0','0','0','0','0','Burning Blade Summoner - Casts Summon Imp OOC'),

--Summon ANOTHER PET!!!!---

('30000575','2071','1','0','100','0','0','0','4000','4000','11','8594','0','0','0','0','0','0','0','0','0','0','Moonstalker Matriarch - Cast Summon Moonstalker Runt'),

--Battle on Aggro--

('584801','5848','4','0','100','0','0','0','0','0','11','5242','0','0','0','0','0','0','0','0','0','0','Malgin Barleybrew - Cast Battle Shout on Aggro'),

--Rage--
('1565701','15657','2','0','100','0','30','0','0','0','11','8599','0','0','1','-106','0','0','0','0','0','0','Darkwraith - Casts Enrage at 30% HP'),

--Roar--

('744501','7445','0','0','100','1','8000','8000','12000','12000','11','15971','0','0','0','0','0','0','0','0','0','0','Elder Shardtooth - Casts Demoralizing Roar'),

--Prowl--

('1565101','15651','1','0','100','0','1000','1000','0','0','11','24450','0','0','0','0','0','0','0','0','0','0','Springpaw Stalker - Casts Prowl on Spawn'),

--on Aggro --
('273901','2739','4','0','100','0','0','0','0','0','11','7164','0','0','0','0','0','0','0','0','0','0','Shadowforge Tunneler - Casts Defensive Stance on Aggro'),

--Lightning Shield--

('30000722','7439','1','0','100','1','1000','1000','25000','25000','11','13585','0','1','0','0','0','0','0','0','0','0','Winterfall Shaman - Cast Lightning Shield'),

--Sunder Armor-- SIMPLE CAST!!!!!
('51302','513','0','0','100','1','8400','16000','8400','24800','11','11971','1','0','0','0','0','0','0','0','0','0','Murloc Netter - Cast Sunder Armor'),

-- POISON!!!

('4301','43','0','0','100','1','4500','4500','18000','28000','11','11918','1','32','0','0','0','0','0','0','0','0','Mine Spider - Cast Poison'),

--Summon--

('1999401','19994','1','0','100','0','0','0','1000','1000','11','11939','0','0','0','0','0','0','0','0','0','0','Bloodmaul Warlock - Summon Imp OOC on Spawn'),

--Thrash--

('30000771','8961','0','0','100','1','3000','5000','5000','7000','11','3391','0','0','0','0','0','0','0','0','0','0','Felpaw Ravager - Casts Thrash'),

-- Breath--

('40001052','14890','0','0','100','1','600','7900','17900','24900','11','24818','1','0','0','0','0','0','0','0','0','0','Taerar - Casts Noxious Breath'),

--On Death--

('584602','5846','6','0','100','0','0','0','0','0','11','12613','0','3','0','0','0','0','0','0','0','0','Dark Iron Taskmaser - Cast Spell  On Death'),

--Disarm

('30002321','4693','0','0','100','1','3700','6400','18100','22800','11','6713','1','0','0','0','0','0','0','0','0','0','Dread Flyer - Casts Disarm'),

--Frost Armor

('20301','203','1','0','100','1','1000','1000','1800000','1800000','11','12544','0','0','0','0','0','0','0','0','0','0','Skeletal Mage - Casts Frost Armor on Spawn'),

--Shield Bash

('319202','3192','13','0','100','1','10000','20000','0','0','11','72','1','0','0','0','0','0','0','0','0','0','Lieutenant Benedict - Cast Shield Bash When player casts a spell'),

--Lash--

('30002846','11741','0','0','100','1','3000','5000','6000','9000','11','6607','1','0','0','0','0','0','0','0','0','0','Dredge Crusher - Casts Lash'),

-- Prowl --

('40001310','2384','1','0','100','0','1000','1000','0','0','11','24450','0','0','0','0','0','0','0','0','0','0','Starving Mountain Lion - Casts Prowl on Spawn'),
('40001311','2384','7','0','100','0','1000','1000','0','0','11','24450','0','0','0','0','0','0','0','0','0','0','Starving Mountain Lion - Casts Prowl on Evade'),

--Dual Weapon!!!!--
('156101','1561','4','0','100','0','0','0','0','0','11','29651','0','0','0','0','0','0','0','0','0','0','Bloodsail Raider - Casts Dual Wield on Aggro'),

-- Stealth --
('273101','2731','1','0','100','0','1000','1000','0','0','11','30831','0','0','0','0','0','0','0','0','0','0','Ridge Stalker - Casts Stealth on Spawn'),

-- ON SPAWN!!--

('30000183','17591','1','0','100','0','1000','1000','0','0','11','5916','0','0','0','0','0','0','0','0','0','0','Blood Elf Bandit - Casts Stealth on Spawn'),

-- Outland Worms --

('60000520','16857','1','0','100','0','0','0','500','500','11','20567','0','0','18','33554434','0','0','0','0','0','0','Marauding Crust Burster - Cast Submerge Visual OOC and Set Unselectable and Unattackable Flags and Start Combat Movement'),
('60000521','16857','4','0','100','0','0','0','0','0','28','0','20567','0','28','0','29147','0','11','37752','0','0','Marauding Crust Burster - On Aggro Remove Submerge Visual and Tunnel Bore Passive and Cast Stand'),
('60000522','16857','4','0','100','0','0','0','0','0','21','0','0','0','19','33554434','0','0','22','1','0','0','Marauding Crust Burster - On Aggro Prevent Combat Movement Remove Unselectable and Unattackable Flags and Set Phase 1'),
('60000523','16857','0','1','100','1','1000','1000','2100','4500','11','31747','1','0','21','0','0','0','0','0','0','0','Marauding Crust Burster - Cast Poison (Phase 1)'),
('60000524','16857','0','1','100','1','10000','20000','45000','50000','11','32738','1','0','0','0','0','0','0','0','0','0','Marauding Crust Burster - Phase 1 Cast Bore'),
('60000525','16857','9','0','100','0','20','60','0','0','11','20567','0','0','11','29147','0','0','22','2','0','0','Marauding Crust Burster - At 20 - 60 Yards Range Cast Submerge Visual and Tunnel Bore Passive Set Phase 2 (Phase 1)'),
('60000526','16857','9','1','100','0','0','8','0','0','28','0','20567','0','28','0','29147','0','11','37752','0','0','Marauding Crust Burster - At 0 - 8 Yards Range Remove Submerge Visual and Tunnel Bore Passive and Cast Stand (Phase 2)'),
('60000527','16857','9','1','100','0','0','8','0','0','21','0','0','0','19','33554434','0','0','22','1','0','0','Marauding Crust Burster - At 0 - 8 Yards Range Prevent Combat Movement Remove Unselectable and Unattackable Flags and Set Phase 1 (Phase 2)'),
('60000528','16857','7','0','100','0','0','0','0','0','11','20567','0','0','22','1','0','0','11','29147','0','0','Marauding Crust Burster - On Evade Set Phase to 1 Cast Submerge and Set Flag Unattackable'),
('600005290','16857','7','0','100','0','0','0','0','0','14','-100','0','0','18','33554434','0','0','0','0','0','0','Marauding Crust Burster - On Evade Drop Aggro and Set Unselectable and Unattackable Flags'),


Разберём на примере нового подземелья Рубиновое Святилище! как его скриптовать.

1) a) Открываем шаблон скриптов,открываем зону the Ruby Sanctum на www.wowhead.com
б) поочерёдно открываем каждого моба и смотрим у кого есть спелы а у кого нету
в) открыв моба в строке адреса видим ID этого моба! в нашем случаи это 40419 и 40423

2) а) Разберём моба 40419 - Charscale Assaulter я создаю 2 файла .sql и .txt - в первый пишу скрипт на моба - во второй его ID - чтобы не забыть прописать ему метку в базу о скрипте Event AI
б) сразу видим у него 3 спелла, первый ставим на все режимы, второй и третий на все режимы у 10 и 25 человек.
в) откроем спел Cleave - сразу видим его ID в строке адреса вверху.

Обязательно изучите что этотспел делает, каково его применение,от этого зависит правильность выбора флага!

('30002321','4693','0','0','100','1','3700','6400' ,'18100','22800','11','6713','1','0','0','0','0','0','0','0','0','0','Dread Flyer - Casts Disarm'),

Флаги '1','0' означают применение на основного противника у моба. (то есть на танка)
Флаги '0','1' применение на самого себя (спелл лечения)
Флаги '4','0' применение на любого участника рейда
Флаги '1','1' применение на участие в бою и моба и его жерты ( то есть например спелл Mana Tap - Выкачивание маны, жизни и восполнение у кастующего)
Флаги '0','0' применение на определённой площади или спереди атакующего - (например спелл Frost Nova)
Флаги '6','1' применение лечения дружественного война


Значения при основных атаках могут меняться (первый кто сагрил, второй, любой и так далее - это написано в мануале)
Всё подробно можно изучить в Конструкторе от Константина - там всё на русском языке и понятно.Его изобретение я использую для создания своих шаблонов,импровизации, спелов!

г) я беру шаблон Disarm!
('30002321','4693','0','0','100','1','3700','6400' ,'18100','22800','11','6713','1','0','0','0','0',' 0','0','0','0','0','Dread Flyer - Casts Disarm'),
распишу значение полей

('тут номер вашего скрипта','тут ID моба','0','0','процент срабатывания спелла','тут флаг в бою\не в бою\','минимальное первое значение','максимальное первое значение','минимальное значение повтора спела','максимальное значение повтора спела','11','ID спелла','1','0','0','0','0','0','0','0','0','0','D read Flyer - Casts Disarm'),

Значит я исходил из того что средний бой с мобом длится примерно 20-22 секунды, то есть повтор спела должен быть в тих пределах, так же необходимо соблюдать порядок при применении нескольких спеллов у моба - чтобы он не колесил ими как из пушки - один из способов - изменить процент срабатывания спела! так же весьма важно знать что параметры указаны в миллисекундах! то есть 3700 и 6400 это 3,7 и 6,4 секунды на момент после агро моба и повтор через 18,1 - 22,8 секунды.

Заострю Ваше внимание на флагах у Тринити в Подземельях - героик, нормал, 10 - 25 человек или вообще не в подземельи

Флаги меняются тут

('30002321','4693','0','0','100','1','3700','6400','18100','22800','11','6713','1','0', '0','0','0','0','0','0','0','0','Dread Flyer - Casts Disarm'),

0-1 локация
2-3 нормал в подземельи простом
4-5 героик в подземельи простом
6-7 нормал и героик в подземельи простом

рейды!
2-3 это 10 нормал
4-5 это 25 нормал
8-9 это 10 героик
16-17 это 25 героик
6-7 это 10 и 25 нормал
10-11 это 10 нормал и героик
20-21 это 25 нормал и героик
30-31 это 10 и 25 нормал и героик
24-25 это 10 и 25 героик


думаю не стоит объяснять что например 4 и 5 флаги это флаг вне боя и во время боя, чётные и 0 это вне боя а нечётные во время боя.

д) получаем

('0807201001','40419','0','0','100','31','3700','6 400','18100','22800','11','15284','1','0','0','0', '0','0','0','0','0','0','Charscale Assaulter - Casts Cleave'), - каст в 10 и 25 нормал и героик - во всех режимах.

спелл Rallying Shout можно сделать при агро!

('0507201012','40423','4','0','100','30','0','0',' 0','0','11','75414','0','0','0','0','0','0','0','0 ','0','0','Charscale Commander - Casts Rallying Shout on Aggro'),

Trinity DB Event AI Мануал

Источник
С глупыми вопросами в =====> лес
Main Dev TrailBlazer
ICQ607802
Сообщение # 2 написано 26.07.2011 в 03:29
Форум » TrinityCore » Установка / Настройка TrinityCore » Создание скриптов с помощью EventAI
  • Страница 1 из 1
  • 1
Поиск: