模组:事件数据
←目录
页面仍需完善
该页面由于下列原因被标记为不完善:
|
此页面解释游戏如何存储和解析事件数据。这是面向模组开发者的高级指南
原始数据
事件存储在Content\Data\Events\*.xnb中(每个地点对应一个文件),可以解包以编辑。以1.5.1为例,如下是潘姆的拖车的事件的原始数据,供参考:
数据 |
---|
{
"35/f Penny 1000/p Penny": "50s/-1000 -1000/farmer -30 30 0 Penny 12 7 0 Pam -100 -100 0/skippable/specificTemporarySprite pennyMess/viewport 12 7 true/pause 1000/speak Penny \"Ughh... It's so dirty in here.$s\"/pause 500/warp farmer 12 9/playSound doorClose/pause 500/faceDirection Penny 2/pause 500/emote Penny 16/pause 300/speak Penny \"@! Um... Sorry that it's such a mess. I was about to clean up.$u\"/pause 500/move farmer 0 -1 0/pause 600/emote Penny 32/pause 300/speak Penny \"You'll help me? You really mean it?$h\"/pause 500/faceDirection Penny 1/faceDirection farmer 1/speak Penny \"Okay, you can get started over there. I'll clean the kitchen.\"/move farmer 2 0 1/move farmer 0 -2 1/move farmer 1 0 1/move Penny -1 0 0/animate Penny false true 100 24 25/animate farmer false true 100 35/pause 200/playSound dwop/removeSprite 16 6/pause 200/move Penny -1 0 0/animate Penny false true 100 24 25/stopAnimation farmer/faceDirection farmer 0/pause 1200/stopAnimation Penny/removeSprite 10 5/playSound dwop/move Penny -1 0 0/animate Penny false true 100 24 25/pause 900/animate farmer false true 100 41/pause 300/playSound dwop/removeSprite 15 5/stopAnimation farmer/pause 1400/stopAnimation Penny/move Penny 1 0 0/pause 800/warp Pam 12 9/playSound doorClose/stopMusic/move Pam 0 -1 0/faceDirection Penny 2/faceDirection farmer 3/faceDirection Pam 1/pause 500/faceDirection Pam 3/speak Pam \"Whaddya think you're doing?!$u\"/faceDirection Pam 1/faceDirection Pam 3/faceDirection Pam 0/speak Pam \"Stop it! I had everything just the way I like it!$u\"/move Penny 2 0 2/pause 500/emote Penny 28/pause 500/speak Penny \"Mom, the house is a total mess. @ and I were just trying to tidy things up a bit.#$b#*sniff* *sniff*... Were you at the saloon just now? You smell like beer...$s\"/pause 300/move Pam -1 0 3/emote Pam 12/pause 400/speak Pam \"It's none of your damn business where I go!$4\"/pause 500/speak Penny \"It IS my business! I don't want you destroying yourself!$a#$b#Don't you realize your choices have an effect on me? Stop being so selfish!$a\"/faceDirection Pam 0/shake Pam 5000/pause 600/speak Pam \"Selfish? I put a roof over your head and clothes on your back and you call me selfish!? You ungrateful little...$u\"/pause 500/emote farmer 28/pause 500/faceDirection Pam 1/faceDirection Penny 1/move farmer -2 0 2/move farmer 0 2 3/pause 500/speak Pam \"You'd better go. I'm sorry you had to see this, kid.$4\"/pause 500/move farmer -1 0 2/move farmer 0 1 2/pause 500/faceDirection farmer 0/faceDirection Penny 2/pause 700/faceDirection farmer 2/pause 500/warp farmer -40 -40/playSound doorClose/pause 500/move Pam 0 -1 1/pause 300/faceDirection Penny 3/speak Pam \"He's a nice young man...^She's a nice young lady...\"/speak Pam \"But I don't want you tellin' others to clean up my house! It's embarrassing! You understand?$4\"/pause 300/faceDirection Penny 2/pause 600/showFrame Penny 23/pause 700/speak Penny \"...Yes, mother.$s\"/pause 1000/mail PennyCleanTrailer/end warpOut",
"36/f Penny 1500/p Penny": "musicboxsong/9 7/farmer -30 30 0 Penny 9 7 0/skippable/pause 1000/playSound doorClose/warp farmer 12 9/pause 400/faceDirection Penny 2/pause 300/speak Penny \"@, you came at a good time!#$b#I'm just about finished cooking a new recipe I invented!$h\"/pause 400/move farmer 0 -2 3/faceDirection Penny 1/move farmer -2 0 3/speak Penny \"Let me just finish up real quick.\"/pause 200/faceDirection Penny 0/pause 200/animate Penny false true 120 29 30/playSound crafting/pause 320/playSound crafting/pause 320/playSound crafting/pause 320/playSound crafting/pause 320/stopAnimation Penny/pause 500/playSound openBox/showFrame Penny 29/pause 400/playSound furnace/showFrame Penny 30/pause 1500/playSound clank/faceDirection Penny 0/pause 500/faceDirection Penny 1 true/showFrame Penny 28/speak Penny \"Here, give that a little taste.\"/pause 800/faceDirection farmer 2/farmerEat 200/showFrame Penny 4/pause 2500/stopAnimation farmer/pause 500/playSound gulp/animate farmer false true 350 104 105/pause 500/specificTemporarySprite pennyCook/pause 1500/faceDirection farmer 2/pause 500/speak Penny \"$q 72 null#...well?#$r 72 50 event_cook1#(Lie) Mmm! That was delicious!#$r 73 -50 event_cook2#Uh... can I get the rest to go?#$r 73 0 event_cook3#Well it's definitely unique... how did you get it so rubbery?\"/pause 500/speak Penny \"$p 72#Hey, since you're the first person to try it, I'm going to name this one 'Chili de @'.$h|Well, I guess this recipe was a failure...$s\"/stopAnimation farmer/faceDirection farmer 3/pause 600/speak Penny \"Um... so how about we watch a movie or something?\"/pause 500/move farmer 5 0 0 true/move Penny 5 0 0 true/globalFade/viewport -1000 -1000/end dialogue Penny \"Thanks for being my taste-tester.$h\"",
"963313/n pamPotatoJuice": "playful/10 7/farmer -100 -100 0 Pam 10 7 0/mail pamNewChannel/skippable/pause 3000/speak Pam \"Heheh... I see the delivery came in.$h\"/pause 500/speak Pam \"Let's have a little taste.$h\"/pause 1000/playSound coin/showFrame Pam 32/pause 2000/animate Pam false true 400 33 34/playSound glug/pause 800/playSound glug/pause 800/playSound glug/pause 800/playSound glug/pause 790/stopAnimation Pam/showFrame Pam 32/pause 400/emote Pam 40/pause 800/showFrame Pam 35/textAboveHead Pam \"Ptooey!\"/playSound slimedead/shake Pam 2000/pause 2000/animate Pam false true 400 28 29/speak Pam \"I said potato, not fermented baboon kidney!$u\"/pause 2000/end dialogue Pam \"The juice? Yeah, I tried it, kid. $4#$b#How'd it taste? ...Some things are better left unsaid. Let's just leave it at that.$4\""
}
|
事件前提
每个事件都有一个包含事件ID和事件前提的键。事件ID最大不能超过10位数2145483647(根据游戏编码)。
您可以使用任何ID以测试 但是当您准备发布,则推荐使用Nexus的4-5位模组ID作为前缀(此ID可在模组页面URL中找到)。注意:任何其他ID(例如用户ID的后四位)都可能与其他模组冲突。您实际上也可以在Nexus上创建页面但不点击"Publish"来为您的模组保留一个ID。当然,这并不是一条规则,而是一种防止模组冲突的良好管理。若上传到Moddrop或其他站点,只需要根据相应网站的页面ID修改事件ID即可。
事件前提包含任意数量的下述参数(使用/分隔)。例如,克林特的3心事件的前提条件为97/f Clint 750/t 1900 2300/d Tue Wed Thu Fri Sat Sun
,意思是“事件#97,需要与克林特有3心及以上友谊,周一7:00至23:00之间”(参见下文表格)。
说明:
- "NPC name"是指村民的内部英语名称,而不是翻译后的名称。
- 大多数文本是大小写敏感的(例如Mon和mon不同)。
- 处理事件代码的游戏逻辑位于GameLocation::checkEventPrecondition。
上下文
这些表达式检查当前时间、日期、天气等,与玩家无关。
表达式 | 对应前提 |
---|---|
A <dialogue ID>
|
给定ID的对话事件(包括对话主题)未在进行中。其中ID可以为自定义ID,也可为如下的原版ID:cc_Begin、cc_Boulder、cc_Bridge、cc_Bus、cc_Complete、cc_Greenhouse、cc_Minecart、dumped_Girls、dumped_Guys、Introduction、joja_Begin、pamHouseUpgrade、pamHouseUpgradeAnonymous、secondChance_Girls、secondChance_Guys、shaneSaloon1、shaneSaloon2、willyCrabs。 |
F | 今天不是节日。 |
U <day count>
|
从今天开始计起,<day count> 天内没有节日。
|
d <day of week>
|
今天不是一周中的某天(可以指定多天)。可用的值为:Mon、Tue、Wed、Thu、Fri、Sat、Sun。 |
r <number>
|
随机概率检查,其中<number> 是介于0和1之间的概率值(例如,0.2代表有20%的概率通过检查)。
|
v <name>
|
指定村民是可见的(无论他们是否在屏幕上)。 |
w <weather>
|
当前天气匹配<weather> 。可用取值:rainy、sunny。
|
y <year>
|
若<year> 为1,则必须在第一年。否则,当前年数不得少于<year> 。
|
z <season>
|
当前季节不是<season> 。
|
N <number>
|
玩家找到金色核桃总数不少于<number> 。
|
当前玩家
这些表达式检查当前玩家(正在游玩当前游戏实例的玩家)。
表达式 | 对应前提 |
---|---|
B | 当前玩家“已婚且有双人床”或“有室友且有单人床”(科罗布斯除外)。 |
D <name>
|
当前玩家正在与指定村民恋爱。 |
J | 当前玩家建成了Joja仓库。 |
L | 事件发生在农舍且农舍至少升级了两次(有婴儿床但不必有地窖)。仅适用于农舍内部,在其他地方总为false。 |
M <number>
|
当前玩家至少有指定钱数。 |
O <name>
|
当前玩家与指定村民结婚了。 |
S <secret note ID>
|
当前玩家已读指定ID的秘密纸条。 |
a <x> <y>
|
当前玩家进入地图时站在指定地块位置。注意此事件仅在进入地图时检查,因此只能使用作为传送目的地的地块。 |
b <number>
|
当前玩家至少到达过矿井底层<number> 次。
|
c <number>
|
当前玩家背包至少有<number> 个空位。
|
e <event ID>
|
对当前玩家观看过指定事件(可以包括多个事件ID)。
用法: /e <event ID> 意味看过指定事件,而 /e <event ID> <event ID> 意味着看过两个事件之一,/e <event ID>/e <event ID> 意味着两个事件都看过。 |
f <name> <number>
|
当前玩家与指定<name> 的村民至少有<number> 点友谊。可以指定多组“名字-友谊点”参数对,此情况下须满足全部要求。
|
g <gender>
|
当前玩家为指定性别(male 或 female)。 |
h <pet>
|
当前玩家未有宠物,且宠物偏好为<pet> ("cat" 或 "dog")。
|
i <item ID>
|
当前玩家背包中有指定物品。 |
j <number>
|
当前玩家玩了多于<number> 天。
|
k <event ID>
|
当前玩家未观看过指定事件(可以包含多个事件ID)。 |
l <letter ID>
|
未设置指定ID的信件标识。 |
m <number>
|
当前玩家至少赚了指定钱数(无论当前有多少现金)。 |
n <letter ID>
|
设置了指定ID的信件标识。 |
o <name>
|
当前玩家未与指定村民结婚。 |
p <name>
|
指定村民在当前玩家所在地点。 |
q <dialogue ID>
|
当前玩家在某个对话中选择了指定回答。可以包含多个对话ID,在此情况下必须同时满足所有要求。 |
s <item ID> <number>
|
当前玩家至少售出了<number> 件指定物品。可以指定多组“物品ID-物品数量”参数对,此时必须满足全部要求。仅对统计出货量的物品有效(也就是“售出的物品”菜单中的物品)。
|
t <min time> <max time>
|
当前事件介于指定事件之一。采用26小时制。 |
u <day of month>
|
当前的日期为指定值之一(可以包括多个参数)。 |
x <letter ID>
|
对当前玩家,先将事件标为已看过,再将指定信件添加到明日邮件中,然后返回false(因此不会产生进一步的效果)。使用格式"x letterid true"以立即送信。 |
房主
这些表达式检查房主玩家(多人模式中的农场主,不必是当前玩家)。若为担任游戏,则房主就是当前玩家。
表达式 | 对应前提 |
---|---|
C | 房主完成了社区中心或Joja仓库。 |
X | 房主未完成了社区中心或Joja仓库。 |
H | 当前玩家为房主。 |
Hl <letter ID>
|
房主玩家未设置指定信件标识。 |
Hn <letter ID>
|
房主玩家设置了指定信件标识。 |
*l <letter ID>
|
房主玩家和当前玩家未设置指定信件标识。 |
*n <letter ID>
|
房主玩家和当前玩家设置了指定信件标识。 |
事件脚本
基本格式
事件键值对中的“值”就是事件脚本。脚本指定了事件的内容,包括光照、音乐、NPC动作和对话。脚本是用/字符分隔的多条命令。
每个脚本必须以下述三条命令开头,且顺序不能颠倒:
索引 | 语法 | 描述 |
---|---|---|
0 | <music ID>
|
欲播放的背景音乐或环境音效。然后,可以使用playMusic <newmusic>以更改此声音,或使用stopMusic以停止播放此声音。此字段可以设为none(停止当前一切音乐,并使用当前地点的默认背景音效)。 也可以设为continue(保持当前音乐不变)。 |
1 | <x> <y>
|
在事件开始时,照相机聚焦的地块坐标。 |
2 | [<character ID> <x> <y> <direction> ]+
|
初始化一个或多个角色的初始地块位置和朝向。其中<character ID> 可以为farmer或村民名称(如Abigail)。
|
上述三个命令后面可以添加下述命令排成的任何序列:
命令 | 描述 |
---|---|
addBigProp <x> <y> <object ID>
|
向指定地块添加物体。<object ID> 为TileSheets\Craftables.png贴图集ID。
|
addConversationTopic <ID> [length]
|
启动指定ID和时长的模组:对话#对话主题(若不指定[length] ,则默认持续4天)。设置[length] 为0则会使该对话主题仅在当天有效。
|
addCookingRecipe <recipe>
|
给玩家指定的烹饪菜谱。 |
addCraftingRecipe <recipe>
|
给玩家指定的打造配方。 |
addFloorProp <prop index> <x> <y> [solid width] [solid height] [display height]
|
从当前节日贴图集中选取一个非实体道具给玩家。[solid width] 和[display height] 默认为1。[display height] 默认为[solid height] 。
|
addLantern <row in texture> <x> <y> <light radius>
|
从Maps\springobjects.png贴图集中选取指定贴图,并将其作为发光的临时贴图添加到指定地点。<light radius> 设为0代表仅贴图,不发光。
|
addMailReceived <letter ID> [true / false]
|
设置信件为已读。 |
addObject <x> <y> <sprite index> [layer]
|
从Maps\springobjects.png贴图集中选取指定贴图,将其作为临时贴图添加到指定地块。 |
addProp <prop index> <x> <y> [solid width] [solid height] [display height]
|
从当前节日贴图集中添加一个实体道具。[solid width] 和[solid height] 默认为1。 [display height] 默认为[solid height] 。
|
addQuest <quest ID>
|
添加指定任务到日志。 |
addTemporaryActor <character> <sprite width> <sprite height> <tile x> <tile y> <facing> [breather] [Character|Animal|Monster] [animal name]
|
添加临时演员。[breather] 为布尔类型。[Character|Animal|Monster] 决定了从那个贴图集加载贴图。默认为Character。[animal name] 仅对Animal演员有效。
|
addToTable <x> <y> <object ID>
|
将物品放在指定位置的家具上面。除非地点是FarmHouse,否则它总是会尝试将物品放置在第一件家具上,不论那件家具是否是桌子(如果没有家具,可能会报错)。如果那件家具上之前已有物品,它还会替换掉那个物品。不建议在FarmHouse中使用。可能根本不适用于原版游戏。 |
addTool <Sword|Wand>
|
向玩家的背包添加Battered Sword或回程法杖。原版中Battered Sword是不可获得的未实装物品。 |
advancedMove <actor> <loop> <x y> ... OR <direction duration>
|
设置演员的移动。可以设置将<loop> 设为True来使演员沿此路径来回走动。示例:/advancedMove Robin false 0 3 2 0 0 2 -2 0 0 -2 2 0/
要使演员沿x轴(左右)移动,请使用要移动的地块数和0。例如, 要使角色沿y轴(上下)移动,请使用0和要移动的地块数。例如, 要使演员暂停,请使用面朝的方向和要暂停的毫秒数。1代表向右,2代表向下,3代表向左,4代表向上。之所以选择4代表向上而不是0,是为了让 代码可以区分移动命令和暂停命令,因为移动命令的x或y值中必须有一个为0,而暂停命令的两个值都不能为0。 示例: 示例: |
ambientLight <r> <g> <b>
|
调节环境光照等级,RGB值为0至255。 |
animalNaming | 若未打开其他菜单,显示动物取名菜单。它会默认当前地点为Coop(鸡舍),似乎只能用于孵化的动物。 |
animate <actor> <flip> <loop> <frame duration> <frames...>
|
为指定演员制作动画,使用其贴图集中的一个或多个<frames> (帧),每帧持续<帧时长> 毫秒。<frames> 按如下规则编号:将贴图集切成16x32的小方块,然后从左到右、从上到下、从0开始编号。<flip> 表示是否沿Y轴翻转贴图;<loop> 表示是否循环播放动画,直到使用stopAnimation方可停止循环。若您正在为玩家制作动画,参考Modding:Farmer_sprite#Sprite_Index_Breakdown可能会有所帮助。
|
attachCharacterToTempSprite <actor>
|
使指定演员与最近临时贴图对齐。 |
awardFestivalPrize | 授予复活节或冰雪节的赢家奖励。 |
awardFestivalPrize <item type>
|
授予玩家指定奖励。可用的物品类型为"pan", "sculpture", "rod", "sword", "hero", "joja", "slimeegg", "emilyClothes" 和 "jukebox"。 |
beginSimultaneousCommand | 与endSimultaneousCommand搭配使用,表示同时执行一串命令。格式:beginSimultaneousCommand/<Event Commands>.../endSimultaneousCommand。 |
broadcastEvent [local] | 将此事件标记为“广播事件”,也就是其他玩家也都可以看见此事件。任何联机玩家会被强制传送到此事件。这用于某些原版事件,例如刘易斯向玩家介绍废弃的社区中心。
若指定"local"选项(不是布尔值),则农场帮手会看见事件的主人公是他们自己,而不是房主。原版游戏中未使用此选项。 |
catQuestion | 触发是否收养宠物的询问。 |
cave | 触发选择农场山洞类型的询问。稍后生效。但将蘑菇洞改为蝙蝠洞并不会移除蘑菇箱。 |
changeLocation <location>
|
切换到另一地点,并在那里运行余下的脚本。 |
changeMapTile <layer> <x> <y> <tile index>
|
将指定地块换为指定值。 |
changeName <actor> <displayName>
|
将演员的显示名称设为<displayName> ,其中下划线将被替换为空格。
|
changePortrait <npc> <portrait>
|
将村民的头像换为"Portraits/<actor> _<portrait> "。
|
changeSprite <actor> <sprite>
|
将演员的贴图换为"Characters/<actor> _<sprite> "。
|
changeToTemporaryMap <map> [pan]
|
将位置更改为从由 <map> 指定的地图文件中加载的临时位置。如果省略了 [pan] 参数,则还会在新地图上运镜到地块坐标 0, 0。如果为 [pan] 提供了任何值,则不会发生运镜。
|
changeYSourceRectOffset <npc> <offset>
|
改变村民的垂直贴图偏移量。例如:changeYSourceRectOffset Abigail 96 将偏移她的贴图表,使她看起来是向左看而不是向下看。这个改变会在事件剩余时间内持续有效。这仅在艾米丽的“服装疗法”事件中用于正确显示各种服装。 |
characterSelect | 似乎无用。将Game1.gameMode设为5,Game1.menuChoice设为0。 |
cutscene <cutscene>
|
激活一个过场动画。参见过场动画列表。 |
doAction <x> <y>
|
模拟玩家点击指定的x/y坐标,并触发任何相关动作。它通常用于在室内事件中打开门,但也可以用于其他目的。如果你对村民使用它,你会与他们交谈,如果玩家拿着物品,他们会将其作为礼物赠送。doAction激活主游戏世界中的对象(他们正处于可能事件之外的地点),因此以这种方式激活NPC非常棘手,他们的反应会根据玩家所持物品的不同而有所不同。 |
dump <group>
|
为给定组(如果组是girls则为女性,否则为男性)启动特殊的“冷落”和“第二次机会”对话事件。冷落事件的ID为dumped_Girls或dumped_Guys,持续7天;第二次机会事件的ID为secondChance_Girls或secondChance_Guys,持续14天。在1.3版本的开放测试版中,有第二个参数用来确定丢失友谊的数量,但在发布之前,对该参数的支持已被移除。 |
endSimultaneousCommand | 和beginSimultaneousCommand搭配使用,同时执行一串命令。格式:beginSimultaneousCommand/<Event Commands>.../endSimultaneousCommand |
elliotbooktalk | 艾欧利特读书会。 |
emote <actor> <emote ID> [continue]
|
使指定村民显示指定表情。若指定continue,则立即执行下条命令。表情存储在 Content\TileSheets\emotes.xnb;参见表情列表。 |
end | 通过淡出结束指定事件,然后回复游戏世界,并将玩家置于他们进入此区域时所站的地块。所有end参数都默认执行此命令,除非另有说明。 |
end bed | 与end相同,但将玩家传送到他们最近的床的x/y坐标处。并不会将玩家传送到农舍,而只是传送到当前地图的对应x/y坐标处,不管当前地图是不是农舍。 |
end beginGame | 仅用于玩家刚抵达星露谷时的巴士站事件。 将游戏模式设为playingGameMode,将玩家传送至农舍(9, 9),结束当前时间,开启新的一天。 |
end credits | 不用于任何正常事件。清除落叶/落花天气,将音乐换为婚礼音乐,将游戏模式设为creditsMode并结束当前事件。 |
end dialogue <NPC> <"Text for next chat">
|
和end相同,但还会清除当天的村民对话,并将这些对话换为<"Text for next chat"> 参数。示例:end dialogue Abigail "It was fun talking to you today.$h"
|
end dialogueWarpOut <NPC> <"Text for next chat">
|
参见end dialogue和end warpOut。 |
end invisible <NPC>
|
和end相同,但将指定村民设为不可见(直到明天之前都无法与之互动)。 |
end invisibleWarpOut <NPC>
|
参见end invisible和end warpOut。 |
end newDay | 同时结束事件和当天(将玩家传送到床上,存档,卖出出货箱中的所有东西等)。 |
end position <x> <y>
|
相当于end,但会将玩家传送至地图坐标 x y 处。 |
end warpOut | 和end相同,但寻找当前地点的第一个出口(若为男性玩家且在浴室,则寻找第二个),并将玩家从此出口传送出去。 |
end wedding | 仅用于硬编码的婚礼事件。 将玩家的衣服变回常服,将刘易斯的事件后对话设为"That was a beautiful ceremony. Congratulations!$h",并将玩家传送回农场。 |
eventSeen <event ID> [true / false]
|
用于防止观看矛盾的事件。 它包含一种特殊逻辑:如果事件ID为当前事件,则当该事件结束或被跳过(如果设置为false)时,它会阻止将当前事件标记为已查看。这用于可重复事件。 |
extendSourceRect <actor> reset
|
重置演员贴图。 |
extendSourceRect <actor> <horizontal> <vertical> [ignoreUpdates]
|
TODO: 解释Character.extendSourceRect |
eyes <eyes> <blink>
|
将玩家的眼睛状态设为指定值。<eyes> 取值为0 - 5的整数(依次为睁眼、闭眼、右眼、左眼、半闭、睁大)。眨眼表示为一个负数倒计时,默认为-1000。
|
faceDirection <actor> <direction> [continue]
|
使指定村民面朝指定方向。若不指定[continue] ,则游戏会暂停。
|
fade [unfade]
|
若不指定参数,则淡出直到黑屏。若参数为unfade(而非true),则从黑屏状态淡入画面。 |
farmerAnimation <anim>
|
短暂地将玩家贴图设为<anim> ,其时长与贴图类型有关。在原版事件中仅用过1次。使用 showFrame farmer <sprite>两次(以设置新帧、再切换回来)更佳,因为这种方式允许使用pause n来控制时长。
|
farmerEat <object ID>
|
使玩家吃指定东西(这是真实发生的,因此相应食品效果会奏效)。 |
fork [req] <event ID>
|
结束当前命令脚本,并在满足[req] 条件的情况下启动具有给定ID的不同脚本。(例如:在塞巴斯蒂安的6心事件的“死灵法师”脚本中,使用/fork choseWizard finalBossWizard。)[req] 条件可以是邮件ID或对话回答ID;如果不指定,它会检查specialEventVariable1变量是否已设置(例如,通过question事件命令或%fork对话命令设置)。新脚本应具有与正常事件脚本相同的格式,但不包含三个必需的起始字段。
|
friendship <npc> <amount>
|
使与指定村民的游戏增长指定点数(250点=1心)。 |
globalFade [speed] [continue]
|
按指定速度淡出到黑屏(默认0.007)。若指定continue,则此事件在黑屏后继续发生;否则,事件会暂停,直到黑屏结束。当此命令结束时,黑屏效果会消失;为避免此问题,请使用viewport命令将照相机移除屏幕。 |
globalFadeToClear [speed] [continue]
|
按指定速度“fade to clear”(淡入?)。若指定了continue,则淡入时事件继续发生,否则暂停事件直到淡入结束。 |
glow <r> <g> <b> <hold>
|
让屏幕闪烁一次,在一秒钟内逐渐变化到指定的红色(r)、绿色(g)和蓝色(b)值,然后再逐渐恢复到原来的颜色。如果hold参数为true,则屏幕会渐变到该颜色并保持,直到使用stopGlowing函数为止。 |
grandpaCandles | 点亮爷爷的蜡烛。 |
grandpaEvaluation | 进行爷爷的评价。 |
grandpaEvaluation2 | 进行爷爷的重新评价。 |
halt | 使所有人停下。 |
hideShadow <actor> <true/false>
|
隐藏指定演员的阴影。设为false则取消隐藏。 |
hospitaldeath | 强制玩家损失金钱和物品,调起和哈维的对话框。与下文提到的end命令有所不同。 |
ignoreCollisions <character ID>
|
使角色在此事件的剩余部分中忽略碰撞。例如,可能会穿墙。角色ID可以为farmer或村民名称,如Abigail。 |
ignoreEventTileOffset | 在农场事件中的地块位置会被赋予偏移,以匹配农舍位置。若此命令之后的事件不应基于农舍位置,则可使用ignoreEventTileOffset命令来禁用此偏移。此命令必须为第4个命令(紧跟着前3个初始化命令)才能奏效。 |
itemAboveHead [type]
|
在玩家头顶显示一个物品。[type] 可以为"pan", "hero", "sculpture", "joja", "slimeEgg", "rod", "sword" 或 "ore"。若未指定物品,则玩家不会显示物品(?)。不支持其他物品。
|
jump <actor> [intensity]
|
使得指定村民跳起。intensity默认为8。 |
loadActors <layer>
|
从地图文件的某个图层加载此演员。 |
makeInvisible <x> <y> [x-dimension] [y-dimension]
|
暂时隐藏选中的物体或地形特征:在事件持续期间,对应的地块(或地块区域)将变得可通过。这在事件期间清理行走区域时非常有用,尤其是在农舍中。(示例:/makeInvisible 8 14将隐藏当前地图中坐标为8, 14的地块上的任何物体或地形特征。)可选的[x-dimension] 和[y-dimension] 参数允许您指定要清理的更大区域。(示例:在莉亚的14心事件中,/makeInvisible 68 36 13 7将清除左上角坐标为68, 36的13×7矩形地块区域。)已知问题:某些家具可能不会立即重新出现?
|
mail <letter ID>
|
使明天早上收到指定信件(参见Content\Data\mail.xnb以获取可用信件)。 |
message "<text> "
|
显示对话框(但没有说话者)。参见对话格式以了解<text> 的格式。
|
minedeath | 强制玩家损失金钱和物品,调起和哈维的对话框。与下文提到的end命令有所不同。 |
money <amount>
|
增加/减少指定金额的钱。 |
move <actor> <x> <y> <facing> <continue>
|
让指定演员从当前位置(仅 沿一个轴)移动指定偏移量,并面向指定的朝向。如果要沿多个轴移动,必须指定多个move命令。默认情况下,在执行移动命令时事件会暂停,但如果将<continue> 设置为true,则移动是异步的,并且会与其他事件命令同时运行。您还可以在一个事件命令中使用move同时移动多个人物 - 例如,/move Abigail 1 0 1 Sam 0 1 1 Sebastian 2 0 1/将让阿比盖尔、山姆和塞巴斯蒂安同时各自向指定方向移动。
|
pause <duration>
|
暂停游戏指定毫秒。 |
playMusic <track>
|
播放指定的音乐ID。若音乐为'samBand',则会根据玩家和山姆对话中选择的答复(76-79)来选择待播放的音乐。 |
playSound <sound>
|
从游戏声音库中播放指定ID的声音。 |
playerControl | 使玩家重获控制权。 |
positionOffset <actor> <x> <y>
|
使指定演员的位置偏移指定像素。此效果瞬间发生,没有“走过去”的动画。 |
proceedPosition <actor>
|
在执行下一条命令前,等待指定演员停止移动。 |
question null "<question> #<answer1> #<answer2> "
|
显示一个对话框,其中包含一个问题,和几条可选的答复。当玩家选择一个答复时,事件脚本会继续执行,没有其他效果。 |
question fork<answer index> "<question> #<answer 0> #<answer 1> #..."
|
显示一个对话框,其中包含一个问题,和几条可选的答复。当玩家选择匹配fork<answer index> 的答复时(例如fork0代表第一条答复),则设置specialEventVariable1 变量。经常后面跟着fork命令。示例:
.../question fork0 \"#answer0#answer1#answer3\"/fork eventidhere/..."
|
quickQuestion <question> #<answer1> #<answer2> #<answer3> (break)<answer1 script> (break)<answer2 script> (break)<answer3 script>
|
显示一个对话框,其中包含一个问题,和几条可选的答复。其中,<answer script> 为\\分隔的命令序列。当玩家选择一个答复,就会执行对应的<answer script> ,然后事件继续。常用于村民的反应会依赖于选中的答复、但随后的事件与此答复无关的情形。
|
removeItem <object ID>
|
移除玩家背包中的第一个物品。 |
removeObject <x> <y>
|
移除指定位置的道具。 |
removeQuest <quest ID>
|
在任务日志中删除指定任务。 |
removeSprite <x> <y>
|
移除指定位置的临时贴图。 |
removeTemporarySprites | 移除所有临时贴图。 |
removeTile <x> <y> <layer>
|
移除指定图层的指定地块。 |
resetVariable | 将specialEventVariable1设为false。 |
rustyKey | 给玩家生锈的钥匙(以解锁下水道)。 |
screenFlash <alpha>
|
使屏幕瞬间闪烁白光。<alpha> 取0到1,用于调节亮度。
|
setRunning | 使玩家奔跑。 |
shake <actor> <duration>
|
使指定村民颤抖指定毫秒数。 |
showFrame farmer <frame> <flip>
|
将玩家当前贴图相对Y轴翻转。在早于1.6的版本中,若玩家未面朝正确的方向,则会显得奇怪。<flip> 取true或false。
|
showFrame <actor> <frame ID>
|
设置指定演员在其Content\Characters*.xnb贴图表中的当前帧。请注意,设置玩家的贴图仅会改变“一部分”贴图(有时是手臂,有时是手臂、腿和躯干但不包括头部等)。要旋转整张贴图,请在使用“showFrame”修改贴图之前,先使用“faceDirection farmer <0/1/2/3> ”命令。帧ID从0开始。如果设置的是玩家的帧,则可以省略“farmer”,即showFrame farmer <frame ID> 和showFrame <frame ID> 均可用。
|
showRivalFrame <frame>
|
将'rival'演员的贴图设为指定帧。 |
skippable | 允许跳过此事件。 |
speak <character> "<text> "
|
显示指定村民的对话文本。参见对话格式。 |
specificTemporarySprite <sprite> [other params]
|
显示指定的临时贴图。参数会根据贴图发生变化。除了little heart的临时贴图都是高度硬编码的,因此不易复用。 |
speed farmer <modifier>
|
向玩家添加指定速度修饰器<modifier> 。此命令的效果将持续,因此欲变回正常速度须再用一次此命令。
|
speed <actor> <speed>
|
设置指定演员的速度(默认为3)。不适用于玩家。仅对该演员的下一个移动或动画有效。 |
splitSpeak <actor> "<text> "
|
对话,但依赖于先前选择的答复('~'为分隔符)。 |
startJittering | 使玩家跳起。 |
stopAdvancedMoves | 停止advancedMove造成的移动。 |
stopAnimation farmer | 停止当前玩家动画。 |
stopAnimation <actor> [end frame]
|
停止当前指定村民的动画。不适用于玩家。 |
stopGlowing | 使屏幕停止发光。 |
stopJittering | 使玩家停止跳起。 |
stopMusic | 停止当前音乐。 |
stopRunning | 使玩家停止奔跑。 |
stopSwimming <actor>
|
使演员停止游泳。 |
swimming <actor>
|
使演员开始游泳。 |
switchEvent <event ID>
|
将当前事件(即事件代码)换为同一地点的另一事件。 |
taxvote | 投票,是否统一3%的售卖税率(无效?)。 |
temporarySprite <x> <y> <row in texture> <animation length> <animation interval> <flipped> <layer depth>
|
根据指定参数创建临时贴图,其资源来自TileSheets/animations。 |
temporaryAnimatedSprite <texturename> <source_x> <source_y> <source_width> <source_height> <interval> <length> <loops> <tile_x> <tile_y> <flicker> <flip> <depth> <fade> <scale> <scale_change> <rotation> <rotation_change> +
|
创建具有指定参数的临时贴图。也能接受下述的可选的具名参数(用空格分隔键和值):<color> <hold_last_frame> <ping_pong> <motion> <acceleration> <acceleration_change>
|
textAboveHead <actor> \"<text> \"
|
在指定村民的头部显示一个具有指定文本的气泡;参见对话格式。 |
tutorialMenu | 若未打开其他菜单,则打开教程菜单。 |
updateMinigame <event data>
|
向当前小游戏发送一个事件。 |
viewport move <x> <y> <duration>
|
使照相机在指定时间内朝指定方向运镜。时间单位为毫秒。示例:"viewport move 2 -1 5000" 使照相机每秒右移2像素、上移1像素,持续5秒。移动的总距离是基于帧率而非真实时间计算的,因此可能与实际情况有出入。 |
viewport <x> <y> [true [unfreeze]|clamp [true|unfreeze]]
|
立刻将照相机聚焦位置变为给定的 x y 地块位置。TODO: 解释其他参数。 |
waitForAllStationary | 等到所有演员都停止移动了,再开始执行下一条命令。 |
waitForOtherPlayers | 等待其他玩家(原版多人)。 |
warp <actor> <x> <y>
|
将指定演员传送到给定x, y坐标处。可用于将演员传送出屏幕。 |
weddingSprite <frame>
|
使指定帧<frame> 识别玩家为'WeddingOutfits'。
|
如下命令已损坏或无用:
命令 | 描述 |
---|---|
grabObject <object ID>
|
已损坏。 触发通用动画。会忽略物品ID,且不会添加相应物品。 |
end busIntro | 本来应该用于播放新游戏开头的巴士过场动画,但后者可能在发布前被裁掉了。 |
注释
使用--
来添加注释。可用于插入注释或在调试事件时暂时禁用某些命令。注释在下一处斜杠(/
)处结束,因此注释不能包含斜杠。注释不能添加在前三个命令处。这意味着在字段2(角色初始化)后面才能开始添加注释。
示例:
"666/": "none/-1000 -1000/farmer 5 7 0/--you can add comments from here/skippable/viewport 5 7 10/--set viewport near door/pause 2000/end"
朝向
事件命令使用的面部朝向取如下值:
值 | 含义 |
---|---|
0 | 朝上 |
1 | 朝右 |
2 | 朝下 |
3 | 朝左 |
过场动画
cutscene
命令接受如下取值:
值 | 过场动画 |
---|---|
AbigailGame | 和阿比盖尔一起玩草原大王游戏。 |
addSecretSantaItem | 冬日星盛宴送礼过场动画。 |
balloonChangeMap | 切换到哈维10心事件中的“热气球中”地图。 |
balloonDepart | 哈维10心事件中气球降落。 |
bandFork | 根据山姆的2心事件,播放对应的8心事件场景。 |
boardGame | 启动索拉里昂英雄传奇小游戏。 |
clearTempSprites | 移除地图上所有临时贴图。 |
eggHuntWinner | 复活节比赛结算动画。 |
governorTaste | 夏威夷宴会百乐汤的动画。 |
greenTea | 卡洛琳2心事件茶室动画。 |
haleyCows | 海莉8心事件骑牛动画。 |
iceFishingWinner | 冰雪节比赛结算动画。 |
iceFishingWinnerMP | 显示离开冰雪节时的信息。 |
linusMoneyGone | ???(似乎无用) |
marucomet | 玛鲁14心事件彗星动画。 |
plane | 哈维8心事件飞机动画。 |
robot | 玛鲁10心事件MarILDA起飞动画。 |
对话
参见模组:对话#格式。
通用数值
表情
表情是显示在角色头上、用于表示情感或反应的动画图标气泡。表情图标存储在TileSheets\emotes素材文件中。
ID | Character常量 |
---|---|
4 | emptyCanEmote |
8 | questionMarkEmote |
12 | angryEmote |
16 | exclamationEmote |
20 | heartEmote |
24 | sleepEmote |
28 | sadEmote |
32 | happyEmote |
36 | xEmote |
40 | pauseEmote |
44 | 无用 |
48 | 无用 |
52 | videoGameEmote |
56 | musicNoteEmote |
60 | blushEmote |
另请参阅
- 用于解析事件前提字符串的JavaScript
- 用于格式化事件以便翻译(i18n)的LINQ脚本。