hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.06.16. 06:13



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: Google [Bot] 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  [ 6 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Re: Szinezés
HozzászólásElküldve: 2015.10.24. 21:12 
Offline
Fanatikus
Avatar

Csatlakozott: 2014.04.18. 21:10
Hozzászólások: 186
Megköszönt másnak: 27 alkalommal
Megköszönték neki: 1 alkalommal
Szoval a pluginba belekell irni a

SMA Forráskód: [ Mindet kijelol ]
  1. stock client_print_color(id, type, const text[], any:...)
  2. {
  3. if(type == print_chat)
  4. {
  5. new g_iMsgidSayText;
  6. g_iMsgidSayText = get_user_msgid("SayText");
  7.  
  8. new szMsg[191], iPlayers[32], iCount = 1;
  9. vformat(szMsg, charsmax(szMsg), text, 3);
  10.  
  11. replace_all(szMsg, charsmax(szMsg), "!g","^x04");
  12. replace_all(szMsg, charsmax(szMsg), "!n","^x01");
  13. replace_all(szMsg, charsmax(szMsg), "!t","^x03");
  14.  
  15. if(id)
  16. iPlayers[0] = id;
  17. else
  18. get_players(iPlayers, iCount, "ch");
  19.  
  20. for(new i = 0 ; i < iCount ; i++)
  21. {
  22. if(!is_user_connected(iPlayers[i]))
  23. continue;
  24.  
  25. message_begin(MSG_ONE_UNRELIABLE, g_iMsgidSayText, _, iPlayers[i]);
  26. write_byte(iPlayers[i]);
  27. write_string(szMsg);
  28. message_end();
  29. }
  30. }
  31. }


Részt?!


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Szinezés
HozzászólásElküldve: 2015.10.24. 21:19 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2015.04.10. 19:49
Hozzászólások: 610
Megköszönt másnak: 53 alkalommal
Megköszönték neki: 147 alkalommal
Amennyiben az 1.8.3-as verziójú amxmodx-t használod, akkor az alapból tartalmazza a client_print_color( ) függvényt.
Ha nem:

Ha van colorchat.inc fájlod az include mappában( ha amxmodx studiót használsz ) akkor:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <colorchat>
  2.  
  3. ColorChat( ... );


Ha nincs akkor pedig használd azt az eljárást amit beillesztettél.

_________________
Néha itt, de többször nem.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Szinezés
HozzászólásElküldve: 2015.10.24. 21:22 
Offline
Fanatikus
Avatar

Csatlakozott: 2014.04.18. 21:10
Hozzászólások: 186
Megköszönt másnak: 27 alkalommal
Megköszönték neki: 1 alkalommal
Anyit irok hogy Colorchat( .... ) és a .... helyére szöveg? :)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Szinezés
HozzászólásElküldve: 2015.10.24. 21:38 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2014.09.08. 22:21
Hozzászólások: 3014
Megköszönt másnak: 96 alkalommal
Megköszönték neki: 555 alkalommal
Colorchat include bizonyos team lekéréseknél hibázik, én nem ajánlom.
2 szerveremen régen mikor úgy használtam, ha volt bárki speciben, akkor a team szín fehér volt, ha terrorban állok is.

Manapság már lejárt lemez, 2stockot szoktak alkalmazni. Egyiket mi úgy nagy átlagban itt, meg allieden, másikat oroszok nagy átlagban.

Mutatom példával :D

Nagy átlag:
SMA Forráskód: [ Mindet kijelol ]
  1. public client_putinserver(id)
  2. {
  3. new name[32];
  4. get_user_name(id, name, charsmax(name))
  5. print_color(id, "Üdv a szerveren^3 %s !", name)
  6. }
  7.  
  8. stock print_color(const id, const input[], any:...)
  9. {
  10. new count = 1, players[32]
  11. static msg[191]
  12. vformat(msg, 190, input, 3)
  13.  
  14. replace_all(msg, 190, "!g", "^4")
  15. replace_all(msg, 190, "!y", "^1")
  16. replace_all(msg, 190, "!t", "^3")
  17.  
  18. if (id) players[0] = id; else get_players(players, count, "ch")
  19. {
  20. for (new i = 0; i < count; i++)
  21. {
  22. if (is_user_connected(players[i]))
  23. {
  24. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
  25. write_byte(players[i])
  26. write_string(msg)
  27. message_end()
  28. }
  29. }
  30. }
  31. return PLUGIN_HANDLED
  32. }
  33.  


Oroszoknál sok helyen így használják:
SMA Forráskód: [ Mindet kijelol ]
  1. public client_putinserver(id)
  2. {
  3. new name[32];
  4. get_user_name(id, name, charsmax(name))
  5. ChatColor(id, "Üdv a szerveren^3 %s !", name)
  6. }
  7.  
  8. stock ChatColor(const id, const szMessage[], any:...)
  9. {
  10. static pnum, players[32], szMsg[190], IdMsg;
  11. vformat(szMsg, charsmax(szMsg), szMessage, 3);
  12.  
  13. if(!IdMsg) IdMsg = get_user_msgid("SayText");
  14.  
  15. if(id)
  16. {
  17. players[0] = id;
  18. pnum = 1;
  19. }
  20. else get_players(players, pnum, "ch");
  21.  
  22. for(new i; i < pnum; i++)
  23. {
  24. message_begin(MSG_ONE, IdMsg, .player = players[i]);
  25. write_byte(players[i]);
  26. write_string(szMsg);
  27. message_end();
  28. }
  29. }


print_colorban máris látunk egy felesleges if-et.
if (is_user_connected(players[i]))
Mivel alapból a playerek vannak lekérve, full felesleges dolog.
A handled is felesleg, MSG_ONE_UNRELIABLE nem biztonságos csatornán megy, ami azt jelenti,hogy előfordulhat, hogy nem jelenik meg. Viszont az MSG_ONE-nak is vannak hátrányai, például szerver leállás, ha nem sikerül kiírni amit kell, de én ilyet még nem tapasztaltam :D


Ez így pár érv az oroszok megoldása mellett. :)

_________________
GitHub - mforce


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Szinezés
HozzászólásElküldve: 2015.10.24. 21:45 
Offline
Fanatikus
Avatar

Csatlakozott: 2014.04.18. 21:10
Hozzászólások: 186
Megköszönt másnak: 27 alkalommal
Megköszönték neki: 1 alkalommal
És akkor pl

SMA Forráskód: [ Mindet kijelol ]
  1. /*
  2.   Ford�totta: BBk - Death of Legend
  3. */
  4.  
  5. #include <amxmodx>
  6. #include <engine>
  7.  
  8. new const Version[] = "0.3";
  9.  
  10. enum BombSites
  11. {
  12. BOMBSITE_A,
  13. BOMBSITE_B
  14. }
  15.  
  16. new g_iBombSiteEntity[ BombSites ];
  17. new bool:g_bBombSiteStatus[ BombSites ];
  18. new g_iPlayerWithBomb;
  19. new bool:g_bPlayerHoldingBomb;
  20.  
  21. new g_iHUDEntity;
  22.  
  23. new g_pCVarAllowPlantNum;
  24. new g_pCVarLockSiteNum;
  25. new g_pCVarLockSite;
  26.  
  27. public plugin_init( )
  28. {
  29. register_plugin( "BombSite Lock" , Version , "bugsy" );
  30.  
  31. register_concmd( "bl_setbombsite" , "SetBombSiteConsole" , ADMIN_KICK );
  32. register_concmd( "bl_bombsitemenu" , "ShowBombSiteMenu" , ADMIN_KICK );
  33.  
  34. register_event( "CurWeapon" , "fw_EvCurWeapon" , "b" , "1=1" );
  35. register_event( "WeapPickup", "fw_EvWeapPickup" , "be" , "1=6" );
  36. register_event( "BombDrop" , "fw_EvBombDrop" , "bc" );
  37.  
  38. register_logevent( "fw_EvRoundStart" , 2 , "1=Round_Start" );
  39.  
  40. g_pCVarAllowPlantNum = register_cvar( "bl_allowplantctnum" , "0" );
  41. g_pCVarLockSiteNum = register_cvar( "bl_locksitectnum" , "2" );
  42. g_pCVarLockSite = register_cvar( "bl_locksite" , "b" );
  43.  
  44. g_iHUDEntity = create_entity( "info_target" );
  45. entity_set_string( g_iHUDEntity , EV_SZ_classname , "bl_hud_entity" );
  46. register_think( "bl_hud_entity" , "fw_HUDEntThink" );
  47.  
  48. new szMap[ 11 ] , BombSites:bsBombSiteA , BombSites:bsBombSiteB;
  49. get_mapname( szMap , charsmax( szMap ) );
  50.  
  51. if ( equal( szMap , "de_chateau" ) || equal( szMap , "de_dust2" ) || equal( szMap , "de_train" ) )
  52. {
  53. bsBombSiteA = BOMBSITE_B;
  54. bsBombSiteB = BOMBSITE_A;
  55. }
  56. else
  57. {
  58. bsBombSiteA = BOMBSITE_A;
  59. bsBombSiteB = BOMBSITE_B;
  60. }
  61.  
  62. g_iBombSiteEntity[ bsBombSiteA ] = find_ent_by_class( -1 , "func_bomb_target" );
  63. g_iBombSiteEntity[ bsBombSiteB ] = find_ent_by_class( g_iBombSiteEntity[ bsBombSiteA ] , "func_bomb_target" );
  64. }
  65.  
  66. public client_disconnect( id )
  67. {
  68. if ( g_iPlayerWithBomb == id )
  69. {
  70. g_iPlayerWithBomb = 0;
  71. g_bPlayerHoldingBomb = false;
  72. }
  73. }
  74.  
  75. public fw_EvCurWeapon( id )
  76. {
  77. if ( id == g_iPlayerWithBomb )
  78. {
  79. if ( read_data( 2 ) == CSW_C4 )
  80. {
  81. g_bPlayerHoldingBomb = true;
  82. entity_set_float( g_iHUDEntity , EV_FL_nextthink , ( get_gametime() + 1.0 ) );
  83. }
  84. else
  85. {
  86. g_bPlayerHoldingBomb = false;
  87. }
  88. }
  89. }
  90.  
  91. public fw_EvWeapPickup( id )
  92. {
  93. g_iPlayerWithBomb = id;
  94. }
  95.  
  96. public fw_EvBombDrop()
  97. {
  98. g_iPlayerWithBomb = 0;
  99. g_bPlayerHoldingBomb = false;
  100. }
  101.  
  102. public fw_EvRoundStart()
  103. {
  104. new iAllowPlantNum = get_pcvar_num( g_pCVarAllowPlantNum );
  105. new iLockSiteNum = get_pcvar_num( g_pCVarLockSiteNum );
  106. new iPlayers[ 32 ] , iNum , iCTCount;
  107.  
  108. get_players( iPlayers , iNum , "h" );
  109.  
  110. for ( new i = 0 ; i < iNum ; i++ )
  111. if ( get_user_team( iPlayers[ i ] ) == 2 )
  112. iCTCount++;
  113.  
  114. if ( iCTCount < iAllowPlantNum )
  115. {
  116. SetBombSiteLock( BOMBSITE_A , true );
  117. SetBombSiteLock( BOMBSITE_B , true );
  118.  
  119. client_print( 0 , print_chat , "* Bombalerako (A & B) lezarva, ameddig %d CT nem lesz." , iAllowPlantNum );
  120. }
  121. else if ( iCTCount < iLockSiteNum )
  122. {
  123. new szSite[ 2 ];
  124. get_pcvar_string( g_pCVarLockSite , szSite , charsmax( szSite ) );
  125. szSite[ 0 ] = toupper( szSite[ 0 ] );
  126.  
  127. if ( !( 'A' <= szSite[ 0 ] <= 'B' ) )
  128. return PLUGIN_CONTINUE;
  129.  
  130. SetBombSiteLock( ( szSite[ 0 ] == 'A' ) ? BOMBSITE_A : BOMBSITE_B , true );
  131. SetBombSiteLock( ( szSite[ 0 ] == 'A' ) ? BOMBSITE_B : BOMBSITE_A , false );
  132.  
  133. client_print( 0 , print_chat , "* Bombalerako (%s) lezarva, ameddig %d CT nem lesz." , szSite , iLockSiteNum );
  134. }
  135. else
  136. {
  137. SetBombSiteLock( BOMBSITE_A , false );
  138. SetBombSiteLock( BOMBSITE_B , false );
  139. }
  140.  
  141. return PLUGIN_CONTINUE;
  142. }
  143.  
  144. public SetBombSiteConsole( id , AdminLevel )
  145. {
  146. if ( !( get_user_flags( id ) & AdminLevel ) )
  147. {
  148. console_print( id , "* Nincs engedelyed ehhez a parancshoz." );
  149. return PLUGIN_HANDLED;
  150. }
  151.  
  152. if ( !g_iBombSiteEntity[ BOMBSITE_A ] || !g_iBombSiteEntity[ BOMBSITE_B ] )
  153. {
  154. console_print( id , "* Bombalerako Lezaras: Ezen a palyan nem engedelyezett!" );
  155. return PLUGIN_HANDLED;
  156. }
  157.  
  158. new szSite[ 3 ] , szState[ 3 ] , iState , BombSites:bsSite;
  159. read_argv( 1 , szSite , charsmax( szSite ) );
  160. read_argv( 2 , szState , charsmax( szState ) );
  161.  
  162. iState = str_to_num( szState );
  163.  
  164. if ( ( strlen( szSite ) > 1 ) || !is_str_num( szState ) || !( 0 <= iState <= 1 ) )
  165. szSite[ 0 ] = 'X';
  166. else
  167. szSite[ 0 ] = toupper( szSite[ 0 ] );
  168.  
  169. switch ( szSite[ 0 ] )
  170. {
  171. case 'A':
  172. {
  173. bsSite = BOMBSITE_A;
  174. }
  175. case 'B':
  176. {
  177. bsSite = BOMBSITE_B;
  178. }
  179. default:
  180. {
  181. console_print( id , "* Bombalerako lezarasa: Ismeretlen argumentum! Megfelelo: 'fb_setbombsite a\b 0\1'" );
  182. return PLUGIN_HANDLED;
  183. }
  184. }
  185.  
  186. SetBombSiteLock( bsSite , bool:iState );
  187.  
  188. console_print( id , "* Bombalerako (%s) jelenleg %s" , szSite , iState ? "szabad" : "zart" );
  189.  
  190. set_hudmessage( 255 , 255 , 255 , -1.0 , 0.65 , 0 , 3.0 , 3.0 , .channel = -1 );
  191. show_hudmessage( 0 , "Bombalerako (%s) jelenleg %s" , szSite , iState ? "szabad" : "zart" );
  192.  
  193. return PLUGIN_HANDLED;
  194. }
  195.  
  196. public ShowBombSiteMenu( id , AdminLevel )
  197. {
  198. if ( !( get_user_flags( id ) & AdminLevel ) )
  199. {
  200. console_print( id , "* Nincs engedelyed ehhez a parancshoz." );
  201. return PLUGIN_HANDLED;
  202. }
  203.  
  204. if ( !g_iBombSiteEntity[ BOMBSITE_A ] || !g_iBombSiteEntity[ BOMBSITE_B ] )
  205. {
  206. console_print( id , "* Bombalerako Lezaras: Ezen a palyan nem engedelyezett!" );
  207. return PLUGIN_HANDLED;
  208. }
  209.  
  210. new iMenu = menu_create( "Bombalerako zarolas menu" , "MenuHandler" );
  211. new iCallBack = menu_makecallback( "MenuCallBack" );
  212.  
  213. menu_additem( iMenu , "A zarolasa" , .callback = iCallBack );
  214. menu_additem( iMenu , "B zarolasa" , .callback = iCallBack );
  215. menu_additem( iMenu , "A feloldasa" , .callback = iCallBack );
  216. menu_additem( iMenu , "B feloldasa" , .callback = iCallBack );
  217. menu_additem( iMenu , "A & B zarolasa" , .callback = iCallBack );
  218. menu_additem( iMenu , "A & B feloldasa" , .callback = iCallBack );
  219.  
  220. menu_display( id , iMenu );
  221.  
  222. return PLUGIN_HANDLED;
  223. }
  224.  
  225. public MenuCallBack( id , iMenu, iItem )
  226. {
  227. new iRetVal;
  228.  
  229. switch ( iItem )
  230. {
  231. case 0: iRetVal = g_bBombSiteStatus[ BOMBSITE_A ] ? ITEM_DISABLED : ITEM_ENABLED;
  232. case 1: iRetVal = g_bBombSiteStatus[ BOMBSITE_B ] ? ITEM_DISABLED : ITEM_ENABLED;
  233. case 2: iRetVal = g_bBombSiteStatus[ BOMBSITE_A ] ? ITEM_ENABLED : ITEM_DISABLED;
  234. case 3: iRetVal = g_bBombSiteStatus[ BOMBSITE_B ] ? ITEM_ENABLED : ITEM_DISABLED;
  235. case 4: iRetVal = g_bBombSiteStatus[ BOMBSITE_A ] && g_bBombSiteStatus[ BOMBSITE_B ] ? ITEM_DISABLED : ITEM_ENABLED;
  236. case 5: iRetVal = g_bBombSiteStatus[ BOMBSITE_A ] || g_bBombSiteStatus[ BOMBSITE_B ] ? ITEM_ENABLED : ITEM_DISABLED;
  237. }
  238.  
  239. return iRetVal;
  240. }
  241.  
  242. public MenuHandler( id , iMenu , iItem )
  243. {
  244. if( iItem == MENU_EXIT )
  245. {
  246. menu_destroy( iMenu );
  247. return PLUGIN_HANDLED;
  248. }
  249.  
  250. set_hudmessage( 255 , 255 , 255 , -1.0 , 0.65 , 0 , 3.0 , 3.0 , .channel = -1 );
  251.  
  252. switch ( iItem )
  253. {
  254. case 0:
  255. {
  256. SetBombSiteLock( BOMBSITE_A , true );
  257. show_hudmessage( 0 , "Bombalerako (A) lezarva" );
  258. }
  259. case 1:
  260. {
  261. SetBombSiteLock( BOMBSITE_B , true );
  262. show_hudmessage( 0 , "Bombalerako (B) lezarva" );
  263. }
  264. case 2:
  265. {
  266. SetBombSiteLock( BOMBSITE_A , false );
  267. show_hudmessage( 0 , "Bombalerako (A) feloldva" );
  268. }
  269. case 3:
  270. {
  271. SetBombSiteLock( BOMBSITE_B , false );
  272. show_hudmessage( 0 , "Bombalerako (B) feloldva" );
  273. }
  274. case 4:
  275. {
  276. SetBombSiteLock( BOMBSITE_A , true );
  277. SetBombSiteLock( BOMBSITE_B , true );
  278. show_hudmessage( 0 , "Bombalerako (A & B) lezarva" );
  279. }
  280. case 5:
  281. {
  282. SetBombSiteLock( BOMBSITE_A , false );
  283. SetBombSiteLock( BOMBSITE_B , false );
  284. show_hudmessage( 0 , "Bombalerako (A & B) feloldva" );
  285. }
  286. }
  287.  
  288. menu_destroy( iMenu );
  289.  
  290. return PLUGIN_HANDLED;
  291. }
  292.  
  293. public fw_HUDEntThink( iEntity )
  294. {
  295. if( g_bPlayerHoldingBomb && ( g_bBombSiteStatus[ BOMBSITE_A ] || g_bBombSiteStatus[ BOMBSITE_B ] ) && ( iEntity == g_iHUDEntity ) && is_user_alive( g_iPlayerWithBomb ) )
  296. {
  297. set_hudmessage( 255 , 255 , 255 , -1.0 , 0.87 , 0 , 1.0 , 1.0 , .channel = -1 );
  298. show_hudmessage( g_iPlayerWithBomb , "Bombalerako%s %s%s%s %s jelenleg lezarva!" , g_bBombSiteStatus[ BOMBSITE_A ] && g_bBombSiteStatus[ BOMBSITE_B ] ? "s" : "" ,
  299. g_bBombSiteStatus[ BOMBSITE_A ] ? "A" : "" ,
  300. g_bBombSiteStatus[ BOMBSITE_A ] && g_bBombSiteStatus[ BOMBSITE_B ] ? " & " : "" ,
  301. g_bBombSiteStatus[ BOMBSITE_B ] ? "B" : "" ,
  302. g_bBombSiteStatus[ BOMBSITE_A ] && g_bBombSiteStatus[ BOMBSITE_B ] ? "are" : "is" );
  303.  
  304. entity_set_float( g_iHUDEntity , EV_FL_nextthink , ( get_gametime() + 1.0 ) );
  305. }
  306. }
  307.  
  308. SetBombSiteLock( BombSites:bsBombSite , bool:bLockState )
  309. {
  310. entity_set_int( g_iBombSiteEntity[ bsBombSite ] , EV_INT_solid , bLockState ? SOLID_NOT : SOLID_TRIGGER );
  311. g_bBombSiteStatus[ bsBombSite ] = bLockState;
  312.  
  313. if ( bLockState )
  314. entity_set_float( g_iHUDEntity , EV_FL_nextthink , ( get_gametime() + 1.0 ) );
  315. }
  316.  



!tBombalerako (A & B) lezarva, ameddig !g%d CT !tnem lesz.

Ez hogy lesz?


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Szinezés
HozzászólásElküldve: 2015.10.24. 21:52 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2014.09.08. 22:21
Hozzászólások: 3014
Megköszönt másnak: 96 alkalommal
Megköszönték neki: 555 alkalommal
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <engine>
  3.  
  4. new const Version[] = "0.3";
  5.  
  6. enum BombSites
  7. {
  8. BOMBSITE_A,
  9. BOMBSITE_B
  10. }
  11.  
  12. new g_iBombSiteEntity[ BombSites ];
  13. new bool:g_bBombSiteStatus[ BombSites ];
  14. new g_iPlayerWithBomb;
  15. new bool:g_bPlayerHoldingBomb;
  16.  
  17. new g_iHUDEntity;
  18.  
  19. new g_pCVarAllowPlantNum;
  20. new g_pCVarLockSiteNum;
  21. new g_pCVarLockSite;
  22.  
  23. public plugin_init( )
  24. {
  25. register_plugin( "BombSite Lock" , Version , "bugsy" );
  26.  
  27. register_concmd( "bl_setbombsite" , "SetBombSiteConsole" , ADMIN_KICK );
  28. register_concmd( "bl_bombsitemenu" , "ShowBombSiteMenu" , ADMIN_KICK );
  29.  
  30. register_event( "CurWeapon" , "fw_EvCurWeapon" , "b" , "1=1" );
  31. register_event( "WeapPickup", "fw_EvWeapPickup" , "be" , "1=6" );
  32. register_event( "BombDrop" , "fw_EvBombDrop" , "bc" );
  33.  
  34. register_logevent( "fw_EvRoundStart" , 2 , "1=Round_Start" );
  35.  
  36. g_pCVarAllowPlantNum = register_cvar( "bl_allowplantctnum" , "0" );
  37. g_pCVarLockSiteNum = register_cvar( "bl_locksitectnum" , "2" );
  38. g_pCVarLockSite = register_cvar( "bl_locksite" , "b" );
  39.  
  40. g_iHUDEntity = create_entity( "info_target" );
  41. entity_set_string( g_iHUDEntity , EV_SZ_classname , "bl_hud_entity" );
  42. register_think( "bl_hud_entity" , "fw_HUDEntThink" );
  43.  
  44. new szMap[ 11 ] , BombSites:bsBombSiteA , BombSites:bsBombSiteB;
  45. get_mapname( szMap , charsmax( szMap ) );
  46.  
  47. if ( equal( szMap , "de_chateau" ) || equal( szMap , "de_dust2" ) || equal( szMap , "de_train" ) )
  48. {
  49. bsBombSiteA = BOMBSITE_B;
  50. bsBombSiteB = BOMBSITE_A;
  51. }
  52. else
  53. {
  54. bsBombSiteA = BOMBSITE_A;
  55. bsBombSiteB = BOMBSITE_B;
  56. }
  57.  
  58. g_iBombSiteEntity[ bsBombSiteA ] = find_ent_by_class( -1 , "func_bomb_target" );
  59. g_iBombSiteEntity[ bsBombSiteB ] = find_ent_by_class( g_iBombSiteEntity[ bsBombSiteA ] , "func_bomb_target" );
  60. }
  61.  
  62. public client_disconnect( id )
  63. {
  64. if ( g_iPlayerWithBomb == id )
  65. {
  66. g_iPlayerWithBomb = 0;
  67. g_bPlayerHoldingBomb = false;
  68. }
  69. }
  70.  
  71. public fw_EvCurWeapon( id )
  72. {
  73. if ( id == g_iPlayerWithBomb )
  74. {
  75. if ( read_data( 2 ) == CSW_C4 )
  76. {
  77. g_bPlayerHoldingBomb = true;
  78. entity_set_float( g_iHUDEntity , EV_FL_nextthink , ( get_gametime() + 1.0 ) );
  79. }
  80. else
  81. {
  82. g_bPlayerHoldingBomb = false;
  83. }
  84. }
  85. }
  86.  
  87. public fw_EvWeapPickup( id )
  88. {
  89. g_iPlayerWithBomb = id;
  90. }
  91.  
  92. public fw_EvBombDrop()
  93. {
  94. g_iPlayerWithBomb = 0;
  95. g_bPlayerHoldingBomb = false;
  96. }
  97.  
  98. public fw_EvRoundStart()
  99. {
  100. new iAllowPlantNum = get_pcvar_num( g_pCVarAllowPlantNum );
  101. new iLockSiteNum = get_pcvar_num( g_pCVarLockSiteNum );
  102. new iPlayers[ 32 ] , iNum , iCTCount;
  103.  
  104. get_players( iPlayers , iNum , "h" );
  105.  
  106. for ( new i = 0 ; i < iNum ; i++ )
  107. if ( get_user_team( iPlayers[ i ] ) == 2 )
  108. iCTCount++;
  109.  
  110. if ( iCTCount < iAllowPlantNum )
  111. {
  112. SetBombSiteLock( BOMBSITE_A , true );
  113. SetBombSiteLock( BOMBSITE_B , true );
  114.  
  115. ChatColor( 0, "* Bombalerako (^3A & B^1) lezarva, ameddig^4 %d CT ^1nem lesz." , iAllowPlantNum );
  116. }
  117. else if ( iCTCount < iLockSiteNum )
  118. {
  119. new szSite[ 2 ];
  120. get_pcvar_string( g_pCVarLockSite , szSite , charsmax( szSite ) );
  121. szSite[ 0 ] = toupper( szSite[ 0 ] );
  122.  
  123. if ( !( 'A' <= szSite[ 0 ] <= 'B' ) )
  124. return PLUGIN_CONTINUE;
  125.  
  126. SetBombSiteLock( ( szSite[ 0 ] == 'A' ) ? BOMBSITE_A : BOMBSITE_B , true );
  127. SetBombSiteLock( ( szSite[ 0 ] == 'A' ) ? BOMBSITE_B : BOMBSITE_A , false );
  128.  
  129. ChatColor( 0, "* Bombalerako (^3%s^1) lezarva, ameddig^4 %d CT ^1nem lesz." , szSite , iLockSiteNum );
  130. }
  131. else
  132. {
  133. SetBombSiteLock( BOMBSITE_A , false );
  134. SetBombSiteLock( BOMBSITE_B , false );
  135. }
  136.  
  137. return PLUGIN_CONTINUE;
  138. }
  139.  
  140. public SetBombSiteConsole( id , AdminLevel )
  141. {
  142. if ( !( get_user_flags( id ) & AdminLevel ) )
  143. {
  144. console_print( id , "* Nincs engedelyed ehhez a parancshoz." );
  145. return PLUGIN_HANDLED;
  146. }
  147.  
  148. if ( !g_iBombSiteEntity[ BOMBSITE_A ] || !g_iBombSiteEntity[ BOMBSITE_B ] )
  149. {
  150. console_print( id , "* Bombalerako Lezaras: Ezen a palyan nem engedelyezett!" );
  151. return PLUGIN_HANDLED;
  152. }
  153.  
  154. new szSite[ 3 ] , szState[ 3 ] , iState , BombSites:bsSite;
  155. read_argv( 1 , szSite , charsmax( szSite ) );
  156. read_argv( 2 , szState , charsmax( szState ) );
  157.  
  158. iState = str_to_num( szState );
  159.  
  160. if ( ( strlen( szSite ) > 1 ) || !is_str_num( szState ) || !( 0 <= iState <= 1 ) )
  161. szSite[ 0 ] = 'X';
  162. else
  163. szSite[ 0 ] = toupper( szSite[ 0 ] );
  164.  
  165. switch ( szSite[ 0 ] )
  166. {
  167. case 'A':
  168. {
  169. bsSite = BOMBSITE_A;
  170. }
  171. case 'B':
  172. {
  173. bsSite = BOMBSITE_B;
  174. }
  175. default:
  176. {
  177. console_print( id , "* Bombalerako lezarasa: Ismeretlen argumentum! Megfelelo: 'fb_setbombsite a\b 0\1'" );
  178. return PLUGIN_HANDLED;
  179. }
  180. }
  181.  
  182. SetBombSiteLock( bsSite , bool:iState );
  183.  
  184. console_print( id , "* Bombalerako (%s) jelenleg %s" , szSite , iState ? "szabad" : "zart" );
  185.  
  186. set_hudmessage( 255 , 255 , 255 , -1.0 , 0.65 , 0 , 3.0 , 3.0 , .channel = -1 );
  187. show_hudmessage( 0 , "Bombalerako (%s) jelenleg %s" , szSite , iState ? "szabad" : "zart" );
  188.  
  189. return PLUGIN_HANDLED;
  190. }
  191.  
  192. public ShowBombSiteMenu( id , AdminLevel )
  193. {
  194. if ( !( get_user_flags( id ) & AdminLevel ) )
  195. {
  196. console_print( id , "* Nincs engedelyed ehhez a parancshoz." );
  197. return PLUGIN_HANDLED;
  198. }
  199.  
  200. if ( !g_iBombSiteEntity[ BOMBSITE_A ] || !g_iBombSiteEntity[ BOMBSITE_B ] )
  201. {
  202. console_print( id , "* Bombalerako Lezaras: Ezen a palyan nem engedelyezett!" );
  203. return PLUGIN_HANDLED;
  204. }
  205.  
  206. new iMenu = menu_create( "Bombalerako zarolas menu" , "MenuHandler" );
  207. new iCallBack = menu_makecallback( "MenuCallBack" );
  208.  
  209. menu_additem( iMenu , "A zarolasa" , .callback = iCallBack );
  210. menu_additem( iMenu , "B zarolasa" , .callback = iCallBack );
  211. menu_additem( iMenu , "A feloldasa" , .callback = iCallBack );
  212. menu_additem( iMenu , "B feloldasa" , .callback = iCallBack );
  213. menu_additem( iMenu , "A & B zarolasa" , .callback = iCallBack );
  214. menu_additem( iMenu , "A & B feloldasa" , .callback = iCallBack );
  215.  
  216. menu_display( id , iMenu );
  217.  
  218. return PLUGIN_HANDLED;
  219. }
  220.  
  221. public MenuCallBack( id , iMenu, iItem )
  222. {
  223. new iRetVal;
  224.  
  225. switch ( iItem )
  226. {
  227. case 0: iRetVal = g_bBombSiteStatus[ BOMBSITE_A ] ? ITEM_DISABLED : ITEM_ENABLED;
  228. case 1: iRetVal = g_bBombSiteStatus[ BOMBSITE_B ] ? ITEM_DISABLED : ITEM_ENABLED;
  229. case 2: iRetVal = g_bBombSiteStatus[ BOMBSITE_A ] ? ITEM_ENABLED : ITEM_DISABLED;
  230. case 3: iRetVal = g_bBombSiteStatus[ BOMBSITE_B ] ? ITEM_ENABLED : ITEM_DISABLED;
  231. case 4: iRetVal = g_bBombSiteStatus[ BOMBSITE_A ] && g_bBombSiteStatus[ BOMBSITE_B ] ? ITEM_DISABLED : ITEM_ENABLED;
  232. case 5: iRetVal = g_bBombSiteStatus[ BOMBSITE_A ] || g_bBombSiteStatus[ BOMBSITE_B ] ? ITEM_ENABLED : ITEM_DISABLED;
  233. }
  234.  
  235. return iRetVal;
  236. }
  237.  
  238. public MenuHandler( id , iMenu , iItem )
  239. {
  240. if( iItem == MENU_EXIT )
  241. {
  242. menu_destroy( iMenu );
  243. return PLUGIN_HANDLED;
  244. }
  245.  
  246. set_hudmessage( 255 , 255 , 255 , -1.0 , 0.65 , 0 , 3.0 , 3.0 , .channel = -1 );
  247.  
  248. switch ( iItem )
  249. {
  250. case 0:
  251. {
  252. SetBombSiteLock( BOMBSITE_A , true );
  253. show_hudmessage( 0 , "Bombalerako (A) lezarva" );
  254. }
  255. case 1:
  256. {
  257. SetBombSiteLock( BOMBSITE_B , true );
  258. show_hudmessage( 0 , "Bombalerako (B) lezarva" );
  259. }
  260. case 2:
  261. {
  262. SetBombSiteLock( BOMBSITE_A , false );
  263. show_hudmessage( 0 , "Bombalerako (A) feloldva" );
  264. }
  265. case 3:
  266. {
  267. SetBombSiteLock( BOMBSITE_B , false );
  268. show_hudmessage( 0 , "Bombalerako (B) feloldva" );
  269. }
  270. case 4:
  271. {
  272. SetBombSiteLock( BOMBSITE_A , true );
  273. SetBombSiteLock( BOMBSITE_B , true );
  274. show_hudmessage( 0 , "Bombalerako (A & B) lezarva" );
  275. }
  276. case 5:
  277. {
  278. SetBombSiteLock( BOMBSITE_A , false );
  279. SetBombSiteLock( BOMBSITE_B , false );
  280. show_hudmessage( 0 , "Bombalerako (A & B) feloldva" );
  281. }
  282. }
  283.  
  284. menu_destroy( iMenu );
  285.  
  286. return PLUGIN_HANDLED;
  287. }
  288.  
  289. public fw_HUDEntThink( iEntity )
  290. {
  291. if( g_bPlayerHoldingBomb && ( g_bBombSiteStatus[ BOMBSITE_A ] || g_bBombSiteStatus[ BOMBSITE_B ] ) && ( iEntity == g_iHUDEntity ) && is_user_alive( g_iPlayerWithBomb ) )
  292. {
  293. set_hudmessage( 255 , 255 , 255 , -1.0 , 0.87 , 0 , 1.0 , 1.0 , .channel = -1 );
  294. show_hudmessage( g_iPlayerWithBomb , "Bombalerako%s %s%s%s %s jelenleg lezarva!" , g_bBombSiteStatus[ BOMBSITE_A ] && g_bBombSiteStatus[ BOMBSITE_B ] ? "s" : "" ,
  295. g_bBombSiteStatus[ BOMBSITE_A ] ? "A" : "" ,
  296. g_bBombSiteStatus[ BOMBSITE_A ] && g_bBombSiteStatus[ BOMBSITE_B ] ? " & " : "" ,
  297. g_bBombSiteStatus[ BOMBSITE_B ] ? "B" : "" ,
  298. g_bBombSiteStatus[ BOMBSITE_A ] && g_bBombSiteStatus[ BOMBSITE_B ] ? "are" : "is" );
  299.  
  300. entity_set_float( g_iHUDEntity , EV_FL_nextthink , ( get_gametime() + 1.0 ) );
  301. }
  302. }
  303.  
  304. SetBombSiteLock( BombSites:bsBombSite , bool:bLockState )
  305. {
  306. entity_set_int( g_iBombSiteEntity[ bsBombSite ] , EV_INT_solid , bLockState ? SOLID_NOT : SOLID_TRIGGER );
  307. g_bBombSiteStatus[ bsBombSite ] = bLockState;
  308.  
  309. if ( bLockState )
  310. entity_set_float( g_iHUDEntity , EV_FL_nextthink , ( get_gametime() + 1.0 ) );
  311. }
  312.  
  313.  
  314. stock ChatColor(const id, const szMessage[], any:...)
  315. {
  316. static pnum, players[32], szMsg[190], IdMsg;
  317. vformat(szMsg, charsmax(szMsg), szMessage, 3);
  318.  
  319. if(!IdMsg) IdMsg = get_user_msgid("SayText");
  320.  
  321. if(id)
  322. {
  323. players[0] = id;
  324. pnum = 1;
  325. }
  326. else get_players(players, pnum, "ch");
  327.  
  328. for(new i; i < pnum; i++)
  329. {
  330. message_begin(MSG_ONE, IdMsg, .player = players[i]);
  331. write_byte(players[i]);
  332. write_string(szMsg);
  333. message_end();
  334. }
  335. }
  336.  

_________________
GitHub - mforce


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  [ 6 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 141 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