当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇GOM引擎行会竞标与收人脚本详解:打造专属行会招募系统

来源: 作者: 热度:
在传奇GOM引擎中,行会竞标与收人系统是管理行会成员的重要机制。本文将详细介绍如何使用脚本来自定义行会竞标和收人流程,帮助行会掌门更好地管理行会。

行会竞标与收人脚本配置
基本脚本结构:

使用 #IF 和 #ACT 语句来设置条件和执行动作。
通过 MOV 语句来更新行会状态和竞标价格。
使用 GuildNoticeMsg 来发送行会通知。
行会竞标:

行会竞标分为三个位置,每个位置都可以由不同的行会竞得。
竞标价格每次增加固定数额,竞标成功后,行会名称和竞标价格会更新。
行会收人:

行会收人状态可以是允许或拒绝。
收人状态和等级要求可以通过脚本设置和修改。
脚本示例:

[@main]
#IF equal A304 允许收人
#ACT MOV S$收人状态1 <允许加入/SCOLOR=250>
#IF equal A304 拒绝收人
#ACT MOV S$收人状态1 <拒绝加入/SCOLOR=249>
Copy
客户端与服务器配置
客户端配置:

client.ini 文件用于设置客户端显示选项,如NPC名字是否为粗体。
增加音量调节功能和中文状态切换。
服务器配置:

服务器端需要设置相应的数据文件和脚本文件。
使用 loginserver 配置文件来设置服务器列表和链接。
自定义扩展
自定义素材与颜色:

通过 CustomItemNameColors.txt 和 CustomMonNameColors.txt 文件来自定义物品和怪物的名字颜色。
使用 data\\~cui.txt 文件来定义自定义素材列表。
自定义光柱:

通过 data\\~gz.wzl 文件来自定义光柱效果。
脚本逻辑与功能
竞标逻辑:

玩家可以通过点击界面上的按钮来参与竞标。
竞标成功后,行会掌门可以设置收人状态和等级要求。
收人逻辑:

玩家可以通过点击界面上的按钮来申请加入行会。
行会掌门可以允许或拒绝玩家的加入申请。
脚本示例:

[@竞标1]
#IF CheckGameGold > 9
#ACT ...
#ELSEACT messagebox 你的元宝不足10个.无法使用此功能

完整脚本:

[@main]
#IF
#ACT
MOV S$一号行会竞标 <我要加入该行会/@加入1>
MOV S$第二行会竞标 <加入行会/@加入2>
MOV S$第三行会竞标 <加入行会/@加入3>
MOV S$等级要求1 <$STR(G304)>
MOV S$等级要求2 <$STR(G305)>
MOV S$等级要求3 <$STR(G306)>

#IF
equal A304
#ACT
MOV S$收人状态1 -< /SCOLOR=125>

#IF
equal A305
#ACT
MOV S$收人状态2 -< /SCOLOR=125>

#IF
equal A306
#ACT
MOV S$收人状态3 -< /SCOLOR=125>

#IF
equal A304 允许收人
#ACT
MOV S$收人状态1 <允许加入/SCOLOR=250>

#IF
equal A305 允许收人
#ACT
MOV S$收人状态2 <允许加入/SCOLOR=250>

#IF
equal A306 允许收人
#ACT
MOV S$收人状态3 <允许加入/SCOLOR=250>

#IF
equal A304 拒绝收人
#ACT
MOV S$收人状态1 <拒绝收人/SCOLOR=249>

#IF
equal A305 拒绝收人
#ACT
MOV S$收人状态2 <拒绝收人/SCOLOR=249>

#IF
equal A306 拒绝收人
#ACT
MOV S$收人状态3 <拒绝收人/SCOLOR=249>

#IF
#ACT
SetStringBlank S$收人状态1 21 1
SetStringBlank S$收人状态2 21 1

#IF
equal A300
#ACT
MOV S$行会名字1 -暂无行会-
SetStringBlank S$行会名字1 20 1
#ELSEACT
MOV S$行会名字1 <$STR(A300)>
SetStringBlank S$行会名字1 20 1

#IF
equal A301
#ACT
MOV S$行会名字2 -暂无行会-
SetStringBlank S$行会名字2 20 1
#ELSEACT
MOV S$行会名字2 <$STR(A301)>
SetStringBlank S$行会名字2 20 1

#IF
equal A302
#ACT
MOV S$行会名字3 -暂无行会-
#ELSEACT
MOV S$行会名字3 <$STR(A302)>

#IF
#ACT
MOV S$竞标价格1 <$STR(G300)>
MOV S$竞标价格2 <$STR(G301)>
MOV S$竞标价格3 <$STR(G302)>

SetStringBlank S$竞标价格1 16 1
SetStringBlank S$竞标价格2 16 1

#IF
ISGUILDMASTER
#ACT
MOV S$一号行会竞标 <我要出价竞标/@竞标1>
MOV S$第二行会竞标 <出价竞标/@竞标2>
MOV S$第三行会竞标 <出价竞标/@竞标3>

#IF
equal A300
#ACT
MOV S$行会名字1 -暂无行会-
SetStringBlank S$行会名字1 20 1
#ELSEACT
MOV S$行会名字1 <$STR(A300)>
SetStringBlank S$行会名字1 20 1

#IF
equal A301
#ACT
MOV S$行会名字2 -暂无行会-
SetStringBlank S$行会名字2 20 1
#ELSEACT
MOV S$行会名字2 <$STR(A301)>
SetStringBlank S$行会名字2 20 1

#IF
equal A302
#ACT
MOV S$行会名字3 -暂无行会-
#ELSEACT
MOV S$行会名字3 <$STR(A302)>

#IF
#ACT
MOV S$竞标价格1 <$STR(G300)>
MOV S$竞标价格2 <$STR(G301)>
MOV S$竞标价格3 <$STR(G302)>

SetStringBlank S$竞标价格1 16 1
SetStringBlank S$竞标价格2 16 1

#IF
ISGUILDMASTER
equal <$GUILDNAME> <$STR(A300)>
#ACT
MOV S$等级要求1 <$STR(G304)><设置/@@InPutInteger85>

#IF
ISGUILDMASTER
equal <$GUILDNAME> <$STR(A301)>
#ACT
MOV S$等级要求2 <$STR(G305)><设置/@@InPutInteger86>

#IF
ISGUILDMASTER
equal <$GUILDNAME> <$STR(A302)>
#ACT
MOV S$等级要求3 <$STR(G306)><设置/@@InPutInteger87>

#IF
ISGUILDMASTER
equal A304 允许收人
equal <$GUILDNAME> <$STR(A300)>
#ACT
MOV S$收人状态1 <允许/SCOLOR=250><设置/@收人1>

#IF
ISGUILDMASTER
equal A305 允许收人
equal <$GUILDNAME> <$STR(A301)>
#ACT
MOV S$收人状态2 <允许/SCOLOR=250><设置/@收人2>

#IF
ISGUILDMASTER
equal A306 允许收人
equal <$GUILDNAME> <$STR(A302)>
#ACT
MOV S$收人状态3 <允许/SCOLOR=250><设置/@收人3>

#IF
ISGUILDMASTER
equal A304 拒绝收人
equal <$GUILDNAME> <$STR(A300)>
#ACT
MOV S$收人状态1 <禁止/SCOLOR=249><设置/@收人1>

#IF
ISGUILDMASTER
equal A305 拒绝收人
equal <$GUILDNAME> <$STR(A301)>
#ACT
MOV S$收人状态2 <禁止/SCOLOR=249><设置/@收人2>

#IF
ISGUILDMASTER
equal A306 拒绝收人
equal <$GUILDNAME> <$STR(A302)>
#ACT
MOV S$收人状态3 <禁止/SCOLOR=249><设置/@收人3>

#IF
#ACT
goto @字符1


#IF
#ACT
#SAY
 \

    <当前竞价行会:/SCOLOR=9> {<$STR(S$行会名字1)>/SCOLOR=251}    \ \
  <[竞价元宝]:/SCOLOR=94><$STR(S$竞标价格1)> \
  <[需要等级]:/SCOLOR=94><$STR(S$等级要求1)>\
  <[收人状态]:/SCOLOR=94> <$STR(S$收人状态1)>  \ \
    <$STR(S$一号行会竞标)>        \

\{行会掌门可竟拍,每次需在当前竞价上加10元宝.每晚24点清空数据/SCOLOR=250}\

[@字符1]
#IF
ISGUILDMASTER
equal <$GUILDNAME> <$STR(A300)>
equal <$GUILDNAME> <$STR(A301)>
#ACT
SetStringBlank S$收人状态1 20 1
SetStringBlank S$收人状态2 20 1
SetStringBlank S$等级要求1 35 1
SetStringBlank S$等级要求2 36 1
BREAK



#IF
ISGUILDMASTER
equal <$GUILDNAME> <$STR(A300)>
#ACT
SetStringBlank S$收人状态1 20 1
SetStringBlank S$收人状态2 20 1
SetStringBlank S$等级要求1 35 1
SetStringBlank S$等级要求2 17 1
BREAK

#IF
ISGUILDMASTER
equal <$GUILDNAME> <$STR(A301)>
#ACT
SetStringBlank S$收人状态1 20 1
SetStringBlank S$收人状态2 20 1
SetStringBlank S$等级要求1 16 1
SetStringBlank S$等级要求2 36 1
BREAK

#IF
#ACT
SetStringBlank S$收人状态1 20 1
SetStringBlank S$收人状态2 20 1
SetStringBlank S$等级要求1 16 1
SetStringBlank S$等级要求2 17 1
BREAK

[@收人3]
#if
equal A306 允许收人
#act
messagebox \\\您将关闭行会招募状态.确定关闭么? @禁止3 @取消
#elseact
messagebox \\\您将开启行会招募状态.确定开启么? @允许3 @取消

[@允许3]
#act
MOV A306 允许收人
Messagebox  当前收人设置为允许收人
goto @main

[@禁止3]
#act
MOV A306 拒绝收人
Messagebox  当前收人设置为拒绝收人
goto @main

[@收人2]
#if
equal A305 允许收人
#act
messagebox \\\您将关闭行会招募状态.确定关闭么? @禁止2 @取消
#elseact
messagebox \\\您将开启行会招募状态.确定开启么? @允许2 @取消

[@允许2]
#act
MOV A305 允许收人
Messagebox  当前收人设置为允许收人
goto @main

[@禁止2]
#act
MOV A305 拒绝收人
Messagebox  当前收人设置为拒绝收人
goto @main

[@收人1]
#if
equal <$GUILDNAME> <$STR(A300)>
#ElseAct
MESSAGEBOX [操作失败失败]你已经失去了该操作的权限.请重新竞价
break


#if
equal A304 允许收人
#act
messagebox \\\您将关闭行会招募状态.确定关闭么? @禁止1 @取消
#elseact
messagebox \\\您将开启行会招募状态.确定开启么? @允许1 @取消

[@允许1]
#if
equal <$GUILDNAME> <$STR(A300)>
#ElseAct
MESSAGEBOX [操作失败失败]你已经失去了该操作的权限.请重新竞价
break

#IF
#act
MOV A304 允许收人
Messagebox  当前收人设置为允许收人
goto @main

[@禁止1]
#if
equal <$GUILDNAME> <$STR(A300)>
#ElseAct
MESSAGEBOX [操作失败失败]你已经失去了该操作的权限.请重新竞价
break

#IF
#act
MOV A304 拒绝收人
Messagebox  当前收人设置为拒绝收人
goto @main

[@InPutInteger85]
#if
equal <$GUILDNAME> <$STR(A300)>
#ElseAct
MESSAGEBOX [操作失败失败]你已经失去了该操作的权限.请重新竞价
break

#if
large N85 0
CheckStringlength <$STR(N85)> < 4
CheckStringlength <$STR(N85)> > 0
#ACT
MOV <$STR(G304)> <$STR(N85)>
Messagebox  当前收人设置为<$STR(N85)>级
GOTO @main
BREAK
#ELSEACT
Messagebox  请输入正确的等级

[@InPutInteger86]
#if
equal <$GUILDNAME> <$STR(A300)>
#ElseAct
MESSAGEBOX [操作失败失败]你已经失去了该操作的权限.请重新竞价
break

#if
large N86 0
CheckStringlength <$STR(N86)> < 4
CheckStringlength <$STR(N86)> > 0
#ACT
MOV <$STR(G305)> <$STR(N86)>
Messagebox  当前收人设置为<$STR(N86)>级
GOTO @main
BREAK
#ELSEACT
Messagebox  请输入正确的等级

[@InPutInteger87]
#if
equal <$GUILDNAME> <$STR(A300)>
#ElseAct
MESSAGEBOX [操作失败失败]你已经失去了该操作的权限.请重新竞价
break

#if
large N87 0
CheckStringlength <$STR(N87)> < 4
CheckStringlength <$STR(N87)> > 0
#ACT
MOV <$STR(G306)> <$STR(N87)>
Messagebox  当前收人设置为<$STR(N87)>级
GOTO @main
BREAK
#ELSEACT
Messagebox  请输入正确的等级

;-------------------------------------------------------------------------------------------------------------

[@竞标1]
#IF
CheckGameGold > 9
#ACT
#ELSEACT
messagebox  你的元宝不足10个.无法使用此功
break

#if
equal <$GUILDNAME> <$STR(A300)>
#act
messagebox  您已获得了公告牌位置①使用权.无需再次竞标.
break

#IF
CheckGameGold > <$STR(G300)>
#ACT
INC G300 10
GameGold - <$STR(G300)>
mov A300 <$GUILDNAME>
GuildNoticeMsg 249 251 行会招人:〖<$STR(A300)>〗行会的掌门「<$USERNAME>」出价<$STR(G300)>元宝,获得公告牌位置使用权!
mov A304 允许收人
GOTO @main
BREAK
#ELSEACT
MOV N$一号行会价格 <$STR(G300)>
inc N$一号行会价格 10
Messagebox  抱歉,本次竞拍需要<$STR(N$一号行会价格)>元宝,您的元宝不足

[@加入1]
#IF
HAVEGUILD
#ACT
Messagebox  您当前已经加入行会.请退出后在加入.
break

#if
equal <$STR(A300)>
#act
messagebox [提示]该位置暂无行会竞价!
break

#if
equal A304 拒绝收人
#act
messagebox  当前【<$STR(A300)>】行会拒绝收人
break

#if
CHECKLEVELEX < <$STR(G304)>
#act
messagebox  【<$STR(A300)>】行会收人需要人物达到<$STR(G304)>级
break

#if
#act
ADDGUILDMEMBER <$STR(A300)>
GuildNoticeMsg 55 251 【行会招人公告】玩家〖<$USERNAME>〗通过公告牌加入了【<$STR(A300)>】行会!
break

;--------------------------------------------------------------------------------------------------------------

[@竞标2]

#if
equal <$GUILDNAME> <$STR(A301)>
#act
messagebox  您已获得了公告牌位置②使用权.无需再次竞标.
break


#IF
CheckGameGold > <$STR(G301)>
#ACT
INC G301 1000
GameGold - <$STR(G301)>
mov A301 <$GUILDNAME>
GuildNoticeMsg 249 251 行会招人:〖<$STR(A301)>〗行会的掌门「<$USERNAME>」出价<$STR(G301)>元宝,获得公告牌位置②使用权!
mov A305 允许收人
GOTO @main
BREAK
#ELSEACT
MOV N$第二行会价格 <$STR(G301)>
inc N$第二行会价格 1000
Messagebox  抱歉,本次竞拍需要<$STR(N$第二行会价格)>元宝,您的元宝不足

[@加入2]
#IF
HAVEGUILD
#ACT
Messagebox  您当前已经加入行会.请退出后在加入.
break

#if
equal <$STR(A301)>
#act
messagebox [提示]该位置暂无行会竞价!
break

#if
equal A305 拒绝收人
#act
messagebox  当前【<$STR(A301)>】行会拒绝收人
break

#if
CHECKLEVELEX < <$STR(G305)>
#act
messagebox  【<$STR(A301)>】行会收人需要人物达到<$STR(G305)>级
break

#if
#act
ADDGUILDMEMBER <$STR(A301)>
GuildNoticeMsg 55 251 【行会招人公告】玩家〖<$USERNAME>〗通过公告牌加入了【<$STR(A301)>】行会!
break

;-----------------------------------------------------------------------------------------

[@竞标3]

#if
equal <$GUILDNAME> <$STR(A302)>
#act
messagebox  您已获得了公告牌位置③使用权.无需再次竞标.
break

#IF
CheckGameGold > <$STR(G302)>
#ACT
INC G302 1000
GameGold - <$STR(G302)>
mov A302 <$GUILDNAME>
GuildNoticeMsg 249 251 行会招人:〖<$STR(A302)>〗行会的掌门「<$USERNAME>」出价<$STR(G302)>元宝,获得公告牌位置③使用权!
mov A306 允许收人
GOTO @main
BREAK
#ELSEACT
MOV N$第三行会价格 <$STR(G302)>
inc N$第三行会价格 1000
Messagebox  抱歉,本次竞拍需要<$STR(N$第三行会价格)>元宝,您的元宝不足

[@加入3]
#IF
HAVEGUILD
#ACT
Messagebox  您当前已经加入行会.请退出后在加入.
break

#if
equal <$STR(A302)>
#act
messagebox [提示]该位置暂无行会竞价!
break

#if
equal A306 拒绝收人
#act
messagebox  当前【<$STR(A302)>】行会拒绝收人
break

#if
CHECKLEVELEX < <$STR(G306)>
#act
messagebox  【<$STR(A302)>】行会收人需要人物达到<$STR(G306)>级
break

#if
#act
ADDGUILDMEMBER <$STR(A302)>
GuildNoticeMsg 55 251 【行会招人公告】玩家〖<$USERNAME>〗通过公告牌加入了【<$STR(A302)>】行会!
break
[顶部]