hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.28. 09:57



Jelenlévő felhasználók

Jelenleg 229 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 229 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 20 hozzászólás ]  Oldal Előző 1 2
Szerző Üzenet
 Hozzászólás témája: Re: Ichat - v2.3.3 + Rangrendszer(demon)
HozzászólásElküldve: 2018.02.20. 15:28 
Offline
Őstag
Avatar

Csatlakozott: 2017.08.21. 15:51
Hozzászólások: 1109
Megköszönt másnak: 36 alkalommal
Megköszönték neki: 195 alkalommal
duvilax írta:
Pika írta:
duvilax írta:
Akkor várom mástól a választ hátha valaki segít.


Pika írta:
Igazából egybeírod az a megoldás

Egybe írtam de ezt a hibát írja.
AMX Mod X Compiler 1.8.3-manual
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2013 AMX Mod X Team

Modified for www.Freakz.ro / amx.freakz.ro

amxmodx_18147-iChat_2.3.3.sma(7) : fatal error 100: cannot read from file: "ichat"

Compilation aborted.
1 Error.
Done.


Nem csak az a hiba. A te errorod az inc-re megy, mert amxfreakz nem ismeri.

Ezek a problémák.
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team

Warning: Loose indentation on line 212
Warning: Loose indentation on line 214
Error: Symbol already defined: "iChatSendCustomData" on line 1366
Error: Symbol already defined: "get_string" on line 1370
Error: Symbol already defined: "iChatVipAction" on line 1374
Error: Invalid function or declaration on line 1377
Error: Invalid function or declaration on line 1379
Error: Invalid function or declaration on line 1380
Error: Invalid function or declaration on line 1381
Error: Invalid function or declaration on line 1383
Error: Symbol already defined: "plugin_natives" on line 1386
Error: Symbol already defined: "client_putinserver" on line 1731
Error: Symbol already defined: "plugin_end" on line 1751
Warning: Symbol is never used: "iTagIndex" on line 1785
Warning: Symbol is never used: "id" on line 1785
Warning: Symbol is never used: "szData" on line 1785

11 Errors.
Could not locate output file C:\Users\SZIA\Desktop\amxx_ek\amxmodx_18147-iChat_2.3.3.amx (compile failed).



Ezek warn-ok annyi, hogy nem használod őket.

Kód:
Warning: Symbol is never used: "iTagIndex" on line 1785
Warning: Symbol is never used: "id" on line 1785
Warning: Symbol is never used: "szData" on line 1785


Itt az a probléma, hogy ezek a függvények 2x szerepelnek. Csak a függvény-be írt részt átkelett volna másolnod a függvénybe, de te létrehoztál egy újat, azok ütköznek.

Pl
  1. public fuggveny(id)
  2. {
  3. kod1
  4. }
  5. public fuggveny(id)
  6. {
  7. kod2
  8. }


Így kéne ennek kinéznie

  1. public fuggveny(id)
  2. {
  3. kod1
  4. kod2
  5. }


Kód:
Error: Symbol already defined: "plugin_natives" on line 1386
Error: Symbol already defined: "client_putinserver" on line 1731
Error: Symbol already defined: "plugin_end" on line 1751


Ha elküldöd a 2 plugint külön-külön egybeírom.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Ichat - v2.3.3 + Rangrendszer(demon)
HozzászólásElküldve: 2018.02.20. 15:42 
Offline
Tud valamit
Avatar

Csatlakozott: 2017.12.04. 09:15
Hozzászólások: 116
Megköszönt másnak: 58 alkalommal
Megköszönték neki: 2 alkalommal
Rangrendszer
  1. #include < amxmodx >
  2. #include < amxmisc >
  3. #include < fakemeta >
  4. #include < engine >
  5. #include < sqlx >
  6.  
  7. //#define USE_ICHAT
  8.  
  9. #if defined USE_ICHAT
  10.     #include < ichat >
  11. #endif
  12.  
  13. #pragma semicolon 1
  14.  
  15. #define MinOnlineTime 18000
  16. #define SubPoint 200
  17. #define MaxRang 19
  18.  
  19. new const g_sPrefix[ ] = "Prefix";
  20.  
  21. new const g_sTable[ ] = "rang_system_new";
  22. new const g_sSQL_INFOS[ ][ ] =
  23. {
  24.     "Host",     // HOST
  25.     "Username",     // USERNAME
  26.     "Password",     // PASSWORD
  27.     "DB"        // DATABASE
  28. };
  29. new Handle: g_iSqlTuple;
  30.  
  31. enum _:ePlayerInfos { iOnlineTime, iOnlineTimeW, iKills, iDeaths, iPoints, iFCTime, sPrefix[ 16 ] };
  32. enum _:eRangInfos { sRangName[ 32 ], iRangPoint };
  33.  
  34. new g_iUserData[ 33 ][ ePlayerInfos ];
  35. new const g_iRangs[ MaxRang ][ eRangInfos ] =
  36. {
  37.     { "Újonc", 0 },
  38.     { "Honvéd", 300 },
  39.     { "Õrvezetõ", 500 },
  40.     { "Tizedes", 700 },
  41.     { "Szakaszvezetõ", 900 },
  42.     { "Õrmester", 1100 },
  43.     { "Törzsõrmester", 1400 },
  44.     { "Fõtörzsõrmester", 1700 },
  45.     { "Hadnagy", 2100 },
  46.     { "Fõhadnagy", 2600 },
  47.     { "Százados", 3300 },
  48.     { "Õrnagy", 4000 },
  49.     { "Alezredes", 4600 },
  50.     { "Ezredes", 5300 },
  51.     { "Dandártábornok", 6500 },
  52.     { "Vezérnagy", 8000 },
  53.     { "Altábornok", 10000 },
  54.     { "Vezérezredes", 12000 },
  55.     { "Egyedi prefix", 15000 }
  56. };
  57. new g_iRoundKills[ 33 ], g_iRang[ 33 ], g_sAuthID[ 33 ][ 32 ], g_sUsername[ 33 ][ 32 ], bool: g_bHud[ 33 ];
  58.  
  59. public plugin_init( )
  60. {
  61.     register_plugin( "Rang Rendszer", "1.0", "Demon" );
  62.     register_cvar( "Rang Rendsze", "By Demon", FCVAR_SERVER );
  63.    
  64.     register_dictionary( "RangSystem.txt" );
  65.    
  66.     g_iSqlTuple = SQL_MakeDbTuple( g_sSQL_INFOS[ 0 ], g_sSQL_INFOS[ 1 ], g_sSQL_INFOS[ 2 ], g_sSQL_INFOS[ 3 ] );
  67.    
  68.     new sThread[ 512 ];
  69.     formatex( sThread, charsmax( sThread ), "CREATE TABLE IF NOT EXISTS `%s` (`authid` varchar(32) NOT NULL,`online_time` INT(11) NOT NULL,`online_timew` INT(11) NOT NULL,`kills` INT(11) NOT NULL,`deaths` INT(11) NOT NULL,`points` INT(11) NOT NULL,`first_con_time` INT(15) NOT NULL,`prefix` varchar(16) NOT NULL,`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY);", g_sTable );
  70.    
  71.     SQL_ThreadQuery( g_iSqlTuple, "ThreadHandler", sThread, { 0 }, 1 );
  72.    
  73.     Load( );
  74.    
  75.     register_event( "SendAudio", "evCTWin", "a", "2&%!MRAD_ctwin" );
  76.     register_event( "SendAudio", "evTEWin", "a", "2&%!MRAD_terwin" );
  77.     register_event( "DeathMsg", "evDeath", "a" );
  78.    
  79.     register_clcmd( "say /hud", "cmdHud" );
  80.     register_clcmd( "say /rang", "cmdRang" );
  81.     register_clcmd( "say /myrank", "cmdRang" );
  82.     register_clcmd( "say /rangok", "cmdRangs" );
  83.     register_clcmd( "say /ranks", "cmdRangs" );
  84.     register_clcmd( "say /prefix", "cmdPrefix" );
  85.     register_clcmd( "reset_prefix", "cmdResetPrefix", ADMIN_RCON, "<jatekos> - Reset prefix." );
  86.    
  87.     register_concmd( "PREFIX", "GetPrefix" );
  88.    
  89.     register_forward( FM_ClientUserInfoChanged, "fwClientUserInfoChanged" );
  90. }
  91.  
  92. public plugin_natives( )
  93. {
  94.     register_library( "rang_sys" );
  95.     register_native( "get_user_rang", "_get_rang", 1 );
  96. }
  97.  
  98. public _get_rang( iPlayerId, sRang[ ], iLen )
  99. {
  100.     param_convert( 2 );
  101.     if ( g_iRang[ iPlayerId ] >= MaxRang ) copy( sRang, iLen, g_iUserData[ iPlayerId ][ sPrefix ] );
  102.     else copy( sRang, iLen, g_iRangs[ g_iRang[ iPlayerId ] - 1 ][ sRangName ] );
  103. }
  104.  
  105. public SaveDatas( iPlayerId, iMode )
  106. {
  107.     static sText[ 512 ];
  108.    
  109.     if ( iMode == 1 ) formatex( sText, charsmax( sText ), "INSERT INTO `%s` (`authid`,`first_con_time`,`prefix`) VALUES (^"%s^",^"%d^",^"%s^");", g_sTable, g_sAuthID[ iPlayerId ], get_systime( ), g_iRangs[ MaxRang - 1 ][ sRangName ] );
  110.     else if ( iMode == 2 ) formatex( sText, charsmax( sText ), "UPDATE `%s` SET online_time = ^"%d^", online_timew = ^"%d^", kills = ^"%d^", deaths = ^"%d^", points = ^"%d^", prefix = ^"%s^" WHERE authid = ^"%s^";", g_sTable, g_iUserData[ iPlayerId ][ iOnlineTime ], g_iUserData[ iPlayerId ][ iOnlineTimeW ], g_iUserData[ iPlayerId ][ iKills ], g_iUserData[ iPlayerId ][ iDeaths ], g_iUserData[ iPlayerId ][ iPoints ], g_iUserData[ iPlayerId ][ sPrefix ], g_sAuthID[ iPlayerId ] );
  111.     else if ( iMode == 3 ) formatex( sText, charsmax( sText ), "UPDATE `%s` SET online_timew = ^"0^";", g_sTable );
  112.     else formatex( sText, charsmax( sText ), "UPDATE `%s` SET points = points - %d WHERE %d - first_con_time > 604799 AND online_timew < %d AND points > %d;", g_sTable, SubPoint, get_systime( ), MinOnlineTime, ( SubPoint - 1 ) );
  113.    
  114.     SQL_ThreadQuery( g_iSqlTuple, "ThreadHandler", sText, { 0 }, 1 );
  115. }
  116.  
  117. public LoadDatas( iPlayerId )
  118. {
  119.     static sText[ 128 ], iArray[ 1 ];
  120.    
  121.     formatex( sText, charsmax( sText ), "SELECT * FROM `%s` WHERE authid = ^"%s^";", g_sTable, g_sAuthID[ iPlayerId ] );
  122.     iArray[ 0 ] = iPlayerId;
  123.    
  124.     SQL_ThreadQuery( g_iSqlTuple, "ThreadHandler", sText, iArray, sizeof ( iArray ) );
  125. }
  126.  
  127. public ThreadHandler( iFailState, Handle:iQuery, const sErrorMsg[ ], iErrorCode, const iARRAY[ ], iArraySize, Float:fQueueTime )
  128. {
  129.     if ( iFailState == TQUERY_CONNECT_FAILED )
  130.     {
  131.         set_fail_state( "Nem tudtam csatlakozni az adatbazishoz." );
  132.         return;
  133.     }
  134.     else if ( iFailState == TQUERY_QUERY_FAILED )
  135.     {
  136.         set_fail_state( "Query Error" );
  137.         return;
  138.     }
  139.    
  140.     if ( iErrorCode )
  141.     {
  142.         log_amx( "%i - %s", iErrorCode, sErrorMsg );
  143.         return;
  144.     }
  145.    
  146.     new iPlayerId = iARRAY[ 0 ];
  147.     if ( iPlayerId )
  148.     {
  149.         if ( SQL_NumResults( iQuery ) > 0 )
  150.         {
  151.             g_iUserData[ iPlayerId ][ iOnlineTime ] = SQL_ReadResult( iQuery, 1 );
  152.             g_iUserData[ iPlayerId ][ iOnlineTimeW ] = SQL_ReadResult( iQuery, 2 );
  153.             g_iUserData[ iPlayerId ][ iKills ] = SQL_ReadResult( iQuery, 3 );
  154.             g_iUserData[ iPlayerId ][ iDeaths ] = SQL_ReadResult( iQuery, 4 );
  155.             g_iUserData[ iPlayerId ][ iPoints ] = SQL_ReadResult( iQuery, 5 );
  156.             g_iUserData[ iPlayerId ][ iFCTime ] = SQL_ReadResult( iQuery, 6 );
  157.             SQL_ReadResult( iQuery, 7, g_iUserData[ iPlayerId ][ sPrefix ], charsmax( g_iUserData[ ][ sPrefix ] ) );
  158.            
  159.             g_iRang[ iPlayerId ] = 0;
  160.             for ( new i; i < MaxRang; ++i ) if ( g_iUserData[ iPlayerId ][ iPoints ] >= g_iRangs[ i ][ iRangPoint ] ) ++g_iRang[ iPlayerId ];
  161.            
  162. #if defined USE_ICHAT
  163.             if ( g_iRang[ iPlayerId ] >= MaxRang ) iChatSendCustomData( iPlayerId, 0, g_iUserData[ iPlayerId ][ sPrefix ] );
  164.             else iChatSendCustomData( iPlayerId, 0, g_iRangs[ g_iRang[ iPlayerId ] - 1 ][ sRangName ] );
  165. #endif
  166.         }
  167.         else SaveDatas( iPlayerId, 1 );
  168.     }
  169.    
  170.     return;
  171. }
  172.  
  173. public evCTWin( ) { GivePoint( "CT" ); }
  174. public evTEWin( ) { GivePoint( "TERRORIST" ); }
  175.  
  176. public GivePoint( const sTeam[ ] )
  177. {
  178.     static iPlayers[ 32 ], iPlrNum, iPlayerId;
  179.    
  180.     get_players( iPlayers, iPlrNum, "ech", sTeam );
  181.    
  182.     for ( new i; i < iPlrNum; ++i )
  183.     {
  184.         iPlayerId = iPlayers[ i ];
  185.        
  186.         if ( g_iRoundKills[ iPlayerId ] == 0 ) continue;
  187.        
  188.         if ( get_playersnum( ) > 11 )
  189.         {
  190.             if ( 14400 <= g_iUserData[ iPlayerId ][ iOnlineTimeW ] < 21600 )
  191.                 g_iRoundKills[ iPlayerId ] *= 2;
  192.             else if ( 21600 <= g_iUserData[ iPlayerId ][ iOnlineTimeW ] < 28800 )
  193.                 g_iRoundKills[ iPlayerId ] *= 3;
  194.             else if ( g_iUserData[ iPlayerId ][ iOnlineTimeW ] >= 28800 )
  195.                 g_iRoundKills[ iPlayerId ] *= 4;
  196.         }
  197.        
  198.         g_iUserData[ iPlayerId ][ iPoints ] += g_iRoundKills[ iPlayerId ];
  199.         if ( g_iRang[ iPlayerId ] < MaxRang )
  200.         {
  201.             if ( g_iUserData[ iPlayerId ][ iPoints ] >= g_iRangs[ g_iRang[ iPlayerId ] ][ iRangPoint ] )
  202.             {
  203.                 ++g_iRang[ iPlayerId ];
  204. #if defined USE_ICHAT
  205.                 if ( g_iRang[ iPlayerId ] >= MaxRang ) iChatSendCustomData( iPlayerId, 0, g_iUserData[ iPlayerId ][ sPrefix ] );
  206.                 else iChatSendCustomData( iPlayerId, 0, g_iRangs[ g_iRang[ iPlayerId ] - 1 ][ sRangName ] );
  207. #endif
  208.             }
  209.         }
  210.     }
  211.     arrayset( g_iRoundKills, 0, sizeof( g_iRoundKills ) );
  212. }
  213.  
  214. public evDeath( )
  215. {
  216.     new iKiller = read_data( 1 );
  217.     new iVictim = read_data( 2 );
  218.    
  219.     if ( ( iKiller != iVictim ) && !( get_user_team( iKiller ) == get_user_team( iVictim ) ))
  220.     {
  221.         ++g_iUserData[ iKiller ][ iKills ];
  222.         ++g_iUserData[ iVictim ][ iDeaths ];
  223.         ++g_iRoundKills[ iKiller ];
  224.     }  
  225. }
  226.  
  227. public cmdHud( iPlayerId ) { ChatColor( iPlayerId, "%L", iPlayerId, "HUD", iPlayerId, ( g_bHud[ iPlayerId ] ^= true ) ? "ON" : "OFF" ); }
  228.  
  229. public cmdRang( iPlayerId )
  230. {
  231.     static sCurRang[ 32 ], sNextRang[ 32 ], iLen = 0, sMotd[ 2048 ], iMotdLen = charsmax( sMotd ), iTime;
  232.     copy( sCurRang, charsmax( sCurRang ), g_iRangs[ g_iRang[ iPlayerId ] - 1 ][ sRangName ] );
  233.    
  234.     iTime = get_systime( ) - g_iUserData[ iPlayerId ][ iFCTime ];
  235.    
  236.     if ( g_iRang[ iPlayerId ] >= MaxRang )
  237.         format( sCurRang, charsmax( sCurRang ), "%s (%s)", sCurRang, g_iUserData[ iPlayerId ][ sPrefix ] );
  238.    
  239.     if ( g_iRang[ iPlayerId ] < MaxRang )
  240.         copy( sNextRang, charsmax( sNextRang ), g_iRangs[ g_iRang[ iPlayerId ] ][ sRangName ] );
  241.        
  242.     iLen = formatex( sMotd, iMotdLen, "<meta charset=utf-8><body bgcolor=#000000><font color=#FFB000><pre>" );
  243.     iLen += formatex( sMotd[ iLen ], iMotdLen - iLen, "%L^n", iPlayerId, "MOTD0", iTime / 3600,( iTime / 60 ) % 60, iTime % 60 );
  244.     iLen += formatex( sMotd[ iLen ], iMotdLen - iLen, "%L^n", iPlayerId, "MOTD1", g_iUserData[ iPlayerId ][ iOnlineTime ] / 3600,(g_iUserData[ iPlayerId ][ iOnlineTime ] / 60 ) % 60, g_iUserData[ iPlayerId ][ iOnlineTime ] % 60 );
  245.     iLen += formatex( sMotd[ iLen ], iMotdLen - iLen, "%L^n", iPlayerId, "MOTD2", g_iUserData[ iPlayerId ][ iOnlineTimeW ] / 3600, (g_iUserData[ iPlayerId ][ iOnlineTimeW ] / 60 ) % 60, g_iUserData[ iPlayerId ][ iOnlineTimeW ] % 60 );
  246.     iLen += formatex( sMotd[ iLen ], iMotdLen - iLen, "%L^n%L^n%L^n", iPlayerId, "MOTD3", g_iUserData[ iPlayerId ][ iKills ], iPlayerId, "MOTD4", g_iUserData[ iPlayerId ][ iDeaths ], iPlayerId, "MOTD5", g_iUserData[ iPlayerId ][ iPoints ] );
  247.    
  248.     if ( g_iRang[ iPlayerId ] >= MaxRang ) iLen += formatex( sMotd[ iLen ], iMotdLen - iLen, "%L^n^n", iPlayerId, "MOTD6", sCurRang );
  249.     else iLen += formatex( sMotd[ iLen ], iMotdLen - iLen, "%L^n%L^n^n", iPlayerId, "MOTD6", sCurRang, iPlayerId, "MOTD7", sNextRang, ( g_iRangs[ g_iRang[ iPlayerId ] ][ iRangPoint ] - g_iUserData[ iPlayerId ][ iPoints ] ) );
  250.    
  251.     iLen += formatex( sMotd[ iLen ], iMotdLen - iLen, "%L^n", iPlayerId, "MOTD8", MinOnlineTime / 3600 );
  252.     iLen += formatex( sMotd[ iLen ], iMotdLen - iLen, "%L^n", iPlayerId, "MOTD9" );
  253.     iLen += formatex( sMotd[ iLen ], iMotdLen - iLen, "%L^n", iPlayerId, "MOTD13" );
  254.     iLen += formatex( sMotd[ iLen ], iMotdLen - iLen, "%L", iPlayerId, "MOTD10" );
  255.    
  256.     show_motd( iPlayerId, sMotd, "Rangrendszer info" );
  257. }
  258.  
  259. public cmdRangs( iPlayerId )
  260. {
  261.     static sRang[ 32 ], iLen = 0, sMotd[ 2048 ], iMotdLen = charsmax( sMotd );
  262.  
  263.     iLen = formatex( sMotd, iMotdLen, "<meta charset=utf-8><style>table{color:#FFB000;} td,th{border:1px solid #666;text-align:center;}</style><body bgcolor=#000000><center><h1><font color=#FFB000>%L</h1><br><table width='400'><tr><th>%L</th><th>%L</th><tr>", iPlayerId, "MOTD11", iPlayerId, "RANG", iPlayerId, "MOTD12" );
  264.    
  265.     for ( new i; i < MaxRang; ++i )
  266.     {
  267.         copy( sRang, charsmax( sRang ), g_iRangs[ i ][ sRangName ] );
  268.        
  269.         if ( i < g_iRang[ iPlayerId ] - 1 )
  270.             iLen += formatex( sMotd[ iLen ], iMotdLen - iLen, "<tr><td>%s</td><td>0</td><tr>", sRang );
  271.         else if ( i == g_iRang[ iPlayerId ] - 1 )
  272.             iLen += formatex( sMotd[ iLen ], iMotdLen - iLen, "<tr style='background-color:#666;'><td>%s</td><td>0</td><tr>", sRang );
  273.         else
  274.             iLen += formatex( sMotd[ iLen ], iMotdLen - iLen, "<tr><td>%s</td><td>%d</td><tr>", sRang, ( g_iRangs[ i ][ iRangPoint ] - g_iUserData[ iPlayerId ][ iPoints ] ) );
  275.     }
  276.    
  277.     show_motd( iPlayerId, sMotd, "Rangrendszer info" );
  278. }
  279.  
  280. public cmdPrefix( iPlayerId )
  281. {
  282.     if ( g_iRang[ iPlayerId ] < MaxRang )
  283.     {
  284.         ChatColor( iPlayerId, "%L", iPlayerId, "PREFIX1" );
  285.         return;
  286.     }
  287.     ChatColor( iPlayerId, "%L", iPlayerId, "PREFIX2" );
  288.     client_cmd( iPlayerId, "messagemode PREFIX" );
  289. }
  290.  
  291. public cmdResetPrefix( iPlayerId, iLevel, iCid )
  292. {
  293.     if ( !cmd_access( iPlayerId, iLevel, iCid, 2 ) ) return PLUGIN_HANDLED;
  294.  
  295.     static sUser[ 32 ], iPlrId;
  296.     read_argv( 1, sUser, charsmax( sUser ) );
  297.    
  298.     iPlrId = cmd_target( iPlayerId, sUser, ( CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF ) );
  299.    
  300.     if ( !iPlrId )
  301.     {
  302.         ChatColor( iPlayerId, "Nincs %s nevezetű játékos.", sUser );
  303.         return PLUGIN_HANDLED;
  304.     }
  305.    
  306.     copy( g_iUserData[ iPlrId ][ sPrefix ], charsmax( g_iUserData[ ][ sPrefix ] ), g_iRangs[ MaxRang - 1 ][ sRangName ] );
  307.    
  308. #if defined USE_ICHAT
  309.     iChatSendCustomData( iPlrId, 0, g_iRangs[ MaxRang - 1 ][ sRangName ] );
  310. #endif
  311.    
  312.     ChatColor( iPlayerId, "Sikeresen resetelted a jatekos prefixet." );
  313.    
  314.     return PLUGIN_CONTINUE;
  315. }
  316.  
  317. public GetPrefix( iPlayerId )
  318. {
  319.     if ( g_iRang[ iPlayerId ] < MaxRang ) return PLUGIN_HANDLED;
  320.    
  321.     static sString[ 17 ], iLen;
  322.     read_args( sString, charsmax( sString ) );
  323.     remove_quotes( sString );
  324.    
  325.     replace_all( sString, charsmax( sString ), "'", "" );
  326.     replace_all( sString, charsmax( sString ), "^"", "" );
  327.     replace_all( sString, charsmax( sString ), "`", "" );
  328.    
  329.     iLen = strlen( sString );
  330.    
  331.     if ( iLen < 3 || iLen > 15 )
  332.     {
  333.         ChatColor( iPlayerId, "%L", iPlayerId, "PREFIX3" );
  334.        
  335.         return PLUGIN_HANDLED;
  336.     }
  337.     format( sString, charsmax( sString ), "%s", sString );
  338.     copy( g_iUserData[ iPlayerId ][ sPrefix ], charsmax( g_iUserData[ ][ sPrefix ] ), sString );
  339. #if defined USE_ICHAT  
  340.     iChatSendCustomData( iPlayerId, 0, sString );
  341. #endif
  342.     ChatColor( iPlayerId, "%L", iPlayerId, "PREFIX4", sString );
  343.    
  344.     return PLUGIN_CONTINUE;
  345. }
  346.  
  347. public fwClientUserInfoChanged( iPlayerId, iBuffer )
  348. {
  349.     if ( !is_user_connected( iPlayerId ) ) return FMRES_IGNORED;
  350.    
  351.     static sOldName[ 32 ], sNewName[ 32 ];
  352.     get_user_name( iPlayerId, sOldName, charsmax( sOldName ) );
  353.    
  354.     engfunc( EngFunc_InfoKeyValue, iBuffer, "name", sNewName, charsmax( sNewName ) );
  355.    
  356.     if ( equal( sNewName, sOldName ) ) return FMRES_IGNORED;
  357.    
  358.     engfunc( EngFunc_SetClientKeyValue, iPlayerId, iBuffer, "name", sOldName );
  359.     client_cmd( iPlayerId, "name ^"%s^"; setinfo name ^"%s^"", sOldName, sOldName );
  360.    
  361.     return FMRES_SUPERCEDE;
  362. }
  363.  
  364. public OnlineTimeCounter( iPlayerId )
  365. {
  366.     ++g_iUserData[ iPlayerId ][ iOnlineTime ];
  367.     ++g_iUserData[ iPlayerId ][ iOnlineTimeW ];
  368.    
  369.     if ( g_bHud[ iPlayerId ] )
  370.     {
  371.         if ( !is_user_alive( iPlayerId ) )
  372.         {
  373.             set_hudmessage( 0, 255, 0, 0.01, 0.20, 0, 6.0, 0.9 );
  374.             new iTarget = entity_get_int( iPlayerId, EV_INT_iuser2 );
  375.      
  376.             if ( iTarget != 0 )
  377.             {
  378.                 show_hudmessage( iPlayerId, "%L^n%L^n%L^n%L^n%L^n%L^n%L", iPlayerId, "HUD1",
  379.                 g_sUsername[ iTarget ], iPlayerId, "HUD2",
  380.                 g_iUserData[ iTarget ][ iOnlineTime ] / 3600,( g_iUserData[ iTarget ][ iOnlineTime ] / 60 ) % 60, g_iUserData[ iTarget ][ iOnlineTime ] % 60, iPlayerId, "HUD3",
  381.                 g_iUserData[ iTarget ][ iOnlineTimeW ] / 3600, ( g_iUserData[ iTarget ][ iOnlineTimeW ] / 60 ) % 60, g_iUserData[ iTarget ][ iOnlineTimeW ] % 60, iPlayerId, "HUD4",
  382.                 g_iUserData[ iTarget ][ iKills ], iPlayerId, "HUD5", g_iUserData[ iTarget ][ iDeaths ], iPlayerId, "HUD6", g_iRangs[ g_iRang[ iTarget ] - 1 ][ sRangName ], g_iUserData[ iTarget ][ iPoints ], iPlayerId, "MOTD10" );
  383.             }
  384.             else
  385.             {
  386.                 show_hudmessage( iPlayerId, "%L^n%L^n%L^n%L^n%L^n%L^n%L", iPlayerId, "HUD7", iPlayerId, "HUD2",
  387.                 g_iUserData[ iPlayerId ][ iOnlineTime ] / 3600,( g_iUserData[ iPlayerId ][ iOnlineTime ] / 60 ) % 60, g_iUserData[ iPlayerId ][ iOnlineTime ] % 60, iPlayerId, "HUD3",
  388.                 g_iUserData[ iPlayerId ][ iOnlineTimeW ] / 3600, ( g_iUserData[ iPlayerId ][ iOnlineTimeW ] / 60 ) % 60, g_iUserData[ iPlayerId ][ iOnlineTimeW ] % 60, iPlayerId, "HUD4",
  389.                 g_iUserData[ iPlayerId ][ iKills ], iPlayerId, "HUD5", g_iUserData[ iPlayerId ][ iDeaths ], iPlayerId, "HUD6", g_iRangs[ g_iRang[ iPlayerId ] - 1 ][ sRangName ], g_iUserData[ iPlayerId ][ iPoints ], iPlayerId, "MOTD10" );
  390.             }
  391.         }
  392.     }
  393. }
  394.  
  395. public Save( iNum )
  396. {
  397.     new sNewLine[ 16 ];
  398.    
  399.     formatex( sNewLine, charsmax( sNewLine ), "^"%d^"", iNum );
  400.     write_file( "addons/amxmodx/configs/rangsys.ini", sNewLine, 0 );
  401. }
  402.  
  403. public Load( )
  404. {
  405.     new pFile = fopen( "addons/amxmodx/configs/rangsys.ini", "rt" );
  406.    
  407.     if ( pFile )
  408.     {
  409.         new sLine[ 16 ], sTime[ 64 ], iNum;
  410.         fgets( pFile, sLine, charsmax( sLine ) );
  411.        
  412.         trim( sLine );
  413.         remove_quotes( sLine );
  414.        
  415.         iNum = str_to_num( sLine );
  416.        
  417.         get_time( "%a", sTime, charsmax( sTime ) );
  418.        
  419.         if ( equal( sTime, "Mon" ) )
  420.         {
  421.             if ( iNum == 0 )
  422.             {
  423.                 SaveDatas( 0, 4 );
  424.                 Save( 1 );
  425.                 set_task( 2.5, "ResetOTimeW" );
  426.             }
  427.         }
  428.         else { if ( iNum == 1 ) Save( 0 ); }
  429.        
  430.         fclose(pFile);
  431.     }
  432.     else Save( 0 );
  433. }
  434.  
  435. public ResetOTimeW( ) { SaveDatas( 0, 3 ); }
  436.  
  437. public client_putinserver( iPlayerId )
  438. {
  439.     if ( is_user_bot( iPlayerId ) || is_user_hltv( iPlayerId ) ) return;
  440.    
  441.     g_iRoundKills[ iPlayerId ] = 0;
  442.     g_bHud[ iPlayerId ] = true;
  443.     g_iRang[ iPlayerId ] = 1;
  444.    
  445.     arrayset( g_iUserData[ iPlayerId ], 0, sizeof( g_iUserData[ ] ) );
  446.     copy( g_iUserData[ iPlayerId ][ sPrefix ], charsmax( g_iUserData[ ][ sPrefix ] ), g_iRangs[ MaxRang - 1 ][ sRangName ] );
  447. #if defined USE_ICHAT
  448.     iChatSendCustomData( iPlayerId, 0, g_iRangs[ 0 ][ sRangName ] );
  449. #endif 
  450.     get_user_name( iPlayerId, g_sUsername[ iPlayerId ], charsmax( g_sUsername[ ] ) );
  451.     get_user_authid( iPlayerId, g_sAuthID[ iPlayerId ], charsmax( g_sAuthID[ ] ) );
  452.    
  453.     LoadDatas( iPlayerId );
  454.     set_task( 1.0, "OnlineTimeCounter", iPlayerId, _, _, "b" );
  455. }
  456.  
  457. public client_disconnect( iPlayerId ) { if ( task_exists( iPlayerId ) ) remove_task( iPlayerId ); SaveDatas( iPlayerId, 2 ); }
  458. public plugin_end( ) { SQL_FreeHandle( g_iSqlTuple ); }
  459.  
  460. stock ChatColor( iPlayerId, const sMessage[ ], any:... )
  461. {
  462.     static iPlrNum, iPlayers[ 32 ], sMsg[ 256 ], iIdMsg, iMsgLen = charsmax( sMsg );
  463.    
  464.     vformat( sMsg, iMsgLen, sMessage, 3 );
  465.     format( sMsg, iMsgLen, "!g[%s]!y %s", g_sPrefix, sMsg );
  466.    
  467.     replace_all( sMsg, iMsgLen, "!g", "^4" );
  468.     replace_all( sMsg, iMsgLen, "!y", "^1" );
  469.     replace_all( sMsg, iMsgLen, "!t", "^3" );
  470.  
  471.     if ( !iIdMsg ) iIdMsg = get_user_msgid( "SayText" );
  472.  
  473.     if ( iPlayerId )
  474.     {
  475.         iPlayers[ 0 ] = iPlayerId;
  476.         iPlrNum = 1;
  477.     }
  478.     else get_players( iPlayers, iPlrNum, "ch" );
  479.  
  480.     for ( new i, iPId; i < iPlrNum; ++i )
  481.     {
  482.         iPId = iPlayers[ i ];
  483.        
  484.         if ( !is_user_connected( iPId ) ) continue;
  485.        
  486.         message_begin( MSG_ONE, iIdMsg, _, iPId );
  487.         write_byte( iPId );
  488.         write_string( sMsg );
  489.         message_end( );
  490.     }
  491. }
  492. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  493. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
  494. */


Ichat
  1. #include < amxmodx >
  2. #include < amxmisc >
  3. #include < hamsandwich >
  4. #include < fakemeta >
  5.  
  6. #pragma semicolon 1
  7.  
  8. #define ICHAT_VERSION "2.3.3"
  9. #define ICHAT_HOST "forums.alliedmods.net"
  10. #define ICHAT_THREAD "showthread.php?t=173113"
  11.  
  12. #define USE_TEAM_FIX
  13.  
  14. #define ICHAT_MAX_PLAYERS 32
  15. #define ICHAT_MAX_SAID_LEN 128
  16. #define ICHAT_MAX_MSG_LEN 496
  17. #define TASK_NOTIFY 5987
  18. #define NOTIFY_TASK_TIME 15.0
  19. #define FORMAT_MAX_SIZE 264
  20. #define FORMAT_SMALL_MAX_SIZE 36
  21. #define MAX_CUSTOM_TAGS 2
  22. #define MAX_CUSTOM_TAGS_SIZE 24
  23. #define TEAM_AA_1 0
  24. #define TEAM_AA_2 3
  25.  
  26. #define ICHAT_RETURN PLUGIN_HANDLED
  27.  
  28. #if defined USE_TEAM_FIX
  29.     #define TeamInfo_PlayerID 1
  30.     #define XO_PLAYER 5
  31.     #define m_iTeam 114
  32.     #define m_iDeaths 444
  33.     new gMsgScoreInfo;
  34. #endif
  35.  
  36. enum _:formats
  37. {
  38.     formatAllDefAlive = 0,
  39.     formatAllAdminAlive,
  40.     formatAllVIPAlive,
  41.     formatTeamDefAlive,
  42.     formatTeamAdminAlive,
  43.     formatTeamVIPAlive,
  44.     formatAllDefDead,
  45.     formatAllAdminDead,
  46.     formatAllVIPDead,
  47.     formatTeamDefDead,
  48.     formatTeamAdminDead,
  49.     formatTeamVIPDead,
  50.     formatMeMessage,
  51.     formatMeCommand,
  52.     formatClearCommand,
  53.     formatMax
  54. };
  55.  
  56. enum _:formatTypes { formatDefAlive = 0, formatDefDead, formatTeamAlive, formatTeamDead, formatTypesMax };
  57. enum _:messageType { messageToAll = 0, messageToTeam };
  58. enum _:formatMode { USER = 0, ADMIN, VIP, CUSTOM };
  59. enum _:teamTags { NONE = 0, T, CT, SPEC };
  60. enum _:deadOrAlive { DEAD = 0, ALIVE };
  61. enum _:usersFlags { FLAG_RELOAD = 0, FLAG_SPY, FLAG_ADMIN, FLAG_VIP, FLAG_CHAT, FLAG_SEE_CHAT };
  62.  
  63. new gszChatFormats[ formatMax ][ FORMAT_MAX_SIZE ];
  64. new gszFormatTeamTags[ SPEC + 1 ][ ALIVE + 1 ][ FORMAT_SMALL_MAX_SIZE ];
  65. new gszAccesFlags[ FLAG_SEE_CHAT + 1 ][ 26 ];
  66. new gszCustomTags[ ICHAT_MAX_PLAYERS + 1 ][ MAX_CUSTOM_TAGS ][ MAX_CUSTOM_TAGS_SIZE ];
  67. new gszAuthid[ ICHAT_MAX_PLAYERS + 1 ][ 35 ];
  68.  
  69. new Trie:gtCustomFormats[ formatTypesMax ];
  70. new Trie:gtCustomFormatEnabled[ formatTypesMax ];
  71.  
  72. new giRemoveOnSlash;
  73. new giUserNotify;
  74. new giAdminsSpy;
  75. new giUseCustomColor;
  76. new giRemoveNameChanged;
  77. new giRed;
  78. new giGreen;
  79. new giBlue;
  80. new giPunishment;
  81. new giAllTalk;
  82. new giUseCustomTags;
  83. new giUseCustomFormats;
  84. new giForceSimplePrint;
  85. new giMustBeUpdated;
  86. new giAllowStop;
  87. new giAdminOverrides;
  88. new Float:gFlPrintRadiusAll;
  89. new Float:gFlPrintRadiusTeam;
  90.  
  91. new giCheckArray[ 3 ][ ICHAT_MAX_PLAYERS + 1 ];
  92.  
  93. #define SetUserFirstSpawn(%1)   giCheckArray[0][%1]=1
  94. #define ClearUserFirstSpawn(%1) giCheckArray[0][%1]=0
  95. #define IsFirstSpawn(%1)        giCheckArray[0][%1]
  96.  
  97. #define EnableUserChat(%1)      giCheckArray[1][%1]=1
  98. #define DisableUserChat(%1)     giCheckArray[1][%1]=0
  99. #define IsUserChatEnabled(%1)   giCheckArray[1][%1]
  100.  
  101. #define SetUserVip(%1)          giCheckArray[2][%1]=1
  102. #define ClearUserVip(%1)        giCheckArray[2][%1]=0
  103. #define IsUserVip(%1)           giCheckArray[2][%1]
  104.  
  105. new giLocation;
  106. new gszLocation[ ICHAT_MAX_PLAYERS + 1 ][ FORMAT_SMALL_MAX_SIZE ];
  107.  
  108. new gMsgSayText;
  109. new gMsgTeamInfo;
  110.  
  111. new giPluginIndex;
  112.  
  113. public plugin_init( )
  114. {
  115.     giPluginIndex = register_plugin( "iChat", ICHAT_VERSION, "Kidev" );
  116.  
  117.     iChatCheckErrors( );
  118.  
  119.     register_dictionary( "iChat.txt" );
  120.     register_dictionary( "common.txt" );
  121.  
  122.     gMsgSayText = get_user_msgid( "SayText" );
  123.     gMsgTeamInfo = get_user_msgid( "TeamInfo" );
  124.  
  125.     #if defined USE_TEAM_FIX
  126.         gMsgScoreInfo = get_user_msgid( "ScoreInfo" );
  127.     #endif
  128.  
  129.     register_message( gMsgSayText, "messageSayText" );
  130.  
  131.     RegisterHam( Ham_Spawn, "player", "hamPlayerSpawnPost", 1 );
  132.  
  133.     register_concmd( "amx_reload_ichat", "iChatReloadConfig" );
  134.  
  135.     register_clcmd( "say", "iChatHookSay", 0 );
  136.     register_clcmd( "say_team", "iChatHookSay", 1 );
  137.  
  138.     new szModShortName[ 7 ];
  139.     if ( get_modname( szModShortName, charsmax( szModShortName ) ) == 5
  140.     && equal( szModShortName, "czero" ) )
  141.     {
  142.         register_event( "Location", "eventLocation", "be" );
  143.     }
  144.  
  145.     register_event( "TeamInfo", "eventTeamInfoAll", "a" );
  146.  
  147.     new iSutppCvar = register_cvar( "ichat_version", ICHAT_VERSION, FCVAR_SERVER | FCVAR_EXTDLL | FCVAR_SPONLY );
  148.     set_pcvar_string( iSutppCvar, ICHAT_VERSION );
  149.  
  150.     new iFormatType;
  151.     for ( iFormatType = 0; iFormatType < formatTypesMax; iFormatType++ )
  152.     {
  153.         gtCustomFormats[ iFormatType ] = TrieCreate( );
  154.         gtCustomFormatEnabled[ iFormatType ] = TrieCreate( );
  155.     }
  156.     iChatConfig( );
  157. }
  158.  
  159. public plugin_unpause( )
  160. {
  161.     iChatPause( 1, "ad", "Hiba: Valaki megprobalta leallitani az iChatet. iChat leallt.", "" );
  162. }
  163.  
  164. public iChatPause( iForcePause, const szFlags[ ], const szError[ ], const szWarning[ ] )
  165. {
  166.     if ( giAllowStop || iForcePause )
  167.     {
  168.         log_amx( szError );
  169.         pause( szFlags );
  170.     }
  171.     else
  172.     {
  173.         log_amx( szWarning );
  174.     }
  175. }
  176.  
  177. public iChatCheckErrors( )
  178. {
  179.     new iPluginsNum;
  180.     if ( ( giPluginIndex + 1 ) < ( iPluginsNum = get_pluginsnum( ) ) )
  181.     {
  182.         log_amx( "The following plugins are called after iChat. You have to fix this." );
  183.         new i, szFileName[ 15 ], szStatus[ 15 ];
  184.         for ( i = ( giPluginIndex + 1 ); i < iPluginsNum; i++ )
  185.         {
  186.             if ( get_plugin( i, szFileName, charsmax( szFileName ), _, _, _, _, _, _, szStatus, charsmax( szStatus ) ) >= 0 )
  187.             {
  188.                 log_amx( "[%d] %s is %s", ( i + 1 ), szFileName, szStatus );
  189.             }
  190.             else break;
  191.         }
  192.         iChatPause( 0, "ad", "HIBA: iChat nem az utolso a plugins.ini-ben. iChat leallt.", "FIGYELEM: Az iChat nem az utolso plugin a plugins.ini-ben." );
  193.     }
  194.     if ( is_plugin_loaded( "Admin Chat Colors" ) != -1 )
  195.     {
  196.         log_amx( "FIGYELEM: iChat ezt a plugint talalta 'Admin Chat Colors' ami eppen fut. A plugin leallitva." );
  197.         pause( "acd", "Admin Chat Colors" );
  198.     }
  199. }
  200.  
  201. public iChatCheckUpdates( ) // Being worked on
  202. {
  203.     new iOutdated = 0;
  204.     if ( iOutdated )
  205.     {
  206.         log_amx( "FIGYELEM: Az iChat egy regebbi verziojat hasznalod. Toltsd le a frissitest itt http://%s/%s", ICHAT_HOST, ICHAT_THREAD );
  207.         giMustBeUpdated = 1;
  208.     }
  209. }
  210.  
  211. public plugin_natives( )
  212. {
  213.     register_library( "iChat" );
  214.     register_native( "iChatSendCustomData", "iChatSendCustomData" );
  215.     register_native( "iChatVipAction", "iChatVipAction" );
  216. }
  217.  
  218. public iChatReloadConfig( id )
  219. {
  220.     if ( !has_flag( id, gszAccesFlags[ FLAG_RELOAD ] ) && gszAccesFlags[ FLAG_RELOAD ][ 0 ] )
  221.     {
  222.         client_print( id, print_console, "%L", id, "NO_ACC_COM" );
  223.         return PLUGIN_HANDLED;
  224.     }
  225.     iChatConfig( );
  226.     client_print( id, print_console, "[iChat] %L", id, "ICHAT_RELOADED" );
  227.     return PLUGIN_CONTINUE;
  228. }
  229.  
  230. public iChatConfig( )
  231. {
  232.     new szCfgFile[ 128 ];
  233.     get_configsdir( szCfgFile, charsmax( szCfgFile ) );
  234.     formatex( szCfgFile, charsmax( szCfgFile ), "%s/ichat.cfg", szCfgFile );
  235.  
  236.     new iCfgFileHandle = fopen( szCfgFile, "rt" );
  237.     if ( !iCfgFileHandle )
  238.     {
  239.         set_fail_state( "No configuration file" );
  240.         return;
  241.     }
  242.  
  243.     new szLineData[ 364 ], szLineKey[ 96 ], szLineValue[ 264 ];
  244.     while ( !feof( iCfgFileHandle ) )
  245.     {
  246.         fgets( iCfgFileHandle, szLineData, charsmax( szLineData ) );
  247.         trim( szLineData );
  248.  
  249.         if ( szLineData[ 0 ] == ';' || szLineData[ 0 ] == '#' || ( szLineData[ 0 ] == '/' && szLineData[ 1 ] == '/' ) || !szLineData[ 0 ] )
  250.         {
  251.             continue;
  252.         }
  253.  
  254.         parse( szLineData, szLineKey, charsmax( szLineKey ), szLineValue, charsmax( szLineValue ) );
  255.  
  256.         switch ( szLineKey[ 0 ] )
  257.         {
  258.             case 'F':
  259.             {
  260.                 switch ( szLineKey[ 7 ] )
  261.                 {
  262.                     case 'D':
  263.                     {
  264.                         switch ( szLineKey[ 11 ] )
  265.                         {
  266.                             case 'A':
  267.                             {
  268.                                 if ( equal( szLineKey, "FORMAT_DEF_ALIVE" ) )
  269.                                 {
  270.                                     copy( gszChatFormats[ formatAllDefAlive ], charsmax( gszChatFormats[ ] ), szLineValue );
  271.                                 }
  272.                             }
  273.                             case 'D':
  274.                             {
  275.                                 if ( equal( szLineKey, "FORMAT_DEF_DEAD" ) )
  276.                                 {
  277.                                     copy( gszChatFormats[ formatAllDefDead ], charsmax( gszChatFormats[ ] ), szLineValue );
  278.                                 }
  279.                             }
  280.                         }
  281.                     }
  282.                     case 'A':
  283.                     {
  284.                         switch ( szLineKey[ 13 ] )
  285.                         {
  286.                             case 'A':
  287.                             {
  288.                                 if ( equal( szLineKey, "FORMAT_ADMIN_ALIVE" ) )
  289.                                 {
  290.                                     copy( gszChatFormats[ formatAllAdminAlive ], charsmax( gszChatFormats[ ] ), szLineValue );
  291.                                 }
  292.                             }
  293.                             case 'D':
  294.                             {
  295.                                 if ( equal( szLineKey, "FORMAT_ADMIN_DEAD" ) )
  296.                                 {
  297.                                     copy( gszChatFormats[ formatAllAdminDead ], charsmax( gszChatFormats[ ] ), szLineValue );
  298.                                 }
  299.                             }
  300.                         }
  301.                     }
  302.                     case 'V':
  303.                     {
  304.                         switch ( szLineKey[ 11 ] )
  305.                         {
  306.                             case 'A':
  307.                             {
  308.                                 if ( equal( szLineKey, "FORMAT_VIP_ALIVE" ) )
  309.                                 {
  310.                                     copy( gszChatFormats[ formatAllVIPAlive ], charsmax( gszChatFormats[ ] ), szLineValue );
  311.                                 }
  312.                             }
  313.                             case 'D':
  314.                             {
  315.                                 if ( equal( szLineKey, "FORMAT_VIP_DEAD" ) )
  316.                                 {
  317.                                     copy( gszChatFormats[ formatAllVIPDead ], charsmax( gszChatFormats[ ] ), szLineValue );
  318.                                 }
  319.                             }
  320.                         }
  321.                     }
  322.                     case 'T':
  323.                     {
  324.                         switch ( szLineKey[ 12 ] )
  325.                         {
  326.                             case 'D':
  327.                             {
  328.                                 switch ( szLineKey[ 16 ] )
  329.                                 {
  330.                                     case 'A':
  331.                                     {
  332.                                         if ( equal( szLineKey, "FORMAT_TEAM_DEF_ALIVE" ) )
  333.                                         {
  334.                                             copy( gszChatFormats[ formatTeamDefAlive ], charsmax( gszChatFormats[ ] ), szLineValue );
  335.                                         }
  336.                                     }
  337.                                     case 'D':
  338.                                     {
  339.                                         if ( equal( szLineKey, "FORMAT_TEAM_DEF_DEAD" ) )
  340.                                         {
  341.                                             copy( gszChatFormats[ formatTeamDefDead ], charsmax( gszChatFormats[ ] ), szLineValue );
  342.                                         }
  343.                                     }
  344.                                 }
  345.                             }
  346.                             case 'A':
  347.                             {
  348.                                 switch ( szLineKey[ 18 ] )
  349.                                 {
  350.                                     case 'A':
  351.                                     {
  352.                                         if ( equal( szLineKey, "FORMAT_TEAM_ADMIN_ALIVE" ) )
  353.                                         {
  354.                                             copy( gszChatFormats[ formatTeamAdminAlive ], charsmax( gszChatFormats[ ] ), szLineValue );
  355.                                         }
  356.                                     }
  357.                                     case 'D':
  358.                                     {
  359.                                         if ( equal( szLineKey, "FORMAT_TEAM_ADMIN_DEAD" ) )
  360.                                         {
  361.                                             copy( gszChatFormats[ formatTeamAdminDead ], charsmax( gszChatFormats[ ] ), szLineValue );
  362.                                         }
  363.                                     }
  364.                                 }
  365.                             }
  366.                             case 'V':
  367.                             {
  368.                                 switch ( szLineKey[ 16 ] )
  369.                                 {
  370.                                     case 'A':
  371.                                     {
  372.                                         if ( equal( szLineKey, "FORMAT_TEAM_VIP_ALIVE" ) )
  373.                                         {
  374.                                             copy( gszChatFormats[ formatTeamVIPAlive ], charsmax( gszChatFormats[ ] ), szLineValue );
  375.                                         }
  376.                                     }
  377.                                     case 'D':
  378.                                     {
  379.                                         if ( equal( szLineKey, "FORMAT_TEAM_VIP_DEAD" ) )
  380.                                         {
  381.                                             copy( gszChatFormats[ formatTeamVIPDead ], charsmax( gszChatFormats[ ] ), szLineValue );
  382.                                         }
  383.                                     }
  384.                                 }
  385.                             }
  386.                         }
  387.                     }
  388.                     case 'M':
  389.                     {
  390.                         switch ( szLineKey[ 10 ] )
  391.                         {
  392.                             case 'M':
  393.                             {
  394.                                 if ( equal( szLineKey, "FORMAT_ME_MESSAGE" ) )
  395.                                 {
  396.                                     copy( gszChatFormats[ formatMeMessage ], charsmax( gszChatFormats[ ] ), szLineValue );
  397.                                 }
  398.                             }
  399.                             case 'C':
  400.                             {
  401.                                 if ( equal( szLineKey, "FORMAT_ME_COMMAND" ) )
  402.                                 {
  403.                                     copy( gszChatFormats[ formatMeCommand ], charsmax( gszChatFormats[ ] ), szLineValue );
  404.                                     add( gszChatFormats[ formatMeCommand ], charsmax( gszChatFormats[ ] ),  " " );
  405.                                 }
  406.                             }
  407.                         }
  408.                     }
  409.                 }
  410.             }
  411.             case 'C':
  412.             {
  413.                 switch ( szLineKey[ 5 ] )
  414.                 {
  415.                     case 'C':
  416.                     {
  417.                         switch ( szLineKey[ 11 ] )
  418.                         {
  419.                             case 'R':
  420.                             {
  421.                                 if ( equal( szLineKey, "CHAT_CLCMD_REMOVE" ) )
  422.                                 {
  423.                                     giRemoveOnSlash = str_to_num( szLineValue );
  424.                                 }
  425.                             }
  426.                             case 'C':
  427.                             {
  428.                                 if ( equal( szLineKey, "CHAT_CLCMD_CLEAR" ) )
  429.                                 {
  430.                                     copy( gszChatFormats[ formatClearCommand ], charsmax( gszChatFormats[ ] ), szLineValue );
  431.                                 }
  432.                             }
  433.                             case 'U':
  434.                             {
  435.                                 if ( equal( szLineKey, "CHAT_CHECK_UPDATES" ) )
  436.                                 {
  437.                                     if ( str_to_num( szLineValue ) == 1 )
  438.                                     {
  439.                                         giMustBeUpdated = 0;
  440.                                         iChatCheckUpdates( );
  441.                                     }
  442.                                 }
  443.                             }
  444.                             case 'O':
  445.                             {
  446.                                 if ( equal( szLineKey, "CHAT_CAN_STOP_ITSELF" ) )
  447.                                 {
  448.                                     giAllowStop = str_to_num( szLineValue );
  449.                                 }
  450.                             }
  451.                         }
  452.                     }
  453.                     case 'F':
  454.                     {
  455.                         switch ( szLineKey[ 10 ] )
  456.                         {
  457.                             case 'R':
  458.                             {
  459.                                 if ( equal( szLineKey, "CHAT_FLAG_RELOAD" ) )
  460.                                 {
  461.                                     if ( equal( szLineValue, "ALL" ) )
  462.                                     {
  463.                                         gszAccesFlags[ FLAG_RELOAD ][ 0 ] = 0;
  464.                                     }
  465.                                     else
  466.                                     {
  467.                                         copy( gszAccesFlags[ FLAG_RELOAD ], charsmax( gszAccesFlags[ ] ), szLineValue );
  468.                                     }
  469.                                 }
  470.                             }
  471.                             case 'S':
  472.                             {
  473.                                 switch ( szLineKey[ 11 ] )
  474.                                 {
  475.                                     case 'P':
  476.                                     {
  477.                                         if ( equal( szLineKey, "CHAT_FLAG_SPY" ) )
  478.                                         {
  479.                                             if ( equal( szLineValue, "ALL" ) )
  480.                                             {
  481.                                                 gszAccesFlags[ FLAG_SPY ][ 0 ] = 0;
  482.                                             }
  483.                                             else
  484.                                             {
  485.                                                 copy( gszAccesFlags[ FLAG_SPY ], charsmax( gszAccesFlags[ ] ), szLineValue );
  486.                                             }
  487.                                         }
  488.                                     }
  489.                                     case 'E':
  490.                                     {
  491.                                         if ( equal( szLineKey, "CHAT_FLAG_SEE_CHAT" ) )
  492.                                         {
  493.                                             if ( equal( szLineValue, "ALL" ) )
  494.                                             {
  495.                                                 gszAccesFlags[ FLAG_SEE_CHAT ][ 0 ] = 0;
  496.                                             }
  497.                                             else
  498.                                             {
  499.                                                 copy( gszAccesFlags[ FLAG_SEE_CHAT ], charsmax( gszAccesFlags[ ] ), szLineValue );
  500.                                             }
  501.                                         }
  502.                                     }
  503.                                 }
  504.                             }
  505.                             case 'A':
  506.                             {
  507.                                 if ( equal( szLineKey, "CHAT_FLAG_ADMIN" ) )
  508.                                 {
  509.                                     if ( equal( szLineValue, "ALL" ) )
  510.                                     {
  511.                                         gszAccesFlags[ FLAG_ADMIN ][ 0 ] = 0;
  512.                                     }
  513.                                     else
  514.                                     {
  515.                                         copy( gszAccesFlags[ FLAG_ADMIN ], charsmax( gszAccesFlags[ ] ), szLineValue );
  516.                                     }
  517.                                 }
  518.                             }
  519.                             case 'V':
  520.                             {
  521.                                 if ( equal( szLineKey, "CHAT_FLAG_VIP" ) )
  522.                                 {
  523.                                     if ( equal( szLineValue, "ALL" ) )
  524.                                     {
  525.                                         gszAccesFlags[ FLAG_VIP ][ 0 ] = 0;
  526.                                     }
  527.                                     else
  528.                                     {
  529.                                         copy( gszAccesFlags[ FLAG_VIP ], charsmax( gszAccesFlags[ ] ), szLineValue );
  530.                                     }
  531.                                 }
  532.                             }
  533.                             case 'C':
  534.                             {
  535.                                 if ( equal( szLineKey, "CHAT_FLAG_CHAT" ) )
  536.                                 {
  537.                                     if ( equal( szLineValue, "ALL" ) )
  538.                                     {
  539.                                         gszAccesFlags[ FLAG_CHAT ][ 0 ] = 0;
  540.                                     }
  541.                                     else
  542.                                     {
  543.                                         copy( gszAccesFlags[ FLAG_CHAT ], charsmax( gszAccesFlags[ ] ), szLineValue );
  544.                                     }
  545.                                 }
  546.                             }
  547.                             case 'L':
  548.                             {
  549.                                 if ( equal( szLineKey, "CHAT_NO_COLORS" ) )
  550.                                 {
  551.                                     giForceSimplePrint = str_to_num( szLineValue );
  552.                                 }
  553.                             }
  554.                         }
  555.                     }
  556.                     case 'A':
  557.                     {
  558.                         switch ( szLineKey[ 11 ] )
  559.                         {
  560.                             case 'S':
  561.                             {
  562.                                 if ( equal( szLineKey, "CHAT_ADMIN_SPY" ) )
  563.                                 {
  564.                                     giAdminsSpy = str_to_num( szLineValue );
  565.                                 }
  566.                             }
  567.                             case 'L':
  568.                             {
  569.                                 if ( equal( szLineKey, "CHAT_ALL_TALK" ) )
  570.                                 {
  571.                                     giAllTalk = str_to_num( szLineValue );
  572.                                 }
  573.                             }
  574.                             case 'O':
  575.                             {
  576.                                 if ( equal( szLineKey, "CHAT_ADMIN_OVERRIDES" ) )
  577.                                 {
  578.                                     giAdminOverrides = str_to_num( szLineValue );
  579.                                 }
  580.                             }
  581.                         }
  582.                     }
  583.                     case 'D':
  584.                     {
  585.                         if ( equal( szLineKey, "CHAT_DEFAULT_COLOR" ) )
  586.                         {
  587.                             new iColor = str_to_num( szLineValue );
  588.                             if ( iColor < 0 || iColor > 255255255 )
  589.                             {
  590.                                 giUseCustomColor = 0;
  591.                             }
  592.                             else
  593.                             {
  594.                                 giUseCustomColor = 1;
  595.                                 giRed = iColor / 1000000;
  596.                                 iColor %= 1000000;
  597.                                 giGreen = iColor / 1000;
  598.                                 giBlue = iColor % 1000;
  599.                             }
  600.                         }
  601.                     }
  602.                     case 'P':
  603.                     {
  604.                         if ( equal( szLineKey, "CHAT_PUNISHMENT" ) )
  605.                         {
  606.                             giPunishment = str_to_num( szLineValue );
  607.                             if ( giPunishment > 1 || giPunishment < 0 )
  608.                             {
  609.                                 giPunishment = 1;
  610.                             }
  611.                         }
  612.                     }
  613.                     case 'N':
  614.                     {
  615.                         if ( equal( szLineKey, "CHAT_NOTIFY" ) )
  616.                         {
  617.                             giUserNotify = str_to_num( szLineValue );
  618.                         }
  619.                     }
  620.                     case 'R':
  621.                     {
  622.                         switch ( szLineKey[ 12 ] )
  623.                         {
  624.                             case 'A':
  625.                             {
  626.                                 if ( equal( szLineKey, "CHAT_RADIUS_ALL" ) )
  627.                                 {
  628.                                     gFlPrintRadiusAll = str_to_float( szLineValue );
  629.                                 }
  630.                             }
  631.                             case 'T':
  632.                             {
  633.                                 if ( equal( szLineKey, "CHAT_RADIUS_TEAM" ) )
  634.                                 {
  635.                                     gFlPrintRadiusTeam = str_to_float( szLineValue );
  636.                                 }
  637.                             }
  638.                             case 'C':
  639.                             {
  640.                                 if ( equal( szLineKey, "CHAT_REMOVE_CHANGE_NAME" ) )
  641.                                 {
  642.                                     giRemoveNameChanged = str_to_num( szLineValue );
  643.                                 }
  644.                             }
  645.                         }
  646.                     }
  647.                     case 'T':
  648.                     {
  649.                         switch ( szLineKey[ 14 ] )
  650.                         {
  651.                             case '1':
  652.                             {
  653.                                 switch ( szLineKey[ 16 ] )
  654.                                 {
  655.                                     case 'A':
  656.                                     {
  657.                                         if ( equal( szLineKey, "CHAT_TEAM_TAG_1_A" ) )
  658.                                         {
  659.                                             copy( gszFormatTeamTags[ T ][ ALIVE ], charsmax( gszFormatTeamTags[ ][ ] ), szLineValue );
  660.                                         }
  661.                                     }
  662.                                     case 'D':
  663.                                     {
  664.                                         if ( equal( szLineKey, "CHAT_TEAM_TAG_1_D" ) )
  665.                                         {
  666.                                             copy( gszFormatTeamTags[ T ][ DEAD ], charsmax( gszFormatTeamTags[ ][ ] ), szLineValue );
  667.                                         }
  668.                                     }
  669.                                 }
  670.                             }
  671.                             case '2':
  672.                             {
  673.                                 switch ( szLineKey[ 16 ] )
  674.                                 {
  675.                                     case 'A':
  676.                                     {
  677.                                         if ( equal( szLineKey, "CHAT_TEAM_TAG_2_A" ) )
  678.                                         {
  679.                                             copy( gszFormatTeamTags[ CT ][ ALIVE ], charsmax( gszFormatTeamTags[ ][ ] ), szLineValue );
  680.                                         }
  681.                                     }
  682.                                     case 'D':
  683.                                     {
  684.                                         if ( equal( szLineKey, "CHAT_TEAM_TAG_2_D" ) )
  685.                                         {
  686.                                             copy( gszFormatTeamTags[ CT ][ DEAD ], charsmax( gszFormatTeamTags[ ][ ] ), szLineValue );
  687.                                         }
  688.                                     }
  689.                                 }
  690.                             }
  691.                             case '3':
  692.                             {
  693.                                 if ( equal( szLineKey, "CHAT_TEAM_TAG_3" ) )
  694.                                 {
  695.                                     copy( gszFormatTeamTags[ SPEC ][ DEAD ], charsmax( gszFormatTeamTags[ ][ ] ), szLineValue );
  696.                                 }
  697.                             }
  698.                         }
  699.                     }
  700.                     case 'U':
  701.                     {
  702.                         switch ( szLineKey[ 16 ] )
  703.                         {
  704.                             case 'T':
  705.                             {
  706.                                 if ( equal( szLineKey, "CHAT_USE_CUSTOM_TAGS" ) )
  707.                                 {
  708.                                     giUseCustomTags = str_to_num( szLineValue );
  709.                                 }
  710.                             }
  711.                             case 'F':
  712.                             {
  713.                                 if ( equal( szLineKey, "CHAT_USE_CUSTOM_FORMATS" ) )
  714.                                 {
  715.                                     giUseCustomFormats = str_to_num( szLineValue );
  716.                                 }
  717.                             }
  718.                         }
  719.                     }
  720.                 }
  721.             }
  722.         }
  723.     }
  724.     fclose( iCfgFileHandle );
  725.     if ( giUseCustomFormats )
  726.     {
  727.         iChatCustomFormats( );
  728.     }
  729. }
  730.  
  731. public iChatCustomFormats( )
  732. {
  733.     new szIniFile[ 128 ];
  734.     get_configsdir( szIniFile, charsmax( szIniFile ) );
  735.     formatex( szIniFile, charsmax( szIniFile ), "%s/ichat_custom_formats.ini", szIniFile );
  736.  
  737.     new iIniFileHandle = fopen( szIniFile, "rt" );
  738.     if ( !iIniFileHandle )
  739.     {
  740.         set_fail_state( "No custom formats file" );
  741.         return;
  742.     }
  743.  
  744.     new szLineData[ 456 ], szLineKey[ 96 ], szLineKeyValue[ 96 ], szLineValue[ 264 ], iFormatType;
  745.     for ( iFormatType = 0; iFormatType < formatTypesMax; iFormatType++ )
  746.     {
  747.         TrieClear( gtCustomFormats[ iFormatType ] );
  748.         TrieClear( gtCustomFormatEnabled[ iFormatType ] );
  749.     }
  750.     while ( !feof( iIniFileHandle ) )
  751.     {
  752.         fgets( iIniFileHandle, szLineData, charsmax( szLineData ) );
  753.         trim( szLineData );
  754.  
  755.         if ( szLineData[ 0 ] == ';' || szLineData[ 0 ] == '#' || ( szLineData[ 0 ] == '/' && szLineData[ 1 ] == '/' ) || !szLineData[ 0 ] )
  756.         {
  757.             continue;
  758.         }
  759.  
  760.         parse( szLineData, szLineKey, charsmax( szLineKey ), szLineKeyValue, charsmax( szLineKeyValue ), szLineValue, charsmax( szLineValue ) );
  761.  
  762.         if ( ( iFormatType = iChatGetFormatFromString( szLineKeyValue ) ) < 0 )
  763.         {
  764.             continue;
  765.         }
  766.  
  767.         if ( ( equal( szLineKey, "STEAM_", 6 ) || equal( szLineKey, "BOT" ) ) && szLineValue[ 0 ] )
  768.         {
  769.             TrieSetString( gtCustomFormats[ iFormatType ], szLineKey, szLineValue );
  770.             TrieSetCell( gtCustomFormatEnabled[ iFormatType ], szLineKey, 1 );
  771.         }
  772.     }
  773.     fclose( iIniFileHandle );
  774. }
  775.  
  776. public iChatGetFormatFromString( const szKey[ ] )
  777. {
  778.     switch ( szKey[ 5 ] )
  779.     {
  780.         case 'L': return formatDefAlive;
  781.         case 'E': return formatDefDead;
  782.         case 'A': return formatTeamAlive;
  783.         case 'D': return formatTeamDead;
  784.     }
  785.     return -1;
  786. }
  787.  
  788. public iChatHookSay( id, iTeamMessage )
  789. {
  790.     return iChatGenerateMessage( id, iTeamMessage );
  791. }
  792.  
  793. public iChatGenerateMessage( id, iTeamMessage )
  794. {
  795.     if ( !is_user_connected( id ) || ( !has_flag( id, gszAccesFlags[ FLAG_CHAT ] ) && gszAccesFlags[ FLAG_CHAT ][ 0 ] ) )
  796.     {
  797.         return ICHAT_RETURN;
  798.     }
  799.  
  800.     new szSaid[ ICHAT_MAX_SAID_LEN ], iSaidLen;
  801.     iSaidLen = charsmax( szSaid );
  802.     read_args( szSaid, charsmax( szSaid ) );
  803.     remove_quotes( szSaid );
  804.     trim( szSaid );
  805.  
  806.     if ( iChatIsChatValid( szSaid ) )
  807.     {
  808.         iChatSendToHLSW( id, szSaid, iTeamMessage );
  809.     }
  810.  
  811.     if ( !contain( szSaid, gszChatFormats[ formatMeCommand ] ) )
  812.     {
  813.         iChatMeCommand( id, szSaid, iSaidLen );
  814.         return ICHAT_RETURN;
  815.     }
  816.     if ( !contain( szSaid, gszChatFormats[ formatClearCommand ] ) )
  817.     {
  818.         iChatChangeChatStatus( id, IsUserChatEnabled( id ) );
  819.         return ICHAT_RETURN;
  820.     }
  821.  
  822.     if ( ( !szSaid[ 0 ] )
  823.     || ( ( giRemoveOnSlash && ( szSaid[ 0 ] == '/' || szSaid[ 0 ] == '@' || szSaid[ 0 ] == '!' ) ) || ( szSaid[ 0 ] == ' ' ) )
  824.     || ( !IsUserChatEnabled( id ) ) )
  825.     {
  826.         return ICHAT_RETURN;
  827.     }
  828.  
  829.     new iAlive = is_user_alive( id );
  830.  
  831.     new szMessage[ ICHAT_MAX_MSG_LEN ], szColor[ 16 ], szTeam[ 16 ];
  832.     get_user_team( id, szTeam, charsmax( szTeam ) );
  833.  
  834.     iChatFormatMessage( id, iAlive, iTeamMessage, 0, szMessage, charsmax( szMessage ), szColor, charsmax( szColor ) );
  835.  
  836.     if ( giForceSimplePrint > 0 )
  837.     {
  838.         client_print( 0, print_chat, szMessage );
  839.         return ICHAT_RETURN;
  840.     }
  841.  
  842.     new iGenCheck = ( giAllTalk && !iTeamMessage );
  843.  
  844.     iChatChangeTeamInfo( id, szColor, iGenCheck );
  845.  
  846.     if ( iGenCheck )
  847.     {
  848.         iChatMessageAll( id, szMessage, szSaid );
  849.     }
  850.     else
  851.     {
  852.         iChatMessageRest( id, iAlive, iTeamMessage, szMessage, szSaid );
  853.     }
  854.     iChatChangeTeamInfo( id, szTeam, iGenCheck );
  855.     return ICHAT_RETURN;
  856. }
  857.  
  858. public iChatMeCommand( id, szSaid[ ], iSaidLen )
  859. {
  860.     new szMessage[ ICHAT_MAX_MSG_LEN ], szColor[ 16 ], szTeam[ 16 ];
  861.     get_user_team( id, szTeam, charsmax( szTeam ) );
  862.     replace_all( szSaid, iSaidLen, gszChatFormats[ formatMeCommand ], " " );
  863.     trim( szSaid );
  864.  
  865.     iChatFormatMessage( id, ALIVE, 0, 1, szMessage, charsmax( szMessage ), szColor, charsmax( szColor ) );
  866.     if ( giForceSimplePrint > 0 )
  867.     {
  868.         client_print( 0, print_chat, szMessage );
  869.     }
  870.     else
  871.     {
  872.         iChatChangeTeamInfo( id, szColor, 1 );
  873.         iChatMessageAll( id, szMessage, szSaid );
  874.         iChatChangeTeamInfo( id, szTeam, 1 );
  875.     }
  876. }
  877.  
  878. public iChatChangeChatStatus( id, iEnabled )
  879. {
  880.     if ( iEnabled )
  881.     {
  882.         if ( giForceSimplePrint > 0 )
  883.         {
  884.             client_print( id, print_chat, "[iChat] %L", id, "ICHAT_CHAT_DISABLED_NOC" );
  885.         }
  886.         else
  887.         {
  888.             iChatSimplePrint( id, "!g[iChat]!d %L", id, "ICHAT_CHAT_DISABLED" );
  889.         }
  890.         DisableUserChat( id );
  891.     }
  892.     else
  893.     {
  894.         EnableUserChat( id );
  895.         if ( giForceSimplePrint > 0 )
  896.         {
  897.             client_print( id, print_chat, "[iChat] %L", id, "ICHAT_CHAT_ENABLED_NOC" );
  898.         }
  899.         else
  900.         {
  901.             iChatSimplePrint( id, "!g[iChat]!d %L", id, "ICHAT_CHAT_ENABLED" );
  902.         }
  903.     }
  904. }
  905.  
  906. public iChatFormatMessage( id, iAlive, iSayTeam, iMeCmd, szMessage[ ], iMessageLen, szColor[ ], iColorLen )
  907. {
  908.     new szLife[ 16 ], iLife, iTeam;
  909.     iLife = get_user_health( id );
  910.     num_to_str( iLife, szLife, charsmax( szLife ) );
  911.     iTeam = get_user_team( id );
  912.     if ( iTeam < NONE || iTeam > SPEC )
  913.     {
  914.         iTeam = 0;
  915.     }
  916.  
  917.     if ( iMeCmd )
  918.     {
  919.         copy( szMessage, iMessageLen, gszChatFormats[ formatMeMessage ] );
  920.     }
  921.     else
  922.     {
  923.         new iFormatType = ( iSayTeam ? ( ( iAlive || iTeam == TEAM_AA_1 || iTeam == TEAM_AA_2 ) ? formatTeamAlive : formatTeamDead ) : ( ( iAlive || iTeam == TEAM_AA_1 || iTeam == TEAM_AA_2 ) ? formatDefAlive : formatDefDead ) );
  924.  
  925.         new iHasCustom = 0;
  926.         if ( giUseCustomFormats )
  927.         {
  928.             if ( TrieKeyExists( gtCustomFormatEnabled[ iFormatType ], gszAuthid[ id ] ) )
  929.             {
  930.                 TrieGetCell( gtCustomFormatEnabled[ iFormatType ], gszAuthid[ id ], iHasCustom );
  931.             }
  932.         }
  933.         new iModeFormat = USER;
  934.         new iCrusher = ( giAdminOverrides ? ADMIN : VIP );
  935.         new iCrushed = ( giAdminOverrides ? VIP : ADMIN );
  936.         if ( iHasCustom )
  937.         {
  938.             iModeFormat = CUSTOM;
  939.         }
  940.         else if ( has_flag( id, gszAccesFlags[ ( iCrusher + 1 ) ] ) || !gszAccesFlags[ ( iCrusher + 1 ) ][ 0 ] )
  941.         {
  942.             iModeFormat = iCrusher;
  943.         }
  944.         else if ( has_flag( id, gszAccesFlags[ ( iCrushed + 1 ) ] ) || IsUserVip( id ) || !gszAccesFlags[ ( iCrushed + 1 ) ][ 0 ] )
  945.         {
  946.             iModeFormat = iCrushed;
  947.         }
  948.  
  949.         switch ( iModeFormat )
  950.         {
  951.             case USER:
  952.             {
  953.                 switch ( iFormatType )
  954.                 {
  955.                     case formatTeamAlive: copy( szMessage, iMessageLen, gszChatFormats[ formatTeamDefAlive ] );
  956.                     case formatTeamDead: copy( szMessage, iMessageLen, gszChatFormats[ formatTeamDefDead ] );
  957.                     case formatDefAlive: copy( szMessage, iMessageLen, gszChatFormats[ formatAllDefAlive ] );
  958.                     case formatDefDead: copy( szMessage, iMessageLen, gszChatFormats[ formatAllDefDead ] );
  959.                 }
  960.             }
  961.             case ADMIN:
  962.             {
  963.                 switch ( iFormatType )
  964.                 {
  965.                     case formatTeamAlive: copy( szMessage, iMessageLen, gszChatFormats[ formatTeamAdminAlive ] );
  966.                     case formatTeamDead: copy( szMessage, iMessageLen, gszChatFormats[ formatTeamAdminDead ] );
  967.                     case formatDefAlive: copy( szMessage, iMessageLen, gszChatFormats[ formatAllAdminAlive ] );
  968.                     case formatDefDead: copy( szMessage, iMessageLen, gszChatFormats[ formatAllAdminDead ] );
  969.                 }
  970.             }
  971.             case VIP:
  972.             {
  973.                 switch ( iFormatType )
  974.                 {
  975.                     case formatTeamAlive: copy( szMessage, iMessageLen, gszChatFormats[ formatTeamVIPAlive ] );
  976.                     case formatTeamDead: copy( szMessage, iMessageLen, gszChatFormats[ formatTeamVIPDead ] );
  977.                     case formatDefAlive: copy( szMessage, iMessageLen, gszChatFormats[ formatAllVIPAlive ] );
  978.                     case formatDefDead: copy( szMessage, iMessageLen, gszChatFormats[ formatAllVIPDead ] );
  979.                 }
  980.             }
  981.             case CUSTOM:
  982.             {
  983.                 TrieGetString( gtCustomFormats[ iFormatType ], gszAuthid[ id ], szMessage, iMessageLen );
  984.             }
  985.         }
  986.     }
  987.  
  988.     new szFormatTemp[ 64 ], iCustomTagsCount;
  989.  
  990.     replace_all( szMessage, iMessageLen, "%TEAMTAG%", gszFormatTeamTags[ iTeam ][ iAlive ] );
  991.  
  992.     if ( giUseCustomTags )
  993.     {
  994.         for ( iCustomTagsCount = 0; iCustomTagsCount < MAX_CUSTOM_TAGS; iCustomTagsCount++ )
  995.         {
  996.             formatex( szFormatTemp, charsmax( szFormatTemp ), "#CUSTOM%i#", iCustomTagsCount );
  997.             replace_all( szMessage, iMessageLen, szFormatTemp, gszCustomTags[ id ][ iCustomTagsCount ] );
  998.         }
  999.     }
  1000.  
  1001.     if ( giForceSimplePrint <= 0 )
  1002.     {
  1003.         replace_all( szMessage, iMessageLen, "<default>", "^1" );
  1004.         replace_all( szMessage, iMessageLen, "<green>", "^4" );
  1005.  
  1006.         if ( contain( szMessage, "<red>" ) != -1 )
  1007.         {
  1008.             copy( szColor, iColorLen, "TERRORIST" );
  1009.         }
  1010.         else if ( contain( szMessage, "<blue>" ) != -1 )
  1011.         {
  1012.             copy( szColor, iColorLen, "CT" );
  1013.         }
  1014.         else if ( contain( szMessage, "<grey>" ) != -1 )
  1015.         {
  1016.             copy( szColor, iColorLen, "SPECTATOR" );
  1017.         }
  1018.         else
  1019.         {
  1020.             get_user_team( id, szFormatTemp, iColorLen );
  1021.             copy( szColor, iColorLen, szFormatTemp );
  1022.         }
  1023.  
  1024.         replace_all( szMessage, iMessageLen, "<team>", "^3" );
  1025.         replace_all( szMessage, iMessageLen, "<red>", "^3" );
  1026.         replace_all( szMessage, iMessageLen, "<blue>", "^3" );
  1027.         replace_all( szMessage, iMessageLen, "<grey>", "^3" );
  1028.     }
  1029.  
  1030.     replace_all( szMessage, iMessageLen, "%STEAMID%", gszAuthid[ id ] );
  1031.     replace_all( szMessage, iMessageLen, "%LIFE%", szLife );
  1032.     replace_all( szMessage, iMessageLen, "%POS%", giLocation ? gszLocation[ id ] : "" );
  1033.  
  1034.     new szLangOpt[ 16 ];
  1035.     formatex( szLangOpt, charsmax( szLangOpt ), "ICHAT_TEAM%i", iTeam );
  1036.     formatex( szFormatTemp, charsmax( szFormatTemp ), "%L", LANG_SERVER, szLangOpt );
  1037.     replace_all( szMessage, iMessageLen, "%TEAM%", szFormatTemp );
  1038.  
  1039.     replace_all( szMessage, iMessageLen, "%NAME%", "%s1" );
  1040.     replace_all( szMessage, iMessageLen, "%MESSAGE%", "%s2" );
  1041. }
  1042.  
  1043. public iChatMessageAll( id, const szMessage[ ], const szSaid[ ] ) // szMessage is safe, generated by OP or plugin. szSaid is unsafe, generated by client
  1044. {
  1045.     message_begin( MSG_BROADCAST, gMsgSayText, .player = id );
  1046.     write_byte( id );
  1047.     write_string( szMessage );
  1048.     write_string( "" );
  1049.     write_string( szSaid );
  1050.     message_end( );
  1051. }
  1052.  
  1053. public iChatMessageRest( id, iAlive, iTeamMessage, const szMessage[ ], const szSaid[ ] )
  1054. {
  1055.     new iTeam = get_user_team( id );
  1056.     new iPlayers[ ICHAT_MAX_PLAYERS ], iNum, tid, iPlayerCounter, iTempAlive, iTempTeam, iTeamCheck, iRadiusCheck, iCanSeeCheck, iSupercedeCheck;
  1057.     get_players( iPlayers, iNum );
  1058.     for ( iPlayerCounter = 0; iPlayerCounter < iNum; iPlayerCounter++ )
  1059.     {
  1060.         tid = iPlayers[ iPlayerCounter ];
  1061.         if ( !( iSupercedeCheck = ( id == tid ) ) )
  1062.         {
  1063.             iTempAlive = is_user_alive( tid );
  1064.             if ( iTeamMessage )
  1065.             {
  1066.                 iTempTeam = get_user_team( tid );
  1067.             }
  1068.  
  1069.             iTeamCheck = ( !iTeamMessage || ( iTeam == iTempTeam ) );
  1070.             iRadiusCheck = iChatIsInRadius( id, tid, iTeamMessage, iAlive, iTempAlive );
  1071.             iCanSeeCheck = ( ( has_flag( tid, gszAccesFlags[ FLAG_SEE_CHAT ] ) || !gszAccesFlags[ FLAG_SEE_CHAT ][ 0 ] ) && IsUserChatEnabled( tid ) );
  1072.         }
  1073.  
  1074.         if ( ( iSupercedeCheck )
  1075.         || ( ( ( ( giAllTalk || ( iAlive && iTempAlive ) ) || ( !iAlive && !iTempAlive ) ) && iTeamCheck && iRadiusCheck && iCanSeeCheck )
  1076.         || ( giAdminsSpy && ( has_flag( tid, gszAccesFlags[ FLAG_SPY ] ) || !gszAccesFlags[ FLAG_SPY ][ 0 ] ) )
  1077.         || ( is_user_hltv( tid ) ) ) )
  1078.         {
  1079.             message_begin( MSG_ONE, gMsgSayText, .player = tid );
  1080.             write_byte( id );
  1081.             write_string( szMessage );
  1082.             write_string( "" );
  1083.             write_string( szSaid );
  1084.             message_end( );
  1085.         }
  1086.     }
  1087. }
  1088.  
  1089. public iChatIsInRadius( iSender, iReceiver, iTeamMessage, iSenderAlive, iReceiverAlive )
  1090. {
  1091.     new Float:flSenderOrigin[ 3 ], Float:flRecieverOrigin[ 3 ], Float:flDistance, Float:flMaxRadius;
  1092.     pev( iSender, pev_origin, flSenderOrigin );
  1093.     pev( iReceiver, pev_origin, flRecieverOrigin );
  1094.     flDistance = get_distance_f( flSenderOrigin, flRecieverOrigin );
  1095.  
  1096.     if ( iTeamMessage )
  1097.     {
  1098.         flMaxRadius = gFlPrintRadiusTeam;
  1099.     }
  1100.     else
  1101.     {
  1102.         flMaxRadius = gFlPrintRadiusAll;
  1103.     }
  1104.  
  1105.     if ( flDistance <= flMaxRadius || flMaxRadius <= 0 || !iSenderAlive || !iReceiverAlive )
  1106.     {
  1107.         return 1;
  1108.     }
  1109.     return 0;
  1110. }
  1111.  
  1112. public eventLocation( id )
  1113. {
  1114.     giLocation = 1;
  1115.     if ( read_data( 1 ) == id )
  1116.     {
  1117.         read_data( 2, gszLocation[ id ], charsmax( gszLocation[ ] ) );
  1118.     }
  1119. }
  1120.  
  1121. public client_putinserver( id )
  1122. {
  1123.     if ( giUserNotify )
  1124.     {
  1125.         set_task( NOTIFY_TASK_TIME, "iChatNotify", id + TASK_NOTIFY );
  1126.     }
  1127.     get_user_authid( id, gszAuthid[ id ], charsmax( gszAuthid[ ] ) );
  1128.     SetUserFirstSpawn( id );
  1129.     EnableUserChat( id );
  1130. }
  1131.  
  1132. public plugin_end( )
  1133. {
  1134.     new iFormatType;
  1135.     for ( iFormatType = 0; iFormatType < formatTypesMax; iFormatType++ )
  1136.     {
  1137.         TrieDestroy( gtCustomFormats[ iFormatType ] );
  1138.         TrieDestroy( gtCustomFormatEnabled[ iFormatType ] );
  1139.     }
  1140. }
  1141.  
  1142. public hamPlayerSpawnPost( id )
  1143. {
  1144.     if ( giUseCustomColor && is_user_connected( id ) && !is_user_bot( id ) && IsFirstSpawn( id ) )
  1145.     {
  1146.         iChatAskChangeCvar( id );
  1147.     }
  1148.     ClearUserFirstSpawn( id );
  1149. }
  1150.  
  1151. public iChatAskChangeCvar( id )
  1152. {
  1153.     new szMenuFormat[ 164 ], iLen = charsmax( szMenuFormat );
  1154.     formatex( szMenuFormat, iLen, "%L", id, "ICHAT_MENU_TITLE", giRed, giGreen, giBlue );
  1155.     new iAskMenu = menu_create( szMenuFormat, "iChatAskMenuHandler" );
  1156.     new szMenuAction[ 16 ];
  1157.     formatex( szMenuAction, charsmax( szMenuAction ), "ICHAT_MENU_ACTION%i", giPunishment );
  1158.     formatex( szMenuFormat, iLen, "%L %L", id, "ICHAT_MENU_NO", id, szMenuAction );
  1159.     menu_additem( iAskMenu, szMenuFormat );
  1160.     formatex( szMenuFormat, iLen, "%L", id, "ICHAT_MENU_YES" );
  1161.     menu_additem( iAskMenu, szMenuFormat );
  1162.  
  1163.     menu_setprop( iAskMenu, MPROP_EXIT, MEXIT_NEVER );
  1164.     menu_display( id, iAskMenu );
  1165. }
  1166.  
  1167. public iChatAskMenuHandler( id, iMenu, iItem )
  1168. {
  1169.     if ( iItem == 1 )
  1170.     {
  1171.         client_cmd( id, "con_color ^"%i %i %i^"", giRed, giGreen, giBlue );
  1172.     }
  1173.     else if ( giPunishment )
  1174.     {
  1175.         server_cmd( "kick #%d ^"%L^"", get_user_userid( id ), id, "ICHAT_KICK_REASON" );
  1176.     }
  1177.     menu_destroy( iMenu );
  1178. }
  1179.  
  1180. public iChatIsChatValid( const szChat[ ] )
  1181. {
  1182.     new cChar, iCharCounter;
  1183.     while ( ( cChar = szChat[ iCharCounter++ ] ) != EOS )
  1184.     {
  1185.         if ( cChar != ' ' )
  1186.         {
  1187.             return 1;
  1188.         }
  1189.     }
  1190.     return 0;
  1191. }
  1192.  
  1193. public iChatSendToHLSW( id, const szSaid[ ], iTeamMessage )
  1194. {
  1195.     new szName[ 32 ], szTeam[ 10 ];
  1196.     get_user_name( id, szName, charsmax( szName ) );
  1197.     get_user_team( id, szTeam, charsmax( szTeam ) );
  1198.     if( szTeam[ 0 ] == 'U' )
  1199.     {
  1200.         szTeam[ 0 ] = EOS;
  1201.     }
  1202.     log_message( "^"%s<%d><%s><%s>^" %s ^"%s^"%s", szName, get_user_userid( id ), gszAuthid[ id ], szTeam, ( iTeamMessage ? "say_team" : "say" ), szSaid, is_user_alive( id ) ? "" : " (dead)" );
  1203. }
  1204.  
  1205. public iChatChangeTeamInfo( id, const szColor[ ], iToAll )
  1206. {
  1207.     message_begin( ( iToAll ? MSG_BROADCAST : MSG_ONE_UNRELIABLE ), gMsgTeamInfo, .player = id );
  1208.     write_byte( id );
  1209.     write_string( szColor );
  1210.     message_end( );
  1211. }
  1212.  
  1213. public messageSayText( iMsgId, iMsgDest, iMsgEntity )
  1214. {
  1215.     if ( giRemoveNameChanged )
  1216.     {
  1217.         new szMessage[ 196 ];
  1218.         get_msg_arg_string( 2, szMessage, charsmax( szMessage ) );
  1219.         if ( equal( szMessage, "#Cstrike_Name_Change" ) )
  1220.         {
  1221.             return PLUGIN_HANDLED;
  1222.         }
  1223.     }
  1224.     return PLUGIN_CONTINUE;
  1225. }
  1226.  
  1227. public iChatNotify( id )
  1228. {
  1229.     id -= TASK_NOTIFY;
  1230.     if ( giForceSimplePrint > 0 )
  1231.     {
  1232.         client_print( id, print_chat, "[iChat] Ez a szerver iChatet hasznal, fejlesztoje Kidev. Letoltesi link a konzolban." );
  1233.     }
  1234.     else
  1235.     {
  1236.         iChatSimplePrint( id, "!g[iChat]!d  a szerver iChatet hasznal !tiChat!d fejlesztoje !tKidev!d. Letoltesi link a konzolban." );
  1237.     }
  1238.     if ( giMustBeUpdated && ( has_flag( id, gszAccesFlags[ FLAG_RELOAD ] ) || !gszAccesFlags[ FLAG_RELOAD ][ 0 ] ) )
  1239.     {
  1240.         client_print( id, print_chat, "[iChat] FIGYELEM! iChat elavult! Ajanlott frissiteni!" );
  1241.     }
  1242.     client_print( id, print_console, "[iChat] Toltsd le az 'iChat'-et 'https://forums.alliedmods.net/showthread.php?t=173113'." );
  1243.     client_print( id, print_console, "[iChat] Vagy githubon 'https://github.com/Kidev/iChat'" );
  1244. }
  1245.  
  1246. public iChatSimplePrint( id, const szMessage[ ], any:... ) // Do not use if clients are able to modify anything in the string passed !
  1247. {
  1248.     new szBuffer[ 512 ];
  1249.     vformat( szBuffer, charsmax( szBuffer ), szMessage, 3 );
  1250.     replace_all( szBuffer, charsmax( szBuffer ), "!d", "^1" );
  1251.     replace_all( szBuffer, charsmax( szBuffer ), "!t", "^3" );
  1252.     replace_all( szBuffer, charsmax( szBuffer ), "!g", "^4" );
  1253.  
  1254.     message_begin( MSG_ONE, gMsgSayText, .player = id );
  1255.     write_byte( id );
  1256.     write_string( szBuffer );
  1257.     write_string( "" );
  1258.     write_string( "" );
  1259.     message_end( );
  1260. }
  1261.  
  1262. #if defined USE_TEAM_FIX
  1263.     public eventTeamInfoAll( )
  1264.     {
  1265.         new id = read_data( TeamInfo_PlayerID );
  1266.         if ( !is_user_alive( id ) && is_user_connected( id ) )
  1267.         {
  1268.             new iTeam = get_pdata_int( id, m_iTeam, XO_PLAYER );
  1269.             if ( iTeam != get_user_team( id ) )
  1270.             {
  1271.                 emessage_begin( MSG_BROADCAST, gMsgScoreInfo );
  1272.                 ewrite_byte( id );
  1273.                 ewrite_short( get_user_frags( id ) );
  1274.                 ewrite_short( get_pdata_int( id, m_iDeaths, XO_PLAYER ) );
  1275.                 ewrite_short( 0 );
  1276.                 ewrite_short( iTeam );
  1277.                 emessage_end( );
  1278.             }
  1279.         }
  1280.     }
  1281. #endif
  1282.  
  1283. public iChatSendCustomData( iPlugin, iParams )
  1284. {
  1285.     new iTagIndex = get_param( 2 );
  1286.     new szData[ MAX_CUSTOM_TAGS_SIZE ];
  1287.     get_string( 3, szData, charsmax( szData ) );
  1288.     copy( gszCustomTags[ get_param( 1 ) ][ ( ( iTagIndex < 0 || iTagIndex >= MAX_CUSTOM_TAGS ) ? 0 : iTagIndex ) ], charsmax( gszCustomTags[ ][ ] ), szData );
  1289. }
  1290.  
  1291. public iChatVipAction( iPlugin, iParams )
  1292. {
  1293.     new id = get_param( 1 );
  1294.     switch ( get_param( 2 ) )
  1295.     {
  1296.         case 0: return IsUserVip( id );
  1297.         case 1: return SetUserVip( id );
  1298.         case 2: return ClearUserVip( id );
  1299.     }
  1300.     return -1;
  1301. }


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Ichat - v2.3.3 + Rangrendszer(demon)
HozzászólásElküldve: 2018.02.21. 06:45 
Offline
Őstag
Avatar

Csatlakozott: 2017.08.21. 15:51
Hozzászólások: 1109
Megköszönt másnak: 36 alkalommal
Megköszönték neki: 195 alkalommal
Nem ez lesz a probléma. Nem ütköznek.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Ichat - v2.3.3 + Rangrendszer(demon)
HozzászólásElküldve: 2018.02.21. 07:27 
Offline
Tud valamit
Avatar

Csatlakozott: 2017.12.04. 09:15
Hozzászólások: 116
Megköszönt másnak: 58 alkalommal
Megköszönték neki: 2 alkalommal
Pika írta:
Nem ez lesz a probléma. Nem ütköznek.

Akkor mi?


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Ichat - v2.3.3 + Rangrendszer(demon)
HozzászólásElküldve: 2018.02.21. 08:19 
Offline
Fórum Moderátor
Avatar

Csatlakozott: 2012.07.02. 17:41
Hozzászólások: 1641
Megköszönt másnak: 121 alkalommal
Megköszönték neki: 247 alkalommal
Telepitsd demon pluginjat, az sma ban az use ichat elol torold a per jeleket.
Telepitsd ezt is https://forums.alliedmods.net/attachmen ... 1500315617
Aztan mforce tomoritett csomagjat szedd le. Abbol az sma n kivul mindent rakj a szerverre. Magyarul minden benne lesz az ichat beallitasarol az ini ben.
A langokat utf8 boom nelkulire allitsd es a szerver nyelvet angolra vagy magyarra.
Ichatet az utolso helyre ird a plugins.ini be. Az atalakitashoz benne lesz az inc is.
Az ichat ini jeben latni fogod a chat beallitasait, ahol custom reszt be kell masold az adott sorokba. (Ahova akarod, hogy irja a rangokat)
Szinten az ini aljan be kell allitani, hogy a custom hasznalhato legyen.

_________________
Kép

Ők köszönték meg theglorious nek ezt a hozzászólást: duvilax (2018.02.21. 09:26)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Ichat - v2.3.3 + Rangrendszer(demon)
HozzászólásElküldve: 2018.02.21. 09:26 
Offline
Tud valamit
Avatar

Csatlakozott: 2017.12.04. 09:15
Hozzászólások: 116
Megköszönt másnak: 58 alkalommal
Megköszönték neki: 2 alkalommal
theglorious írta:
Telepitsd demon pluginjat, az sma ban az use ichat elol torold a per jeleket.
Telepitsd ezt is https://forums.alliedmods.net/attachmen ... 1500315617
Aztan mforce tomoritett csomagjat szedd le. Abbol az sma n kivul mindent rakj a szerverre. Magyarul minden benne lesz az ichat beallitasarol az ini ben.
A langokat utf8 boom nelkulire allitsd es a szerver nyelvet angolra vagy magyarra.
Ichatet az utolso helyre ird a plugins.ini be. Az atalakitashoz benne lesz az inc is.
Az ichat ini jeben latni fogod a chat beallitasait, ahol custom reszt be kell masold az adott sorokba. (Ahova akarod, hogy irja a rangokat)
Szinten az ini aljan be kell allitani, hogy a custom hasznalhato legyen.

Köszönöm szépen! <3


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Ichat - v2.3.3 + Rangrendszer(demon)
HozzászólásElküldve: 2018.02.21. 09:47 
Offline
Tud valamit
Avatar

Csatlakozott: 2017.12.04. 09:15
Hozzászólások: 116
Megköszönt másnak: 58 alkalommal
Megköszönték neki: 2 alkalommal
A plugin most működik csak chatben nem írja pl:. [Újonc] stb de ha jogot addok magamnak akkor írja hogy [ADMIN]


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Ichat - v2.3.3 + Rangrendszer(demon)
HozzászólásElküldve: 2018.02.21. 13:10 
Offline
Fórum Moderátor
Avatar

Csatlakozott: 2012.07.02. 17:41
Hozzászólások: 1641
Megköszönt másnak: 121 alkalommal
Megköszönték neki: 247 alkalommal
duvilax írta:
A plugin most működik csak chatben nem írja pl:. [Újonc] stb de ha jogot addok magamnak akkor írja hogy [ADMIN]

Rossz iniben irtad at a dolgokat.

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Ichat - v2.3.3 + Rangrendszer(demon)
HozzászólásElküldve: 2018.02.21. 13:35 
Offline
Tud valamit
Avatar

Csatlakozott: 2017.12.04. 09:15
Hozzászólások: 116
Megköszönt másnak: 58 alkalommal
Megköszönték neki: 2 alkalommal
theglorious írta:
duvilax írta:
A plugin most működik csak chatben nem írja pl:. [Újonc] stb de ha jogot addok magamnak akkor írja hogy [ADMIN]

Rossz iniben irtad at a dolgokat.


Az ichat.cfg ben mit kell hogy javítsak?


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Ichat - v2.3.3 + Rangrendszer(demon)
HozzászólásElküldve: 2018.02.21. 16:22 
Offline
Fórum Moderátor
Avatar

Csatlakozott: 2012.07.02. 17:41
Hozzászólások: 1641
Megköszönt másnak: 121 alkalommal
Megköszönték neki: 247 alkalommal
duvilax írta:
theglorious írta:
duvilax írta:
A plugin most működik csak chatben nem írja pl:. [Újonc] stb de ha jogot addok magamnak akkor írja hogy [ADMIN]

Rossz iniben irtad at a dolgokat.


Az ichat.cfg ben mit kell hogy javítsak?

Bocs, ichat.cfg.
  1. // Hasznalhatsz szineket:
  2. // Szinek: <default>, <green>, <team>, <blue>, <red> es <grey>.
  3.  
  4. /// FIGYELEM: Csak EGY csapatszint hasznalhatsz egy sorban!
  5. // Csapatszinek: <team>, <blue>, <red> es <grey>.
  6. /// Ha egynel tobbet hasznalsz ezekbol, a szin az elsonek bealitott lesz!
  7. // Peldanak: FORMAT_DEF_ALIVE "<green>Kid <grey>nagyon <default> boldog<grey>!" EZ MUKODIK!,
  8. // De ez: FORMAT_DEF_ALIVE "<blue>Kid <red>nagyon <grey> szomoru<grey>..."! Ebben benne van az osszes csapatszin, tehat ez miatt kek lesz,mivel az az elso!
  9. // Tehat FORMAT_DEF_ALIVE "<blue>Kid <red>nagyon <grey> szomoru..." ugyanaz, mintha FORMAT_DEF_ALIVE "<blue>Kid <blue>nagyon <blue> szomoru..." lenne.
  10. // Ha nincs az elejen szin megadva, akkor automatikusan <default> (sárga).
  11. // Megvaltoztathatod az alapot is, amire akarod (rozsaszin, lila, fekete, feher...)!
  12. // Ha ezt atalakitod,akkor a szerver megkerdezi a jatekosokat egyenkent,hogy at akarja-e allitani az iras szinet. Ha nem-re kattint megadhatod,hogy (kirugja vagy sem).
  13. // Lasd a 'Config' resznel, ennek a konfiguralasat.
  14.  
  15. // A plugin legjobb tulajdonsaga,hogy a chatet barmilyenre konfiguralhatod a cimkekkel es a szinekkel!
  16. // Megadhatod benne,hogy a chaten az emberek eletet is kiirja, stb.
  17. // Cimkek:  %NAME%      -> A felhasznalo NEVE
  18. //          %MESSAGE%   -> A felhasznalo UZENETE
  19. //          %STEAMID%   -> A felhasznalo STEAMID-je
  20. //          %LIFE%      -> A felhasznalo ELETE
  21. //          %TEAM%      -> A felhasznalo CSAPATA (lasd iChat.txt. Itt modosithatod a csapatneveket, Terrorista, Anti-Terrorista, Nezo)
  22. //          %POS%       -> A felhasznalo POZICIOJA, peldaul 'B Lerako'... (CSAKIS KIZAROLAG CONDITION ZERO ALATT MUKODIK)
  23. //          %TEAMTAG%   -> A felhasznalo CSAPAT CIMKEJE (lasd 'Config' resznel, CT, T es SPEC, ELO es HALOTT)
  24. //          #CUSTOMx#   -> Ide egyedi szoveg kerul, ha masik pluginnal akarod egybehozni. Ehhez engedelyezned kell a CHAT_USE_CUSTOM_TAGS sort. Ez csak fejlesztoknek!
  25.  
  26. // Ne aggodj, ha egy jatekos ezt irja be: '%POS%', vagy '%NAME%', a chat nem irja ki az adatokat.
  27. // Ugyanez a neveknel, ha egy jatekos beirja, hogy  "%NAME%" akkor nem lesz ott a neve, hanem semmi.
  28. //
  29. // Peldaul,ha azt akarod a chated olyan legyen,mint a Minecraft (igazan jo CHAT_DEFAULT_COLOR "255255255" (feher), vagy <grey> cimkevel):
  30. // FORMAT_DEF_ALIVE "<%NAME%> %MESSAGE%" or FORMAT_DEF_ALIVE "<grey><%NAME%> %MESSAGE%"
  31. //
  32. // Counter Strike alapjai
  33. // FORMAT_DEF_ALIVE "<team>%NAME%<default> :  %MESSAGE%"
  34. // FORMAT_DEF_DEAD "<default>*HALOTT* <team>%NAME%<default> :  %MESSAGE%"
  35. // FORMAT_TEAM_DEF_ALIVE "<default>%TEAM% <team>%NAME%<default> :  %MESSAGE%"
  36. // FORMAT_TEAM_DEF_DEAD "<default>*HALOTT* %TEAM% <team>%NAME%<default> :  %MESSAGE%"
  37. //
  38. // Megadhatsz specialis ADMIN formatumot:
  39. // FORMAT_ADMIN_ALIVE "<green>[ADMIN] <team>%NAME%<default> :  <green>%MESSAGE%"
  40. // Es VIP formatumot!
  41. // FORMAT_VIP_ALIVE "<green>[VIP] <team>%NAME%<default> :  <green>%MESSAGE%"
  42.  
  43.  
  44. // Jatekosok (jogok nelkul) -> Alap CS Chat
  45. FORMAT_DEF_ALIVE "<green>[#CUSTOM0#] <team>%NAME%<default> : %MESSAGE%"
  46. FORMAT_DEF_DEAD "<default>*HALOTT* <green>[#CUSTOM0#] <team>%NAME%<default> : %MESSAGE%"
  47. FORMAT_TEAM_DEF_ALIVE "<default>%TEAM% <green>[#CUSTOM0#] <team>%NAME%<default> : %MESSAGE%"
  48. FORMAT_TEAM_DEF_DEAD "<default>*HALOTT* %TEAM% <green>[#CUSTOM0#] <team>%NAME%<default> : %MESSAGE%"
  49.  
  50. // Adminok (a jogok lentebb konfiguralhatok,hogy kit eszlel adminnak) -> Alap CS Chat, [ADMIN] cimkevel es zold irassal.
  51. FORMAT_ADMIN_ALIVE "<green>[ADMIN] <team>%NAME%<default> : <green>%MESSAGE%"
  52. FORMAT_ADMIN_DEAD "<default>*HALOTT* <green>[ADMIN] <team>%NAME%<default> : <green>%MESSAGE%"
  53. FORMAT_TEAM_ADMIN_ALIVE "<default>%TEAM% <green>[ADMIN] <team>%NAME%<default> : <green>%MESSAGE%"
  54. FORMAT_TEAM_ADMIN_DEAD "<default>*HALOTT* %TEAM% <green>[ADMIN] <team>%NAME%<default> : <green>%MESSAGE%"
  55.  
  56. // VIP-k (jogok lentebb modosithatok) -> Alap CS chat, [VIP] cimkevel.
  57. // Elo vip uzenet formatum
  58. FORMAT_VIP_ALIVE "<green>[VIP] <team>%NAME%<default> :  %MESSAGE%"
  59. // Halott vip uzenet formatum
  60. FORMAT_VIP_DEAD "<default>*HALOTT* <green>[VIP] <team>%NAME%<default> :  %MESSAGE%"
  61. // Elo vip csapatuzenet formatum
  62. FORMAT_TEAM_VIP_ALIVE "<default>%TEAM% <green>[VIP] <team>%NAME%<default> :  %MESSAGE%"
  63. // Halott vip csapatuzenet formatum
  64. FORMAT_TEAM_VIP_DEAD "<default>*HALOTT* %TEAM% <green>[VIP] <team>%NAME%<default> :  %MESSAGE%"
  65.  
  66. // Ezt irja,ha a kliens "!me" -t ir az uzenet ele. (Lejjebb konfiguralhato).
  67. // Tehat ezt a sort ( FORMAT_ME "* %NAME% %MESSAGE%" ) helyettesiti:
  68. // "say !me is cool" igy "* mforce is cool" ha a ME_COMMAND "!me"-re van rakva (alap)
  69. // Vicces uzeneteket irhatsz vele, peldaul | * mforce : eppen majd bekakkant.
  70. // Ehhez csak a paranccsal (!me) kell kezdeni a szoveged, ezzel kiirja a neved, es aztan (eppen majd bekakkant.)
  71. // Hasznalhatsz szineket,es cimkeket, magadnak konfiguralhatod.
  72. FORMAT_ME_MESSAGE "* %NAME% :  %MESSAGE%"
  73.  
  74. // Itt megtudod valtoztatni a "!me" parancsot.
  75. // Ha nem hasznalsz a szervereden statisztikat, akkor "/me" peldaul!
  76. FORMAT_ME_COMMAND "!me"
  77.  
  78. // A jatekosok ki-be kapcsolhatjak a chatet ezzel a paranccsal: /chat
  79. CHAT_CLCMD_CLEAR "/chat"
  80.  
  81.  
  82. ////////////////////////////
  83. // Altalanos konfiguracio //
  84. ////////////////////////////
  85.  
  86. // Ir egy kicsi hirdetest a keszitotol a chaten!
  87. // 0 = kikapcsolva | 1 = bekapcsolva
  88. CHAT_NOTIFY 0
  89.  
  90. // Engedelyezi az iChat-nek, hogy leallitsa magat. Valtoztasd ezt meg, ha palya specifikus pluginokat hasznalsz, vagy a pluginok nyilvantartasara nem csak plugins.ini -t.
  91. // Vagy akar mas esetekben is, ha valami hibat okoz, de elotte nezd meg a log filet, semmifelekepp ne tedd alapbol 0-ara!
  92. // Megjegyzes: Ha 0-ara allitod, par plugin nem kapja meg a parancsot, amit beirnak pl.: (/shop , stb.)
  93. CHAT_CAN_STOP_ITSELF 1
  94.  
  95. // Uzenete ir az osszed adminnak, es a logban is, ha frissites jon a chathez.
  96. // * KESOBB *
  97. CHAT_CHECK_UPDATES 0
  98.  
  99. // Definialja,hogy az ADMIN vagy a VIP legyen kiemelve,ha valakinek mind kettohoz megvan a joga.
  100. // Peldaul, ha 1-re allitod, es VIP es ADMIN jogod is van, akkor ADMIN-kent leszel jelezve a chaten.
  101. // De ha 0-ara allitod, es VIP es ADMIN, jogod is van, akkor VIP-nak fog irni.
  102. CHAT_ADMIN_OVERRIDES 1
  103.  
  104. // Itt valtoztathatod meg a jogokat: "abcdefghijklmnopqrstu" (mint az users.ini-ben)
  105. // Hasznalhatsz "ALL"-t mindenkinek.
  106. // Hasznalhatsz tobb jogot is egyszerre
  107. // Hagyd 1-en,hogy a konfig faljt magatol ujratolthesse.
  108. CHAT_FLAG_RELOAD "l"
  109. // Jog,hogy lass minden uzenetet (mas csapatoket is). Alap: d (ban jog)
  110. CHAT_FLAG_SPY "d"
  111. // Ki lathassa a chatet. ALL - mindenki
  112. CHAT_FLAG_SEE_CHAT "ALL"
  113. // Ki hasznalhatja a chatet. ALL - mindenki
  114. CHAT_FLAG_CHAT "ALL"
  115. // Jog az adminoknak, akik hasznalhatjak a "FORMAT_ADMIN_*" formatumot [ADMIN] elotaggal benne. Alap: d (ban jog)
  116. CHAT_FLAG_ADMIN "d"
  117. // Jog a vip-knak, akik hasznalhatjak a "FORMAT_VIP_*" formatumot [VIP] elotaggal benne. Alap: o (custom level c jog)
  118. // Van egy masik ut is VIP hozzaadashoz (csak fejlesztoknek): hasznalhatod ezeket a funkciokat:
  119. // iChatIsUserVip( index ), iChatSetUserVip( index ), iChatRemoveUserVip( index ). csak csatold felulre: include <ichat>
  120. CHAT_FLAG_VIP "o"
  121.  
  122. // Ez az sv_alltalk az iChat-nek (Halott jatekosok lathatjak a masik halott es elo irasat, elo jatekosok is lathatjak a halott es elok irasat).
  123. // Hasznalhatod az iChatManagement -t ennek beallitasara. Tobb info lejjebb.
  124. // 1 = mindenki latja a masik irasat | 0 = Elo nem latja a halott irasat.
  125. CHAT_ALL_TALK 1
  126.  
  127. // Csapat cimkek (nincsenek alapbol hasznalatban, hanyagolhato sorok,
  128. // arra lett kitalalva ha a neved nem a csapat szinevel akarod kiiratni,hanem siman, es csapat cimket ele.)
  129. // Szinek engedelyezve vannak a csapat cimkeknel!
  130. // Jol nez ki BazisEpitonel:
  131. // CHAT_TEAM_TAG_1_A "<green>[ZOMBI]<default>"
  132. // CHAT_TEAM_TAG_2_A "<green>[EPITESZ]<default>"
  133. // Es alapbeallitasnak ha halott vagy peldaul.
  134. // Csapat cimke elo terroristaknak:
  135. CHAT_TEAM_TAG_1_A "<green>[T]<default>"
  136. // Csapat cimke halott terroristaknak:
  137. CHAT_TEAM_TAG_1_D "<green>[<default>T<green>]<default>"
  138.  
  139. // Csapat cimke elo Anti-Terroristaknak
  140. CHAT_TEAM_TAG_2_A "<green>[CT]<default>"
  141. // Csapat cimke halott Anti-Terroristaknak
  142. CHAT_TEAM_TAG_2_D "<green>[<default>CT<green>]<default>"
  143.  
  144. // Csapat cimke Nezoknek
  145. CHAT_TEAM_TAG_3 "<green>[NEZO]<default>"
  146.  
  147. // Ez az alap '<default>' szin. Irj "-1" ,hogy a kliens alap szine legyen hasznalando, ne zavargasson senkit.
  148. // Mas, "RRRGGGBBB" szineket lehet megadni. Peldaul, hogy fekete legyen az alap <default> szin:
  149. // CHAT_DEFAULT_COLOR "000000000"
  150. // Vagy feher:
  151. // CHAT_DEFAULT_COLOR "255255255"
  152. CHAT_DEFAULT_COLOR "-1"
  153.  
  154. // Mit tegyen a szerver, ha a jatekos nem engedelyezi az altalad megadott szinkodot.
  155. // Ez egy menu. Csak az elso spawn-kor jon elo.
  156. // 0 - Engedjuk jatszani!
  157. // 1 - Kirugjuk!
  158. CHAT_PUNISHMENT 0
  159.  
  160. // Adminok CHAT_FLAG_SPY joggal (fentebb konfiguralhato) latnak minden uzenetet (mas csapatok uzenetei,stb.) 1= igen | 0= nem
  161. CHAT_ADMIN_SPY 1
  162.  
  163. // Ne mutassuk a szimbolumos uzeneteket? '/', '!' es '@' (peldaul /top15, /rank, /rs...). 1= igen | 0= nem
  164. CHAT_CLCMD_REMOVE 1
  165.  
  166. // Eltavolitjuk az ertesitest,ha valaki nevet valt?. 0= nem | 1= igen
  167. CHAT_REMOVE_CHANGE_NAME 0
  168.  
  169. // Be lehet allitani,hogy csak egy bizonyos korulotted levo hatosugarban lassak amit irsz. 0.0 = kikapcsolas.
  170. // Uzenet
  171. CHAT_RADIUS_ALL 0.0
  172. // Csapat uzenet
  173. CHAT_RADIUS_TEAM 0.0
  174.  
  175. // Ha nem akarsz egyaltalan szines chatet,mert pl. a kliensed nem tamogatja (20. szazad elejei TV-n nyomod esetleg)
  176. // Vagy csak ha szimplan nem akarsz szineket. Valtoztasd ezt meg, de csak ha tudod mit csinalsz. 1= nincs szin | 0= van szin
  177. CHAT_NO_COLORS 0
  178.  
  179. // Engedelyezi az egyedi formatumokat, amiket 'ichat_custom_formats.ini'-ben tarolsz, pl.: [TULAJ] elotag.
  180. // Ehhez Steamre van szukseged,es jelszoval levedett steamID-re, mert maskepp vissza elhetnek vele... 1= engedelyez | 0= kikapcs
  181. CHAT_USE_CUSTOM_FORMATS 1
  182.  
  183. // Engedelyezi az egyedi adatokat. Ez csak fejlesztoknek, de konnyu hasznalni.
  184. // Engedi a pluginjaidbol az adatok kuldeset az iChatnek, hogy a chatre kitehesd.
  185. // Itt van,hogyan kuldj adatokat:
  186. // Elsonek, include <ichat>. Aztan, termeszetesen iChatSendCustomData( iIndex, iTagNum, szData[ ] );
  187. // iIndex a jatekos index.
  188. // iTagNum az egyedi adat indexe, az 'x' ebben #CUSTOMx#.
  189. // szData[ ] az adat. Karakterlanc, 16 karakter maximum, valtoztathato az iChat forraskodban.
  190. // Hasznalhatsz 2 egyedi adatot (0, 1) maximum, de ezt is valtoztathatod az iChat forraskodban.
  191. // Hasznalhatsz iChatSendCustomData( ) ahanyszor a valtozo megvaltozik (connect, disconnect...), mert az iChat nem reseteli (inditja ujra).
  192. // Vegul, tedd a #CUSTOMx# parancsot a chatedbe, mint a tobbi cimket, ahol az 'x' az egyedi adat ID.
  193. // Peldaul, a kuldeshez iLevel[ id ] var az iChatnek, ahanyszor az iLevel[ id ] valtozik, Ezt csinalom:
  194. // new szLevel[ 16 ]; formatex( szLevel, charsmax( szLevel ), "[%i]", iLevel[ id ] );
  195. // iChatSendCustomData( id, 0, szLevel );
  196. // Es az ichat.cfg formatumok, mivel az id 0 az egyedi adatoknak ( iChatSendCustomData( id, 0, szLevel ) ), Ezt teszem oda: #CUSTOM0#
  197. // Ha mas adatot akarok kuldeni,akkor id 1 az egyedi adatoknak ( iChatSendCustomData( id, 1, szData ) ), Ezt teszem oda: #CUSTOM1#
  198. // Hasznalni akarod ezt a funkciot? 1= bekapcs | 0= kikapcs
  199. CHAT_USE_CUSTOM_TAGS 1
  200.  
  201. // Gratulalunk elerted a konfiguracio veget!

_________________
Kép

Ők köszönték meg theglorious nek ezt a hozzászólást: duvilax (2018.02.21. 18:08)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 20 hozzászólás ]  Oldal Előző 1 2


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 30 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole