ytken 发表于 2005-5-28 16:10:34

【分享】在amxx中使用地图参数定制功能

本文所讨论的是针对amxx插件的,如果你想使用本功能的amx插件,请参见下贴,并下载相关的控件:

http://forum.dt-club.net/showthread.php?t=20756

====================================================

随着CD的升级,我的服务器也从原先的CS1.5转向CS1.6,管理插件也从amx0.9.7转到了amxx1.01中文版。运行一段时间后,感觉amx插件中的部分功能比较不错,想转换到amxx管理插件中,其中的地图定制功能就非常好用。比方说,大家玩dust2地图比较感兴趣,那么可以利用地图定制插件把dust2的时间设置为45分钟,awp地图因为有些人不喜欢,就可以设定为10分钟,其余的默认地图自动获取server.cfg中的设置,比如说30分钟等。这样可以灵活的调整不同地图的参数。其实,可以定制的参数不仅仅是时间,凡是server.cfg文件中支持的参数,都可以单独为每个地图去定制各自的属性。

因手头暂时没有现成的基于amxx的地图定制插件,故在这里发帖请教,正好"xp2400"帮我直接编译了一个,而“nwb13”告诉我,amxx插件包中的admin.amxx本身就支持这个功能。根据楼上二位的指点,加上我自己的一些修改,现贡献出来与大家分享。

无论是原先amx中的cunstom_map_config插件,还是amxx中的admin.amxx自带的地图定制功能,都存在一个bug。比方说,加入你为dust2定制45分钟,让其他地图采用server.cfg自带的设置,但是当使用地图定制功能以后,会发现在玩过dust2以后,下面的地图都变成45分钟了。我查看了一下custom_map_config.sma和admin.sma的源代码,发现其中的判断语句if中缺少了else对应项,故出现上述问题,我的解决办法是增加一个else分支,凡是不需要定制的地图,一律采用server.cfg的配置。原先的插件在amx中没有任何问题,但是在amxx中出现上述问题,请amxx开发或者汉化的各位留意一下。

下面我将两种定制地图的方式分别提供给大家,并把我修改的源代码和编译后的文件一并提供。

1、使用amxx的admin.amxx自带的地图定制功能

在amxx目录下建立maps目录,然后为你需要定制参数的地图建立起“地图名.cfg”文件,在其中各个参数的写法可以参照server.cfg的写法,比如说设定地图时间为45分钟,参数为“mp_timelimit 45”,其他参数依次类推,不再赘述。

2、我修改的custom_map_config.amxx地图参数定制插件

如果有人不想修改和变动admin.amxx插件,可以使用我修改的单独的custom_map_config.amxx地图参数定制插件。除了在plugins.ini文件中增加上面的插件以外,在cstrike目录下建立map_configs目录,里面的同样也创建“地图名.cfg”文件,其余操作同上。

以上两种方式我都实际测试过,没有任何问题。

各位有什么好的意见和建议,可以和我交流。因为我并不熟悉sma脚本编写,只是凭借以前的编程经验在读和修改别人的代码而已,抛砖引玉,主要是提出一种解决问题的思路,希望对各位有所启发。最近有时间我再研究一下如何把amx下的kamika(人体炸弹)转换到amxx下使用,各位谁有现成的这个插件,也可以分享一下。

ytken 发表于 2005-5-28 16:14:35

今天要抱儿子带海边去转转,明天有时间再与诸位交流。

nwb13 发表于 2005-5-28 16:15:24

:D :D 恩,写的很详细,不错,不错,希望以后看到楼主更多的技术帖。

我觉得这样修改会更好点,来看看

public plugin_cfg() {
new configFile,curMap
get_configsdir(configFile,31)
get_mapname(curMap,31)
new len = format(configFile,63,"%s/maps/%s.cfg",configFile,curMap)
set_task(6.1,"delayed_load",0,configFile,len+1)
}

public delayed_load(configFile[])
{
if ( file_exists(configFile) )
        server_cmd("exec %s",configFile)
else
        server_cmd("exec server.cfg")
}

eddiefish1 发表于 2005-5-30 11:22:29

早知道就不用一个一个地图都定义到 map 里的 .cfg 了, 麻烦死人, 谢谢楼主!

现在附件里的 admin 修改了吗 ?

undoer 发表于 2005-5-30 11:45:09

上述功能在AMX0.9.9里已经含有。

eddiefish1 发表于 2005-5-30 11:46:19

看来是已经改了的,再次感谢楼主!

public plugin_cfg() {
new configFile,curMap
get_configsdir(configFile,31)
get_mapname(curMap,31)
new len = format(configFile,63,"%s/maps/%s.cfg",configFile,curMap)
if ( file_exists(configFile) )
    set_task(6.1,"delayed_load",0,configFile,len+1)
else
    set_task(6.1,"delayed_load",0,"server.cfg",len+1)
}

ytken 发表于 2005-5-30 16:09:31

别客气,我也是自己吓琢磨,弄着玩而已,呵呵。

afti 发表于 2005-5-30 17:29:38

感谢ytken分享技术心得~

漫步人生 发表于 2005-5-30 20:43:14

好,回去用一下

BoeZombie 发表于 2005-5-30 23:33:46

谢谢楼主!

非常实用的插件,又完善了AMXX。^^
页: [1] 2
查看完整版本: 【分享】在amxx中使用地图参数定制功能