重返柏林

重返德军-AI脚本编辑初步

介绍

本文的目的是使RtCW地图中的AI人物控制脚本更容易理解。

AI 脚本是使 AI 的或 Bot 以更智能的方式行事。没有任何脚本的时候,他们有很好的听力、 视力和健康,他们无时无刻不存在着、但是只是站在边上,并一直保持全副武装状态,真正的敢死队状态的战斗风格。各种各样的略低于”末日 !”因此,乍一听起来玩家 (或其他任何人) 使,整个暴民意图摔倒你,在家企图杀了你。

使用脚本,可以以几乎任何你所希望的方式改变这种行为。一些士兵听到比别人-工程师寻找后机器轰鸣可能是聋,一些人物在站岗的时候会抽烟或者睡眠或着胡闹。攻击时他们会躲在背后或甚至投降。他们巡逻的地区或机枪。他们的行为是更真实的。

映射器,又有你,要教艾未未的如何做人。而这是件棘手的事情。它是一个复杂的问题,和文档是非常简洁。

你需要几件事情要做的脚本:

‘返回到德军’ 在您的计算机上安装
GtkRadiant,地图编辑器;
文本编辑器;
以及一些耐心,时间,坐在家里和一些浓的咖啡;

我假设你知道你的周围的工具,其他走开,首先了解他们。如果你尝试去做一切都在同一时间,你会到头来只完全糊涂在混沌乱七八糟的…,可能永远不会尝试重新映射 !

第一张地图

我们开始用一个很简单的地图。启动 GtkRadiant 并创建简单的天空盒-512 * 1024 单位地面大小、 256 高、 网格 8,’空心’,放置一个info_player_start (朝向角度180) 在一个方便的地方,一些草在地面上,与一些天空休息。这就是清晰很脏,但会为我们做。

我们需要在某个地方的 ai 去。除非你让 ‘哑巴’ 的地图,他们会需要被告知要去哪里,和你告诉他们与脚本,称为 ‘ai_marker’ 和每个ai_marker的唯一名称的实体。

Basic map

这里是我的地图: 标记被称为 ‘m1’ 槽 ‘m5’-标记每个反过来,按 n 为实体窗口并输入关键 ‘targetname’ 价值 ‘m1’ 为第一,其他有关。我开始左上角 ‘m1’,随着按顺时针方向的标记和结束与 ‘m5’ 在中间。

AI marker entity

只是为了测试,尝试编译地图-q3map (或 q3map2) 的阶段和策略与规划委员会阶段-并运行它。我打电话给我的地图 tut.map,所以我开始它德军用在控制台 ‘/spdevmap tut ‘。你现在应该在荒凉的平原上站手无寸铁和孤独。这样还行?

这当然不是好。你需要有人开枪,但首先你需要拍摄他们的东西。所以,在这里我们去开启你的第一个控制脚本。

脚本-玩家的第一位

打开你最喜欢的编辑器,创建一个新文件。它应该命名为 ‘yourmapname’.ai-我的地图被称为 tut.map (编译到 tut.bsp),所以我.ai 脚本文件被称为 tut.ai。

陷阱警告:某些操作系统不能区分大写和小写字母,但最能。所以,请保持所有字母在脚本中小写-这种方式,每个人都可以发挥你的地图之后。

您键入的第一件事是页眉。这是几个线为您提供便利,当你以后需要找出在地球上你在做什么。相信我后几天甚至是最合乎逻辑的脚本之前,需要解密,你可以算出你想要实现什么。

//
//ai scripting
//map: tut.map
//last edited by: kim_pirat@mail.tele.dk
//

当然,你把你自己的名字放在那里,不是我。还有的责备我愿意接收;) 量的限制双反斜线告诉游戏引擎: 这是一句,可以忽略。可以在任何地方的东西在讲话。双斜杠后的一切都是一句。更多的言论,你稍后给自己更多的帮助 (只需一抓: 那里必然是一条线的最后一个字母间距和 / 或其他你会得到一个错误)。行缩进-见进一步向下-是有出于同样的原因: 清晰。坚持下去。

接下来,您需要添加一些东西的最重要的人工智能: 这名玩家单位。是的在这个游戏中,你自己的智力是人工的。尼斯哎?:)

player
{
}

每个 AI 认同是个独特的名字,比如 ‘nazi1’ 或 ‘officer_joe’ 或你想要什么。只需确保,在每一个.map 只有一次使用该名称。名称 ‘玩家’ 是保留 (你猜对了) 的玩家单位。每个单一位元信息有关的球员,已经写在方括号之间。类似与 AI-所有信息必须在括号中。很像在”C”编程语言。

权利,我们想要给你一把枪:

player
{
    playerstart
        { 
        // weapons 
        giveweapon weapon_sten
        // ammo
        setammo ammo_9mm 64 
        setclip weapon_sten 32
        // give gun
        selectweapon weapon_sten
        }
}

现在,这是做什么的?

‘Playerstart’ 组括号里面后这名球员是催生了和放在地图内会发生什么。首先,我们需要他可以使用武器:

giveweapon weapon_sten

所有的有效武器是 ‘武器’ 下的实体列表中。这名球员是现在拥有的 Stengun,但它不是装载,和它被藏在某个地方看不见。

setammo ammo_9mm 64

Stengun 给出了两个额外完整剪辑的弹药。仍然没有在它的弹药。这场比赛似乎随机化在这个数字,所以很少达到具体的数目。

setclip weapon_sten 32

此选项指定多少弹药最初是中了枪。不要试着比剪辑可以采取更多的东西。这没有您未定义的弹药的数量。指定,或者你会得到惊喜。

selectweapon weapon_sten

最后你在你的手 !唷 !

在这个时刻,应该有三个文件在你/德军/主要/地图/目录: tut.bsp、 tut_b0.aas 和 tut_b1.aas-如果你坚持我命名。以及,保存那里你 tut.ai 并尝试运行 RtCW-拉起一个控制台,并输入 /spdevmap tut

你的枪呢?

它实在有点小,只有一支枪,正确吗?在 //weapons 下添加

giveweapon weapon_knife

尝试添加一个点:

// misc
setarmor 50
giveinventory key_binocs

保存和下一次你运行地图你突然有 50%的盔甲和一套的双筒望远镜。再加上一把刀。有-到目前为止-未找到可接受的项的列表,但试着在一起游戏的.ai 脚本中有点四处探查。它们隐藏在 /maps 目录中的 /wolfenstein/main/pak0.pk3 文件。它只是一个有趣的命名的.zip 文件。

现在,一些音乐怎么样?它是与没有声音有点沉闷。

添加音乐:

有两种音乐类型: 时加载时的水平,和游戏等待你开始,并且在游戏音乐的播放。

第一,等待音乐 (顺便说一句,我中途可以理解,音乐可以使鸡多下蛋,但什么你额外离开在了电梯里有人吗?)。添加 ‘菌种’ 组,如第一支架后, 的第一件事使你看起来像这样的脚本:

//
//ai scripting
//map: tut.map
//last edited by: kim_pirat@mail.tele.dk
//

player
{
    spawn 
        {
        mu_start sound/music/l_briefing_1
        } 

    playerstart
        { 
        // weapons
        giveweapon weapon_sten 
        giveweapon weapon_knife
        // ammo 
        setammo ammo_9mm 64 
        setclip weapon_sten 32 
        //give gun 
        selectweapon weapon_sten 
        // misc 
        setarmor 50 
        giveinventory key_binocs 
        } 
}

试一试。伟大的音乐,嗯?你当然可以使用,如果你喜欢,但通常你改一些其他的音乐,当你开始的水平。添加以下两行之前 / / 武器在 ‘playerstart’ 部分中,我们有一些游戏中的音乐:

mu_fade 0 1000 // music fades to 0% in 1 second (1000mSec.)
mu_queue sound/music/m_mission // starts new music, when old is faded out

我猜那是很简单?使用这些选项可以稍后在脚本一样好,但更多关于那晚些时候。

这么多的单词,和我们孤单仍在映射中。但至少我们有我们的信赖 Stengun 和一些不错的音乐…

添加一个友好的 AI

那是我们的地图添加我们第一次的 ‘真正的’ AI 的时间吗?

modified map

他在这里,标记 m1、 m4、 m5 之间居中。他得到了一些属性 (n 为实体窗口):

AI entity settings

正如你所看到的它是我们的老朋友,赫尔凯斯勒。尝试编译和运行的地图。他不会做太多-地图开始,他就会拿出 Tommygun,就是这样。如果你去和踢他,或拍摄他的腿,他会开始挥舞着枪,但真的不知道该拿它怎么办 (像射击你-我会:)

艾未未的有一个默认的武器 — — 这里是汤普森。如果你不想使用默认的艾,这得由你来把它夺走。

也许我们应该让他有一个更适当的武器-为党派,那就是?

向.ai 脚本添加:

party1
{
attributes
 {
}

spawn
{
}
}

这是从球员 AI 略有不同。’属性’ 是 AI-听觉、 视觉、 能力作为射手,战术技能的个人设置,等等。他们将所有设置为它们的默认值,如果没有指定。所有设置的说明来与 GtkRadiant 下帮助/返回到城堡德军/脚本定义,但其正确的使用是一种经验。看起来有点的.ai 脚本,尤其是那些来自与样品的地图,找到一个人工智能和比较他的行为向脚本中。

‘菌种’ 是差不多,我们在这里,只是不要设置任何音乐和这就是我们在处理艾未未的武器。凯斯勒赫尔启动的汤普森,但是那是罕见的武器当中党羽在 WW2 欧洲。更有可能是鲁格 (通常从老龄化和粗心的军官被盗) 或 Stengun (空投的开放源码软件)。我们把这放在他的 ‘菌种’:

takeweapon weapon_thompson // removes the tommygun
giveweapon weapon_luger // gives handgun
setclip weapon_luger 8 // stick eight bullets in the gun
setammo ammo_9mm 16 // gives him two extra clips

运行的地图。他现在有 P-08,但是他不画。踢他,或他的腿,和他将会很快做出了格尔的拍摄。好吧,那很好,但他用什么,如果他有一种以上的武器吗?还有一系列的命令,以帮助确定这-‘状态’

这些都是单独的脚本事件,并不是必须使用它们所有。人工智能有四个情绪中-轻松、 查询、 警报和战斗-和它是可以定义到底如何 AI 时的行为将从一个国家传递到另一个。再看 ‘脚本定义’ 中。我有只有一个状态更改,我们放的.ai 文件中正确后闭幕 ‘菌种’ 支架:

statechange relaxed combat
{
selectweapon weapon_luger // makes him draw the piece
}

在这里我只是让他画了枪,但你可以把任何脚本的事件在这里-,像让他跑到重机枪和使用它,例如隐藏在灌木丛中如果您再次运行地图,应该有没有明显的差异,你只是 sure 它是他画的格尔。他会使用滑雪者,直到用完弹药,然后更改为另一种武器。除非你告诉他否则:)

狡猾的方式,可以使用 ‘状态’。例如,您可以站在外面他不管他的卫兵,也许做一点巡逻的警卫。当他从 ‘放松’ 走向 ‘查询’,他可以改变方向他巡逻,然后,环顾四周。从查询到警告,他可以鞭出-枪和改 ‘战斗’ 他大叫谋杀和寻找掩护,同时企图射击你…工作出自己的东西。

还有几个命令来进一步细化这…像 ‘痛苦’ 和 ‘死’。你对待他们就像 ‘状态’,他们是单独编写事件脚本:

    pain 25
        {
        trigger ainame dosomething
        }

你可以设置你的 AI 攻击用大胆的方式-然后上面的脚本可以让他掉他的枪,逃跑和隐藏,当他已达到 25%的健康。和

death
{
}

可以用来给某种 ‘礼’,像一把枪或卫生工具包时,AI 死。或产卵 27 他的战友们。或别的什么。

简单三月脚本

他只静止不动,如果我们让他感动?让我们说,他要走五个标记停止在你的面前。这,当然,需要一点的脚本。把它粘在 party1 的 ‘产卵’ 和 ‘状态’ 之间:

trigger walkabout_1
{
walktomarker m1 // walks from spawning point to ai_marker m1
runtomarker m2 // runs from m1 to m2
crouchtomarker m3 // crouches from m2 to m3
runtomarker m4 // runs from m3 to m4
walktomarker m5 // walks from m4 to m5
}

还有第四种类型: ‘gotomarker’。此使用什么 ‘movetype’ AI 中已经是-如果它会走,它还是继续走,如果它跑了,它还继续跑等。

现在我们有凯斯勒先生怎么做傻走在一个单一轨道绕着跑道上的描述。如何开始他?嗯,他应该做到这一点,无论玩家做什么。所以,把它插进去作为 ‘party1/菌种’ 的底线:

trigger party1 walkabout_1

它看起来稍微有点隐蔽,稍后我会解释。你的整个脚本应该看起来像 (只是为了确保):

//
//AI Scripting
//Map: tut.map
//Last edited by: Kim_Pirat@mail.tele.dk
//

player
{
   spawn
   {
      mu_start sound/music/l_briefing_1
   }

playerstart
{
     mu_fade 0 1000 // music fades to 0% in 1 second (1000mSec.)
     mu_queue sound/music/m_mission // starts new music
     // weapons
     giveweapon weapon_sten
     giveweapon weapon_knife
     // ammo
     setammo ammo_9mm 64
     setclip weapon_sten 32
     //give gun
     selectweapon weapon_sten
     // misc
     setarmor 50
     giveinventory key_binocs
}
}
party1
{
attributes
{
}

spawn
{
   takeweapon weapon_thompson // removes the tommygun
   giveweapon weapon_luger // gives handgun
   setclip weapon_luger 8 // eight bullets in the gun
   setammo ammo_9mm 16 // gives him two extra clips
   trigger party1 walkabout_1 // starts the walking script
}

trigger walkabout_1 // walking script
{
   walktomarker m1 // walks from spawning point to ai_marker m1
   runtomarker m2 // runs from m1 to m2
   crouchtomarker m3 // crouches from m2 to m3
   runtomarker m4 // runs from m3 to m4
   walktomarker m5 // walks from m4 to m5
}

statechange relaxed combat
{
   selectweapon weapon_luger // makes him draw the piece
}
}

现在他槽课程一次,来去都停在你面前。只是为了好玩 (人力资源管理) ! 尝试拍摄他的腿: 他会停止绘制枪,请稍候片刻,然后,继续,但用拔枪和戒备。

陷阱警告:还有没有 ‘放松的状态战斗’ !当他画了一把枪时,它保持绘制 !

在我小小的地图上,先生。凯斯勒现在又一次去停留在标记 m3: 他定界框打在墙上,当他拿着枪蹲在他的手。’脚本定义’ 声称可以扩展 ai_marker 的边界框并创建更柔软的角落写如 ‘walktomarker m3 nostop’,但似乎这是越野车-有时该选项崩溃 RtCW 警告:”找不到 ai_marker ‘nostop’”。更好地避免它。

陷阱警告:AI 会不断朝其 ai_marker,直到它完全集中在中间。如果 ai_marker 也是一堵墙,一张桌子、 monster_clip 或不管,AI 会只继续走 ‘当场’ 对标记-永远,或直到你射杀他。请确保标记具有足够它周围的空间。

吧,我们已经建立了一个球员,他武装、 音乐正在播放,,凯斯勒先生一直绕着街区好好转转。

触发器脚本

我们这个怎么做互动?

首先,删除线

 trigger party1 walkabout_1 // starts the walking script  trigger party1 walkabout_1 // starts the walking script

从脚本。然后我们要编辑的映射,所以请再次曲柄 GtkRadiant。

现在,它是确定发送凯斯勒先生 (party1),他在路上。我们只是做到从触发器。

选择纹理/普通/触发器和右前球员开始使好的画笔。接下来的事情上面,放置一个实体,’target_script_trigger’。喜欢这个:

Trigger brush

我们想要发送多个步行的凯斯勒先生,所以选择触发器画笔 (shift + 单击鼠标左键),鞭出 (右键单击选定的画笔) 实体列表选择触发器/trigger_multiple。保持选定,触发画笔和太选择 target_script_trigger (重要的是先选定触发器画笔时)。然后按 crtl + k。这将创建两个实体之间的目标/targetname 连接并使用前两个可用的名称。这种方式,你不要冒风险不止一次使用相同的名称。它可以是混乱在较大的地图中。

请确保选择了现在只有 target_script_trigger。我们需要设置几个键。拉 ‘实体’ 窗口 (’ n ‘),给它 ‘ainame’ 的关键,球员的价值。这是为了告诉到底哪个 AI 触发器会作出回应。它没有它之外工作。
然后,它需要知道什么的要激活的脚本的一部分。它给关键的 ‘目标’ 和 ‘start_walk’ 一值,或者任何你喜欢像这样:

trigger entity

然后保存并编译。其余的脚本。剩下。哈哈 !哈哈哈哈 !(人力资源管理) !

在您的脚本,’playerstart’ 节之后, 的球员部分你添加行:

trigger start_walk
{
   trigger party1 walkabout_1
}

WTF???为什么是这去 ’ 球员的一部分吗?实际上,是它的逻辑。它是激活触发器的球员。因此,它是在球员的脚本中,你决定什么要发生时触发触发器。看到了吗?什么是括号之间告诉接下来发生了什么: 它触发事件里面的脚本-事件称为 ‘walkabout_1’ party1 的一部分。换言之,只要你别动,凯斯勒先生仍然站立。需要你花一步或两个前锋,凯斯勒先生需要散步。
运行地图,看看会发生什么。

好吗?AI ‘party1’ aka 先生。凯斯勒为竞选步行去。每次玩家点击触发器,凯斯勒冷静地去第一 ai_marker,周而复始。

通常,这些事件只是发生一次,所以 ‘trigger_once’ 的选择会更好。启动 GtkRadiant,并改变它。和地图再试一次。现在 AI 去一次,然后停止。

循环的脚本

大多数时候,单人游戏地图,在玩家走槽触发器,启动一个 AI 行进的脚本,像我们刚才做。你不想 AI 的做任何事情前的球员是在正确的位置。而这是我们这里有。但然后,一旦艾未未的已经开始了,你想要他们继续下去。

这是很简单。在脚本中,作为 ’ party1/触发 walkabout_1 部分中的最后一行添加:

trigger party1 walkabout_1

是吧?它仍然是逻辑。你想要触发事件 (关键字触发)。这是应该发生在凯斯勒先生的脚本 (关键字 ‘party1’),而是应该发生的事情是三月脚本 (关键字 ‘walkabout_1’)。计算机是哑的所以你要为事件提供一个精确的地址,你希望发生。

请尝试再次运行水平。我们的 AI 不会移动之前玩家一步向前,然后他进行下去。

指导您 AI

如果我们的爱能停下来现在又佩服一些风景的一部分,不是很好吗?
当然是的命令。第一个是 ‘等待’。放线

wait 2000

在 walkabout_1 之间的一段,’walktomarker m1’ 和 ‘runtomarker m2’,保存并试一试。

我们 AI 现在达到第一个标记后需要 2 秒打破 (2000年毫秒为单位)。当他到达时,他只是站在他走的方向盯着。

当然,这是可以改变的。还有几个 possibillities,例如:

wait 2000 player

现在,AI 将面对等候的球员。也试一试:

wait 2000 m3

它现在将面临 ai_marker m3。在这其中还有一些 possibillities。如果 ai_marker 是远低于眼水平,AI 将身体前倾,看着它。您可以使用它,如果你想要 AI 看躺在桌上,要检查尸体等一些文件。这是一个内置的动画,在 ’ 官的但可被用于各种 AI (更多关于动画以后)。如果您将 ai_marker 放眼睛水平线以上,AI 会盯着看,但这有点小心-AI 会不只是它抬起头,但身体后弯了臀部,这往往看起来很傻。

陷阱警告:你 ai_marker 必须在你的世界的船体。如果有必要要伸出来,放在它周围,结构 ‘夹’ 刷别的你的地图将泄漏。

如果你有另一个 AI,说 ‘joe_1’,你可以有凯斯勒先生面对他太:

wait 2000 joe_1

,最后,你可以使 AI 脸在他站在 ai_marker 的方向:

wait 2000 m1

要做到这一点,你必须给你 ai_marker 的方向。在 GtkRadiant,标记 m1 标记,然后点击左下角的实体窗口的指南针方向上。保存并重新编译,然后它会工作。

再次,删除所有这些东西,当你玩过有点 — — 现在你知道它能做什么。

要确定的是,你的 tut.ai 现在应该像这样:

//
//AI Scripting
//Map: tut.map
//Last edited by: Kim_Pirat@mail.tele.dk
//

player
{
spawn
{
  mu_start sound/music/l_briefing_1 // starts waiting music
}

playerstart
{
  mu_fade 0 1000 // music fades to 0% in 1 second (1000mSec.)
  mu_queue sound/music/m_mission // starts new music
  // weapons
  giveweapon weapon_sten // makes stengun available to player
  giveweapon weapon_knife // do. knife
  // ammo
  setammo ammo_9mm 64 // give two full clips
  setclip weapon_sten 32 // full clip in stengun
  //give gun
  selectweapon weapon_sten // draws stengun
  // misc
  setarmor 50 // gives 50% armor
  giveinventory key_binocs // gives binoculars
}

trigger start_walk // respond to the trigger
{
   trigger party1 walkabout_1 // start party1 walking
}

}

party1
{
attributes // the ai's abillities
{
}

spawn // happening when ai is first placed in the map
{
   takeweapon weapon_thompson // removes the tommygun
   giveweapon weapon_luger // gives handgun
   setclip weapon_luger 8 // eight bullets in the gun
   setammo ammo_9mm 16 // gives him two extra clips
}

trigger walkabout_1 // walks ai around when triggered
{
  walktomarker m1 // walks from spawning point to ai_marker m1
  runtomarker m2 // runs from m1 to m2
  crouchtomarker m3 // crouches from m2 to m3
  runtomarker m4 //runs from m3 to m4
  walktomarker m5 // walks from m4 to m5
  trigger party1 walkabout_1 // start party1 walking
}

statechange relaxed combat // this happens when ai becomes upset :)
{
   selectweapon weapon_luger // makes him draw the piece
}

}

添加一个敌对的 AI

我们开始有一些我们 AI 现在的控制权,对吗?

我们最好马上毁掉一切。再次,加热 GtkRadiant,放到一个新的人工智能。我会建议 ai_soldier,亨氏,和我把他放在旁边标记 m5 朝东 (270 度,足够的有趣是 ‘下’ 辐射屏-所有的图表,除了西班牙中世纪的北我总是向上。……)。

Adding Heinz

Heinz entity

好吧,编译并运行地图。

有趣的但又不好。两人一见到对方,他们开始战斗。玩家甚至可以赶上几颗子弹之前有人射海因茨。请注意,即使在点球大战中,凯斯勒仍坚持他的脚本 (如果你触发它),和亨氏几乎不移动。不用担心这个,只是没有什么在这张地图,他们可用于 ‘动态’ 行为中伸出来。你希望他们玩捉迷藏-好,他们会需要的东西,躲在后面……

现在,它们安静我们能令他们瞎又聋,但这又会不会是非常 eficcient 的对手。我们更好地发挥有点与此。

我已将 ‘亨氏’ 节添加到脚本:

heinz
{
attributes // the ai's abillities
{
  aim_accuracy 0.0
}

spawn // happening when ai is first placed in the map
{
}
}

也添加一行

aim_accuracy 0.0

到 Kesslers ‘属性一节。这应该让他们都未能击中谷仓三步之遥。现在我们有时间去看看,什么事。

Triggerspawn AI

最好的方法,以防止混战格斗进化,是确保只有有关 AI 是活跃。如果他们都是活跃的第一枪会来运行从四面八方壁球选手。幸运的是,我们可以控制何时何地他们产卵。

打开 GtkRadiant,选择亨氏并为他打开实体窗口。然后复选框 ‘triggerspawn’-保存并重新编译。然后我们再做很少的脚本中更改-禁用行

trigger party1 walkabout_1 // start party1 walking

在 ’ 球员 / 触发 start_walk’ 我们的脚本的一部分 (放 / / 在一行的开头)。和插入:

alertentity heinz

右后它。尝试运行地图。

现在,这使之焕然一新。Nothing 第一次发生。亨氏在那里,不是和凯斯所有和平。然后你触摸扳机,* 流行 * 来亨氏和麻烦的开始。

这是一件重要的事情。要使你的地图现实,只有在你想要发生的事件的一个合理的距离内产卵艾未未的。你可以通过进一步完善这应用在艾未未的 ‘属性’ 节 ‘聆讯规模 x.x’ 参数。如果您微调这,你可以确保没有 AI 响应如果玩家刀或芽有人用沉默的武器,但地狱会挣脱,如果你使用正常的枪…或错过 !’Escape2’ 从这场比赛是一个很好的例子。

另一个优点是,少艾未未的你有催生了在给定的时间,你需要玩地图少处理器的能力。(像我) 弱机玩家会明白这一点。

陷阱警告:不要做傻事那样明目张胆地像在图坦卡蒙映射: 不产卵 AI 在任何地方,玩家可以看到它的发生。它完全毁了我们尝试生成映射到现实的幻象。产卵他在石头后面,在隔壁的房间,或无论和脚本他走在拐角处。

触发的音乐

现在我们正在一起玩我们的触发器…尝试添加这些行,右后 ’ alertentity heinz’:

mu_fade 0 100 // music fades to 0% in 0.1 second (100mSec.)
mu_queue sound/music/s_bighits // 'crash' music
wait 5000 // gives it time to play out
mu_queue sound/music/m_mission // starts old music again

好吗?:)第一,没有任何反应。然后在此基础上,亨氏出现,,乐团恐慌…保持几秒钟,而他们又回来工作。真的发生了什么?

mu_fade 0 100 // music fades to 0% in 0.1 second (100mSec.)
mu_queue sound/music/s_bighits // 'crash' music

在激活触发器,这只是杀死老音乐实时快速和电话 ’ panic’music。新意那里。现在它所需要的只是由触发器。

wait 5000 // gives it time to play out
mu_queue sound/music/m_mission // starts old music again

‘等待’ 就是有让 ’ panic’music 完成。如果不是这样下, 一个命令将覆盖它,你只能听到小单击声音,在新老音乐再次开始之前。,你要把一个新的声音,在发挥 (或 mu_stop,完全杀死它),否则恐慌的音乐只是循环。而且,它听起来很傻得靠自己。

如果你在脚本中原始的游戏的 ‘教会’ 级别看,它是以不同的方式做。在 ‘curch.ai’ 触发器直接,不执行,但要求 ‘church.script’ 中几乎相同的节。那是由你来决定要的位置,似乎没有在运行时的差异。

动画

一个可爱的小东西这游戏引擎所提供的是动画。您可能已经注意到他们: 警卫队上一支香烟吸上一口,另一种搔他的屁股…这一切将添加到活着的艾未未的错觉。

若要完成此图坦卡蒙,你得开始 GtkRadiant 然而,另一个时间。这一次,我们摆脱我们亲爱的凯斯勒先生,他已尽了他的责任。从哪里他站起来,坚持在模型中 (用真空吸尘器了)、 创建触发器画笔在它附近,使它的 trigger_once 和将它与 target_script_trigger 相关联。喜欢这个:

Trigger 2

Setting

然后让另一个触发器的画笔,在遥远的墙-我们退出。这一次,使它的 ai_trigger。这可以触发脚本直接,但不是在所有情况下。我不确定到底有什么不同。它是需要使用这种触发器,将计数达到目标错了,但仍然让你出去别人…

Trigger3

Setting

编译和检查,请。从现在起,你触发亨氏之前,你需要拉终端和给开关 /notarget。否则他会开始射击你,和你需要见他在 ‘放松’ 模式……

我们要做下, 一件事清理我们的脚本。首先,删除整个 ‘party1’ 节。它之外根本,做什么和它是只脏离开未使用的块的躺在附近的脚本。接下来,在球员部分中,删除一切 ‘触发 start_walk 部分中,除了 ’ alertentity heinz’-我们仍然需要他的周围。那么你的脚本应该看起来像这样:

//
//AI Scripting
//Map: tut.map
//Last edited by: Kim_Pirat@mail.tele.dk
//

player
{
 spawn
 {
   mu_start sound/music/l_briefing_1 // starts waiting music
  }

playerstart
{
   mu_fade 0 1000 // music fades to 0% in 1 second (1000mSec.)
   mu_queue sound/music/m_mission // starts new music, when old is faded out
    // weapons
    giveweapon weapon_sten // makes stengun available to player
    giveweapon weapon_knife // do. knife
    // ammo
    setammo ammo_9mm 64 // give two full clips
    setclip weapon_sten 32 // full clip in stengun
    //give gun
    selectweapon weapon_sten // draws stengun
    // misc
    setarmor 50 // gives 50% armor
    giveinventory key_binocs // gives binoculars
   }

trigger start_walk // respond to the first trigger
  {
    alertentity heinz
  }
}

heinz
{
attributes // the ai's abillities
{
  aim_accuracy 0.0 // makes him a lousy shot
}

spawn // happening when ai is first placed in the map
{
}
}

是的现在我们应该准备好一点。右后亨氏 ’ ‘产卵’ 一节,插入:

trigger animation
{
wait 5000 // 5 sec. pause
walktomarker m5 // walk to ai_marker m5
wait 5000 player// 5 sec. pause, face player
trigger heinz animation // loops script
}

右后 ‘alertentity heinz’ 在’ 球员/触发 start_walk’ 你把

trigger heinz animation

要启动此小三月脚本。到目前为止,还有没有动画-时触发,亨氏产卵、 走到 m5 和盯着你。试一试,只是为了确保它正常工作。然后,右后等待 5000 球员,添加:

playsound cough2
playanim coughing_2h both

这是什么?试运行的地图 — — 别忘了 /notarget。

‘playsound cough2’ 就做到了。它是需要时间的声音来玩,所以游戏引擎刚刚启动的声音,开始下一位: ‘playanim coughing_2h 这两个’。’Playanim’ 一词启动动画,叫做 ‘coughing_2h’ 和 ‘都’ 意味着腿和躯干的 AI 是活跃在此动画中。简单的真的。童军.ai 脚本的更多示例。您可以找到可用的动画为每种类型的 AI (例如 infantryss,机修工…) 在模型/运动员//wolfanim.cfg 文件 (playertype)-看 / / 环境文件的一部分。
请尝试例如添加:

cigarette on
playanim smoking both
cigarette off

右前 ‘playsound cough2’……:)

秘密

我想现在它是很好的时间,才能找到一个秘密: 真空吸尘器 !看在我的计算机的房间里我更好地找到一个实时快速…
在.map,在它周围,一个触发器刷子和它附近的 target_script_trigger 已真空或某些其他对象。所以我们所要做有点添加脚本的球员部分,我猜后 ‘触发 start_walk 部分:

trigger trigger2
{
   foundsecret
}

…就是这样 !保存、 运行地图,和你走路过去真空 (或什么) 的下一次它会告诉你,你找到一个秘密的领域。

你大概可以猜到为什么我使用 ‘trigger_once’-否则你可以拼凑了不少秘密 !如果你想要你的秘密是墙里,或在一个盒子或无论之下,创建墙、 框或什么的使它的 func_explosive,并确保秘密的触发器画笔有点隐藏在它后面。否则将触发该触发器,当你只是刮沿着那特定的东西。

年底水平

还好吧,你在单人游戏地图,最后事情是什么?你离开它。
当你离开的地图时,它带你到下一幅地图,告诉你的分数-但只有如果你见到的目标。

你已经把 ‘trigger3’ 在图中。这就出口。请输入:

trigger trigger3
{
   changelevel escape1 persistant
}

在.ai 脚本,右后 ‘触发 trigger2’ 节。’Changelevel’ 是为了走开,找到另一个层次。’逃脱 1’ 是你切换到级别的名称 — — 离开离开的乞求。’持续’ 告诉它显示所有统计信息。您可以使用 ‘nostats’,如果你不想他们。

然后,向 ‘球员/菌种’ 的顶部,添加:

objectivesneeded 2 // tells the number of objectives
abort_if_loadgame // i haven't got a clue! all the scripts have it!

运行的地图。它会告诉你不完整的目标,当你击中退出。我们还需要在说可恶机的目的是什么 !

我想要两个目标的实现。你的任务: 杀Heinz! 并找到真空!
添加:

    death
        {
        objectivemet 1
        }

到了 ‘heinz’ 编写脚本,并添加:

objectivemet 2

’ player/trigger trigger2’ 脚本顶部。

陷阱警告:’Objectivemet’ 的事情必然是在一开始的任何脚本是在。其他游戏引擎会登记,目的为遇见和让你出去,但它将在 endmap 统计显示计数错误 !

如果你有一个或多个目的,你给他们继续的电话号码,从”1”开始的。请确保您不会错过一个唯一数字,或者你不会滚出去 !

右,保存并运行 !你应该能够立即退出水平,你们尽快使亨氏去艺术 (:)-假设室温,发现那可恶的真空 !

Outroduction

嗯,th-th-这一切,伙计 !到目前为止,这图坦卡蒙花了我我所有的业余时间为一周,所以我希望你得到一个小的乐趣。我本人绝对拉什脚本编写权威,所以如果你有任何问题,你最好问问他们在适当的论坛。
如果你找到缺点,缺陷,东西丢失等,请寄给我。

节日的问候,和快乐的 mappin’-

金 ‘海盗’ 克里斯滕森

学分:

阿诺和 WeblionX 从PlanetWolfenstein映射论坛: 谢谢你的反馈和想法。
从表面的灵感在他 ‘行军脚本的 AI’ 教程中的 Eyeronik。
灰质工作室为他们 ‘脚本定义’ 的。
我的妻子,珍妮,校对和只是一般忍受我…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值