设为首页收藏本站新闻投稿

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2523|回复: 37

[求助] [求助]一个函数的返回值问题(记分牌制作相关)     [复制链接]

Rank: 7Rank: 7Rank: 7

帖子
1809
精华
0
声望
3294 点
金币
638 Mold
被赞许
0 次
注册时间
2010-2-13
发表于 2010-9-26 16:30:42 |显示全部楼层
本帖最后由 89701554 于 2010-9-27 11:18 编辑

话不多说上一段代码:
     in_buyzone = cs_get_user_buyzone(id); 在我工作的电脑上装的也是CS1.6
     ,为什么in_buyzone 的值总是0呢?????
     完美解决:
     public eventStatusIcon(id)
     {
           new icon[32]
        read_data(2,icon,31)
        if(equal(icon, "buyzone"))
        {
                if(read_data(1))
                        g_InBuyzone[id] = true
                else
                        g_InBuyzone[id] = false
        }
     }
  1.                
  2.      //buyzone 是否在购买区
  3.      new buyzone_sprite[192], defuser_sprite[192]
  4.      in_buyzone = cs_get_user_buyzone(id);
  5.      if(in_buyzone)
  6.            buyzone_sprite = "buyzone";
  7.      else
  8.            buyzone_sprite = "buyzone_none";
  9.      //
  10.      client_print(0, print_chat, "cs_get_user_buyzone return value:%d", in_buyzone);       
  11.      {                                       
  12.              message_begin(MSG_ONE,iconstatus,icon_origin,id);
  13.              write_byte(in_buyzone); // status (0=hide, 1=show, 2=flash)
  14.              write_string(buyzone_sprite); // sprite name;
  15.              write_byte(icon_color[0]); // red
  16.              write_byte(icon_color[1]); // green
  17.              write_byte(icon_color[2]); // blue
  18.              message_end();       
  19.      }                                     
  20.      //defuser 是否有拆弹器               
  21.      have_defuser = 0;
  22.      have_defuser = cs_get_user_defuse(id);
  23.      if(have_defuser)
  24.            defuser_sprite = "defuser";
  25.      else
  26.            defuser_sprite = "defuser_none";
  27.      client_print(0, print_chat, "cs_get_user_defuse return value:%d", have_defuser);       
  28.      {
  29.                 //
  30.             message_begin(MSG_ONE,iconstatus,icon_origin,id);
  31.             write_byte(have_defuser); // status (0=hide, 1=show, 2=flash)
  32.             write_string(defuser_sprite); // sprite name;
  33.             write_byte(icon_color[0]); // red
  34.             write_byte(icon_color[1]); // green
  35.             write_byte(icon_color[2]); // blue
  36.             message_end();       
  37.      }   
  38.      //是否有C4(……)
  39.      //
  40.      //画记分牌
  41.      message_begin(MSG_ONE,iconstatus,icon_origin,id);
  42.      write_byte(1); // status (0=hide, 1=show, 2=flash)
  43.      write_string(sprite); // sprite name;
  44.      //write_byte(icon_color[0]); // red
  45.      //write_byte(icon_color[1]); // green
  46.      //write_byte(icon_color[2]); // blue
  47.      message_end();       
  48.     /**/
  49.    
复制代码

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
984
精华
0
声望
2260 点
金币
369 Mold
被赞许
0 次
注册时间
2009-9-23
发表于 2010-9-26 16:48:13 |显示全部楼层
帮你顶 弄出来大家分享下
[url][/url]月夜笛声

使用道具 举报

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

帖子
3448
精华
0
声望
19015 点
金币
1599 Mold
被赞许
66 次
注册时间
2009-3-16

Modchina灌水王 可爱小猫 懒人勋章

发表于 2010-9-26 17:28:11 |显示全部楼层
帮不上忙啊  只好顶一下

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
512
精华
0
声望
2061 点
金币
329 Mold
被赞许
0 次
注册时间
2010-8-19
发表于 2010-9-26 17:30:53 |显示全部楼层
计算机什么的见到就头疼,2级C都不知道有没有通过,CS这些插件是用什么语言编的啊?C++么?

使用道具 举报

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

帖子
406
精华
0
声望
9411 点
金币
1421 Mold
被赞许
4 次
注册时间
2009-12-18
发表于 2010-9-26 18:17:51 |显示全部楼层
话不多说上一段代码:
     in_buyzone = cs_get_user_buyzone(id); 在我工作的电脑上装的也是CS1.6
     , ...
89701554 发表于 2010-9-26 16:30

呃…會回傳0很正常吧…因為你用的是「client_print(0, …)」…
如果不用「client_print(id, …)」的話會通常都會看到倒數ID的回傳值…
你哪知道那回傳值是誰的…?

以下是廢話:
話說想DEBUG記分板的移位BUG也不用這麼麻煩吧…

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
1809
精华
0
声望
3294 点
金币
638 Mold
被赞许
0 次
注册时间
2010-2-13
发表于 2010-9-26 21:16:52 |显示全部楼层
回复 5# a7811311622


    呵呵,你没注意看,,,我的返回值不一定在Client_Print那里面显示,而是用的If语句进行判断,

   为1或0的显示的SPrite是不同的!

使用道具 举报

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

帖子
406
精华
0
声望
9411 点
金币
1421 Mold
被赞许
4 次
注册时间
2009-12-18
发表于 2010-9-26 21:22:17 |显示全部楼层
本帖最后由 a7811311622 于 2010-9-26 21:24 编辑
回复  a7811311622


    呵呵,你没注意看,,,我的返回值不一定在Client_Print那里面显示,而是用的If语句进 ...
89701554 发表于 2010-9-26 21:16

呵呵…你也沒注意到…你這樣的假設和「client_print(0, print_chat, "cs_get_user_buyzone return value:%d", cs_get_user_buyzone(id))」完全沒有區別…結果每次id有數值傳入時因為前面回傳的目標是"0"變成全體…而你的client_print裡也沒顯示目前傳入的id為何…這樣當其他玩家或電腦人在購買區外時…除了看到一堆「cs_get_user_buyzone return value:0」以外還能看到什麼…還是請LZ先把「client_print(0…)」改成「client_print(id…)」後再來問問吧…

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
1809
精华
0
声望
3294 点
金币
638 Mold
被赞许
0 次
注册时间
2010-2-13
发表于 2010-9-26 21:26:37 |显示全部楼层
回复 5# a7811311622


    如果你有好的解决方法,不妨告之,呵呵,,,
     
    cs_get_user_buyzone 永远返回0值!不解!

使用道具 举报

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

帖子
406
精华
0
声望
9411 点
金币
1421 Mold
被赞许
4 次
注册时间
2009-12-18
发表于 2010-9-26 21:29:11 |显示全部楼层
回复  a7811311622


    如果你有好的解决方法,不妨告之,呵呵,,,
     
    cs_get_user_buyzone 永远返 ...
89701554 发表于 2010-9-26 21:26

把全部的「client_print(0…)」改成「client_print(id…)」後自己再到購買區看看回傳值吧…

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
1809
精华
0
声望
3294 点
金币
638 Mold
被赞许
0 次
注册时间
2010-2-13
发表于 2010-9-27 07:57:04 |显示全部楼层
本帖最后由 89701554 于 2010-9-28 07:55 编辑

回复 9# a7811311622


    if(in_buyzone)
           buyzone_sprite = "buyzone";
     else
           buyzone_sprite = "buyzone_none"; //后面我改为cross了

   这里在左边显示的是buyzone_none的图标啊,,不是buyzone,所以返回值是0啊!

   //buyzone 是否在购买区
   //if(nst_get_user_buyzone(id))
   if(cs_get_user_buyzone(id))
         buyzone_sprite = "buyzone";
   else
         buyzone_sprite = "cross";
   client_print(id, print_chat, "cs_get_user_buyzone return value:%s", buyzone_sprite);
   
   按照你说的改了,还是0,,用,nst_get_user_buyzone(id)能正确返回值!
   上图:
   

   09月27日的效果图:
   感谢大家的支持,,等我测试没有BUG后再发上来给大家!(这个与杀敌提示有冲突的哦,会把记分牌挤到上面去)
   杀敌提示不是右上角的那个哦,是1KILL,2KILL,刀杀,,雷杀,,,因为是使用的同一个消息ID。
   图一:
   
   图二:
   
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

回顶部