Свой AI??? - Форум
W4Tweaks
Меню сайта
Последние файлы
Последние темы


Вход



Мини-чат
 
500

Статистика
Онлайн:

Сегодня заходили: Cyborg, 4erveR


Друзья сайта

Если вы хотите увидеть в этом спиcке свой сайт загляните сюда

Наш баннер:



· Регистрация · Вход
[ Новые сообщения · Участники · Подписки · Поиск · RSS ]
Страница 1 из 11
Форум » Worms 4 Mayhem » 5.3. Идеи скриптов и их обсуждение » Свой AI??? (Пробуем сделать компьютерного бота на Lua)
Свой AI???
Герыч
Дата: СР, 07.01.2009, 14:24:37 | Сообщение # 1
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
Идея: Сделать компьютерного бота
Мы давно это хотели... и вот вчера я наткнулся на lua скрипт из Worms3D

Итак, что примерно надо сделать для того, чтобы сделать бота(на примере файа stdvs.lua):

Code


function Initialise()
     CurrentTurn = 0     --Номер хода компьютерного игрока
      ...
end

--Вызывается, когда ходит компьютерный игрок
function RunAILogic()

     -- Надо вызывать при каждом ходе компа
     SendMessage("AI.PerformDefaultAITurn");

     -- После этого мы можем изменять логику комп. игрока
     -- В данном случае при первых 4-х ходах комп будет ходить,
     -- как мы ему прикажем, а после этого сам будет решать
     if CurrentTurn == 0 then      --1-ый ход
         --SendStringMessage("CommentaryPanel.DebugText","Turn One AI Control")

         SendMessage("AI.ClearActions")                        -- Подготавливаем комп. игрока к тому, что мы им будем управять

         SetData("AI.DataString", "kWeaponGrenade")      -- Выбираем гранату
         SendMessage("AI.PerformSetWeaponAction")

         SetData("AI.DataString", "FireOne")                    -- Стреляем по цели(цель-это эмитер, созданный в редакторе со свойством Lib=Target)
         SendMessage("AI.PerformFireAtTargetAction")

     elseif CurrentTurn == 1 then
         --SendStringMessage("CommentaryPanel.DebugText","Turn Two AI Control")

         SendMessage("AI.ClearActions")

         SetData("AI.DataString", "FireOne")
         SendMessage("AI.PerformMoveAction")

         SetData("AI.DataString", "kWeaponGrenade")
         SendMessage("AI.PerformSetWeaponAction")

         SetData("AI.DataString", "FireTwo")
         SendMessage("AI.PerformFireAtTargetAction")

     elseif CurrentTurn == 2 then

         --SendStringMessage("CommentaryPanel.DebugText","Turn Three AI Control")

         SendMessage("AI.ClearActions")

         SetData("AI.DataString", "MoveToTwo")
         SendMessage("AI.PerformMoveAction")

         SetData("AI.DataString", "kWeaponBazooka")
         SendMessage("AI.PerformSetWeaponAction")

         SetData("AI.DataString", "FireTwo")
         SendMessage("AI.PerformFireAtTargetAction")

     elseif CurrentTurn == 3 then
         --SendStringMessage("CommentaryPanel.DebugText","Turn Four AI Control")

         SendMessage("AI.ClearActions")

         SetData("AI.DataString", "MoveToThree")
         SendMessage("AI.PerformMoveAction")

         SetData("AI.DataString", "kWeaponBazooka")
         SendMessage("AI.PerformSetWeaponAction")

         SetData("AI.DataString", "FireTwo")
         SendMessage("AI.PerformFireAtTargetAction")
          
     end     
      
     -- Теперь выполняем ту последоватеьность действий, которую мы хотим
     SendMessage("AI.ExecuteActions")
      
     -- Изменяем номер хода
     CurrentTurn = CurrentTurn + 1
end

Вот все сообщения, которые я нашёл в exe файле, их надо использовать в SendMessage:
AI.PerformMoveAction
AI.PerformSetWeaponAction
AI.PerformFireAtTargetAction
AI.PerformPathMoveAction --Вот это я не знаю как использовать.
AI.PerformDefaultAITurn
AI.ClearActions
AI.ExecuteActions

Использование всех сообщений, кроме AI.PerformPathMoveAction показано в примере

Кроме того в Local.xml есть контейнеры:
<UintResources href='AI.BulletCount'/>
<UintResources href='AIStrike.SeekTarget'/>
<StringResources href='AI.DataString'/>
<VectorResources href='AI.LaunchVelocity'/>
<VectorResources href='AIStrike.Direction'/>
<VectorResources href='AIStrike.TargetPoint'/>
<VectorResources href='AIStrike.UpVector'/>

в WeapTwk.xml:
<IntResources href='AI.WeaponsDontEndTurn'/>

их можно использовать к примеру так:
SetData("AI.BulletCount",10)
и
GetData("AI.BulletCount")
Вектора - это строки вида "(x = 12312.232424, y = 12312.232424, z = 12312.232424)"
но их скорее всего нельзя менять

В данном скрипте испоьзуются следующие выражения:
SetData("AI.DataString", "MoveToTwo")
SendMessage("AI.PerformMoveAction")

Заметьте, что на карте должен быть эмитер под названием MoveToTwo с Lib=Target

Вроде всё, что хотел сказать... вот еси кто-нибудь придумает, как бота заставить ходить не только между червями, тот будет реально крут


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Дата: СР, 07.01.2009, 14:26:21 | Сообщение # 2
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
А вот пример той карты, на которой можно протестировать этот скрипт
Прикрепления: scriptai.xan(21Kb)


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Герыч
Дата: СР, 07.01.2009, 14:49:14 | Сообщение # 3
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
короче.. в силу того, что я не могу сам это всё протестировать мне нужна помощь..

надо узнать следующее:
1) всё ли работает
2) как комп себя ведёт, если написать подряд

SetData("AI.DataString", "kWeaponGrenade")
SendMessage("AI.PerformSetWeaponAction")

SetData("AI.DataString", "FireOne")
SendMessage("AI.PerformFireAtTargetAction")

SetData("AI.DataString", "FireTwo")
SendMessage("AI.PerformFireAtTargetAction")

3) Может ли он вязть любое оружие?

SetData("AI.DataString", "kUtilityNinjaRope")
SendMessage("AI.PerformSetWeaponAction")

вот список оружий:

<ContainerResources href='kMineFactoryData'/>
<ContainerResources href='kUtilityArmour'/>
<ContainerResources href='kUtilityBridgeKit'/>
<ContainerResources href='kUtilityBubbleTrouble'/>
<ContainerResources href='kUtilityChangeWorm'/>
<ContainerResources href='kUtilityGirder'/>
<ContainerResources href='kUtilityJetpack'/>
<ContainerResources href='kUtilityNinjaRope'/>
<ContainerResources href='kUtilityParachute'/>
<ContainerResources href='kUtilityRedbull'/>
<ContainerResources href='kUtilitySkipGo'/>
<ContainerResources href='kUtilitySurrender'/>
<ContainerResources href='kUtilityTeleport'/>
<ContainerResources href='kWeaponAirstrike'/>
<ContainerResources href='kWeaponAlienAbduction'/>
<ContainerResources href='kWeaponBananaBomb'/>
<ContainerResources href='kWeaponBananette'/>
<ContainerResources href='kWeaponBaseballBat'/>
<ContainerResources href='kWeaponBazooka'/>
<ContainerResources href='kWeaponClusterBomb'/>
<ContainerResources href='kWeaponClusterGrenade'/>
<ContainerResources href='kWeaponConcreteDonkey'/>
<ContainerResources href='kWeaponDynamite'/>
<ContainerResources href='kWeaponFactoryCluster'/>
<ContainerResources href='kWeaponFactoryHoming'/>
<ContainerResources href='kWeaponFactoryWeapon'/>
<ContainerResources href='kWeaponFatkins'/>
<ContainerResources href='kWeaponFatkinsFood'/>
<ContainerResources href='kWeaponFirePunch'/>
<ContainerResources href='kWeaponFlood'/>
<ContainerResources href='kWeaponGasCanister'/>
<ContainerResources href='kWeaponGrenade'/>
<ContainerResources href='kWeaponHolyHandGrenade'/>
<ContainerResources href='kWeaponHomingMissile'/>
<ContainerResources href='kWeaponLandmine'/>
<ContainerResources href='kWeaponLandmineBomblet'/>
<ContainerResources href='kWeaponLandmineCluster'/>
<ContainerResources href='kWeaponNoMoreNails'/>
<ContainerResources href='kWeaponOldWoman'/>
<ContainerResources href='kWeaponPoisonArrow'/>
<ContainerResources href='kWeaponProd'/>
<ContainerResources href='kWeaponScouser'/>
<ContainerResources href='kWeaponSentryGun'/>
<ContainerResources href='kWeaponSentryGunPayload'/>
<ContainerResources href='kWeaponSheep'/>
<ContainerResources href='kWeaponShotgun'/>
<ContainerResources href='kWeaponSniperRifle'/>
<ContainerResources href='kWeaponStarburst'/>
<ContainerResources href='kWeaponSuperAirstrike'/>
<ContainerResources href='kWeaponSuperSheep'/>


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
firsacho
Дата: СР, 07.01.2009, 22:27:37 | Сообщение # 4
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3636
Репутация: 71
Статус: Offline
О_о не думал что мы так скоро уже поставим вопрос программирования ИИ... Слабо верю что такое возможно, однако хотелось бы увидет компьютерных червей, которые владеют про...




Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

www.w4mod.tk - моя модификация для worms4

www.fir-st.narod.ru - моя домашняя творческая страничка

www.botarena.by.ru - мой сайт об игре robot arena 2 (битвы роботов)
 
SW_Krash
Дата: СР, 07.01.2009, 22:49:21 | Сообщение # 5
SW_Krash
BugagaXD
Группа: Проверенные
Сообщений: 818
Репутация: 28
Статус: Offline
Здесь идёт речь не о про... а обыкновеных заскриптованых действиях =)))

Всё что ни делается, делается в Китае(SW_Krash, 2009)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)
Я отрицаю вашу реальность и заменяю её своей!(Адам Севидж, 200x)
OFFTOP SWEAT OFFTOP(фольклор)

 
firsacho
Дата: СР, 07.01.2009, 22:58:17 | Сообщение # 6
firsacho
ICQ = 453-163-541
Группа: Админы
Сообщений: 3636
Репутация: 71
Статус: Offline
лично я, в игре особо не заметил у ИИ заскриптованых действий. Враги тупые и скучные.




Смысл жизни в том, чтобы жизнь имела смысл... (firsacho 2005)
Рай придуман, чтобы не страшно было умирать. Ад придуман, чтобы не страшно было жить. (firsacho 2007)
Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008)

www.w4mod.tk - моя модификация для worms4

www.fir-st.narod.ru - моя домашняя творческая страничка

www.botarena.by.ru - мой сайт об игре robot arena 2 (битвы роботов)
 
Kevin
Дата: СР, 07.01.2009, 23:48:05 | Сообщение # 7
Kevin
Реальный чел
Группа: Проверенные
Сообщений: 519
Репутация: 15
Статус: Offline
Вот враги про)) это круто, и чтобы было как в Quake 3, ты ударил врага и он на тебя материться в чате))


 
Герыч
Дата: ЧТ, 08.01.2009, 00:10:46 | Сообщение # 8
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
тут под заскриптованными действиями имеется ввиду "иди к этому эмитеру", "возьми это оружие", "стрелни в этот эмитер"

на самом деле комп. бот сказано оч громко) данная тема больше пригодна например для того, чтобы сдеать "гонки"... к примеру карта, на которой 2 червя - комп. и чел. и им надо как можно быстрее добраться до какой-то точки... ну что-то навроде... короче глупо) я абсолютно не понимаю, почему team17 внедрив lua в worms дала так мало возможностей.. ведь в lua можно оч быстро прогать миссии!


________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
DrHitman27
Дата: ЧТ, 08.01.2009, 03:06:33 | Сообщение # 9
DrHitman27
•Polarized•
Группа: Заблокированные
Сообщений: 2107
Репутация: 52
Статус: Offline
к сожалению пока это не работает :'(

 
Герыч
Дата: ЧТ, 08.01.2009, 21:18:31 | Сообщение # 10
Герыч
Админ
Группа: Админы
Сообщений: 1240
Репутация: 60
Статус: Offline
да.. хз что делать

________________________
__|____|____|____|____|__
|____|____|____|____|____|
__|___бицца головой___|__
|____|____|сюда|____|____|
__|____|____|____|____|__
|____|____|____|____|____|
 
Форум » Worms 4 Mayhem » 5.3. Идеи скриптов и их обсуждение » Свой AI??? (Пробуем сделать компьютерного бота на Lua)
Страница 1 из 11
Поиск:

Copyright W4Tweaks™ 2008-2016 Хостинг от uCoz