本文旨在详细解释如何在传奇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-S20M1-M20的个人变量,如果你的版本里有,请自行修改。
[@main]
<排序鲜花的排名(名字+数值)/@Get><排序鲜花的排名(名字)/@GetEx>\\
<检查鲜花的排名(名字)/@Get1>\\
<清理鲜花数据/@INI_CLEAR_SECTION>\\
<关闭/@exit>
[@Get1]
#IF
EQUALS1<$USERNAME>
#ACT
MessageBox目前你排名一号。
BREAK
#IF
EQUALS2<$USERNAME>
#ACT
MessageBox目前你排名第二。
BREAK
#IF
EQUALS3<$USERNAME>
#ACT
MessageBox目前你排名第三。
BREAK
#IF
EQUALS4<$USERNAME>
#ACT
MessageBox目前你排名第四。
BREAK
#IF
EQUALS5<$USERNAME>
#ACT
MessageBox目前你排名第五。
BREAK
#IF
EQUALS6<$USERNAME>
#ACT
MessageBox目前你排名第六。
BREAK
#IF
EQUALS7<$USERNAME>
#ACT
MessageBox目前你排名第七。
BREAK
#IF
EQUALS8<$USERNAME>
#ACT
MessageBox目前你排名第八。
BREAK
#IF
EQUALS9<$USERNAME>
#ACT
MessageBox目前你排名第九。
BREAK
#IF
EQUALS10<$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_DELETEINI_排名__鲜花_IV
SENDMSG5清楚鲜花数据成功。
[@Get]
#IF
CHECKLEVELEX>0
#ACT
INI_SORT_READ_SECTION_VALUES..\QuestDiary\功能脚本\全服自定义排行榜.ini鲜花111INI_排名__鲜花_IV0
INI_SORT_SECTION_VALUES_COUNTINI_排名__鲜花_IVD0
;SENDMSG5获取到排行数据:<$STR(D0)>条
#IF
LARGED01
#ACT
INI_SORT_GET_SECTION_STRINGINI_排名__鲜花_IVS0
;;P0用于限制可以的排名次数
MOVP01
;;S92用于累计排名,#ELSESAY的显示调用
MOVS92
SENDMSG5正在计算排名,请稍后。。。
DELAYGOTO1@GetIdentValueLoop
#ELSEACT
MessageBox目前没有数据。
BREAK
;按顺序获取排行字符串(IDENT_VALUE)到S1~S20
[@GetIdentValueLoop]
#IF
LARGED01
SMALLP010
#ACT
MOVS90S
INCS90<$STR(P0)>
INCS92<COLOR=clYellow>
INCS92
INCS92<$STR(P0)>、
INCS92<COLOR=$F7FFFF>
INI_SORT_GET_IDENT_VALUE_STRINGINI_排名__鲜花_IV<$STR(P0)><$STR(S90)>
MOVS91<$STR(S
INCS91<$STR(P0)>
INCS91)>
INCS92<$STR(S91)>
INCS92\
;SENDMSG5排名<$STR(P0)>:<$STR(S91)>
DECD01
INCP01
DELAYGOTO1@GetIdentValueLoop
#SAY
<$STR(S0)>的当前排名是:\
<$STR(S92)>\
<关闭/@exit>
#ACT
BREAK
#IF
LARGED01
LARGEP09
SMALLP021
#ACT
MOVS90S
INCS90<$STR(P0)>
INCS92<COLOR=clYellow>
INCS92<$STR(P0)>、
INCS92<COLOR=$F7FFFF>
INI_SORT_GET_IDENT_VALUE_STRINGINI_排名__鲜花_IV<$STR(P0)><$STR(S90)>
MOVS91<$STR(S
INCS91<$STR(P0)>
INCS91)>
INCS92<$STR(S91)>
INCS92\
;SENDMSG5排名<$STR(P0)>:<$STR(S91)>
DECD01
INCP01
DELAYGOTO1@GetIdentValueLoop
#SAY
<$STR(S0)>的当前排名是:\
<$STR(S92)>\
<关闭/@exit>
#ELSESAY
<$STR(S0)>的当前排名是:\
<$STR(S92)>\
<关闭/@exit>
#ELSEACT
SENDMSG5鲜花排名完毕。
BREAK
[@GetEx]
#IF
CHECKLEVELEX>0
#ACT
INI_RELOAD..\QuestDiary\功能脚本\全服自定义排行榜.ini
INI_SORT_READ_SECTION_VALUES..\QuestDiary\功能脚本\全服自定义排行榜.ini鲜花111INI_排名__鲜花_IVEX0
INI_SORT_SECTION_VALUES_COUNTINI_排名__鲜花_IVEXD0
;SENDMSG5获取鲜花排行数据:<$STR(D0)>条
#IF
LARGED01
#ACT
INI_SORT_GET_SECTION_STRINGINI_排名__鲜花_IVEXS0
;;P0用于限制可以的排名次数
MOVP01
;;S92用于累计排名,#ELSESAY的显示调用
MOVS92
SENDMSG5正在计算排名,请稍后。。。
DELAYGOTO1@GetIdentValueLoopEx
BREAK
#ELSEACT
MessageBox目前没有数据。
BREAK
;按顺序获取排行,分别获取IDENT和VALUE到S1~S20
[@GetIdentValueLoopEx]
#IF
LARGED01
SMALLP010
#ACT
MOVS90S
INCS90<$STR(P0)>
MOVS95M
INCS95<$STR(P0)>
INCS92<COLOR=clYellow>
INCS92
INCS92<$STR(P0)>、
INCS92<COLOR=$F7FFFF>
INI_SORT_GET_IDENT_STRINGINI_排名__鲜花_IVEX<$STR(P0)><$STR(S90)>
INI_SORT_GET_VALUE_INTEGERINI_排名__鲜花_IVEX<$STR(P0)><$STR(S95)>
MOVS91<$STR(S
INCS91<$STR(P0)>
INCS91)>
MOVS93<$STR(M
INCS93<$STR(P0)>
INCS93)>
INCS92<$STR(S91)>
INCS92""
INCS92"鲜花数:"
INCS92<$STR(S93)>
INCS92""
INCS92\
;;SENDMSG5排名<$STR(P0)>:<$STR(S91)>
DECD01
INCP01
DELAYGOTO1@GetIdentValueLoopEx
#SAY
<$STR(S0)>的当前排名是:\
<$STR(S92)>\
<关闭/@exit>
#ACT
BREAK
#IF
LARGED01
LARGEP09
SMALLP023
#ACT
MOVS90S
INCS90<$STR(P0)>
MOVS95M
INCS95<$STR(P0)>
INCS92<COLOR=clYellow>
INCS92<$STR(P0)>、
INCS92<COLOR=$F7FFFF>
INI_SORT_GET_IDENT_STRINGINI_排名__鲜花_IVEX<$STR(P0)><$STR(S90)>
INI_SORT_GET_VALUE_INTEGERINI_排名__鲜花_IVEX<$STR(P0)><$STR(S95)>
MOVS91<$STR(S
INCS91<$STR(P0)>
INCS91)>
MOVS93<$STR(M
INCS93<$STR(P0)>
INCS93)>
INCS92<$STR(S91)>
INCS92""
INCS92"鲜花数:"
INCS92<$STR(S93)>
INCS92""
INCS92\
;;SENDMSG5排名<$STR(P0)>:<$STR(S91)>
DECD01
INCP01
DELAYGOTO1@GetIdentValueLoopEx
#SAY
<$STR(S0)>的当前排名是:\
<$STR(S92)>\
<关闭/@exit>
#ELSESAY
<$STR(S0)>的当前排名是:\
<$STR(S92)>\
<关闭/@exit>
#ELSEACT
SENDMSG5鲜花排名完毕。
BREAK
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-S20M1-M20的个人变量,如果你的版本里有,请自行修改。
[@main]
<排序鲜花的排名(名字+数值)/@Get><排序鲜花的排名(名字)/@GetEx>\\
<检查鲜花的排名(名字)/@Get1>\\
<清理鲜花数据/@INI_CLEAR_SECTION>\\
<关闭/@exit>
[@Get1]
#IF
EQUALS1<$USERNAME>
#ACT
MessageBox目前你排名一号。
BREAK
#IF
EQUALS2<$USERNAME>
#ACT
MessageBox目前你排名第二。
BREAK
#IF
EQUALS3<$USERNAME>
#ACT
MessageBox目前你排名第三。
BREAK
#IF
EQUALS4<$USERNAME>
#ACT
MessageBox目前你排名第四。
BREAK
#IF
EQUALS5<$USERNAME>
#ACT
MessageBox目前你排名第五。
BREAK
#IF
EQUALS6<$USERNAME>
#ACT
MessageBox目前你排名第六。
BREAK
#IF
EQUALS7<$USERNAME>
#ACT
MessageBox目前你排名第七。
BREAK
#IF
EQUALS8<$USERNAME>
#ACT
MessageBox目前你排名第八。
BREAK
#IF
EQUALS9<$USERNAME>
#ACT
MessageBox目前你排名第九。
BREAK
#IF
EQUALS10<$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_DELETEINI_排名__鲜花_IV
SENDMSG5清楚鲜花数据成功。
[@Get]
#IF
CHECKLEVELEX>0
#ACT
INI_SORT_READ_SECTION_VALUES..\QuestDiary\功能脚本\全服自定义排行榜.ini鲜花111INI_排名__鲜花_IV0
INI_SORT_SECTION_VALUES_COUNTINI_排名__鲜花_IVD0
;SENDMSG5获取到排行数据:<$STR(D0)>条
#IF
LARGED01
#ACT
INI_SORT_GET_SECTION_STRINGINI_排名__鲜花_IVS0
;;P0用于限制可以的排名次数
MOVP01
;;S92用于累计排名,#ELSESAY的显示调用
MOVS92
SENDMSG5正在计算排名,请稍后。。。
DELAYGOTO1@GetIdentValueLoop
#ELSEACT
MessageBox目前没有数据。
BREAK
;按顺序获取排行字符串(IDENT_VALUE)到S1~S20
[@GetIdentValueLoop]
#IF
LARGED01
SMALLP010
#ACT
MOVS90S
INCS90<$STR(P0)>
INCS92<COLOR=clYellow>
INCS92
INCS92<$STR(P0)>、
INCS92<COLOR=$F7FFFF>
INI_SORT_GET_IDENT_VALUE_STRINGINI_排名__鲜花_IV<$STR(P0)><$STR(S90)>
MOVS91<$STR(S
INCS91<$STR(P0)>
INCS91)>
INCS92<$STR(S91)>
INCS92\
;SENDMSG5排名<$STR(P0)>:<$STR(S91)>
DECD01
INCP01
DELAYGOTO1@GetIdentValueLoop
#SAY
<$STR(S0)>的当前排名是:\
<$STR(S92)>\
<关闭/@exit>
#ACT
BREAK
#IF
LARGED01
LARGEP09
SMALLP021
#ACT
MOVS90S
INCS90<$STR(P0)>
INCS92<COLOR=clYellow>
INCS92<$STR(P0)>、
INCS92<COLOR=$F7FFFF>
INI_SORT_GET_IDENT_VALUE_STRINGINI_排名__鲜花_IV<$STR(P0)><$STR(S90)>
MOVS91<$STR(S
INCS91<$STR(P0)>
INCS91)>
INCS92<$STR(S91)>
INCS92\
;SENDMSG5排名<$STR(P0)>:<$STR(S91)>
DECD01
INCP01
DELAYGOTO1@GetIdentValueLoop
#SAY
<$STR(S0)>的当前排名是:\
<$STR(S92)>\
<关闭/@exit>
#ELSESAY
<$STR(S0)>的当前排名是:\
<$STR(S92)>\
<关闭/@exit>
#ELSEACT
SENDMSG5鲜花排名完毕。
BREAK
[@GetEx]
#IF
CHECKLEVELEX>0
#ACT
INI_RELOAD..\QuestDiary\功能脚本\全服自定义排行榜.ini
INI_SORT_READ_SECTION_VALUES..\QuestDiary\功能脚本\全服自定义排行榜.ini鲜花111INI_排名__鲜花_IVEX0
INI_SORT_SECTION_VALUES_COUNTINI_排名__鲜花_IVEXD0
;SENDMSG5获取鲜花排行数据:<$STR(D0)>条
#IF
LARGED01
#ACT
INI_SORT_GET_SECTION_STRINGINI_排名__鲜花_IVEXS0
;;P0用于限制可以的排名次数
MOVP01
;;S92用于累计排名,#ELSESAY的显示调用
MOVS92
SENDMSG5正在计算排名,请稍后。。。
DELAYGOTO1@GetIdentValueLoopEx
BREAK
#ELSEACT
MessageBox目前没有数据。
BREAK
;按顺序获取排行,分别获取IDENT和VALUE到S1~S20
[@GetIdentValueLoopEx]
#IF
LARGED01
SMALLP010
#ACT
MOVS90S
INCS90<$STR(P0)>
MOVS95M
INCS95<$STR(P0)>
INCS92<COLOR=clYellow>
INCS92
INCS92<$STR(P0)>、
INCS92<COLOR=$F7FFFF>
INI_SORT_GET_IDENT_STRINGINI_排名__鲜花_IVEX<$STR(P0)><$STR(S90)>
INI_SORT_GET_VALUE_INTEGERINI_排名__鲜花_IVEX<$STR(P0)><$STR(S95)>
MOVS91<$STR(S
INCS91<$STR(P0)>
INCS91)>
MOVS93<$STR(M
INCS93<$STR(P0)>
INCS93)>
INCS92<$STR(S91)>
INCS92""
INCS92"鲜花数:"
INCS92<$STR(S93)>
INCS92""
INCS92\
;;SENDMSG5排名<$STR(P0)>:<$STR(S91)>
DECD01
INCP01
DELAYGOTO1@GetIdentValueLoopEx
#SAY
<$STR(S0)>的当前排名是:\
<$STR(S92)>\
<关闭/@exit>
#ACT
BREAK
#IF
LARGED01
LARGEP09
SMALLP023
#ACT
MOVS90S
INCS90<$STR(P0)>
MOVS95M
INCS95<$STR(P0)>
INCS92<COLOR=clYellow>
INCS92<$STR(P0)>、
INCS92<COLOR=$F7FFFF>
INI_SORT_GET_IDENT_STRINGINI_排名__鲜花_IVEX<$STR(P0)><$STR(S90)>
INI_SORT_GET_VALUE_INTEGERINI_排名__鲜花_IVEX<$STR(P0)><$STR(S95)>
MOVS91<$STR(S
INCS91<$STR(P0)>
INCS91)>
MOVS93<$STR(M
INCS93<$STR(P0)>
INCS93)>
INCS92<$STR(S91)>
INCS92""
INCS92"鲜花数:"
INCS92<$STR(S93)>
INCS92""
INCS92\
;;SENDMSG5排名<$STR(P0)>:<$STR(S91)>
DECD01
INCP01
DELAYGOTO1@GetIdentValueLoopEx
#SAY
<$STR(S0)>的当前排名是:\
<$STR(S92)>\
<关闭/@exit>
#ELSESAY
<$STR(S0)>的当前排名是:\
<$STR(S92)>\
<关闭/@exit>
#ELSEACT
SENDMSG5鲜花排名完毕。
BREAK

