[求助]解决最先杀敌插件与中文ID的冲突
服务器使用了老友记中文ID插件以下代码,当最先杀敌的玩家是中文ID的话,CS服务端马上报错并崩溃,但最先杀敌的玩家是英文ID则一切正常。经测试,问题出在
show_hudmessage(0, " %s 最先杀敌,奖励10000",p_name)
这行上,猜测是当中文ID时,get_user_name取出的字符串是UTF-8码,而show_hudmessage()函数不能直接支持,不知对否。
请问该如何解决?谢谢!
#include <amxmod>
#include <csstats>
new g_round
public plugin_init()
{
register_plugin("First Shot","1.0","ahcat")
register_event("DeathMsg", "hook_death", "a")
register_logevent("hook_roundstart",2,"0=World triggered","1=Round_Start")
g_round = 0
}
public hook_death()
{
if (g_round!=0)
return PLUGIN_HANDLED
new Killer = read_data(1)
new Victim = read_data(2)
if(!Killer || get_user_team(Killer)==get_user_team(Victim))
return PLUGIN_HANDLED
set_user_money(Killer,10000+get_user_money(Killer))
new p_name
get_user_name(Killer,p_name,31)
set_hudmessage(100,100,255,0.03, 0.31, 0, 6.0, 10.0)
show_hudmessage(0, " %s 最先杀敌,奖励10000",p_name)
g_round = 1
return PLUGIN_HANDLED
}
public hook_roundstart()
{
g_round = 0
}
回复: [求助]解决最先杀敌插件与中文ID的冲突
这些语句本身没什么大问题。不过建议把 return PLUGIN_HANDLED 修改为 return PLUGIN_CONTINUE在CS插件中,基本上都是使用UTF8编码的。
回复: [求助]解决最先杀敌插件与中文ID的冲突
谢谢大R的回复.可是搞不懂为什么只要是中文ID的玩家最先杀死敌人的那一瞬间.服务端就马上崩溃.回复: [求助]解决最先杀敌插件与中文ID的冲突
估计是其他插件的问题。回复: [求助]解决最先杀敌插件与中文ID的冲突
R大,将除了中文ID及最先杀敌奖励插件.其他所有第三方插件都关了..问题仍旧...郁闷了.呵呵.回复: [求助]解决最先杀敌插件与中文ID的冲突
Post by hotbadmanR大,将除了中文ID及最先杀敌奖励插件.其他所有第三方插件都关了..问题仍旧...郁闷了.呵呵.
应该是这种情况:用中文ID的玩家杀人或被人杀时服务器会卡,服务器使用中文ID的玩家多时可能会崩溃,不知道是服务器硬件不够好还是什么?..................
回复: [求助]解决最先杀敌插件与中文ID的冲突
插件越多娱乐越强,麻烦也多多.回复: [求助]解决最先杀敌插件与中文ID的冲突
Post by 心静如水应该是这种情况:用中文ID的玩家杀人或被人杀时服务器会卡,服务器使用中文ID的玩家多时可能会崩溃,不知道是服务器硬件不够好还是什么?..................
不是这种情况.
不开杀敌奖励插件的话.20个玩家全中文ID也没事.
开了杀敌奖励插件.服务器里就2个玩家,一个中文ID,一个英文ID.只要中文ID的把对方杀了.hlds就马上弹出某某内存地址不能read的错误提示.并进程崩溃.但如果是英文ID把中文ID的杀了.也没事.
回复: [求助]解决最先杀敌插件与中文ID的冲突
我用的是西门的中文ID,没有这个问题!
页:
[1]