魔兽争霸3地图编辑器中游戏缓存怎么用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了魔兽争霸3地图编辑器中游戏缓存怎么用?相关的知识,希望对你有一定的参考价值。
我曾经在百度上问过:如何将一个英雄的等级和携带的物品继承到下一张地图。有人说用游戏缓存,但我不会用。我的编辑器是半汉化的比如:游戏缓存这几个字是中文的,但选好后里面的内容是英文的知道的帮个忙最好告诉我具体步骤。
已经下好能用,你现在可以具体说明一下操作步骤吗 。设置Arthas=(最后读取的单位)怎么弄?要保存的人的变量怎么弄?创建游戏缓存,使用文件名是不是能随便写的?给张图也行
这是记录:
游戏缓存-创建游戏缓存,使用文件名;Campaigns。w3v
游戏缓存-记录 Arthas(就是你要保存的人但要用变量),使用名称:Arthas 类别名:Human02 缓存:(最后创建的游戏缓存)
游戏缓存-保存(最后创建的游戏缓存)到本地硬盘
这是读取:
游戏缓存-从缓存读取单位,名称:Arthas 类别名:Human02 缓存:(最后创建的游戏缓存)
设置Arthas=(最后读取的单位)
这个我不知道是不是必须在战役里面,我是照着魔兽的人族战役打的,你可以下一个MPQMaster,再从魔兽的war3.mpq文件中提出来,再看。里面的战役地图还是很有帮助的
设置Arthas=(最后读取的单位)在普通,里面有一个设置变量就是那个,要保存人的变量也是一样的,设置Arthas=你所选择的单位
文件名是可以随便写的,但是都要相同否则就会读取错误
参考技术A 先明确下你的意思 比如像一个地图(貌似是死亡之夜) 你存储时会给你一个代码 然后下次玩时输入就有了上次人物 或者是普通的地图 参考技术B 首先 请下载老狼的UI补丁之后 , 你就有中文的了 参考技术C 下几个中文补丁
魔兽争霸地图编辑器 倒数计时器
那为高人指点一下
怎样才可以让游戏里显示
倒数计时器
触发器由三个部分组成,事件、条件、动作。
事件:或称为触发事件,顾名思义,就是当某个事件发生的时候就运行触发器。
条件:判断是否达到指定的条件,如果没有达到条件将不执行动作。可以留空,表示直接执行动作。一般来说,条件越多越容易出错,所以尽量只使用一两个条件。
动作:条件通过后所要做的事情。
我用个简单例子来说明,比如一个英雄进入地区后游戏胜利,那么就要这样设置。
事件:一个单位进入地区
条件:判断单位是一个英雄为Turn
动作:游戏胜利。
在每个新建地图中都会有个叫做初始化的类,其中有个叫做对战初始化的触发器,它设定了每张地图默认的初始设置,其中包括:
Use melee time of day (for all players) - 启用默认的游戏中开始时间。
Limits Heros to 1 per Hero-type (for all players) - 限制玩家同一种英雄只能生产一名。
Hero trained Heroes a Scroll of Town Portal (for all players) - 给英雄一个传送卷轴。
Set starting resources (for all players) - 设置起始资源,给每个玩家分配一开始拥有的资源。
Remove creeps and critters from used start locations (for all players) - 移除开始点附近的野生单位、障碍物等。
Create starting units (for all players) - 在开始点上创建玩家开始对战游戏需要的主基地和工人
Run melee AI scripts - 让所有计算机玩家执行对战游戏人工智能。
Enforce victory/defeat conditions - 使用默认的胜利失败条件,所有建筑物被破坏即失败。
如果不需要,删除掉它们就可以了,事实上大部分RPG地图都不需要这些条件。
触发器的所有指令都是英文的,不过没关系,我专门为此制作了一个中英对照表,并在其中做了简要说明。请参阅附录:MSITStore:C:\Documents%20and%20Settings\cface\桌面\学习教程\学习教程\The7thDay\The7thDay.chm::/Table.html" target="_blank" >触发器中英对照表。
除此之外,触发器中还有很多函数,例如:"Last Created Unit",最后创建的单位。合理运用这些函数也是非常重要的,在触发器的使用中将会大量使用到这些函数。
触发器的使用是千变万化的,本章我介绍一些常见的例子,希望你能够举一反三,了解触发器的使用。
注意:类可以用中文命名,注释也可以用中文命名,但触发器不能用中文命名!
例一 开始时允许玩家选择喜欢的英雄。
这里要讲到函数和MSITStore:C:\Documents%20and%20Settings\cface\桌面\学习教程\学习教程\The7thDay\The7thDay.chm::/2nd_Var.html" target="_blank" >变量的运用。编辑器里还有许多内置的函数,与变量不同,函数是固定的不能够改变,它有一个最大的特点就是所有函数都有返回值,例如:"Last Created Unit"返回最后创建的单位;"Triggering Unit"返回触发此触发器的单位等等。现在我就为你介绍函数和变量的使用方法。
很多RPG地图都可以让你选择英雄,并且英雄死亡的时候能够复活,这是个非常实用的例子,很多地方你都能运用,但要怎么做呢?
首先打开变量编辑器新建一个变量PlayerUnit,类型设置为单位。可参阅基础知识:MSITStore:C:\Documents%20and%20Settings\cface\桌面\学习教程\学习教程\The7thDay\The7thDay.chm::/2nd_Var.html" target="_blank" >变量。
然后在地形编辑器中选择地区面板,添加三块区域,默认名字为"地区 000"、"地区 001"、"地区 002"。
在单位面板上选择"中立无敌意",然后在"地区 001"和"地区 002"上各放置一个英雄,然后选择"玩家 1 (红色)",放置一个小精灵。
在触发事件编辑器里增加一个新触发器,就命名为"ChooseHero1",并为加入指令。
触发事件
单位 - Unit Enters Region
如果单位进入地区1就运行触发器
单击Region出现以下对话框,选择"地区 001"。
两次确定后完成事件的设置,现在新建一个条件。
条件
Unit-Type Comparison
判断触发的单位类型是否是一个小精灵。
点击步兵出现单位类型对话框,选择暗夜精灵族,再选择小精灵后确定。
现在就要设置动作了,也就是给玩家一个英雄单位,并将这个单位储存到变量PlayerUnit中。
动作
单位 - Kill
杀死小精灵,默认(Triggering unit)表示是触发此触发器的单位,也就是小精灵。
单位 - Cearte a Unit
在"地区 000"当中创建一个英雄给玩家1,如下图修改,(Unit-type of 圣骑士 0000 <情报>)这是创建给玩家的单位,单击"选择一个单位"按钮,然后在地图上单击圣骑士,玩家 1 (红色)表示此单位给玩家1,(Center of 地区 000 <情报>)创建位置在"地区 000"正中,默认的建筑朝向单位面向哪个方向。
Set Variable
这条指令将最后创建的英雄赋值给变量PlayerUnit。选择变量为PlayerUnit,然后将默认函数(Triggering unit)改为(Last created unit),(Triggering unit)表示触发此触发器的单位,也就是已经被杀死的小精灵,(Last created unit)表示最后创建的英雄。
特效 - Create Special Effect On Unit
创建一个传送的特效给PlayerUnit,这句仅仅是为了好看。
点击Abilities\Spells\NightElf\Blink\BlinkTarget.mdl就能选择特效模型了,同时,这里也用到了变量PlayerUnit。
现在要判断第二个英雄,这很简单,只要复制一份触发器,选择触发器"ChooseHero1"点复制,然后点粘贴,就有了一份与"ChooseHero1"相同的触发器。
然后单击复制的触发器,将其改名为"ChooseHero2",并修改其中的指令,只用把事件中"地区 001"修改为"地区 002",然后再把Cearte a Unit指令中"圣骑士"改为"山丘之王"就可以了,很简单吧。
从上面可以看出,如果你想改变可选择的英雄时,只用修改Cearte a Unit这一条命令中的英雄就行了。运用了变量以后,不管你选择的是那个英雄,只用创建特效给变量PlayerUnit就行了,并且在例二英雄复活的时候我也就可以直接调用PlayerUnit这个变量。
由此可看出,为可能多次运用的对象创建变量是个很好的习惯,合理运用将大大减少你的工作量。
如果你想问,我要做一个多人游戏呢?难到每个人都要设置一次?如果有10个英雄可选,共5个玩家,难道要设置10x5=50个触发器?事实上这个问题很好解决,在这里一个函数起到关键的作用。
首先要把变量PlayerUnit下的数组打上钩,使其成为变量数组。
然后修改"单位 - Cearte a Unit",将其中的"玩家 1 (红色)"改为功能"转化 - Convert Player Index To Player",然后点击1,把功能改为"游戏 - Number Of Players" (如下图),确定。
同样修改"Set Variable",变量这时候变成了"PlayerUnit [序号]"的形式,把"序号"也改为"游戏 - Number Of Players"就行了。
"游戏 - Number Of Players"表示是触发此触发器的玩家的序号,所以"Player [游戏 - Number Of Players]"就是触发此触发器的玩家,这就使触发器能够自动判断是哪个玩家选择了这个英雄。在调用变量时只用选择数组的序号就行了,比如要调用玩家2的英雄,那么就只用调用对应的变量PlayerUnit[2]就行了。
如果你不想玩家选择相同的英雄呢?只要增加一句:
Trigger - Turn off
关闭触发器。
This trigger返回当前触发器,这条指令表示关闭当前触发器,触发器将不会再被触发。这句可以放在动作中任何位置,动作不会因此中止,所以建议放在第一条运行,避免因为没有及时关闭而导致其他玩家再次触发此触发器。
你可以多放几个小精灵在地图上测试。
例二 英雄死亡后等待120秒复活。
在例一里,我们选择了一个英雄,并且用一个变量PlayerUnit储存了这个英雄,现在要做的事情就简单了。
在这里要用到一个常用的触发器--倒数计时器,它的作用很简单,就是倒数计时,运用却很广泛。它可以用于触发器一定时间后发生的动作,或者每隔一定时间发生动作等等。
判断复活事件我将其分为两个触发器来做,第一个触发器设置计时的各个项目,第二个触发器判断计时器时间是否结束。同时在这里需要再定义两个新变量分别命名为Timer和TimerWindow。
触发器一,命名为HeroDied。
触发事件
单位 - Player-Owned Unit Event
一个玩家拥有的单位死亡。
条件
Boolean Comarison
布尔值判断触发的单位是一个英雄为真。
动作
倒数计时器 - Start Timer
开始一个计时器,点击Timer选择刚才定义的变量Timer,一次射击显然是翻译错误,这里可以选一次或循环执行计时器,30.00是以秒为单位的计时时间,改为120。
倒数计时器 - Create Timer Window
创建一个计时器窗口,(Last started timer)是最后开始的计时器,你也可以选择变量Timer,Title是标题,可任意修改,这里我改为"英雄复活倒计时"。
Set Variable
同例一的定义单位变量类似,设置变量TimeWindow为最后创建的计时器窗口,因为计时器窗口是没有名字的,所以要选择它的办法就只有用一个变量来储存它。
触发器二,命名为ReviveHero。
触发事件
时间 - Timer Expires
如果计时器Timer的时间结束。
动作
英雄 - Revive (Instantly)
使变量PlauerUnit存储的英雄立即在"地区 000"上复活。
倒数计时器 - Destroy Timer Window
销毁变量TimerWindow存储的计时器窗口。
这里用到的变量储对象,然后调用销毁的方法,以后会遇到很多类似的情况,也可以用这个方法处理。
但偏偏雨渐渐
小影六年级
UID 40453
精华 0
积分 5628
帖子 239
力量 1491
敏捷 3183
智力 715
威望 0
生命 10
魔法 10
金币 0 个
阅读权限 50
注册 2006-2-16
状态 离线 #6发表于 2006-2-27 16:33 资料 文集 短消息
例三 如果玩家离开游戏,那么他拥有的资源将平分给其他在线玩家。
玩过3C这张非常有名的玩家PK地图的人大概都有注意到,当有玩家中途离开的时候他的金钱会平分给在线的队友,这样做能够减少失去队友所产生的附面影响。
这例用到一个很有用的循环指令,"For each (Integer A) form x to y, do (Actions)",它的意思是:设A=x to y并且x < y,那么它将循环执行(y-x)次,第一次循环A=x,之后每次循环A的值将递增1,直到A=y。要注意,如果x > y,因为x是递增的,所以永远循环不到y,就会形成无限循环,为防止这种情况命令将会失效。
我们可以利用A的值每次递增的这个特性,来循环判断每一个玩家的状态。那么首先还是新建一个变量i,类型为Integer数值型的,用来储存临时数据。
MSITStore:C:\Documents%20and%20Settings\cface\桌面\学习教程\学习教程\The7thDay\The7thDay.chm::/images/Exp03_005.png" border=0>
触发事件
时间 - Periodic Event
因为玩家离线是没有触发事件的,所以这里定义为每5秒触发一次。每次判断的时间间隔没有必要很短,这只会增加运算量,你甚至可以设置为20秒判断一次。
动作
For each (Integer A) form 1 to 2, do (Actions)
假设只有两个玩家,循环执行判断语句,Integer A的值从1循环递增到2。
MSITStore:C:\Documents%20and%20Settings\cface\桌面\学习教程\学习教程\The7thDay\The7thDay.chm::/images/Exp03_002.png" border=0>
If/Then/Else, Multiple Function
If/Then/Else(如果/那么/否则)的意思是:如果If条件成立,那么就执行Then的动作,如果If条件不成立,那么就执行Else的动作。"Multiple Function"表示可以有多个函数,即是可执行多个条件和动作。
If - 环境
Player Slot Status Comparison
判断每个玩家的连接状态,(Integer A)取的是变量A的当前值。
MSITStore:C:\Documents%20and%20Settings\cface\桌面\学习教程\学习教程\The7thDay\The7thDay.chm::/images/Exp03_001.png" border=0>
Then - 动作
Set Variable
读取离线玩家的金钱资源,用变量i储存。
Set Variable
将变量i平分,(Number of players)表示统计在线的玩家数量。
玩家组 - Pick Every Player In Player Group And Do Action
选择所有在线的玩家,并做动作。
点击Action增加动作:
玩家 - Add Property
增加资源给玩家,(Picked player)表示所选择的玩家。
Else - 动作
Do nothing
什么也不做。
本例主要演示了以下几点,需要注意:
1. 选择合适时间间隔可留下更多资源做其他必要的运算,如果你的地图触发器非常多的话这点尤为重要,这能使你的地图运算速度更快。
2. 循环虽然功能很简单,就是循环执行命令,但是运用很广泛,善加利用可减少大量重复的工作。
3. If/Then/Else语句恐怕是计算机语言中最常见到的语句了,因为它只有两种判断,不为"True(真)"即为"False(假)",这就使得它可以用来控制一切意外情况的处理。
但偏偏雨渐渐
小影六年级
UID 40453
精华 0
积分 5628
帖子 239
力量 1491
敏捷 3183
智力 715
威望 0
生命 10
魔法 10
金币 0 个
阅读权限 50
注册 2006-2-16
状态 离线 #7发表于 2006-2-27 16:34 资料 文集 短消息 参考技术A 用触发器:
触发器
事件:(你需要的事件)
条件:(你需要的条件)
动作:创造"计时器"为了(玩家?)时间 n秒
显示 "最后创造的计时器"
等待n秒
隐藏 "最后创造的计时器"
但这只适用于同时出现一个计时器
多个计时器同时存在要用变量(就是将引号内的内容替换为同一个变量)本回答被提问者采纳 参考技术B 事件:
Map Initialization 地图初始化
Destructible Doodad - Destructible Doodad Dies 可破坏物体被摧毁
Destructible Doodad - Within Region Dies 在区域中被摧毁
Dialog - Dialog Button Click 按下对话按钮
Game - Time Of Day 游戏中时间
Game - Value Of Real Variable 实数变量Real数值
Game - Load 读取
Game - Save 保存
Game - Hero Abilities Button Clicked 按下英雄升级技能按钮
Game - Build Structure Button Clicked 按下建造按钮
Player - Chat Message 聊天信息
Player - Cinematic Skipped 跳过电影
Player - Selection Event 选择事件
Player - Keyboard Event 键盘事件
Player - Properties 资源
Player - Alliance Change(Any) 同盟改变 (任何)
Player - Alliance Change(Specific) 同盟改变 (指定)
Player - Victory 胜利
Player - Defeat 失败
Time - Time Elapsed 时间经过
Time - Periodic Event 周期性事件
Time - Timer Expires 计时器过期
Unit - Specific Unit Event 特定单位事件
Unit - Player-Owned Unit Event 拥有单位事件
Unit - Generic Unit Event 一般单位事件
Unit - Unit Enters Region 单位进入区域
Unit - Unit Leaves Region 单位离开区域
Unit - Unit Within Range 单位在范围中
Unit - Life 生命
Unit - Mana 法力
环境:
Boolean Comparison 布尔值Boolean判断
Ability Comparison 技能判断
Destructible Comparison 可破坏物体判断
Destructible-Type Comparison 可破坏物体类型判断
Dialog Button Comparison 对话按钮判断
Game Difficulty Comparison 游戏难度判断
Game Speed Comparison 游戏速度判断
Hero Skill Comparison 英雄技能判断
Integer Comparison 整数Integer判断
Item Comparison 物品判断
Item-Class Comparison 物品种类判断
Item-Type Comparison 物品类型判断
Melee AI Comparison 多人对战AI判断
Order Comparison 命令判断
Player Comparison 玩家判断
Player Color Comparison 玩家颜色判断
Player Controller Comparison 玩家控制判断
Player Slot Status Comparison 玩家在线状态判断
Race Comparison 种族判断
Real Comparison 实数Real判断
String Comparison 字符串String判断
Tech-Type Comparison 科技类型判断
Trigger Comparison 触发器判断
Unit Comparison 单位判断
Unit-Type Comparison 单位类型判断
And 与
Or 或
And, Multiple Conditions 与,多个条件
Or, Multiple Conditions 或,多个条件
动作:
普通 一些基本的未分类指令
AI AI 设定计算机控制的单位的人工智能
Animation 动画 单位所能做出的动作
Camera 镜头 设定摄像机的位置及改变方式
Cinematic 电影 设定游戏中即时演算的过场动画
Countdown Timer 倒数计时器 又称定时器或计时器,用于倒数计时或定时发生事件
Destructible Doodad 可破坏的 设定可破坏物体的状态
Dialog 对话 设定对话框的显示/隐藏、标题、按钮、内容及清除
Environment 环境 设定天气和环境
Floating Text 飘浮文字 可以飘浮在屏幕上任何位置的文字
Game 游戏 设定游戏相关属性
Game Cache 游戏缓存 将对象当前状态储存在文件中,可用于其他地图调用
Hero 英雄 设定英雄的所有状态
Item 物品 设定物品的使用及状态
Leader Board 排行榜 悬浮在右上角的文本框
Melee Game 对战游戏 设顶多人对战游戏的初始状态
Neutral Building 中立建筑 设定中立建筑的状态
Player 玩家 设定玩家拥有单位的属性及状态
Player Group 玩家组 设定玩家组中各个玩家的属性及状态
Quest 任务 设定任务提示窗口及主次任务
Region 地区 设定规划区域内触发的事件及环境
Selection 选择 设定选择选项
Sound 声音 设定游戏进行中声音的控制
Special Effect 特效 设定显示特效
Trigger 触发器 设定触发器的状态
Unit 单位 设定单位的属性及状态
Unit Group 单位组 设定单位组的属性及状态
Visibility 可见 设定区域可见模式
单位:
Create Unit Facing Angle 创建单位并指定面向角度 创建单位,并指定其面向角度
Create Unit Facing Point 创建单位并指定面向点 创建单位,并指定其面向点
Create Corpse 创建尸体 创建单位的尸体
Create Permanent Corpse 创建永久的尸体 创建永久存在的尸体
Kill 杀死 杀死单位
Remove 移除 从游戏中移除单位
Explode 爆炸 使单位以炸开形式死亡
Replace 替换 用一个单位替换现有单位
Hide 隐藏 隐藏单位
Unhide 解除隐藏 解除隐藏单位
Change Color 改变颜色 改变单位颜色,控制权不会改变
Change Owner 改变所有者 改变单位的所有者
Shared Vision 分享视野 玩家分享单位的视野
Move Unit (Instantly) 移动单位 (立即) 让单位瞬间移动到另一位置
Move Unit And Face Angle (Instantly) 移动单位并指定面向角度 (立即) 让单位瞬间移动到另一位置,并指定面向角度
Move Unit And Face Point (Instantly) 搬移单位并指定面向点 (立即) 让单位瞬间移动到另一位置,并指定面向点
Set Life(To Percentage) 设置生命 (百分比) 以百分比方式设置生命值
Set Mana(To Percentage) 设置法力 (百分比) 以百分比方式设置法力值
Set Life(To Value) 设置生命 (数值) 设置生命值
Set Mana(To Value) 设置法力 (数值) 设置法力值
Make Invulnerable/Vulnerable 成为无敌的/可被攻击的 设定单位为无敌的/可被攻击的状态
Pause/Unpause 暂停/解除暂停 暂停/解除暂停单位的动作,玩家将不可控制单位
Pause/Unpause All Unit 暂停/解除暂停所有单位 暂停/解除暂停所有单位的动作,玩家将不可控制单位
Pause/Unpause Expiration Timer 暂停/解除暂停到期的定时器 暂停/解除暂停到期的定时器
Add Expiration Timer 增加到期的定时器 增加到期的定时器
Make Unit Explode On Death 成为爆炸式死亡单位 使单位死亡方式成为以炸开形式死亡
Suspend Corpse Decay 暂缓尸体腐烂 让尸体腐烂暂缓
Reset Ability Cooldowns 重设技能冷却 恢复技能冷却到默认值
Set Building Construction Progress 设置建造建筑物进度 设置建造建筑物所要消耗的时间
Set Building Upgrade Progress 设置建造升级进度 设置建筑升级所要消耗的时间
Make Unit Sleep 成为睡眠单位 使单位处于睡眠状态
Make Unit Sleep At Night 成为夜间睡眠单位 使单位在夜晚的时候处于睡眠状态
Wake Up 醒来 使睡眠中的单位醒过来
Turn Alarm Generation On/Off 警戒范围开/关 打开/关闭单位警戒范围
Rescue Unit 营救单位 设置单位被营救
Make Rescuable 成为可营救的 设置单位为可营救单位,玩家接触时营救单位将加入玩家阵营
Set Rescue Range 设置营救范围 设置进入范围后单位即被营救
Set Rescue Behavior For Units 设置单位营救行为 设置营救后单位颜色是否变化
Set Rescue Behavior For Buildings 设置建筑营救行为 设置营救后建筑颜色是否变化
Enable/Disable Supply Usage 开启/关闭人口上限 开启/关闭人口上限
Make Unit Face Unit 使单位面向单位 使单位面向单位
Make Unit Face Point 使单位面向地点 使单位面向地点
Make Unit Face Angle 使单位面向角度 使单位面向角度
Set Movement Speed 设置移动速度 设置移动单位速度
Turn Collision On/Off 碰撞开/关 设置单位是否可与其他单位重叠
Set Acquisition Range 设置获得范围 设置单位的获得物品范围
Set Custom Value 设置自定义数值 设置自定义数值
Remove Buffs 移除持续性魔法 移除单位上的持续性魔法
Remove Buffs By Type 移除持续性魔法类型 按类型移除单位上的持续性魔法
Add Ability 增加技能 增加单位的技能
Remove Ability 移除技能 移除单位的技能
Issue Order Targeting A Unit 当前目标是一个单位的命令 让单位执行目标是单位的命令
Issue Order Targeting A Point 当前目标是一个点的命令 让单位执行目标是地点的命令
Issue Order Targeting A Destructible 当前目标是一个可破坏物体的命令 让单位执行目标是可破坏物体的命令
Issue Order With No Target 没有目标的命令 让单位执行没有目标的命令
Issue Train/Upgrade Order 训练/升级的命令 执行训练/升级的命令
Issue Research Order 研究科技的命令 执行研究科技的命令
Issue Build Order 建造的命令 执行建造的命令
基本上就是这些了...... 参考技术C 定义一个Timer型变量和TimerWindow类型变量。
在某些事件中就可以开启Timer,并产生TimerWindow。
当Timer结束时可以销毁TimerWindow。
很简单的啊。 参考技术D 先自定义一个变量,类型为倒数计时器
触发
创建倒数计时起(你自定义的那个变量)
开启为一次射击XX秒
以上是关于魔兽争霸3地图编辑器中游戏缓存怎么用?的主要内容,如果未能解决你的问题,请参考以下文章
魔兽自带地图编辑器触发事件中的循环函数和周期事件怎么设置啊 求高手指点