normen 发表于 2006-11-16 13:53:23

register_cvar函数,插件里的跟AMXX.cfg里的冲突

比如我在插件里定义
register_cvar("amx_reservation","0")

amxx.cfg里有这么一行
amx_reservation 2

按理说应该是插件首先定义这变量,如果amxx.cfg有这么一行,那么设置它的值为2,没有的话保留插件自己定义的值 0,可是我现在做的插件,不管amxx.cfg怎么设置,插件总是使用它自己设置的值0,如果插件里不定义,又怕amxx.cfg万一没有定义这个,出现未知的错误,甚至不定义根本不可以使用这个变量。
然后我发现只要换一次图,这个amx_reservation的值就变成amxx.cfg要求的那个2了,看来就是因为amxx.cfg和插件自身执行的先后顺序反了,我想在插件中,额外执行一次amxx.cfg又觉得为了一个变量去执行,有点大材小用,万一引起其他插件赋值正常的变量改变,那就得不偿失了,请高手指点。

jim_yang 发表于 2006-11-16 14:35:10

回复: register_cvar函数,插件里的跟AMXX.cfg里的冲突

cvar_exists(cvar[]) - If a cvar exists returns 1, in other case 0

从来没研究过注册一个已经存在的参数会出现什么情况,不过如果你确定那个参数存在的话就不用再注册了。

normen 发表于 2006-11-16 13:57:46

回复: register_cvar函数,插件里的跟AMXX.cfg里的冲突

有没有一个命令,例如
#if not define amx_reservation
   register_cvar("amx_reservation","0")
#Endif

normen 发表于 2006-11-16 15:06:45

回复: register_cvar函数,插件里的跟AMXX.cfg里的冲突

一直没弄明白,amxx是把所有插件的初始化先运行一次,再由admin.amxx去读取amxx.cfg的值;还是先自动运行amxx.cfg再初始化全部插件;或是按照plugin.ini里的顺序,插件要求amxx.cfg就执行,不要求就不执行。

Rulzy 发表于 2006-11-16 15:31:51

回复: register_cvar函数,插件里的跟AMXX.cfg里的冲突

在"admin.amxx"中,"amxx.cfg"是在"plugin_init"中执行的,其实我觉得在"plugin_cfg"中执行比较好点。

pop781 发表于 2006-11-16 15:50:51

回复: register_cvar函数,插件里的跟AMXX.cfg里的冲突

Post by normen
一直没弄明白,amxx是把所有插件的初始化先运行一次,再由admin.amxx去读取amxx.cfg的值;还是先自动运行amxx.cfg再初始化全部插件;或是按照plugin.ini里的顺序,插件要求amxx.cfg就执行,不要求就不执行。

没有看到相关的说明,据我感觉是这样的:
amxmodx 启动 plugin.ini 的插件后
执行 plugin_init()
然后用是用 exec 来执行 amxx.cfg 和 \maps\*.cfg
再执行 plugin_cfg()

并不是用 amxmodx 来执行 amxx.cfg 的
admin.amxx 直接读取的只是 user.ini 文件

Rulzy 发表于 2006-11-16 23:42:12

回复: register_cvar函数,插件里的跟AMXX.cfg里的冲突

是在插件“admin.amxx”里的"plugin_init"函数中使用“server_cmd”来执行“amxx.cfg”的,你们看一下源代码就知道了。
页: [1]
查看完整版本: register_cvar函数,插件里的跟AMXX.cfg里的冲突