hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.04.25. 08:45



Jelenlévő felhasználók

Jelenleg 291 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 291 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  [ 3 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Késmenü átírása
HozzászólásElküldve: 2015.04.04. 08:37 
Offline
Senior Tag
Avatar

Csatlakozott: 2014.02.02. 10:59
Hozzászólások: 238
Megköszönt másnak: 63 alkalommal
Megköszönték neki: 12 alkalommal
Sziasztok, Segítene valaki és hozzáírná ehhez a menühöz hogy tudjak berakni olyan késeket amit csak ADMIN_KICK joggal rendelkezö játékosok használhatnak?
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <hamsandwich>
  4.  
  5. new const KNIFE_VERSION[] = "2.2"
  6. new const KNIFE_FILE[] = "addons/amxmodx/configs/knifes.ini"
  7.  
  8. #define KNIFE_NAME 0
  9. #define KNIFE_P_MODEL 1
  10. #define KNIFE_V_MODEL 2
  11. #define KNIFE_ACCESS 12
  12.  
  13. new const g_TypeList[][] = { "NAME", "P_MODEL", "V_MODEL", "DEPLOY", "HIT1", "HIT2", "HIT3", "HIT4",\
  14. "HITWALL", "SLASH1", "SLASH2", "STAB", "ACCESS" }
  15.  
  16. new const g_Default_Knife[][] = { "Default", "models/p_knife.mdl", "models/v_knife.mdl", "weapons/knife_deploy1.wav",\
  17. "weapons/knife_hit1.wav", "weapons/knife_hit2.wav", "weapons/knife_hit3.wav", "weapons/knife_hit4.wav",\
  18. "weapons/knife_hitwall1.wav", "weapons/knife_slash1.wav", "weapons/knife_slash2.wav",\
  19. "weapons/knife_stab.wav", "" }
  20.  
  21. new Array:gx_InfoData[13]
  22. new Array:gx_InfoCommands
  23. new g_PlrModelNum[33]
  24.  
  25. new bool:g_bIsAlive[33]
  26.  
  27. #define m_pPlayer 41
  28. #define IsValidPlr(%1) ( 1 <= %1 <= g_iMaxPlayers )
  29.  
  30. new g_cvar_menu_drop, g_cvar_enable, g_cvar_menuname[64], g_cvar_no4you[32], g_cvar_current[32]
  31. new g_iMaxPlayers
  32.  
  33. public plugin_precache()
  34. {
  35. register_plugin("Knife Selector", KNIFE_VERSION, "ReymonARG")
  36. register_cvar("knife_selector", KNIFE_VERSION, FCVAR_SPONLY | FCVAR_SERVER)
  37. g_iMaxPlayers = get_maxplayers()
  38.  
  39. static i
  40. for( i = 0; i < 13; i++)
  41. {
  42. gx_InfoData[i] = ArrayCreate(128, 1)
  43. }
  44. gx_InfoCommands = ArrayCreate(32, 1)
  45.  
  46. load_knifes_list()
  47.  
  48. register_clcmd("say", "Hook_Say")
  49. register_clcmd("say_team", "Hook_Say")
  50.  
  51. RegisterHam(Ham_Item_Deploy, "weapon_knife", "weapon_change", 1)
  52. RegisterHam(Ham_CS_Item_CanDrop, "weapon_knife", "weapon_drop", 1)
  53. RegisterHam(Ham_Spawn, "player", "fw_Spawn_post", 1)
  54. RegisterHam(Ham_Killed, "player", "fw_Killed_post", 1)
  55. register_forward(FM_EmitSound, "fw_EmitSound")
  56. register_forward(FM_ClientPutInServer, "fw_ClientPutInServer")
  57. register_forward(FM_ClientDisconnect, "fw_Killed_post")
  58. }
  59.  
  60. /*==================================================================================================
  61.  [Stock`s & Some Func`s <!-- s:D --><img src=\"{SMILIES_PATH}/icon_e_biggrin.gif\" alt=\":D\" title=\"nagyon boldog\" /><!-- s:D -->]
  62. ==================================================================================================*/
  63. stock load_knifes_list()
  64. {
  65. static StrData[150], StrLeft[32], StrRight[128], i, InfoNum, len, len2
  66. static f, bool:IsInSettings; IsInSettings = true
  67.  
  68. if( !(f = fopen(KNIFE_FILE, "rt") ) )
  69. return set_fail_state("Plugin can´t Found Knife File")
  70.  
  71. for( i = 0; i < 13; i++)
  72. ArrayPushString(gx_InfoData[i], g_Default_Knife[i])
  73.  
  74. while( !feof(f) )
  75. {
  76. fgets(f, StrData, 149)
  77. if( StrData[0] == '/' && StrData[1] == '/' || StrData[0] == ';' || StrData[0] == ' ' || StrData[0] == '^n') continue
  78. replace(StrData, 149, "^n", "")
  79.  
  80. if( StrData[0] != '[' && IsInSettings )
  81. {
  82. strtok(StrData, StrLeft, 31, StrRight, 127, '=')
  83. trim(StrLeft); trim(StrRight)
  84.  
  85. if( equali(StrLeft, "ENABLE") )
  86. {
  87. g_cvar_enable = str_to_num(StrRight)
  88. }
  89. else if( equali(StrLeft, "MENU_IN_DROP") )
  90. {
  91. g_cvar_menu_drop = str_to_num(StrRight)
  92. }
  93. else if( equali(StrLeft, "MENU_NAME") )
  94. {
  95. copy(g_cvar_menuname, 63, StrRight)
  96. remove_quotes(g_cvar_no4you)
  97. replace_menu_colors(g_cvar_menuname, 63)
  98. }
  99. else if( equali(StrLeft, "NO_FOR_YOU") )
  100. {
  101. copy(g_cvar_no4you, 31, StrRight)
  102. remove_quotes(g_cvar_no4you)
  103. replace_menu_colors(g_cvar_no4you, 31)
  104. }
  105. else if( equali(StrLeft, "CURRENT") )
  106. {
  107. copy(g_cvar_current, 31, StrRight)
  108. remove_quotes(g_cvar_current)
  109. replace_menu_colors(g_cvar_current, 31)
  110. }
  111. else if( equali(StrLeft, "COMMANDS") )
  112. {
  113. while( StrRight[0] != 0 && strtok(StrRight, StrLeft, 31, StrRight, 127, ',') )
  114. {
  115. trim(StrLeft); trim(StrRight); remove_quotes(StrLeft)
  116. ArrayPushString(gx_InfoCommands, StrLeft)
  117. }
  118. }
  119.  
  120. continue
  121. }
  122. else if( StrData[0] == '[' && StrData[1] == '/' && IsInSettings )
  123. {
  124. IsInSettings = false
  125. }
  126. else if( !IsInSettings )
  127. {
  128. if( StrData[0] == '[' )
  129. {
  130. len = ArraySize(gx_InfoData[KNIFE_NAME])
  131. for( i = 1; i < 13; i++)
  132. {
  133. len2 = ArraySize(gx_InfoData[i] )
  134. while( len > len2 )
  135. {
  136. ArrayPushCell(gx_InfoData[i], 0)
  137. len2++
  138. }
  139. while( len < len2 )
  140. {
  141. ArrayDeleteItem(gx_InfoData[i], --len2)
  142. }
  143. }
  144.  
  145. replace(StrData, 149, "]", "")
  146. ArrayPushString(gx_InfoData[0], StrData[1])
  147.  
  148. continue
  149. }
  150. else
  151. {
  152. strtok(StrData, StrLeft, 31, StrRight, 127, '=')
  153. trim(StrLeft); trim(StrRight); remove_quotes(StrRight)
  154.  
  155. InfoNum = search_array_num(StrLeft)
  156. if( InfoNum != -1 )
  157. {
  158. ArrayPushString(gx_InfoData[InfoNum], StrRight)
  159. }
  160.  
  161. continue
  162. }
  163. }
  164. }
  165.  
  166. len = ArraySize(gx_InfoData[KNIFE_NAME])
  167. for( i = 1; i < 13; i++)
  168. {
  169. len2 = ArraySize(gx_InfoData[i] )
  170. while( len > len2 )
  171. {
  172. ArrayPushCell(gx_InfoData[i], 0)
  173. len2++
  174. }
  175. while( len < len2 )
  176. {
  177. ArrayDeleteItem(gx_InfoData[i], --len2)
  178. }
  179. }
  180.  
  181. precache_knifes()
  182. return len
  183. }
  184.  
  185. stock search_array_num( const StrData[] )
  186. {
  187. static i
  188. for( i = 1; i < sizeof(g_TypeList); i++)
  189. {
  190. if( equali(g_TypeList[i], StrData) )
  191. return i
  192. }
  193.  
  194. return -1
  195. }
  196.  
  197. stock precache_knifes()
  198. {
  199. static i, j, R, StrData[128], len; len = ArraySize(gx_InfoData[KNIFE_NAME])
  200.  
  201. for( i = 0; i < len; i++)
  202. {
  203. for( j = 1; j < 12; j++)
  204. {
  205. ArrayGetString(gx_InfoData[j], i, StrData, 127)
  206. if( StrData[0] )
  207. {
  208. R = knifes_file_exists(j, StrData)
  209. if( R != -1 )
  210. {
  211. engfunc(R, StrData)
  212. }
  213. else
  214. {
  215. ArraySetCell(gx_InfoData[j], i, 0)
  216. }
  217. }
  218. }
  219.  
  220. ArrayGetString(gx_InfoData[KNIFE_ACCESS], i, StrData, 127)
  221. ArraySetCell(gx_InfoData[KNIFE_ACCESS], i, read_flags(StrData))
  222. }
  223.  
  224. return 1
  225. }
  226.  
  227. stock knifes_file_exists(const num, const DIR[])
  228. {
  229. static R, Buffer[135]
  230. if( num != KNIFE_V_MODEL && num != KNIFE_P_MODEL )
  231. {
  232. formatex(Buffer, 134, "sound/")
  233. R = EngFunc_PrecacheSound
  234. }
  235. else
  236. {
  237. Buffer[0] = '^0' // Reset Because is a static
  238. R = EngFunc_PrecacheModel
  239. }
  240. add(Buffer, 134, DIR)
  241.  
  242. if( file_exists(Buffer) )
  243. return R
  244.  
  245. return -1
  246. }
  247.  
  248. stock knifes_set_models(id)
  249. {
  250. static StrData[128]
  251.  
  252. ArrayGetString(gx_InfoData[KNIFE_P_MODEL], g_PlrModelNum[id], StrData, 127)
  253. set_pev(id, pev_weaponmodel2, StrData[0] ? StrData : g_Default_Knife[KNIFE_P_MODEL])
  254.  
  255. ArrayGetString(gx_InfoData[KNIFE_V_MODEL], g_PlrModelNum[id], StrData, 127)
  256. set_pev(id, pev_viewmodel2, StrData[0] ? StrData : g_Default_Knife[KNIFE_V_MODEL])
  257.  
  258. return 1
  259. }
  260.  
  261. stock replace_menu_colors(string[], len)
  262. {
  263. replace_all(string, len, "!r", "\r")
  264. replace_all(string, len, "!y", "\y")
  265. replace_all(string, len, "!w", "\w")
  266. replace_all(string, len, "!d", "\d")
  267.  
  268. return 1
  269. }
  270.  
  271. /*==================================================================================================
  272.  [ForWard`s CallBack`s <!-- s:D --><img src=\"{SMILIES_PATH}/icon_e_biggrin.gif\" alt=\":D\" title=\"nagyon boldog\" /><!-- s:D -->]
  273. ==================================================================================================*/
  274. public weapon_change( iEnt )
  275. {
  276. if( !pev_valid(iEnt) )
  277. return HAM_IGNORED
  278.  
  279. static id; id = get_pdata_cbase(iEnt, m_pPlayer, 4)
  280. knifes_set_models(id)
  281.  
  282. return HAM_IGNORED
  283. }
  284.  
  285. public weapon_drop( iEnt )
  286. {
  287. if( !pev_valid(iEnt) || !g_cvar_menu_drop || !g_cvar_enable )
  288. return HAM_IGNORED
  289.  
  290. static id; id = get_pdata_cbase(iEnt, m_pPlayer, 4)
  291.  
  292. main_menu(id)
  293.  
  294. return HAM_IGNORED
  295. }
  296.  
  297. public fw_Spawn_post( id )
  298. {
  299. g_bIsAlive[id] = true
  300. }
  301.  
  302. public fw_Killed_post( id )
  303. {
  304. g_bIsAlive[id] = false
  305. }
  306.  
  307. public fw_ClientPutInServer( id )
  308. {
  309. g_PlrModelNum[id] = 0
  310. }
  311.  
  312. public fw_EmitSound(iEnt, iChannel, const Sound[] )
  313. {
  314. if( !IsValidPlr(iEnt) || !g_bIsAlive[iEnt] || ( iChannel != 1 && iChannel != 3 ) )
  315. return FMRES_IGNORED
  316.  
  317. static i, StrData[128]
  318. for( i = 3; i < 13; i++ )
  319. {
  320. if( equali(g_Default_Knife[i], Sound) )
  321. {
  322. ArrayGetString(gx_InfoData[i], g_PlrModelNum[iEnt], StrData, 127)
  323. if( StrData[0] )
  324. {
  325. engfunc(EngFunc_EmitSound, iEnt, CHAN_WEAPON, StrData, 1.0, ATTN_NORM, 0, PITCH_NORM)
  326. return FMRES_SUPERCEDE
  327. }
  328. else
  329. {
  330. return FMRES_IGNORED
  331. }
  332. }
  333. }
  334.  
  335. return FMRES_IGNORED
  336. }
  337.  
  338. public Hook_Say( id )
  339. {
  340. static i, StrData[32], StrSay[32], len
  341. read_args(StrSay, 31); len = ArraySize(gx_InfoCommands)
  342. remove_quotes(StrSay)
  343.  
  344. for( i = 0; i < len; i++)
  345. {
  346. ArrayGetString(gx_InfoCommands, i, StrData, 31)
  347.  
  348. if( equali(StrData, StrSay) )
  349. {
  350. main_menu(id)
  351. return PLUGIN_HANDLED
  352. }
  353. }
  354.  
  355. return PLUGIN_CONTINUE
  356. }
  357.  
  358. /*==================================================================================================
  359.  [Menu Settings Part <!-- s:D --><img src=\"{SMILIES_PATH}/icon_e_biggrin.gif\" alt=\":D\" title=\"nagyon boldog\" /><!-- s:D -->]
  360. ==================================================================================================*/
  361. stock main_menu(id, page=0)
  362. {
  363. if( !g_cvar_enable )
  364. return PLUGIN_HANDLED
  365.  
  366. static menu; menu = menu_create(g_cvar_menuname, "main_menu_func")
  367.  
  368. static i, StrData[64], len, PlrFlags, Flags
  369. len = ArraySize(gx_InfoData[KNIFE_NAME]); PlrFlags = get_user_frags(id)
  370. for( i = 0; i < len; i++)
  371. {
  372. ArrayGetString(gx_InfoData[KNIFE_NAME], i, StrData, 63)
  373. Flags = ArrayGetCell(gx_InfoData[KNIFE_ACCESS], i)
  374. if( !(PlrFlags & Flags) && Flags )
  375. {
  376. format(StrData, 63, "\d%s \R%s", StrData, g_cvar_no4you)
  377. }
  378. else if( i == g_PlrModelNum[id] )
  379. {
  380. format(StrData, 63, "\d%s \R%s", StrData, g_cvar_current)
  381. }
  382.  
  383. menu_additem(menu, StrData)
  384. }
  385.  
  386. menu_display(id, menu, page)
  387.  
  388. return PLUGIN_HANDLED
  389. }
  390.  
  391. /*==================================================================================================
  392.  [Menu Exec Settings Part <!-- s:D --><img src=\"{SMILIES_PATH}/icon_e_biggrin.gif\" alt=\":D\" title=\"nagyon boldog\" /><!-- s:D -->]
  393. ==================================================================================================*/
  394. public main_menu_func(id, menu, item)
  395. {
  396. if( item == MENU_EXIT )
  397. {
  398. return PLUGIN_HANDLED
  399. }
  400.  
  401. static Flags
  402. Flags = ArrayGetCell(gx_InfoData[KNIFE_ACCESS], item)
  403.  
  404. if( (get_user_frags(id) & Flags || !Flags) && item != g_PlrModelNum[id] )
  405. {
  406. g_PlrModelNum[id] = item
  407. }
  408. else
  409. {
  410. main_menu(id, item/7)
  411. }
  412.  
  413. if( get_user_weapon(id) == CSW_KNIFE )
  414. {
  415. knifes_set_models(id)
  416. }
  417.  
  418. return PLUGIN_HANDLED
  419. }
  420.  

Nagyonszépenköszönöm:3

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Késmenü átírása
HozzászólásElküldve: 2015.04.04. 08:38 
Offline
Nagyúr

Csatlakozott: 2015.02.01. 11:40
Hozzászólások: 670
Megköszönt másnak: 16 alkalommal
Megköszönték neki: 99 alkalommal
ini fájl,
Kód:
ACCESS = ADMIN_KICK

_________________
http://steamcommunity.com/id/floxay/

Ők köszönték meg FloxaY nek ezt a hozzászólást: bbshop (2015.04.04. 08:40)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Késmenü átírása
HozzászólásElküldve: 2015.04.04. 08:39 
Offline
Senior Tag
Avatar

Csatlakozott: 2014.02.02. 10:59
Hozzászólások: 238
Megköszönt másnak: 63 alkalommal
Megköszönték neki: 12 alkalommal
JAJJJ >.< mekkora hülye vagyok, köszi!!

_________________
Kép


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


Ki van itt

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