Vv引擎官方论坛

搜索
查看: 393|回复: 0

[已完成] 列表数组 or 元素变量

[复制链接]
  • TA的每日心情
    擦汗
    5 小时前
  • 签到天数: 369 天

    [LV.9]以坛为家II

    56

    主题

    406

    帖子

    6617

    积分

    论坛元老

    Rank: 8Rank: 8

    积分
    6617
    发表于 2023-6-2 12:06:07 | 显示全部楼层 |阅读模式
    功能
    引擎版本号: 2023.6.2
    名称: 列表数组 or 元素变量
    原因: 方便存储多个同类数据
    方便增加背包物品数据获取
    功能详细说明: 多元数组 or 元素变量
    联系方式: 393960725
    功能说明: 列表数组 or 元素变量


    ;-----------------------------------------【赋值元素变量】
    ;-----------------------------------------给元素变量赋值(非子元素),值两边必须加 [],不然报错。
    MOV L$测试 [11,22,33,44,55,66,77,aa]
    sendmsg 7 输出结果:<$str(L$测试)>
    ;输出结果:[11,22,33,44,55,66,77,aa]
    ;-----------------------------------------【取各字元素(大于等于0从第一个往后取;小于0从最后一个往前取】
    sendmsg 7 输出结果:<$str(L$测试[0])>,<$str(L$测试[1])>,<$str(L$测试[2])>,,,,,<$str(L$测试[-2])>,<$str(L$测试[-1])>,
    ;输出结果:11,22,33,,,,,77,aa,

    ;-----------------------------------------【修改子元素】
    MOV L$测试[0] 00
    sendmsg 7 输出结果:<$str(L$测试)>
    ;输出结果:[00,22,33,44,55,66,77,aa]

    ;-----------------------------------------【增加子元素】
    INC L$测试 bb
    sendmsg 7 输出结果:<$str(L$测试)>
    ;输出结果:[00,22,33,44,55,66,77,aa,bb]

    ;-----------------------------------------【删除子元素】
    Dec L$测试 22
    sendmsg 7 输出结果:<$str(L$测试)>
    ;输出结果:[00,33,44,55,66,77,aa,bb]

    ;-----------------------------------------【修改子元素】
    Mov L$测试2 [aa,bb,cc]
    Mov L$测试[0] <$str(L$测试2)>
    sendmsg 7 输出结果:<$str(L$测试)>
    ;输出结果:[aa,bb,cc],33,44,55,66,77,aa,bb]

    ;-----------------------------------------【获取子元素的位置】
    GetListVarIndex L$测试 aa N1
    sendmsg 7 [L$测试]中"aa"位于第<$STR(N1)>个子元素

    ;-----------------------------------------【获取子元素数量】
    GetListVarCount L$测试 N1
    sendmsg 7 [L$测试]中有<$STR(N1)>个子元素

    ;-----------------------------------------【检查子元素是否存在】
    #if
    CheckVarInList L$测试 bb
    #act
    sendmsg 7 [L$测试]中存在"bb"
    #elseact
    sendmsg 7 [L$测试]中不存在"bb"




    ;-----------------------------------------【元素支持变量下标(示例)】
    Mov N1 1
    MOV L$测试[<$Str(N1)>] 23
    sendmsg 7 输出结果:<$str(L$测试[<$Str(N1)>])>





    ;示例2
    [@main]
    <1.赋值/@mov测试> <2.inc测试/@inc测试> <3.dec测试/@dec测试>\



    [@mov测试]
    #act
    MOV L$测试 [1,2,3,4,5,a]
    sendmsg 7 首次赋值(L$测试)的值为:<$STR(L$测试)>
    sendmsg 6 ----------------------------------

    MOV L$测试[0] b
    sendmsg 7 修改后(L$测试)的值为:<$STR(L$测试)>
    sendmsg 7 当前(L$测试[0])的值为:<$STR(L$测试[0])>
    sendmsg 6 ----------------------------------

    MOV N$id 0
    MOV L$测试[<$STR(N$ID)>] c
    sendmsg 7 当前(L$测试[<$STR(N$ID)>])的值为:<$STR(L$测试[<$STR(N$ID)>])>
    sendmsg 6 ----------------------------------



    [@inc测试]
    #act
    inc L$测试 尾部增加元素
    inc L$测试[0] 第1个元素增加内容

    MOV N$id 1
    INC L$测试[<$str(N$id)>] 第2个元素增加内容
    sendmsg 7 当前(L$测试)的完整内容:<$STR(L$测试)>
    sendmsg 7 当前(L$测试[0])的内容:<$STR(L$测试[0])>
    sendmsg 7 当前(L$测试[<$STR(N$id)>])的内容:<$STR(L$测试[<$STR(N$id)>])>
    sendmsg 6 ----------------------------------

    [@dec测试]
    #act
    dec L$测试 尾部增加元素
    dec L$测试[0] 第1个元素增加内容
    sendmsg 7 当前(L$测试)的完整内容:<$STR(L$测试)>
    sendmsg 7 当前(L$测试[0])的内容:<$STR(L$测试[0])>
    sendmsg 6 ----------------------------------




    注意:指定参数必须是变量名的暂不支持变量嵌套
    mov N$当前行数 5
    MOV L$变<$str(N$当前行数)>量 [赋值内容,赋值内容2]


    ;以下方法暂不支持,必要时再更新
    ;MOV N$id 1
    ;dec L$测试[<$str(N$id)>] 第2个元素增加内容
    ;sendmsg 7 当前(L$测试[<$STR(N$id)>])的内容:<$STR(L$测试[<$STR(N$id)>])>


    [@清空]
    #act
    MOV L$测试 [11,22,33,44,55,66,77,aa]
    sendmsg 7 输出结果:<$str(L$测试)>
    Mov L$测试 []
    sendmsg 7 输出结果:<$str(L$测试)>

    OR

    MOV L$测试 [1,2,3] ;----赋值123
    MOV L$测试 ;------清空
    sendmsg 6 <$str(L$测试)> ;----结果毛都没有 变量都不显示 什么都没







    注意:
    [@main]
    #if
    #act
    MOV L$测试 [1,2,3]
    goto @内容(<$Str(L$测试变量)>)
    [@内容]
    #if
    #act
    SENDMSG 6 <$scriptparam1>---显示为[1,2,3]



    ;-----------------------------------------------------------------相关操作命令--------------------------------
    ;======================================================
    检所有子元素均是数字:
    CheckListAllDigit 元素变量

    #IF
    #ACT
    MOV L$测试 [11,22,33,44,55,ff]

    #IF
    CheckListAllDigit L$测试
    #ACT
    sendmsg 6 <$STR(L$测试)>中的各子元素全是数字
    #ELSEACT
    sendmsg 6 <$STR(L$测试)>中有子元素不是数字

    ;======================================================
    获取元素中的最大数字值:
    GetListMaxVar 元素变量名 保存变量

    获取元素中的最小数字值:
    GetListMinVar 元素变量名 保存变量

    #IF
    #ACT
    MOV L$测试 [11,22,33,44,55,66,77,88]
    #IF
    CheckListAllDigit L$测试
    #ACT
    GetListMaxVar L$测试 S100
    GetListMinVar L$测试 S101
    sendmsg 7 输出结果:<$str(L$测试)>中的最大值为<$str(S100)>,最小值为<$str(S101)>
    #ELSEACT
    sendmsg 7 <$str(L$测试)>内有非法数值,取值失败
    ;输出结果:[11,22,33,44,55,66,77,88]中的最大值为88,最小值为11
    ****************** 以上2个命令必须要求元素中的所有子元素必须是数字,否则得到的结果是error

    ;======================================================
    元素翻转(反序):
    ReverseList 元素变量名 保存元素变量
    #IF
    #ACT
    MOV L$测试 [11,22,33,44,55,66,77,aa]
    ReverseList L$测试 L$测试
    sendmsg 7 输出结果:<$str(L$测试)>
    ;输出结果:[aa,77,66,55,44,33,22,11]

    ;======================================================
    元素排序:
    SortList 待排序元素变量 保存结果元素变量 排序方式(空或0:升序-从低到高;1:降序-从高到低) 排序依据(0或空:根据数值排序;1:根据文本排序)
    ***** 当排序依据为数值时,元素中的所有子元素必须全是数字,否则会得到[error]

    MOV L$测试 [11,33,22,44,55,66,77]
    SortList L$测试 L$测试2 0 0
    sendmsg 7 按数字升序排序输出结果:<$str(L$测试2)>
    ;按数字升序排序输出结果:[11,22,33,44,55,66,77]

    MOV L$测试 [11,33,22,44,55,66,77,aa]
    SortList L$测试 L$测试2 1 0
    sendmsg 7 按数字降序排序输出结果:<$str(L$测试2)>
    ;按数字降序排序输出结果:[error]

    MOV L$测试 [aa,cc,dd,bb,ee,ff]
    SortList L$测试 L$测试2 0 1
    sendmsg 7 按文本升序排序输出结果:<$str(L$测试2)>
    ;按文本升序排序输出结果:[aa,bb,cc,dd,ee,ff]

    MOV L$测试 [aa,cc,dd,bb,ee,ff]
    SortList L$测试 L$测试2 1 1
    sendmsg 7 按文本降序排序输出结果:<$str(L$测试2)>
    ;按文本降序排序输出结果:[ff,ee,dd,cc,bb,aa]

    ;======================================================

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表