搜索
楼主: wangyang5008

jim_yang麻烦你帮忙看看这个插件问题

[复制链接]
 楼主| 发表于 2008-5-18 15:31:03 | 显示全部楼层 来自 中国–浙江–衢州–开化县

回复: jim_yang麻烦你帮忙看看这个插件问题

问题是原版的nextmap代码好象不是用get_cvar_string("amx_nextmap",nextmap,31)来判断下张地图名字的吧。

nextmap插件是这样判断下个地图名字的

getNextMapName(szArg[], iMax)
{
new len = get_cvar_string("amx_nextmap", szArg, iMax)

if (is_map_valid(szArg)) return len
len = copy(szArg, iMax, g_nextMap)
set_cvar_string("amx_nextmap", g_nextMap)

return len
}
public sayNextMap()
{
new name[32]

getNextMapName(name, 31)
client_print(0, print_chat, "%L: %s", LANG_PLAYER, "NEXT_MAP", name)
}

你的意思是叫我在判断下张地图名字client_print(0, print_chat, "%L: %s", LANG_PLAYER, "NEXT_MAP", name)
这段代码前面增加
formatex(g_nextMap,31,"%L",LANG_PLAYER,"NEXT_MAP_NAME")
回复

使用道具 举报

发表于 2008-5-18 23:52:21 | 显示全部楼层 来自 中国–广东–深圳–宝安区

回复: jim_yang麻烦你帮忙看看这个插件问题

其实这个问题很简单,官方的nextmap.sma,mapchooser.sma也没什么问题。
关键是因为你的mapcycle.txt是空的,所以你的下一幅图就是当前地图。
要实现say nextamap出现"投票选择",只需要在amxx.cfg里加一句amx_nextmap "投票选择"即可,然后在nextmap.sma里

[php]public sayNextMap(id)
{
new name[32]
getNextMapName(name, 31)
client_print(0, print_chat, "%L %s", LANG_PLAYER, "NEXT_MAP", name)

}
[/php]
改为
[php]
public sayNextMap(id)
{
new name[32]
get_cvar_string("amx_nextmap", name, 31)
client_print(0, print_chat, "%L %s", LANG_PLAYER, "NEXT_MAP", name)

}
[/php]
到mapchooser.sma自动投票选择后,其amx_nextmap的值会自动改为投票选择的那一幅图的名字。此方法还有一个好处就是,如果选择的下一副图服务器不存在,会自动转向mapcycle.txt的循环的地图。
回复

使用道具 举报

 楼主| 发表于 2008-5-19 00:41:09 | 显示全部楼层 来自 中国–浙江–衢州–开化县

回复: jim_yang麻烦你帮忙看看这个插件问题

顺便在问下,能不能把投票里的原来的地图,后面再加中文的地图名称,我是好奇,我看见过这样的服务器
回复

使用道具 举报

 楼主| 发表于 2008-5-19 00:44:44 | 显示全部楼层 来自 中国–浙江–衢州–开化县

回复: jim_yang麻烦你帮忙看看这个插件问题

其实这个问题很简单,官方的nextmap.sma,mapchooser.sma也没什么问题。
关键是因为你的mapcycle.txt是空的,所以你的下一幅图就是当前地图。
要实现say nextamap出现"投票选择",只需要在amxx.cfg里加一句amx_nextmap "投票选择"即可,然后在nextmap.sma里


PHP 代码:
public sayNextMap(id)
{
new
name[32]
getNextMapName(name, 31)
client_print(0, print_chat, "%L %s", LANG_PLAYER, "NEXT_MAP", name)

}  



改为

PHP 代码:
public sayNextMap(id)
{
new
name[32]
get_cvar_string("amx_nextmap", name, 31)
client_print(0, print_chat, "%L %s", LANG_PLAYER, "NEXT_MAP", name)

}  



到mapchooser.sma自动投票选择后,其amx_nextmap的值会自动改为投票选择的那一幅图的名字。此方法还有一个好处就是,如果选择的下一副图服务器不存在,会自动转向mapcycle.txt的循环的地图。



试过了OK,真的很感谢楼上的朋友的帮助!
回复

使用道具 举报

发表于 2008-5-19 01:52:19 | 显示全部楼层 来自 中国–广东–深圳–宝安区

回复: jim_yang麻烦你帮忙看看这个插件问题

Post by wangyang5008
顺便在问下,能不能把投票里的原来的地图,后面再加中文的地图名称,我是好奇,我看见过这样的服务器
这个也不难,你留意一下这个函数的用法。
parse - Splits parameters into strings.

Syntax:

parse ( const text[], ... )
Type:

Native
Notes:

Example: to split text: "^"This is^" the best year",
parse(text,arg1,len1,arg2,len2,arg3,len3,arg4,len4)
You will get: "This is", "the", "best", "year"
Function returns number of parsed parameters.

你可以从官方的mapchooser.sma或者其他修改过的类似的mapchooser.sma中的
[php]
while ((g_mapNums < MAX_MAPS) && read_file(filename, pos++, szText, 31, a))
{
if (szText[0] != ';'
&& parse(szText, g_mapName[g_mapNums], 31)
&& is_map_valid(g_mapName[g_mapNums])
&& !equali(g_mapName[g_mapNums], g_lastMap)
&& !equali(g_mapName[g_mapNums], currentMap))
++g_mapNums
}
[/php]
如果我改成
[php]
while ( (g_mapNums < MAX_MAPS) && read_file(filename,pos++,szText,31,a) ) {
if ( szText[0] != ';'
&& parse(szText, g_mapName[g_mapNums] ,31,map_description[g_mapNums],256 )
&& is_map_valid( g_mapName[g_mapNums] )
&& !equali( g_mapName[g_mapNums] ,g_lastMap)
&& !equali( g_mapName[g_mapNums] ,currentMap) )
++g_mapNums
}
[/php]
就可以获取地图名字以外的变量,这时只要开头自定义了
[php]
new map_description[MAX_MAPS][256]
[/php]
来储存,便可以取得地图描述。
剩下你便可在你想要的地方读取此数组变量。
回复

使用道具 举报

发表于 2008-5-19 08:56:01 | 显示全部楼层 来自 中国–广东–深圳

回复: jim_yang麻烦你帮忙看看这个插件问题

Post by wangyang5008
问题是原版的nextmap代码好象不是用get_cvar_string("amx_nextmap",nextmap,31)来判断下张地图名字的吧。

nextmap插件是这样判断下个地图名字的

getNextMapName(szArg[], iMax)
{
new len = get_cvar_string("amx_nextmap", szArg, iMax)

if (is_map_valid(szArg)) return len
len = copy(szArg, iMax, g_nextMap)
set_cvar_string...

不是加这里,改初始化部分,跟rose的说的差不多,不用在amxx.cfg里面指定。
回复

使用道具 举报

 楼主| 发表于 2008-5-21 19:49:13 | 显示全部楼层 来自 中国–浙江–衢州–开化县

回复: jim_yang麻烦你帮忙看看这个插件问题

Cr@zyTreE 哈哈
你是不是不懂装懂啊
回复

使用道具 举报

 楼主| 发表于 2008-5-21 19:51:58 | 显示全部楼层 来自 中国–浙江–衢州–开化县

回复: jim_yang麻烦你帮忙看看这个插件问题

这个也不难,你留意一下这个函数的用法。
parse - Splits parameters into strings.

Syntax:

parse ( const text[], ... )
Type:

Native
Notes:

Example: to split text: "^"This is^" the best year",
parse(text,arg1,len1,arg2,len2,arg3,len3,arg4,len4)
You will get: "This is", "the", "best", "year"
Function returns number of parsed parameters.

你可以从官方的mapchooser.sma或者其他修改过的类似的mapchooser.sma中的
PHP 代码:
while ((g_mapNums < MAX_MAPS) && read_file(filename, pos++, szText, 31, a))
{
if (
szText[0] != ';'
&& parse(szText, g_mapName[g_mapNums], 31)
&&
is_map_valid(g_mapName[g_mapNums])
&& !
equali(g_mapName[g_mapNums], g_lastMap)
&& !
equali(g_mapName[g_mapNums], currentMap))
++
g_mapNums
}  



如果我改成
PHP 代码:
while ( (g_mapNums < MAX_MAPS) && read_file(filename,pos++,szText,31,a) ) {
if (
szText[0] != ';'
&& parse(szText, g_mapName[g_mapNums] ,31,map_description[g_mapNums],256 )
&&
is_map_valid( g_mapName[g_mapNums] )
&& !
equali( g_mapName[g_mapNums] ,g_lastMap)
&& !
equali( g_mapName[g_mapNums] ,currentMap) )
++
g_mapNums
}  



就可以获取地图名字以外的变量,这时只要开头自定义了
PHP 代码:
new map_description[MAX_MAPS][256]  



来储存,便可以取得地图描述。
剩下你便可在你想要的地方读取此数组变量。

               我试过好像代码错的。希望你再次指点
回复

使用道具 举报

发表于 2008-5-21 20:03:23 | 显示全部楼层 来自 中国–广东–深圳–南山区

回复: jim_yang麻烦你帮忙看看这个插件问题

Post by wangyang5008
Cr@zyTreE 哈哈
你是不是不懂装懂啊

用的着在你面前表现吗?说实话,看到你这种。。。。唉,不说了。以后也不会回复你的帖了。
回复

使用道具 举报

 楼主| 发表于 2008-5-21 20:17:35 | 显示全部楼层 来自 中国–浙江–衢州–开化县

回复: jim_yang麻烦你帮忙看看这个插件问题

开玩笑的啊。我觉得我这个人说话是有点直接,你也别放心上,呵呵!
回复

使用道具 举报

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

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