搜索
楼主: 我是新手

求助format语法

[复制链接]
发表于 2011-2-22 09:25:56 | 显示全部楼层 来自 广东东莞
4# 我是新手

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注个册吧

×
回复

使用道具 举报

 楼主| 发表于 2011-2-22 19:20:20 | 显示全部楼层 来自 甘肃天水
#include

public new_round()
{
        new Message[ 128 ]
        for( new i = 1; i
kk阿朗 发表于 2011-2-22 09:22

请问您这个和龟仙人那个有什么区别吗?不会仅仅是多了个玩家进入时的检测吧?
回复

使用道具 举报

发表于 2011-2-22 21:23:58 | 显示全部楼层 来自 广东东莞
  1. public new_round()
  2. {
  3.         new Message[ 128 ]
  4.         new iPlayers[ 32 ], iNum, iPlayer
  5.         get_players( iPlayers, iNum )
  6.        
  7.         //for( new i = 1; i <= get_maxplayers(); i++ )
  8.         for ( new i = 0; i < iNum; i++ )
  9.         {
  10.                 //if ( is_user_connected( i ) && ( get_user_flags(i) & ADMIN_LEVEL_G ) )
  11.                 iPlayer = iPlayers[ i ]
  12.                 if ( get_user_flags( iPlayer ) & ADMIN_LEVEL_G )
  13.                 {
  14.                         format( Message, 127, "^x04【提示】^x03你已具有^x01【某某权限】。" )
  15.                         client_color( i, Message )
  16.                         client_color( iPlayer, Message )
  17.                 }
  18.         }
  19. }

  20. public client_color(colorid, msg[])
  21. {
  22.         static iSayText;
  23.        
  24.         if ( iSayText || ( iSayTest == get_user_msgid( "SayText" ) ) )
  25.         {
  26.                 message_begin( MSG_BROADCAST, iSayText )
  27.         {
  28.                 write_byte( colorid )
  29.                 write_string( msg )
  30.         }
  31.         message_end()
  32. }
复制代码
要不就用get_players
回复

使用道具 举报

 楼主| 发表于 2011-2-22 21:57:08 | 显示全部楼层 来自 甘肃天水
public new_round()
{
        new Message[ 128 ]
        new iPlayers[ 32 ], iNum, iPlayer
        get_players( iPlayers, iNum )
       
        //for( new i = 1; i
kk阿朗 发表于 2011-2-22 21:23

额,你这2个和龟仙人那个功效是一样的。谢谢你!
回复

使用道具 举报

发表于 2011-2-23 12:19:25 | 显示全部楼层 来自 广东东莞
效果是一样的,就如你之前说的,为什么我会在前者加个判断玩家是否进入服务器!
要理解为什么!
回复

使用道具 举报

 楼主| 发表于 2011-3-3 21:35:44 | 显示全部楼层 来自 甘肃天水
本帖最后由 我是新手 于 2011-3-3 22:54 编辑

哈哈,明白了....
但如果我想让这个提示连续显示5局,以后就在不显示了应该怎么加个局数的判断呢?
另外说下,你这一句有问题,这样写iSayTest等于没定义,编译不了。
        if ( iSayText || ( iSayTest == get_user_msgid( "SayText" ) ) )

改成这样试下
       if ( iSayText  == get_user_msgid( "SayText" ) )

最后还少了个  }   :loveliness:

以后还请你多多指教哦!!!
回复

使用道具 举报

发表于 2011-3-4 00:10:01 | 显示全部楼层 来自 广东东莞
1.建立一个全局变量,判断如果大于5,就不显示信息,否则加1,并显示信息;
2.不好意思,是我键盘打快了,应该是:
  1. if ( iSayText || ( iSayText = get_user_msgid( "SayText" ) ) )
复制代码
回复

使用道具 举报

 楼主| 发表于 2011-3-4 15:11:42 | 显示全部楼层 来自 甘肃天水
嗯,一直没去服务器看,今天看了下,你的这个没有提示。按你写的改了也没提示
回复

使用道具 举报

发表于 2011-3-4 20:40:11 | 显示全部楼层 来自 广东东莞
我不知道你的代码是怎么样的,
但是如果是跟我那样写的话,一定是会显示的!
我这里我自己写了一个,你自己可以对照看一下!
  1. #include <amxmodx>

  2. new g_iMaxPlayers;

  3. public Event_NewRound()
  4. {
  5.         static szMessage[ 128 ];
  6.         static szName[ 32 ];
  7.        
  8.         for( new i = 1; i <= g_iMaxPlayers; i++ )
  9.         {
  10.                 if ( is_user_connected( i ) && ( get_user_flags( i ) & ADMIN_LEVEL_G ) )
  11.                 {
  12.                         get_user_name( i, szName, charsmax( szName ) );
  13.                         client_print_color( id, id, "^x04【提示】^x03%s ^x01你已具有^x03【某某权限】。", szName );
  14.                 }
  15.         }
  16. }

  17. stock client_print_color(id, color, const fmt[], any:...)
  18. {
  19.         static szMsg[ 192 ];
  20.         vformat( szMsg, charsmax( szMsg ), fmt, 4 );
  21.        
  22.         static iSayText;
  23.        
  24.         if ( iSayText || ( iSayTest = get_user_msgid( "SayText" ) ) )
  25.         {
  26.                 message_begin( id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, iSayText, _, id );
  27.                 {
  28.                         write_byte( color );
  29.                         write_string( szMsg );
  30.                 }
  31.                 message_end();
  32.         }
  33. }

  34. public plugin_init()
  35. {
  36.         register_plugin( "Test Plugin", "0.1", "K.K.Lv" );
  37.        
  38.         register_event( "HLTV", "Event_NewRound", "a", "1=0", "2=0" );
  39.        
  40.         g_iMaxPlayers = get_maxplayers();
  41. }
复制代码
回复

使用道具 举报

 楼主| 发表于 2011-3-6 15:42:47 | 显示全部楼层 来自 甘肃天水
本帖最后由 我是新手 于 2011-3-6 15:46 编辑
我不知道你的代码是怎么样的,
但是如果是跟我那样写的话,一定是会显示的!
我这里我自己写了一个,你自己可以对照看一下!#include

new g_iMaxPlayers;

public Event_NewRound()
{
        static szMessage[ 128 ];
         ...
kk阿朗 发表于 2011-3-4 20:40

额,是我自己傻逼了。少东西了。怪不得不显示。谢你了!
不过你上面这个编译的时候会有警告
warning 203: symbol is never used: "szMessage"
回复

使用道具 举报

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

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