数组:修订间差异

无编辑摘要
(修正)
标签移动版编辑 移动版网页编辑 可视化编辑
无编辑摘要
标签移动版编辑 移动版网页编辑 可视化编辑
 
(未显示2个用户的22个中间版本)
第6行: 第6行:
{| class="wikitable"
{| class="wikitable"
|+数组支持的类型
|+数组支持的类型
|boolean
|boolean[]
|布尔值
|布尔值
|-
|-
|float
|float[]
|浮点数(更新日志未提到)
|浮点数
|-
|-
|number
|number[]
|整数
|整数(float)
|-
|-
|unit
|unit[]
|单位
|单位
|}
|}
第28行: 第28行:
@memory是defineUnitMemory的快捷方式,通常由多行多个@memory组成。
@memory是defineUnitMemory的快捷方式,通常由多行多个@memory组成。


单个@memory的格式为: <code>@memory 名称:类型[]</code>
单个@memory的格式为: <code>@memory 名称:类型</code>
{{折叠|@memory的例子|<pre>
{{折叠|@memory的例子|<pre>
@memory dir:float[]
@memory dir:float[]
第47行: 第47行:
要引用其他单位的内存,可以使用<code>readUnitMemory</code>  
要引用其他单位的内存,可以使用<code>readUnitMemory</code>  


<code>单位引用.readUnitMemory('名称',type='类型',index='下标')</code>  
<code>单位引用.readUnitMemory('名称',type='类型',index='下标')</code>


这是它的其他写法
<code>self.customTarget1.readUnitMemory('a',type='number',index=114)</code>


=== 修改数组 ===
在[action]中,可以通过<code>setUnitMemory</code>来直接修改内存的值,格式为<code>setUnitMemory:名称[下标]=值</code> 。
当修改的下标在数组中不存在时,数组大小将会更改为修改的下标。
{{折叠|setUnitMemory例子|<pre>
# [action] 中
setUnitMemory:a[1]=1,b=memory.b[memory.a[1]]+1
</pre>}}
和内存一样,数组也可以通过<code>[core]updateUnitMemory</code>来更新。
==跨单位读数组==
readUnitMemory('名称',type='类型')['下标']
readUnitMemory('名称',type='类型')['下标']


readUnitMemory('名称',type='类型')[('数学运算下标')]
readUnitMemory('名称',type='类型')[('数学运算下标')]


readUnitMemory('名称',type='类型').get('下标'){{折叠|readUnitMemory例子|<pre>
readUnitMemory('名称',type='类型').get('下标')
self.customTarget1.readUnitMemory('a',type='number',index=114)
</pre>
}}
警告:截止1.15版,跨单位数组引用在下标中包含逻辑时。由于游戏bug,单位参考将被重定向。


{{折叠|例子|<pre>
警告:截止1.15版,跨单位读数组,由于游戏bug,单位参考将被重定向。
<pre>
代码:
代码:
customTarget1.readUnitMemory("obj",type="unit[]").get(memory.index)
customTarget1.readUnitMemory("obj",type="unit[]").get(memory.index)
第70行: 第78行:
实际运行结果:(伪代码)
实际运行结果:(伪代码)
customTarget1.memory.obj.get(customTarget1.memory.index)
customTarget1.memory.obj.get(customTarget1.memory.index)
 
customTarget1.memory.obj.get(customTarget1.hp)
customTarget1.memory.obj.get(customTarget1.hp)
customTarget1.memory.obj.get(customTarget1.memory.unit.memory.index)
</pre>
局部函数不受此影响。
如:thisActionIndex/index,eventSource,thisActionTarget。


customTarget1.memory.obj.get(customTarget1.memory.unit.memory.index)
使用消息接受数组,将返回空数组。
</pre>}}
index/thisIndex方法不受此影响。


可用的方案:
eventData("get",type="float[]")=[]


{{折叠|复制数组|<pre>
{{折叠|复制数组|<pre>
第84行: 第95行:
alsoTriggerAction:set
alsoTriggerAction:set


alsoTriggerActionRepeaty:customTarget1.readUnitMemory("obj",type="unit[]").size
alsoTriggerActionRepeat:customTarget1.readUnitMemory("obj",type="unit[]").size


alsoTriggerOrQueueActionWithTarget:customTarget1
alsoTriggerOrQueueActionWithTarget:customTarget1
第90行: 第101行:
[hiddenAction_set]
[hiddenAction_set]


setUnitMemory:buffer[index]=thisActionTarget.readUnitMemory("obj",type="unit[]").get(index)
setUnitMemory:buffer[index]=thisActionTarget.readUnitMemory("obj",type="unit[]").get(index)</pre>
</pre>}}
}}
2.修改内存单位数据


clipboard.zip已使用改方案作为内核
===重定向到自己===
 
使用局部变量重定向到自己。
下载链接:
<pre>
 
[hiddenAction_0]
[https://cra.lanzouj.com/b0agtlmih] 密码00
alsoTriggerAction:1
 
alsoTriggerOrQueueActionWithTarget:self
3.三重定向到自己的内存,需要内存单位持有自己。
[hiddenAction_1]
debugMessage:customTarget1.readUnitMemory("arr",type="float[]").get(thisActionTarget.readUnitMemory("index",type="float"))
</pre>


在[action]中,可以通过<code>setUnitMemory</code>来直接修改内存的值,格式为<code>setUnitMemory:名称[下标]=值</code> 。
===修改值===
 
使用发信等方式修改目标的值,通过被重定向目标进行访问(这里不提供代码实现)
当修改的下标在数组中不存在时,数组大小将会更改为修改的下标。
{{折叠|setUnitMemory例子|<pre>
# [action] 中
setUnitMemory:a[1]=1,b=memory.b[memory.a[1]]+1
</pre>}}
和内存一样,数组也可以通过<code>[core]updateUnitMemory</code>来更新。


== 专用用法 ==
== 专用用法 ==
292

个编辑