• 欢迎来到THBWiki!如果您是第一次来到这里,请点击右上角注册一个帐户
  • 有任何意见、建议、求助、反馈都可以在 讨论板 提出
  • THBWiki以专业性和准确性为目标,如果你发现了任何确定的错误或疏漏,可在登录后直接进行改正

脚本对照表/ANM/星莲船

来自THBWiki
跳到导航 跳到搜索

概述

本对照表是Zun的ANM描述文件中的脚本的对照表,适用于风地星


提取zun脚本的工具是touhou toolkit.

指令范例

Sprite: 0 64*112+0+0 这部分是分配png文件的贴图 并赋予序号 0代表序号,64*112代表大小,+0+0代表贴图左上角的坐标


Script: 54 // 54代表 脚本序号号 类似于 ECl中的sub

Instruction: 0 0 68 12 // 其中第一个数字为 第X帧执行,第二个0 的作用详见运算指令部分,第三个数字即是命令序号,之后数字皆为参数

变量及特殊变量表

  anm中变量是由数字来表示的
  浮点变量应从10004.0f开始
  整数变量从10000开始
  特殊变量表:
  10010:[-π,π];
  10011:[0.0f,1.0f];
  10012:[-1.0f,1.0f];
  10013:该贴图中循环完成的次数;
  10022:随机整数

运算指令

在使用运算指令和调用运算的时候要将instruction中的第二个数设置成其中变量所对应的二进制

例如:

Instruction: 0 12 407 10 0 10004.0f 10005.0f 0.0f (这句指令摘自第四世代anm描述文件,第三世代与其原理相同)

这句中变量分别在第三位和第四位,因此第二个参数数为4+8=12.

双变量操作

example: 6(int a,int b)变量a=b

ins号 作用(int) ins号 作用(float) ins号 作用(int) ins号 作用(float)
6 = 7 = 8 + 9 +
10 - 11 - 12 * 13 *
14 / 15 / 16 mod 17 mod
三变量操作

example:18(int a,int b,int c) 变量a=b+c

ins号 作用(int) ins号 作用(float) ins号 作用(int) ins号 作用(float)
18 + 19 + 20 - 21 -
22 * 23 * 24 / 25 /
26 mod 27 mod - - - -

指令表

1()

   返回/结束

3(int a)

   选择贴图号

4(int a, int t)

   跳转;a为字节数,ins名8字节一个参数4字节,ins名前的两个参数不算在内;在跳转的时候帧数会改变为t,当以字节数跳转的语句的时间大于t的时候,t无效,反之t有效,因此大多数时候可以直接把a设置成0,用t调整跳转到哪条语句

6~27见运算指令

48(float,x,y,z)

   设置初始位置

49(float,x,y,z)

   旋转角度

50(float,x,y)

   设置贴图的横竖缩放比例

51(float,x)

   设置贴图的alpha,透明度

52(int R,int G,int B)

   赋予贴图颜色为 RGB

53 (float,x,y,z)

   设置自转角速度

56 (int time ,int mode,float,x,y,z)

   time帧内 以mode方式移动到x y z位置

57 (int time ,int mode,int R,int G,int B)

   time帧内 以mode方式 改变贴图颜色

58 (int time ,int mode,int alpha)

   time帧内 以mode方式 改变贴图透明度

60 (int time ,int mode,float,x,y)

   time帧内 以mode方式 改变贴图大小比例  

61()

   设置此贴图为2d图片(不能被用在3d背景)

63()

   暂停之后的ins

64(int a)

   一种switch 根据外部条件选择一个执行
    


65(int a)

   设置贴图中心点 
   a=65536 时 以最上方的中心为中心点
   a=131072时 以最下方的中心为中心点

66

   开关 addictive blending 

67(int)

   设置贴图属性,已知
   0 2D贴图
   1 2d ?1
   2 2d ?2
   3 2d ?3
   4 3d billboard
   5 3d smallhill
   6 3d billboard
   7 3d smallhill
   8 3d 平面

68 (int a)

   设置 图层 ,0是最底层

70(float x)

   使贴图像走马灯一样运动,x为图像在x轴上运动速度,向左为正方向

71(float y)

   使贴图像走马灯一样运动,y为图像在y轴上运动速度,向上为正方向
  

75(int x)

   x后开始

76(int R,int G,int B)

   设置渐变色的RGB值

77(int alpha)

   设置渐变色的透明度

79(int time,int mode,int alpha)

   在time帧内,以mode方式改变渐变色透明度为alpha

88(int x)

   选择 Script x

101(int 10000)

   example:0 0 6 10000 x
           0 0 6 10001 y
           0 1 101 10000
   将贴图扭曲为正(x-1)边形,使用y张贴图铺满,使用49x参数设置多边形范围,z设置多边形方向,50设置大小,可配合70和71使用(具体效果自己试试就知道了)

102(float a,float b)

   创建一个大小为a*b的白色矩形

104(float a,int b)

   创建一个大小为a,角数为b的正多边形,使用ins52设置中心颜色,ins51设置中心透明度,ins76设置边沿颜色,ins77设置边沿透明度,由中心向边沿渐变

105(float a,int b)

   创建一个大小为a,角数为b的正多边形边框