搜索
查看: 5668|回复: 13

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

[复制链接]
发表于 2008-6-25 13:48:16 | 显示全部楼层 |阅读模式 来自 中国–广西–百色
new who = 0, nub2 = 0
new maxplayers = get_maxplayers()
new stats[8], body[8]
for(new i = 1; i < maxplayers; ++i){
get_user_wstats( i, 0, stats, body)
if ( (stats[1] - stats[0]) >= nub2 ) {
who = i
nub2 = stats[1] - stats[0]
}
}


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

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

请指导一下好吗?
发表于 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的所有玩家,只想取最差得分的玩家怎么办呢?
回复

使用道具 举报

发表于 2008-6-25 22:51:26 | 显示全部楼层 来自 中国–北京–北京–海淀区

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

  1. new worst = 1<<31
  2. new score
  3. new theone
  4. for(new i = 1; i <= g_maxplayers; ++i)
  5. {
  6.     if(is_user_connected(i))
  7.     {
  8.          score = get_user_frags(i) - get_user_deaths(i)
  9.          if(score < worst)
  10.          {
  11.               worst = score
  12.               theone = i
  13.          }
  14.      }
  15. }
复制代码
回复

使用道具 举报

 楼主| 发表于 2008-6-26 11:30:41 | 显示全部楼层 来自 中国–广西–百色–右江区

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

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

使用道具 举报

发表于 2008-6-26 11:34:18 | 显示全部楼层 来自 中国–北京–北京–海淀区

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

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

使用道具 举报

发表于 2008-6-26 11:36:30 | 显示全部楼层 来自 中国–北京–北京–海淀区

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

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

使用道具 举报

发表于 2008-6-26 13:03:37 | 显示全部楼层 来自 中国–福建–漳州

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

直接写 0x7FFFFFFF 就行了。
回复

使用道具 举报

发表于 2008-6-26 13:25:52 | 显示全部楼层 来自 中国–北京–北京–海淀区

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

懒得敲那么多fffffffffffffffff
回复

使用道具 举报

 楼主| 发表于 2008-6-30 08:36:33 | 显示全部楼层 来自 中国–广西–百色–右江区

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

Post by jim_yang
  1. new worst = 1<<31
  2. new score
  3. new theone
  4. for(new i = 1; i <= g_maxplayers; ++i)
  5. {
  6.     if(is_user_connected(i))
  7.     {
  8.          score = get_user_frags(i) - get_user_deaths(i)
  9.          if(score < worst)
  10.          {
  11.               worst = score
  12.               theone = i
  13.          }
  14.      }
  15. }
复制代码
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
}


这样测试了.....但踢出的不是最低分的玩家.......恳请版主或哪位帮改正错误一下....
回复

使用道具 举报

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

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