hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.11.10. 20:48



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: busaadam2023, 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  [2 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Buttons Delay Editor
HozzászólásElküldve:2013.06.23. 09:04 
Sziasztok!
Valaki lefordítaná ezt? Megköszönném.
SMA Forráskód: [ Mindet kijelol ]
  1.  
  2. #include <amxmodx>
  3. #include <amxmisc>
  4. #include <engine>
  5. #include <fakemeta>
  6.  
  7. // CUSTOMIZING AREA START
  8. #define MAX_DELAY 180.0
  9. #define MIN_DELAY 1.0
  10. #define EDITED_ENT 293759
  11. // CUSTOMIZING AREA END
  12.  
  13. #define VERSION "1.3"
  14.  
  15. #define m_flWait 44
  16. #define m_ls.sUnlockedSound 78
  17.  
  18. new g_iSprite;
  19. new g_iMsg_Saytext;
  20. new g_iSound[ 33 ];
  21. new g_iEntity[ 33 ];
  22. new g_szConfigFile[ 96 ];
  23. new Trie:g_tSounds;
  24.  
  25. new const g_szButtons[ ][ ] = {
  26. "func_button",
  27. "func_rot_button",
  28. "button_target"
  29. };
  30.  
  31. new const g_szSoundsNames[ ][ ] = {
  32. "None",
  33. "Big zap & Warmup",
  34. "Access Granted",
  35. "Quick Combolock",
  36. "Power Deadbolt 1",
  37. "Power Deadbolt 2",
  38. "Plunger",
  39. "Small zap",
  40. "Keycard Sound",
  41. "Buzz",
  42. "Buzz Off",
  43. "", // 11
  44. "", // 12
  45. "Latch Unlocked",
  46. "Lightswitch"
  47. };
  48.  
  49. new const g_szSounds[ ][ ] = {
  50. "common/null.wav",
  51. "buttons/button1.wav",
  52. "buttons/button2.wav",
  53. "buttons/button3.wav",
  54. "buttons/button4.wav",
  55. "buttons/button5.wav",
  56. "buttons/button6.wav",
  57. "buttons/button7.wav",
  58. "buttons/button8.wav",
  59. "buttons/button9.wav",
  60. "buttons/button10.wav",
  61. "",
  62. "",
  63. "buttons/latchunlocked1.wav",
  64. "buttons/lightswitch2.wav"
  65. };
  66.  
  67. public plugin_init( ) {
  68. register_plugin( "Buttons Delay Editor", VERSION, "xPaw" );
  69.  
  70. register_cvar( "butt_delay_edit", VERSION, FCVAR_SERVER | FCVAR_SPONLY );
  71.  
  72. register_clcmd( "amx_delayedit", "CmdOpenMenu", ADMIN_CFG );
  73.  
  74. register_menucmd( register_menuid( "ButtonsDelayEdit" ), ( MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_9 | MENU_KEY_0 ), "handleMenu" );
  75.  
  76. g_iMsg_Saytext = get_user_msgid( "SayText" );
  77.  
  78. IntButtons( );
  79. }
  80.  
  81. public plugin_precache( ) {
  82. g_iSprite = precache_model( "sprites/flare1.spr" );
  83.  
  84. g_tSounds = TrieCreate( );
  85.  
  86. new szI[ 6 ];
  87. for( new i = 0; i < sizeof g_szSounds; i++ ) {
  88. if( !g_szSounds[ i ][ 0 ] )
  89. continue;
  90.  
  91. precache_sound( g_szSounds[ i ] ); // Some of them could be not precached by map.
  92.  
  93. num_to_str( i, szI, 5 );
  94. TrieSetString( g_tSounds, g_szSounds[ i ], szI );
  95. }
  96. }
  97.  
  98. public client_putinserver( id ) {
  99. g_iSound[ id ] = 0;
  100. g_iEntity[ id ] = 0;
  101. }
  102.  
  103. public plugin_end( ) {
  104. TrieDestroy( g_tSounds );
  105.  
  106. delete_file( g_szConfigFile );
  107.  
  108. new bool:bFound, iFile = fopen( g_szConfigFile, "a" );
  109. if( iFile ) {
  110. new szModel[ 5 ], Float:flWait, szSound[ 32 ], iSpawnFlags, iEntity = FM_NULLENT;
  111.  
  112. fprintf( iFile, "; Buttons Delay Editor v%s by xPaw^n; <classname> <model> <delay> <sound> <dontmove> <toggable>^n^n", VERSION );
  113.  
  114. for( new i; i < sizeof g_szButtons; i++ ) {
  115. iEntity = FM_NULLENT;
  116.  
  117. while( ( iEntity = find_ent_by_class( iEntity, g_szButtons[ i ] ) ) ) {
  118. if( pev( iEntity, pev_iuser2 ) == EDITED_ENT ) {
  119. iSpawnFlags = pev( iEntity, pev_spawnflags );
  120. flWait = get_pdata_float( iEntity, m_flWait, 4 );
  121. pev( iEntity, pev_model, szModel, 4 );
  122. eng_get_string( get_pdata_int( iEntity, m_ls.sUnlockedSound, 5 ), szSound, 31 );
  123.  
  124. fprintf( iFile, "^"%s^" ^"%s^" ^"%f^" ^"%s^" ^"%i^" ^"%i^"^n", g_szButtons[ i ], szModel, flWait, szSound,
  125. ( iSpawnFlags & SF_BUTTON_DONTMOVE ) ? 1 : 0, ( iSpawnFlags & SF_BUTTON_TOGGLE ) ? 1 : 0 );
  126.  
  127. if( !bFound ) bFound = true;
  128. }
  129. }
  130. }
  131.  
  132. fclose( iFile );
  133.  
  134. if( !bFound )
  135. delete_file( g_szConfigFile );
  136. }
  137. }
  138.  
  139. public IntButtons( ) {
  140. get_localinfo( "amxx_datadir", g_szConfigFile, charsmax( g_szConfigFile ) );
  141. formatex( g_szConfigFile, charsmax( g_szConfigFile ), "%s/ButtonDelayEdit", g_szConfigFile );
  142.  
  143. if( !dir_exists( g_szConfigFile ) )
  144. mkdir( g_szConfigFile );
  145.  
  146. new szMapName[ 32 ];
  147. get_mapname( szMapName, charsmax( szMapName ) );
  148. strtolower( szMapName );
  149. formatex( g_szConfigFile, charsmax( g_szConfigFile ), "%s/%s.txt", g_szConfigFile, szMapName );
  150.  
  151. new iFile = fopen( g_szConfigFile, "r" );
  152.  
  153. if( iFile ) {
  154. new iEntity, iSpawnFlags, szI[ 6 ], szDatas[ 256 ], szClassname[ 32 ], szModel[ 5 ];
  155. new iFlags[ 2 ], szDelay[ 16 ], szMovable[ 6 ], szToggable[ 6 ], szSound[ 32 ];
  156.  
  157. while( !feof( iFile ) ) {
  158. fgets( iFile, szDatas, charsmax( szDatas ) );
  159. trim( szDatas );
  160.  
  161. if( !szDatas[ 0 ] || szDatas[ 0 ] == ';' || ( szDatas[ 0 ] == '/' && szDatas[ 1 ] == '/' ) )
  162. continue;
  163.  
  164. parse( szDatas, szClassname, 31, szModel, 4, szDelay, 15, szSound, 31, szMovable, 5, szToggable, 5 );
  165.  
  166. iEntity = find_ent_by_model( -1, szClassname, szModel );
  167.  
  168. if( iEntity > 0 ) {
  169. set_pdata_float( iEntity, m_flWait, str_to_float( szDelay ), 4 );
  170.  
  171. if( !szSound[ 0 ] )
  172. formatex( szSound, 31, "%s", g_szSounds[ 0 ] ); // Some maps have empty sounds O.o
  173.  
  174. if( TrieGetString( g_tSounds, szSound, szI, 5 ) || equali( szSound, g_szSounds[ 0 ] ) ) {
  175. set_pdata_int( iEntity, m_ls.sUnlockedSound, engfunc( EngFunc_AllocString, szSound ), 5 );
  176. DispatchKeyValue( iEntity, "unlocked_sound", szI );
  177. }
  178.  
  179. iSpawnFlags = pev( iEntity, pev_spawnflags );
  180.  
  181. if( szMovable[ 0 ] ) {
  182. iFlags[ 0 ] = str_to_num( szMovable );
  183.  
  184. if( ( iSpawnFlags & SF_BUTTON_DONTMOVE ) ) {
  185. if( iFlags[ 0 ] == 0 )
  186. set_pev( iEntity, pev_spawnflags, iSpawnFlags & ~SF_BUTTON_DONTMOVE );
  187. } else {
  188. if( iFlags[ 0 ] == 1 )
  189. set_pev( iEntity, pev_spawnflags, iSpawnFlags | SF_BUTTON_DONTMOVE );
  190. }
  191. }
  192.  
  193. if( szToggable[ 0 ] ) {
  194. iFlags[ 1 ] = str_to_num( szToggable );
  195.  
  196. if( ( iSpawnFlags & SF_BUTTON_TOGGLE ) ) {
  197. if( iFlags[ 1 ] == 0 )
  198. set_pev( iEntity, pev_spawnflags, iSpawnFlags & ~SF_BUTTON_TOGGLE );
  199. } else {
  200. if( iFlags[ 1 ] == 1 )
  201. set_pev( iEntity, pev_spawnflags, iSpawnFlags | SF_BUTTON_TOGGLE );
  202. }
  203. }
  204.  
  205. DispatchSpawn( iEntity );
  206.  
  207. set_pev( iEntity, pev_iuser2, EDITED_ENT );
  208. }
  209. }
  210.  
  211. fclose( iFile );
  212. }
  213. }
  214.  
  215. public CmdOpenMenu( id, level, cid ) {
  216. if( !cmd_access( id, level, cid, 1 ) )
  217. return PLUGIN_HANDLED;
  218.  
  219. ShowMenu( id );
  220.  
  221. return PLUGIN_HANDLED;
  222. }
  223.  
  224. public ShowMenu( id ) {
  225. new szMenu[ 364 ], iKeys;
  226.  
  227. add( szMenu, charsmax( szMenu ), "\rButtons Delay Editor by xPaw^n^n" );
  228.  
  229. if( g_iEntity[ id ] > 0 ) {
  230. new szI[ 6 ], szSound[ 32 ], szRandom[ 64 ], iWait;
  231. iWait = floatround( get_pdata_float( g_iEntity[ id ], m_flWait, 4 ) );
  232.  
  233. formatex( szRandom, charsmax( szRandom ), "\yCurrent Button: \w#%i^n\yCurrent Delay: \w%i second%s^n^n", g_iEntity[ id ], iWait, iWait == 1 ? "" : "s" );
  234.  
  235. add( szMenu, charsmax( szMenu ), szRandom );
  236.  
  237. eng_get_string( get_pdata_int( g_iEntity[ id ], m_ls.sUnlockedSound, 5 ), szSound, 31 );
  238.  
  239. if( !szSound[ 0 ] )
  240. formatex( szSound, 31, "%s", g_szSounds[ 0 ] ); // Some maps have empty sounds O.o
  241.  
  242. if( TrieGetString( g_tSounds, szSound, szI, 5 ) ) {
  243. g_iSound[ id ] = str_to_num( szI );
  244.  
  245. formatex( szRandom, charsmax( szRandom ), "\r3. \wActive Sound: \y%s^n", g_szSoundsNames[ g_iSound[ id ] ] );
  246. } else {
  247. g_iSound[ id ] = 0;
  248.  
  249. formatex( szRandom, charsmax( szRandom ), "\r3. \wActive Sound: \yUnknown\r (Report to xPaw)^n" );
  250.  
  251. // Log report
  252. new szMapName[ 32 ];
  253. get_mapname( szMapName, charsmax( szMapName ) );
  254.  
  255. log_amx( "----------" );
  256. log_amx( "Report for unknown sound" );
  257. log_amx( "Sound: %s", szSound );
  258. log_amx( "Map: %s", szMapName );
  259. log_amx( "Entity: %i - Maxplayers: %i", g_iEntity[ id ], get_maxplayers( ) );
  260. log_amx( "----------" );
  261. }
  262.  
  263. add( szMenu, charsmax( szMenu ), "\r1. \wDelay UP^n\r2. \wDelay Down^n^n" );
  264. add( szMenu, charsmax( szMenu ), szRandom );
  265.  
  266. new iSpawnFlags = pev( g_iEntity[ id ], pev_spawnflags );
  267.  
  268. formatex( szRandom, charsmax( szRandom ), "\r4. \wDont move: \y%s^n\r5. \wToggable: \y%s^n^n",
  269. ( iSpawnFlags & SF_BUTTON_DONTMOVE ) ? "Yes" : "No", ( iSpawnFlags & SF_BUTTON_TOGGLE ) ? "Yes" : "No" );
  270.  
  271. add( szMenu, charsmax( szMenu ), szRandom );
  272.  
  273. iKeys = MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_9 | MENU_KEY_0;
  274. } else {
  275. add( szMenu, charsmax( szMenu ), "\yCurrent Button: \wN/A^n^n" );
  276.  
  277. iKeys = MENU_KEY_9 | MENU_KEY_0;
  278. }
  279.  
  280. add( szMenu, charsmax( szMenu ), "\r9. \wFind new button^n\r0. \wExit" );
  281.  
  282. show_menu( id, iKeys, szMenu, -1, "ButtonsDelayEdit" );
  283. }
  284.  
  285. public handleMenu( id, iNum ) {
  286. switch( iNum ) {
  287. case 0: {
  288. if( pev_valid( g_iEntity[ id ] ) ) {
  289. new Float:flWait;
  290. flWait = get_pdata_float( g_iEntity[ id ], m_flWait, 4 );
  291.  
  292. if( flWait + 1.0 > MAX_DELAY ) {
  293. GreenPrint( id, "^4[AMXX]^3 You reached max delay of^4 %i^3!", floatround( MAX_DELAY ) );
  294. } else {
  295. set_pdata_float( g_iEntity[ id ], m_flWait, flWait + 1.0, 4 );
  296.  
  297. set_pev( g_iEntity[ id ], pev_iuser2, EDITED_ENT );
  298. }
  299. } else
  300. g_iEntity[ id ] = 0;
  301. }
  302. case 1: {
  303. if( pev_valid( g_iEntity[ id ] ) ) {
  304. new Float:flWait;
  305. flWait = get_pdata_float( g_iEntity[ id ], m_flWait, 4 );
  306.  
  307. if( flWait - 1.0 < MIN_DELAY ) {
  308. GreenPrint( id, "^4[AMXX]^3 You reached min delay of^4 %i^3!", floatround( MIN_DELAY ) );
  309. } else {
  310. set_pdata_float( g_iEntity[ id ], m_flWait, flWait - 1.0, 4 );
  311.  
  312. set_pev( g_iEntity[ id ], pev_iuser2, EDITED_ENT );
  313. }
  314. } else
  315. g_iEntity[ id ] = 0;
  316. }
  317. case 2: {
  318. if( pev_valid( g_iEntity[ id ] ) ) {
  319. new iSound, szI[ 6 ];
  320.  
  321. if( g_iSound[ id ] == sizeof( g_szSoundsNames ) - 1 ) {
  322. iSound = engfunc( EngFunc_AllocString, g_szSounds[ 0 ] );
  323. num_to_str( 0, szI, 5 );
  324. } else {
  325. new i = g_iSound[ id ] + 1;
  326.  
  327. // We need to ignore 11 & 12....
  328. if( 11 <= i <= 12 )
  329. i = 13;
  330.  
  331. iSound = engfunc( EngFunc_AllocString, g_szSounds[ i ] );
  332. num_to_str( i, szI, 5 );
  333. }
  334.  
  335. set_pdata_int( g_iEntity[ id ], m_ls.sUnlockedSound, iSound, 5 );
  336.  
  337. DispatchKeyValue( g_iEntity[ id ], "unlocked_sound", szI );
  338. } else
  339. g_iEntity[ id ] = 0;
  340. }
  341. case 3: {
  342. if( pev_valid( g_iEntity[ id ] ) ) {
  343. new iSpawnFlags = pev( g_iEntity[ id ], pev_spawnflags );
  344.  
  345. if( iSpawnFlags & SF_BUTTON_DONTMOVE )
  346. set_pev( g_iEntity[ id ], pev_spawnflags, iSpawnFlags & ~SF_BUTTON_DONTMOVE );
  347. else
  348. set_pev( g_iEntity[ id ], pev_spawnflags, iSpawnFlags | SF_BUTTON_DONTMOVE );
  349.  
  350. DispatchSpawn( g_iEntity[ id ] );
  351. } else
  352. g_iEntity[ id ] = 0;
  353. }
  354. case 4: {
  355. if( pev_valid( g_iEntity[ id ] ) ) {
  356. new iSpawnFlags = pev( g_iEntity[ id ], pev_spawnflags );
  357.  
  358. if( iSpawnFlags & SF_BUTTON_TOGGLE )
  359. set_pev( g_iEntity[ id ], pev_spawnflags, iSpawnFlags & ~SF_BUTTON_TOGGLE );
  360. else
  361. set_pev( g_iEntity[ id ], pev_spawnflags, iSpawnFlags | SF_BUTTON_TOGGLE );
  362.  
  363. DispatchSpawn( g_iEntity[ id ] );
  364. } else
  365. g_iEntity[ id ] = 0;
  366. }
  367. case 8: {
  368. g_iSound[ id ] = 0;
  369. g_iEntity[ id ] = 0;
  370.  
  371. new iEntity, iBody;
  372. get_user_aiming( id, iEntity, iBody, 400 );
  373.  
  374. if( pev_valid( iEntity ) ) {
  375. if( IsButton( iEntity ) ) {
  376. g_iEntity[ id ] = iEntity;
  377.  
  378. // Draw a beam from player to button
  379. new iOrigin[ 3 ], iOrigin2[ 3 ], Float:flMins[ 3 ], Float:flMaxs[ 3 ];
  380. get_user_origin( id, iOrigin );
  381.  
  382. pev( iEntity, pev_mins, flMins );
  383. pev( iEntity, pev_maxs, flMaxs );
  384. iOrigin2[ 0 ] = floatround( ( flMins[ 0 ] + flMaxs[ 0 ] ) * 0.5 );
  385. iOrigin2[ 1 ] = floatround( ( flMins[ 1 ] + flMaxs[ 1 ] ) * 0.5 );
  386. iOrigin2[ 2 ] = floatround( ( flMins[ 2 ] + flMaxs[ 2 ] ) * 0.5 );
  387.  
  388. DrawBeam( iOrigin, iOrigin2 );
  389. } else
  390. GreenPrint( id, "^4[AMXX]^1 Please aim on a button!" );
  391. } else
  392. GreenPrint( id, "^4[AMXX]^1 Please aim on a button!" );
  393. }
  394. case 9: {
  395. g_iSound[ id ] = 0;
  396. g_iEntity[ id ] = 0;
  397.  
  398. return;
  399. }
  400. }
  401.  
  402. if( iNum != 9 )
  403. ShowMenu( id );
  404. }
  405.  
  406. bool:IsButton( iEntity ) {
  407. new szClassname[ 32 ];
  408. pev( iEntity, pev_classname, szClassname, 31 );
  409.  
  410. for( new i; i < sizeof g_szButtons; i++ )
  411. if( equal( szClassname, g_szButtons[ i ] ) )
  412. return true;
  413.  
  414. return false;
  415. }
  416.  
  417. stock DrawBeam( iOrigin[ 3 ], iOrigin2[ 3 ] ) {
  418. message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
  419. write_byte( TE_BEAMPOINTS );
  420. write_coord( iOrigin[ 0 ] );
  421. write_coord( iOrigin[ 1 ] );
  422. write_coord( iOrigin[ 2 ] );
  423. write_coord( iOrigin2[ 0 ] );
  424. write_coord( iOrigin2[ 1 ] );
  425. write_coord( iOrigin2[ 2 ] );
  426. write_short( g_iSprite ); // model
  427. write_byte( 0 ); // start frame
  428. write_byte( 10 ); // framerate
  429. write_byte( 20 ); // life
  430. write_byte( 10 ); // width
  431. write_byte( 2 ); // noise
  432. write_byte( 0 ); // red
  433. write_byte( 100 ); // green
  434. write_byte( 255 ); // blue
  435. write_byte( 100 ); // brightness
  436. write_byte( 30 ); // speed
  437. message_end( );
  438. }
  439.  
  440. stock GreenPrint( id, const szMsg[ ], any:... ) {
  441. new szMessage[ 192 ];
  442. vformat( szMessage, 191, szMsg, 3 );
  443.  
  444. message_begin( MSG_ONE_UNRELIABLE, g_iMsg_Saytext, _, id );
  445. write_byte( id );
  446. write_string( szMessage );
  447. message_end( );
  448.  
  449. return 1;
  450. }
  451.  


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Buttons Delay Editor
HozzászólásElküldve:2013.06.24. 19:42 
Offline
Őskövület
Avatar

Csatlakozott:2011.12.28. 00:35
Hozzászólások:2736
Megköszönt másnak: 56 alkalommal
Megköszönték neki: 275 alkalommal
Tessék:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <engine>
  4. #include <fakemeta>
  5.  
  6. // CUSTOMIZING AREA START
  7. #define MAX_DELAY 180.0
  8. #define MIN_DELAY 1.0
  9. #define EDITED_ENT 293759
  10. // CUSTOMIZING AREA END
  11.  
  12. #define VERSION "1.3"
  13.  
  14. #define m_flWait 44
  15. #define m_ls.sUnlockedSound 78
  16.  
  17. new g_iSprite;
  18. new g_iMsg_Saytext;
  19. new g_iSound[ 33 ];
  20. new g_iEntity[ 33 ];
  21. new g_szConfigFile[ 96 ];
  22. new Trie:g_tSounds;
  23.  
  24. new const g_szButtons[ ][ ] = {
  25. "func_button",
  26. "func_rot_button",
  27. "button_target"
  28. };
  29.  
  30. new const g_szSoundsNames[ ][ ] = {
  31. "Nincs",
  32. "Nagy eltrafalas & Bemelegites",
  33. "Hozzaferest adott",
  34. "Gyors Combolock",
  35. "Ero halal bolt 1",
  36. "Ero halal bolt 2",
  37. "Buvar",
  38. "Kicsi eltrafalas",
  39. "Nyito kartya hang",
  40. "Zugas",
  41. "Zugas kikapcsolas",
  42. "", // 11
  43. "", // 12
  44. "Kilincs nyitas",
  45. "Fenyek boszorkany"
  46. };
  47.  
  48. new const g_szSounds[ ][ ] = {
  49. "common/null.wav",
  50. "buttons/button1.wav",
  51. "buttons/button2.wav",
  52. "buttons/button3.wav",
  53. "buttons/button4.wav",
  54. "buttons/button5.wav",
  55. "buttons/button6.wav",
  56. "buttons/button7.wav",
  57. "buttons/button8.wav",
  58. "buttons/button9.wav",
  59. "buttons/button10.wav",
  60. "",
  61. "",
  62. "buttons/latchunlocked1.wav",
  63. "buttons/lightswitch2.wav"
  64. };
  65.  
  66. public plugin_init( ) {
  67. register_plugin( "Buttons Delay Editor", VERSION, "xPaw" );
  68.  
  69. register_cvar( "butt_delay_edit", VERSION, FCVAR_SERVER | FCVAR_SPONLY );
  70.  
  71. register_clcmd( "amx_delayedit", "CmdOpenMenu", ADMIN_CFG );
  72.  
  73. register_menucmd( register_menuid( "ButtonsDelayEdit" ), ( MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_9 | MENU_KEY_0 ), "handleMenu" );
  74.  
  75. g_iMsg_Saytext = get_user_msgid( "SayText" );
  76.  
  77. IntButtons( );
  78. }
  79.  
  80. public plugin_precache( ) {
  81. g_iSprite = precache_model( "sprites/flare1.spr" );
  82.  
  83. g_tSounds = TrieCreate( );
  84.  
  85. new szI[ 6 ];
  86. for( new i = 0; i < sizeof g_szSounds; i++ ) {
  87. if( !g_szSounds[ i ][ 0 ] )
  88. continue;
  89.  
  90. precache_sound( g_szSounds[ i ] ); // Some of them could be not precached by map.
  91.  
  92. num_to_str( i, szI, 5 );
  93. TrieSetString( g_tSounds, g_szSounds[ i ], szI );
  94. }
  95. }
  96.  
  97. public client_putinserver( id ) {
  98. g_iSound[ id ] = 0;
  99. g_iEntity[ id ] = 0;
  100. }
  101.  
  102. public plugin_end( ) {
  103. TrieDestroy( g_tSounds );
  104.  
  105. delete_file( g_szConfigFile );
  106.  
  107. new bool:bFound, iFile = fopen( g_szConfigFile, "a" );
  108. if( iFile ) {
  109. new szModel[ 5 ], Float:flWait, szSound[ 32 ], iSpawnFlags, iEntity = FM_NULLENT;
  110.  
  111. fprintf( iFile, "; A gombok kesedelem szerkeszto v%s by xPaw^n; <classname> <model> <delay> <sound> <dontmove> <toggable>^n^n", VERSION );
  112.  
  113. for( new i; i < sizeof g_szButtons; i++ ) {
  114. iEntity = FM_NULLENT;
  115.  
  116. while( ( iEntity = find_ent_by_class( iEntity, g_szButtons[ i ] ) ) ) {
  117. if( pev( iEntity, pev_iuser2 ) == EDITED_ENT ) {
  118. iSpawnFlags = pev( iEntity, pev_spawnflags );
  119. flWait = get_pdata_float( iEntity, m_flWait, 4 );
  120. pev( iEntity, pev_model, szModel, 4 );
  121. eng_get_string( get_pdata_int( iEntity, m_ls.sUnlockedSound, 5 ), szSound, 31 );
  122.  
  123. fprintf( iFile, "^"%s^" ^"%s^" ^"%f^" ^"%s^" ^"%i^" ^"%i^"^n", g_szButtons[ i ], szModel, flWait, szSound,
  124. ( iSpawnFlags & SF_BUTTON_DONTMOVE ) ? 1 : 0, ( iSpawnFlags & SF_BUTTON_TOGGLE ) ? 1 : 0 );
  125.  
  126. if( !bFound ) bFound = true;
  127. }
  128. }
  129. }
  130.  
  131. fclose( iFile );
  132.  
  133. if( !bFound )
  134. delete_file( g_szConfigFile );
  135. }
  136. }
  137.  
  138. public IntButtons( ) {
  139. get_localinfo( "amxx_datadir", g_szConfigFile, charsmax( g_szConfigFile ) );
  140. formatex( g_szConfigFile, charsmax( g_szConfigFile ), "%s/ButtonDelayEdit", g_szConfigFile );
  141.  
  142. if( !dir_exists( g_szConfigFile ) )
  143. mkdir( g_szConfigFile );
  144.  
  145. new szMapName[ 32 ];
  146. get_mapname( szMapName, charsmax( szMapName ) );
  147. strtolower( szMapName );
  148. formatex( g_szConfigFile, charsmax( g_szConfigFile ), "%s/%s.txt", g_szConfigFile, szMapName );
  149.  
  150. new iFile = fopen( g_szConfigFile, "r" );
  151.  
  152. if( iFile ) {
  153. new iEntity, iSpawnFlags, szI[ 6 ], szDatas[ 256 ], szClassname[ 32 ], szModel[ 5 ];
  154. new iFlags[ 2 ], szDelay[ 16 ], szMovable[ 6 ], szToggable[ 6 ], szSound[ 32 ];
  155.  
  156. while( !feof( iFile ) ) {
  157. fgets( iFile, szDatas, charsmax( szDatas ) );
  158. trim( szDatas );
  159.  
  160. if( !szDatas[ 0 ] || szDatas[ 0 ] == ';' || ( szDatas[ 0 ] == '/' && szDatas[ 1 ] == '/' ) )
  161. continue;
  162.  
  163. parse( szDatas, szClassname, 31, szModel, 4, szDelay, 15, szSound, 31, szMovable, 5, szToggable, 5 );
  164.  
  165. iEntity = find_ent_by_model( -1, szClassname, szModel );
  166.  
  167. if( iEntity > 0 ) {
  168. set_pdata_float( iEntity, m_flWait, str_to_float( szDelay ), 4 );
  169.  
  170. if( !szSound[ 0 ] )
  171. formatex( szSound, 31, "%s", g_szSounds[ 0 ] ); // Some maps have empty sounds O.o
  172.  
  173. if( TrieGetString( g_tSounds, szSound, szI, 5 ) || equali( szSound, g_szSounds[ 0 ] ) ) {
  174. set_pdata_int( iEntity, m_ls.sUnlockedSound, engfunc( EngFunc_AllocString, szSound ), 5 );
  175. DispatchKeyValue( iEntity, "unlocked_sound", szI );
  176. }
  177.  
  178. iSpawnFlags = pev( iEntity, pev_spawnflags );
  179.  
  180. if( szMovable[ 0 ] ) {
  181. iFlags[ 0 ] = str_to_num( szMovable );
  182.  
  183. if( ( iSpawnFlags & SF_BUTTON_DONTMOVE ) ) {
  184. if( iFlags[ 0 ] == 0 )
  185. set_pev( iEntity, pev_spawnflags, iSpawnFlags & ~SF_BUTTON_DONTMOVE );
  186. } else {
  187. if( iFlags[ 0 ] == 1 )
  188. set_pev( iEntity, pev_spawnflags, iSpawnFlags | SF_BUTTON_DONTMOVE );
  189. }
  190. }
  191.  
  192. if( szToggable[ 0 ] ) {
  193. iFlags[ 1 ] = str_to_num( szToggable );
  194.  
  195. if( ( iSpawnFlags & SF_BUTTON_TOGGLE ) ) {
  196. if( iFlags[ 1 ] == 0 )
  197. set_pev( iEntity, pev_spawnflags, iSpawnFlags & ~SF_BUTTON_TOGGLE );
  198. } else {
  199. if( iFlags[ 1 ] == 1 )
  200. set_pev( iEntity, pev_spawnflags, iSpawnFlags | SF_BUTTON_TOGGLE );
  201. }
  202. }
  203.  
  204. DispatchSpawn( iEntity );
  205.  
  206. set_pev( iEntity, pev_iuser2, EDITED_ENT );
  207. }
  208. }
  209.  
  210. fclose( iFile );
  211. }
  212. }
  213.  
  214. public CmdOpenMenu( id, level, cid ) {
  215. if( !cmd_access( id, level, cid, 1 ) )
  216. return PLUGIN_HANDLED;
  217.  
  218. ShowMenu( id );
  219.  
  220. return PLUGIN_HANDLED;
  221. }
  222.  
  223. public ShowMenu( id ) {
  224. new szMenu[ 364 ], iKeys;
  225.  
  226. add( szMenu, charsmax( szMenu ), "\rA gombok kesedelem szerkeszto by xPaw^n^n" );
  227.  
  228. if( g_iEntity[ id ] > 0 ) {
  229. new szI[ 6 ], szSound[ 32 ], szRandom[ 64 ], iWait;
  230. iWait = floatround( get_pdata_float( g_iEntity[ id ], m_flWait, 4 ) );
  231.  
  232. formatex( szRandom, charsmax( szRandom ), "\yAktualis gomb: \w#%i^n\yAktualis kesedelem: \w%i masodperc%s^n^n", g_iEntity[ id ], iWait, iWait == 1 ? "" : "s" );
  233.  
  234. add( szMenu, charsmax( szMenu ), szRandom );
  235.  
  236. eng_get_string( get_pdata_int( g_iEntity[ id ], m_ls.sUnlockedSound, 5 ), szSound, 31 );
  237.  
  238. if( !szSound[ 0 ] )
  239. formatex( szSound, 31, "%s", g_szSounds[ 0 ] ); // Some maps have empty sounds O.o
  240.  
  241. if( TrieGetString( g_tSounds, szSound, szI, 5 ) ) {
  242. g_iSound[ id ] = str_to_num( szI );
  243.  
  244. formatex( szRandom, charsmax( szRandom ), "\r3. \wAktiv hang: \y%s^n", g_szSoundsNames[ g_iSound[ id ] ] );
  245. } else {
  246. g_iSound[ id ] = 0;
  247.  
  248. formatex( szRandom, charsmax( szRandom ), "\r3. \wAktiv hang: \yismeretlen\r (Jelentes xPaw)^n" );
  249.  
  250. // Log report
  251. new szMapName[ 32 ];
  252. get_mapname( szMapName, charsmax( szMapName ) );
  253.  
  254. log_amx( "----------" );
  255. log_amx( "Beszamolas az ismeretlen hangnak" );
  256. log_amx( "Hang: %s", szSound );
  257. log_amx( "Palya: %s", szMapName );
  258. log_amx( "Lenyeg: %i - Max jatekosok: %i", g_iEntity[ id ], get_maxplayers( ) );
  259. log_amx( "----------" );
  260. }
  261.  
  262. add( szMenu, charsmax( szMenu ), "\r1. \wKesedelem fent^n\r2. \wKesedelem lent^n^n" );
  263. add( szMenu, charsmax( szMenu ), szRandom );
  264.  
  265. new iSpawnFlags = pev( g_iEntity[ id ], pev_spawnflags );
  266.  
  267. formatex( szRandom, charsmax( szRandom ), "\r4. \wNem mozog: \y%s^n\r5. \wToggable: \y%s^n^n",
  268. ( iSpawnFlags & SF_BUTTON_DONTMOVE ) ? "Igen" : "Nem", ( iSpawnFlags & SF_BUTTON_TOGGLE ) ? "Yes" : "No" );
  269.  
  270. add( szMenu, charsmax( szMenu ), szRandom );
  271.  
  272. iKeys = MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_9 | MENU_KEY_0;
  273. } else {
  274. add( szMenu, charsmax( szMenu ), "\yAktualis gomb: \wN/A^n^n" );
  275.  
  276. iKeys = MENU_KEY_9 | MENU_KEY_0;
  277. }
  278.  
  279. add( szMenu, charsmax( szMenu ), "\r9. \wFelszedes uj gomb^n\r0. \wKilepes" );
  280.  
  281. show_menu( id, iKeys, szMenu, -1, "A gombok kesedelem szerkesztes" );
  282. }
  283.  
  284. public handleMenu( id, iNum ) {
  285. switch( iNum ) {
  286. case 0: {
  287. if( pev_valid( g_iEntity[ id ] ) ) {
  288. new Float:flWait;
  289. flWait = get_pdata_float( g_iEntity[ id ], m_flWait, 4 );
  290.  
  291. if( flWait + 1.0 > MAX_DELAY ) {
  292. GreenPrint( id, "^4[AMXX]^3 Te maximum kesedelmet ertel el^4 %i^3!", floatround( MAX_DELAY ) );
  293. } else {
  294. set_pdata_float( g_iEntity[ id ], m_flWait, flWait + 1.0, 4 );
  295.  
  296. set_pev( g_iEntity[ id ], pev_iuser2, EDITED_ENT );
  297. }
  298. } else
  299. g_iEntity[ id ] = 0;
  300. }
  301. case 1: {
  302. if( pev_valid( g_iEntity[ id ] ) ) {
  303. new Float:flWait;
  304. flWait = get_pdata_float( g_iEntity[ id ], m_flWait, 4 );
  305.  
  306. if( flWait - 1.0 < MIN_DELAY ) {
  307. GreenPrint( id, "^4[AMXX]^3 Te minimum kesedelemre terjedtel^4 %i^3!", floatround( MIN_DELAY ) );
  308. } else {
  309. set_pdata_float( g_iEntity[ id ], m_flWait, flWait - 1.0, 4 );
  310.  
  311. set_pev( g_iEntity[ id ], pev_iuser2, EDITED_ENT );
  312. }
  313. } else
  314. g_iEntity[ id ] = 0;
  315. }
  316. case 2: {
  317. if( pev_valid( g_iEntity[ id ] ) ) {
  318. new iSound, szI[ 6 ];
  319.  
  320. if( g_iSound[ id ] == sizeof( g_szSoundsNames ) - 1 ) {
  321. iSound = engfunc( EngFunc_AllocString, g_szSounds[ 0 ] );
  322. num_to_str( 0, szI, 5 );
  323. } else {
  324. new i = g_iSound[ id ] + 1;
  325.  
  326. // We need to ignore 11 & 12....
  327. if( 11 <= i <= 12 )
  328. i = 13;
  329.  
  330. iSound = engfunc( EngFunc_AllocString, g_szSounds[ i ] );
  331. num_to_str( i, szI, 5 );
  332. }
  333.  
  334. set_pdata_int( g_iEntity[ id ], m_ls.sUnlockedSound, iSound, 5 );
  335.  
  336. DispatchKeyValue( g_iEntity[ id ], "unlocked_sound", szI );
  337. } else
  338. g_iEntity[ id ] = 0;
  339. }
  340. case 3: {
  341. if( pev_valid( g_iEntity[ id ] ) ) {
  342. new iSpawnFlags = pev( g_iEntity[ id ], pev_spawnflags );
  343.  
  344. if( iSpawnFlags & SF_BUTTON_DONTMOVE )
  345. set_pev( g_iEntity[ id ], pev_spawnflags, iSpawnFlags & ~SF_BUTTON_DONTMOVE );
  346. else
  347. set_pev( g_iEntity[ id ], pev_spawnflags, iSpawnFlags | SF_BUTTON_DONTMOVE );
  348.  
  349. DispatchSpawn( g_iEntity[ id ] );
  350. } else
  351. g_iEntity[ id ] = 0;
  352. }
  353. case 4: {
  354. if( pev_valid( g_iEntity[ id ] ) ) {
  355. new iSpawnFlags = pev( g_iEntity[ id ], pev_spawnflags );
  356.  
  357. if( iSpawnFlags & SF_BUTTON_TOGGLE )
  358. set_pev( g_iEntity[ id ], pev_spawnflags, iSpawnFlags & ~SF_BUTTON_TOGGLE );
  359. else
  360. set_pev( g_iEntity[ id ], pev_spawnflags, iSpawnFlags | SF_BUTTON_TOGGLE );
  361.  
  362. DispatchSpawn( g_iEntity[ id ] );
  363. } else
  364. g_iEntity[ id ] = 0;
  365. }
  366. case 8: {
  367. g_iSound[ id ] = 0;
  368. g_iEntity[ id ] = 0;
  369.  
  370. new iEntity, iBody;
  371. get_user_aiming( id, iEntity, iBody, 400 );
  372.  
  373. if( pev_valid( iEntity ) ) {
  374. if( IsButton( iEntity ) ) {
  375. g_iEntity[ id ] = iEntity;
  376.  
  377. // Draw a beam from player to button
  378. new iOrigin[ 3 ], iOrigin2[ 3 ], Float:flMins[ 3 ], Float:flMaxs[ 3 ];
  379. get_user_origin( id, iOrigin );
  380.  
  381. pev( iEntity, pev_mins, flMins );
  382. pev( iEntity, pev_maxs, flMaxs );
  383. iOrigin2[ 0 ] = floatround( ( flMins[ 0 ] + flMaxs[ 0 ] ) * 0.5 );
  384. iOrigin2[ 1 ] = floatround( ( flMins[ 1 ] + flMaxs[ 1 ] ) * 0.5 );
  385. iOrigin2[ 2 ] = floatround( ( flMins[ 2 ] + flMaxs[ 2 ] ) * 0.5 );
  386.  
  387. DrawBeam( iOrigin, iOrigin2 );
  388. } else
  389. GreenPrint( id, "^4[AMXX]^1 Kerlek celozz meg egy gombot!" );
  390. } else
  391. GreenPrint( id, "^4[AMXX]^1 Kerlek celozz meg egy gombot!" );
  392. }
  393. case 9: {
  394. g_iSound[ id ] = 0;
  395. g_iEntity[ id ] = 0;
  396.  
  397. return;
  398. }
  399. }
  400.  
  401. if( iNum != 9 )
  402. ShowMenu( id );
  403. }
  404.  
  405. bool:IsButton( iEntity ) {
  406. new szClassname[ 32 ];
  407. pev( iEntity, pev_classname, szClassname, 31 );
  408.  
  409. for( new i; i < sizeof g_szButtons; i++ )
  410. if( equal( szClassname, g_szButtons[ i ] ) )
  411. return true;
  412.  
  413. return false;
  414. }
  415.  
  416. stock DrawBeam( iOrigin[ 3 ], iOrigin2[ 3 ] ) {
  417. message_begin( MSG_BROADCAST, SVC_TEMPENTITY );
  418. write_byte( TE_BEAMPOINTS );
  419. write_coord( iOrigin[ 0 ] );
  420. write_coord( iOrigin[ 1 ] );
  421. write_coord( iOrigin[ 2 ] );
  422. write_coord( iOrigin2[ 0 ] );
  423. write_coord( iOrigin2[ 1 ] );
  424. write_coord( iOrigin2[ 2 ] );
  425. write_short( g_iSprite ); // model
  426. write_byte( 0 ); // start frame
  427. write_byte( 10 ); // framerate
  428. write_byte( 20 ); // life
  429. write_byte( 10 ); // width
  430. write_byte( 2 ); // noise
  431. write_byte( 0 ); // red
  432. write_byte( 100 ); // green
  433. write_byte( 255 ); // blue
  434. write_byte( 100 ); // brightness
  435. write_byte( 30 ); // speed
  436. message_end( );
  437. }
  438.  
  439. stock GreenPrint( id, const szMsg[ ], any:... ) {
  440. new szMessage[ 192 ];
  441. vformat( szMessage, 191, szMsg, 3 );
  442.  
  443. message_begin( MSG_ONE_UNRELIABLE, g_iMsg_Saytext, _, id );
  444. write_byte( id );
  445. write_string( szMessage );
  446. message_end( );
  447.  
  448. return 1;
  449. }

_________________
****


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


Ki van itt

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