搜索
查看: 3629|回复: 13

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

[复制链接]
发表于 2005-5-28 16:10:34 | 显示全部楼层 |阅读模式 来自 中国–山东
本文所讨论的是针对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下使用,各位谁有现成的这个插件,也可以分享一下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注个册吧

×
 楼主| 发表于 2005-5-28 16:14:35 | 显示全部楼层 来自 中国–山东
今天要抱儿子带海边去转转,明天有时间再与诸位交流。
回复

使用道具 举报

发表于 2005-5-28 16:15:24 | 显示全部楼层 来自 中国–陕西–西安
:D :D 恩,写的很详细,不错,不错,希望以后看到楼主更多的技术帖。

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

[PHP] public plugin_cfg() {
new configFile[64],curMap[32]
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")
}
[/PHP]
回复

使用道具 举报

发表于 2005-5-30 11:22:29 | 显示全部楼层 来自 中国–广东–肇庆
早知道就不用一个一个地图都定义到 map 里的 .cfg 了, 麻烦死人, 谢谢楼主!

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

使用道具 举报

发表于 2005-5-30 11:45:09 | 显示全部楼层 来自 中国–广东–深圳–南山区
上述功能在AMX0.9.9里已经含有。
回复

使用道具 举报

发表于 2005-5-30 11:46:19 | 显示全部楼层 来自 中国–广东–肇庆
看来是已经改了的,再次感谢楼主!

public plugin_cfg() {
  new configFile[64],curMap[32]
  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)

}
回复

使用道具 举报

 楼主| 发表于 2005-5-30 16:09:31 | 显示全部楼层 来自 中国–山东
别客气,我也是自己吓琢磨,弄着玩而已,呵呵。
回复

使用道具 举报

发表于 2005-5-30 17:29:38 | 显示全部楼层 来自 中国–湖北–武汉
感谢ytken分享技术心得~
回复

使用道具 举报

发表于 2005-5-30 20:43:14 | 显示全部楼层 来自 中国–辽宁–盘锦
好,回去用一下
回复

使用道具 举报

发表于 2005-5-30 23:33:46 | 显示全部楼层 来自 中国–北京–北京–海淀区
谢谢楼主!

非常实用的插件,又完善了AMXX。^^
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表