心静如水 发表于 2008-6-25 13:48:16

想请教个函数问题...(自己水平问题)

new who = 0, nub2 = 0
new maxplayers = get_maxplayers()
new stats, body
for(new i = 1; i < maxplayers; ++i){
get_user_wstats( i, 0, stats, body)
if ( (stats - stats) >= nub2 ) {
who = i
nub2 = stats - stats
}
}

这样为何获得的不是当前地图得分最差的玩家呢?

如何才能获得当前地图里面得分最差的玩家?

请指导一下好吗?

Rulzy 发表于 2008-6-25 14:16:24

回复: 想请教个函数问题...

一、应该用get_user_frags和get_user_deaths来获得当前地图玩家的得分和死亡数。
二、nub2的初值不正确。因为有可能存在所有玩家的“死亡数-杀人数”都小于0的情况(即杀人数-死亡数都大于0,这种情况出现的可能性是很小,但因为放了C4爆炸会有3人奖励,所以还是有可能会出现的)。

心静如水 发表于 2008-6-25 20:42:21

回复: 想请教个函数问题...

能否完整性的列出一下?...真不好意思...


   new who = 0
   new maxplayers = get_maxplayers()
   for(new i = 1; i < maxplayers; ++i){
   if ( get_user_frags(i) <=0 ) {
   who = i
   }
   }

比如说这样的话,它就是指得分小于0的所有玩家,只想取最差得分的玩家怎么办呢?

jim_yang 发表于 2008-6-25 22:51:26

回复: 想请教个函数问题...


new worst = 1<<31
new score
new theone
for(new i = 1; i <= g_maxplayers; ++i)
{
    if(is_user_connected(i))
    {
         score = get_user_frags(i) - get_user_deaths(i)
         if(score < worst)
         {
            worst = score
            theone = i
         }
   }
}

心静如水 发表于 2008-6-26 11:30:41

回复: 想请教个函数问题...

new worst = 1<<31
谢谢了....就是它不知道怎么定....

jim_yang 发表于 2008-6-26 11:34:18

回复: 想请教个函数问题...

如果在pawn里想用整型变量最大值,可以直接使用cellmax这个关键字

jim_yang 发表于 2008-6-26 11:36:30

回复: 想请教个函数问题...

不过1<<31也足够大了
应该是~(1<<32)最大,第一位应该是符号位,所以最大的应该是31个1

Rulzy 发表于 2008-6-26 13:03:37

回复: 想请教个函数问题...

直接写 0x7FFFFFFF 就行了。

jim_yang 发表于 2008-6-26 13:25:52

回复: 想请教个函数问题...

懒得敲那么多fffffffffffffffff

心静如水 发表于 2008-6-30 08:36:33

回复: 想请教个函数问题...

Post by jim_yang

new worst = 1<<31
new score
new theone
for(new i = 1; i <= g_maxplayers; ++i)
{
    if(is_user_connected(i))
    {
         score = get_user_frags(i) - get_user_deaths(i)
         if(score < worst)
         {
            worst = score
            theone = i
         }
   }
}

checkkick() {
   new who = 0
   new worst = 1<<31
   new score
   new maxplayers = get_maxplayers()
   for(new i = 1; i <= maxplayers; ++i){
   if ( !is_user_connected(i) && !is_user_connecting(i) )
   continue
   if (get_user_flags(i)&ADMIN_RESERVATION)
   continue
   score = get_user_frags(i) - get_user_deaths(i)
   if ( score < worst ) {
   worst = score
   who = i
   }
   }
   if(who){
   server_cmd("kick #%d^"你已被会员挤出,等下再试^"", get_user_userid(who))
   }
   return who
}

这样测试了.....但踢出的不是最低分的玩家.......恳请版主或哪位帮改正错误一下....
页: [1] 2
查看完整版本: 想请教个函数问题...(自己水平问题)