本文旨在详细解释如何在传奇Blue引擎中使用INI文件进行NPC操作。以下脚本展示了如何通过INI文件自定义全服排行榜,并提供了相应的命令示例。

INI文件内容示例:

[鲜花] ;全服自定义排行榜.ini=文件;[鲜花]=节 ;bluem2 =键 ;100=值

bluem2=100

网易=100

百度=100

Copy

命令说明:

INI_RELOAD <文件路径>:重新加载INI文件,用于手动修改后更新 changes.

INI_SORT_READ_SECTION_VALUES <文件路径> <节名> <起始行> <行数> <键名>:读取INI文件中指定节的排序值。

INI_SORT_SECTION_VALUES_COUNT <键名> <变量名>:获取排序值的数量。

INI_SORT_GET_SECTION_STRING <文件路径> <节名> <起始行> <行数> <键名>:获取排序好的字符串。

INI_SORT_GET_IDENT_VALUE_STRING <文件路径> <节名> <键名> <起始行> <行数>:获取排序好的IDENT和VALUE字符串。

INI_SORT_GET_IDENT_STRING <文件路径> <节名> <键名> <起始行> <行数>:获取IDENT字符串。

INI_SORT_GET_VALUE_INTEGER <文件路径> <节名> <键名> <起始行> <行数>:获取VALUE的整数值。

INI_CLEAR_SECTION <文件路径> <节名>:清除INI文件中的指定节。

脚本示例解析:

[@main]:主脚本入口。

[@Get] 和 [@GetEx]:获取排行榜信息的子脚本,分别用于获取普通角色和英雄的排名。

[@GetIdentValueLoop] 和 [@GetIdentValueLoopEx]:循环获取排名信息的逻辑。

[@INI_CLEAR_SECTION]:清理排行榜数据的子脚本。

使用方法:

打开传奇Blue引擎的INI文件编辑器。

创建或编辑 全服自定义排行榜.ini 文件,设置好相应的键值对。

使用脚本中的命令进行读取、排序和展示排行榜信息。

注意事项:

确保INI文件的路径和节名正确无误。

修改INI文件后,使用 INI_RELOAD 命令更新 changes。

脚本中的变量和函数调用需与你的游戏版本兼容。

新INI功能示范脚本

高效率的Ini文件NPC操作命令说明:

全服自定义排行榜.ini

INI内容

[鲜花] ;全服自定义排行榜.ini=文件;[鲜花]=节 ;bluem2 =键 ;100=值

bluem2=100

网易=100

百度=100

如果手动修改ini内容后,请使用命令,INI_RELOAD 文件 //重新加载文件,可以用于手动修改了文本文件的情况下。

示例脚本:以下脚本只是演示,请GM自行完善

注:脚本使用的是S1-S20 M1-M20的个人变量,如果你的版本里有,请自行修改。

[@main]

<排序鲜花的排名(名字+数值)/@Get> <排序鲜花的排名(名字)/@GetEx>\\

<检查鲜花的排名(名字)/@Get1>\\

<清理鲜花数据/@INI_CLEAR_SECTION>\\

<关闭/@exit >

[@Get1]

#IF

EQUAL S1 <$USERNAME>

#ACT

MessageBox 目前你排名一号。

BREAK

#IF

EQUAL S2 <$USERNAME>

#ACT

MessageBox 目前你排名第二。

BREAK

#IF

EQUAL S3 <$USERNAME>

#ACT

MessageBox 目前你排名第三。

BREAK

#IF

EQUAL S4 <$USERNAME>

#ACT

MessageBox 目前你排名第四。

BREAK

#IF

EQUAL S5 <$USERNAME>

#ACT

MessageBox 目前你排名第五。

BREAK

#IF

EQUAL S6 <$USERNAME>

#ACT

MessageBox 目前你排名第六。

BREAK

#IF

EQUAL S7 <$USERNAME>

#ACT

MessageBox 目前你排名第七。

BREAK

#IF

EQUAL S8 <$USERNAME>

#ACT

MessageBox 目前你排名第八。

BREAK

#IF

EQUAL S9 <$USERNAME>

#ACT

MessageBox 目前你排名第九。

BREAK

#IF

EQUAL S10 <$USERNAME>

#ACT

MessageBox 目前你排名第十。

BREAK

#ELSEACT

MessageBox 榜上无名,请再接再厉。

BREAK

[@INI_CLEAR_SECTION]

#IF

CHECKLEVELEX > 0

#ACT

INI_CLEAR_SECTION ..\QuestDiary\功能脚本\全服自定义排行榜.ini 鲜花

INI_SAVE ..\QuestDiary\功能脚本\全服自定义排行榜.ini

INI_SORT_DELETE INI_排名__鲜花_IV

SENDMSG 5 清楚鲜花数据成功。

[@Get]

#IF

CHECKLEVELEX > 0

#ACT

INI_SORT_READ_SECTION_VALUES ..\QuestDiary\功能脚本\全服自定义排行榜.ini 鲜花 1 1 1 INI_排名__鲜花_IV 0

INI_SORT_SECTION_VALUES_COUNT INI_排名__鲜花_IV D0

;SENDMSG 5 获取到排行数据:<$STR(D0)>条

#IF

LARGE D0 1

#ACT

INI_SORT_GET_SECTION_STRING INI_排名__鲜花_IV S0

;;P0用于限制可以的排名次数

MOV P0 1

;;S92用于累计排名,#ELSESAY的显示调用

MOV S92

SENDMSG 5 正在计算排名,请稍后。。。

DELAYGOTO 1 @GetIdentValueLoop

#ELSEACT

MessageBox 目前没有数据。

BREAK

;按顺序获取排行字符串(IDENT_VALUE)到S1~S20

[@GetIdentValueLoop]

#IF

LARGE D0 1

SMALL P0 10

#ACT

MOV S90 S

INC S90 <$STR(P0)>

INC S92 <COLOR=clYellow>

INC S92

INC S92 <$STR(P0)>、

INC S92 <COLOR=$F7FFFF>

INI_SORT_GET_IDENT_VALUE_STRING INI_排名__鲜花_IV <$STR(P0)> <$STR(S90)>

MOV S91 <$STR(S

INC S91 <$STR(P0)>

INC S91 )>

INC S92 <$STR(S91)>

INC S92 \

;SENDMSG 5 排名<$STR(P0)>:<$STR(S91)>

DEC D0 1

INC P0 1

DELAYGOTO 1 @GetIdentValueLoop

#SAY

<$STR(S0)>的当前排名是:\

<$STR(S92)>\

<关闭/@exit>

#ACT

BREAK

#IF

LARGE D0 1

LARGE P0 9

SMALL P0 21

#ACT

MOV S90 S

INC S90 <$STR(P0)>

INC S92 <COLOR=clYellow>

INC S92 <$STR(P0)>、

INC S92 <COLOR=$F7FFFF>

INI_SORT_GET_IDENT_VALUE_STRING INI_排名__鲜花_IV <$STR(P0)> <$STR(S90)>

MOV S91 <$STR(S

INC S91 <$STR(P0)>

INC S91 )>

INC S92 <$STR(S91)>

INC S92 \

;SENDMSG 5 排名<$STR(P0)>:<$STR(S91)>

DEC D0 1

INC P0 1

DELAYGOTO 1 @GetIdentValueLoop

#SAY

<$STR(S0)>的当前排名是:\

<$STR(S92)>\

<关闭/@exit>

#ELSESAY

<$STR(S0)>的当前排名是:\

<$STR(S92)>\

<关闭/@exit>

#ELSEACT

SENDMSG 5 鲜花排名完毕。

BREAK

[@GetEx]

#IF

CHECKLEVELEX > 0

#ACT

INI_RELOAD ..\QuestDiary\功能脚本\全服自定义排行榜.ini

INI_SORT_READ_SECTION_VALUES ..\QuestDiary\功能脚本\全服自定义排行榜.ini 鲜花 1 1 1 INI_排名__鲜花_IVEX 0

INI_SORT_SECTION_VALUES_COUNT INI_排名__鲜花_IVEX D0

;SENDMSG 5 获取鲜花排行数据:<$STR(D0)>条

#IF

LARGE D0 1

#ACT

INI_SORT_GET_SECTION_STRING INI_排名__鲜花_IVEX S0

;;P0用于限制可以的排名次数

MOV P0 1

;;S92用于累计排名,#ELSESAY的显示调用

MOV S92

SENDMSG 5 正在计算排名,请稍后。。。

DELAYGOTO 1 @GetIdentValueLoopEx

BREAK

#ELSEACT

MessageBox 目前没有数据。

BREAK

;按顺序获取排行,分别获取IDENT和VALUE到S1~S20

[@GetIdentValueLoopEx]

#IF

LARGE D0 1

SMALL P0 10

#ACT

MOV S90 S

INC S90 <$STR(P0)>

MOV S95 M

INC S95 <$STR(P0)>

INC S92 <COLOR=clYellow>

INC S92

INC S92 <$STR(P0)>、

INC S92 <COLOR=$F7FFFF>

INI_SORT_GET_IDENT_STRING INI_排名__鲜花_IVEX <$STR(P0)> <$STR(S90)>

INI_SORT_GET_VALUE_INTEGER INI_排名__鲜花_IVEX <$STR(P0)> <$STR(S95)>

MOV S91 <$STR(S

INC S91 <$STR(P0)>

INC S91 )>

MOV S93 <$STR(M

INC S93 <$STR(P0)>

INC S93 )>

INC S92 <$STR(S91)>

INC S92 ” ”

INC S92 ” 鲜花数:”

INC S92 <$STR(S93)>

INC S92 ” ”

INC S92 \

;;SENDMSG 5 排名<$STR(P0)>:<$STR(S91)>

DEC D0 1

INC P0 1

DELAYGOTO 1 @GetIdentValueLoopEx

#SAY

<$STR(S0)>的当前排名是:\

<$STR(S92)>\

<关闭/@exit>

#ACT

BREAK

#IF

LARGE D0 1

LARGE P0 9

SMALL P0 23

#ACT

MOV S90 S

INC S90 <$STR(P0)>

MOV S95 M

INC S95 <$STR(P0)>

INC S92 <COLOR=clYellow>

INC S92 <$STR(P0)>、

INC S92 <COLOR=$F7FFFF>

INI_SORT_GET_IDENT_STRING INI_排名__鲜花_IVEX <$STR(P0)> <$STR(S90)>

INI_SORT_GET_VALUE_INTEGER INI_排名__鲜花_IVEX <$STR(P0)> <$STR(S95)>

MOV S91 <$STR(S

INC S91 <$STR(P0)>

INC S91 )>

MOV S93 <$STR(M

INC S93 <$STR(P0)>

INC S93 )>

INC S92 <$STR(S91)>

INC S92 ” ”

INC S92 ” 鲜花数:”

INC S92 <$STR(S93)>

INC S92 ” ”

INC S92 \

;;SENDMSG 5 排名<$STR(P0)>:<$STR(S91)>

DEC D0 1

INC P0 1

DELAYGOTO 1 @GetIdentValueLoopEx

#SAY

<$STR(S0)>的当前排名是:\

<$STR(S92)>\

<关闭/@exit>

#ELSESAY

<$STR(S0)>的当前排名是:\

<$STR(S92)>\

<关闭/@exit>

#ELSEACT

SENDMSG 5 鲜花排名完毕。

BREAK

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。