hlmod.hu

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



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: Bing [Bot], 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  [ 4 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Simon.mdl
HozzászólásElküldve: 2013.06.14. 12:23 
Offline
Fanatikus

Csatlakozott: 2013.02.10. 16:48
Hozzászólások: 198
Megköszönt másnak: 113 alkalommal
heló van 1 modellem JailBreak-re (Simon.mdl) ezt szeretném berakni simon nak valaki tud plugint amivel le tudom cserélni mer a mod sma ba nem találom vagy ha mégis ott van le tudná valaki cserélni pls

SMA Forráskód: [ Mindet kijelol ]
  1. /* Magyar Fordítás by DaNii - danii@skyhosting.hu
  2. Changelog:
  3.  
  4. v1.9
  5. * Finally fixed voice control
  6. * Added cvar to disable team change
  7. * Fixed OldStyle team menu issue
  8. * Fixed crowbar user + he damage issue
  9.  
  10. v1.8
  11. * Fixed duel bug
  12. * Fixed clcmd/concmd flags problem
  13. * Added cell opener for maps with multi_manager
  14. * Added cvar to enable last request
  15. * Added cvar to enable motd
  16.  
  17. v1.7
  18. * Fixed auto Simon mode
  19.  
  20. v1.6
  21. * Updated dictionary
  22. * Fixed last request abuse bug
  23. * Fixed voice mode bugs
  24. * Added auto team transfer to Guards that never been Simon
  25. * Added auto disconnect to Spectators that doesn't join any team in 3 rounds
  26. * Added blocking for hints messages
  27. * Added auto door open on freeday
  28. * Added /open command only for Simon
  29.  
  30. v1.5
  31. * Improved team select code
  32. * Improved team status code
  33. * Updated dictionary
  34. * Added custom model (using body+skin)
  35. * Added sounds
  36. * Added freeday menu command
  37. * Added lastrequest menu command & functionalities
  38. * Added help command
  39. * Added last prisoner hud message
  40. * Added cvar to change talk mode control (+simonvoice optional or required to talk)
  41. * Added cvar to allow shooting func_button to activate it
  42. * Added cvar to allow auto-freeday hud message after 60 seconds with no Simon selected
  43. * Added cvar to force round end after some time of auto-freeday
  44. * Added cvar to change game mode (classic counter for days)
  45. * Added simon footsteps decals (controlled by cvar)
  46. * Added restriction on HE for guards
  47.  
  48. v1.3
  49. * First public release
  50. */
  51.  
  52. #include <amxmodx>
  53. #include <amxmisc>
  54. #include <engine>
  55. #include <fakemeta>
  56. #include <hamsandwich>
  57. #include <fun>
  58. #include <cstrike>
  59.  
  60. #define PLUGIN_NAME "JailBreak Extreme"
  61. #define PLUGIN_AUTHOR "JoRoPiTo"
  62. #define PLUGIN_VERSION "1.9"
  63. #define PLUGIN_CVAR "jbextreme"
  64.  
  65. #define TASK_STATUS 2487000
  66. #define TASK_FREEDAY 2487100
  67. #define TASK_ROUND 2487200
  68. #define TASK_HELP 2487300
  69. #define TASK_SAFETIME 2487400
  70. #define TASK_FREEEND 2487500
  71. #define TEAM_MENU "#Team_Select_Spect"
  72. #define TEAM_MENU2 "#Team_Select_Spect"
  73. #define HUD_DELAY Float:4.0
  74. #define CELL_RADIUS Float:200.0
  75.  
  76. #define get_bit(%1,%2) ( %1 & 1 << ( %2 & 31 ) )
  77. #define set_bit(%1,%2) %1 |= ( 1 << ( %2 & 31 ) )
  78. #define clear_bit(%1,%2) %1 &= ~( 1 << ( %2 & 31 ) )
  79.  
  80. #define vec_len(%1) floatsqroot(%1[0] * %1[0] + %1[1] * %1[1] + %1[2] * %1[2])
  81. #define vec_mul(%1,%2) ( %1[0] *= %2, %1[1] *= %2, %1[2] *= %2)
  82. #define vec_copy(%1,%2) ( %2[0] = %1[0], %2[1] = %1[1],%2[2] = %1[2])
  83.  
  84. // Offsets
  85. #define m_iPrimaryWeapon 116
  86. #define m_iVGUI 510
  87. #define m_fGameHUDInitialized 349
  88. #define m_fNextHudTextArgsGameTime 198
  89.  
  90. enum _hud { _hudsync, Float:_x, Float:_y, Float:_time }
  91. enum _lastrequest { _knife, _deagle, _freeday, _weapon }
  92. enum _duel { _name[16], _csw, _entname[32], _opt[32], _sel[32] }
  93.  
  94. new gp_PrecacheSpawn
  95. new gp_PrecacheKeyValue
  96.  
  97. new gp_CrowbarMax
  98. new gp_CrowbarMul
  99. new gp_TeamRatio
  100. new gp_CtMax
  101. new gp_BoxMax
  102. new gp_TalkMode
  103. new gp_VoiceBlock
  104. new gp_RetryTime
  105. new gp_RoundMax
  106. new gp_ButtonShoot
  107. new gp_SimonSteps
  108. new gp_SimonRandom
  109. new gp_GlowModels
  110. new gp_AutoLastresquest
  111. new gp_LastRequest
  112. new gp_Motd
  113. new gp_SpectRounds
  114. new gp_NosimonRounds
  115. new gp_AutoOpen
  116. new gp_TeamChange
  117.  
  118. new g_MaxClients
  119. new g_MsgStatusText
  120. new g_MsgStatusIcon
  121. new g_MsgVGUIMenu
  122. new g_MsgShowMenu
  123. new g_MsgClCorpse
  124. new g_MsgMOTD
  125.  
  126. new gc_TalkMode
  127. new gc_VoiceBlock
  128. new gc_SimonSteps
  129. new gc_ButtonShoot
  130. new Float:gc_CrowbarMul
  131.  
  132. // Precache
  133. new const _FistModels[][] = { "models/p_bknuckles.mdl", "models/v_bknuckles.mdl" }
  134. new const _CrowbarModels[][] = { "models/p_crowbar.mdl", "models/v_crowbar.mdl" }
  135. new const _FistSounds[][] = { "weapons/cbar_hitbod2.wav", "weapons/cbar_hitbod1.wav", "weapons/bullet_hit1.wav", "weapons/bullet_hit2.wav" }
  136. new const _RemoveEntities[][] = {
  137. "func_hostage_rescue", "info_hostage_rescue", "func_bomb_target", "info_bomb_target",
  138. "hostage_entity", "info_vip_start", "func_vip_safetyzone", "func_escapezone"
  139. }
  140.  
  141. new const _WeaponsFree[][] = { "weapon_scout", "weapon_deagle", "weapon_mac10", "weapon_elite", "weapon_ak47", "weapon_m4a1", "weapon_mp5navy" }
  142. new const _WeaponsFreeCSW[] = { CSW_SCOUT, CSW_DEAGLE, CSW_MAC10, CSW_ELITE, CSW_AK47, CSW_M4A1, CSW_MP5NAVY }
  143. new const _WeaponsFreeAmmo[] = { 90, 35, 100, 120, 90, 90, 120 }
  144.  
  145. new const _Duel[][_duel] =
  146. {
  147. { "Deagle", CSW_DEAGLE, "weapon_deagle", "JBE_MENU_LASTREQ_OPT4", "JBE_MENU_LASTREQ_SEL4" },
  148. { "Scout", CSW_SCOUT, "weapon_scout", "JBE_MENU_LASTREQ_OPT5", "JBE_MENU_LASTREQ_SEL5" },
  149. { "Grenades", CSW_HEGRENADE, "weapon_hegrenade", "JBE_MENU_LASTREQ_OPT6", "JBE_MENU_LASTREQ_SEL6" },
  150. { "Awp", CSW_AWP, "weapon_awp", "JBE_MENU_LASTREQ_OPT7", "JBE_MENU_LASTREQ_SEL7" }
  151. }
  152.  
  153. // Reasons
  154. new const g_Reasons[][] = {
  155. "",
  156. "JBE_PRISONER_REASON_1",
  157. "JBE_PRISONER_REASON_2",
  158. "JBE_PRISONER_REASON_3",
  159. "JBE_PRISONER_REASON_4",
  160. "JBE_PRISONER_REASON_5",
  161. "JBE_PRISONER_REASON_6"
  162. }
  163.  
  164. // HudSync: 0=ttinfo / 1=info / 2=simon / 3=ctinfo / 4=player / 5=day / 6=center / 7=help / 8=timer
  165. new const g_HudSync[][_hud] =
  166. {
  167. {0, 0.6, 0.2, 2.0},
  168. {0, -1.0, 0.7, 5.0},
  169. {0, 0.1, 0.2, 2.0},
  170. {0, 0.1, 0.3, 2.0},
  171. {0, -1.0, 0.9, 3.0},
  172. {0, 0.6, 0.1, 3.0},
  173. {0, -1.0, 0.6, 3.0},
  174. {0, 0.8, 0.3, 20.0},
  175. {0, -1.0, 0.4, 3.0}
  176. }
  177.  
  178. // Colors: 0:Simon / 1:Freeday / 2:CT Duel / 3:TT Duel
  179. new const g_Colors[][3] = { {0, 255, 0}, {255, 140, 0}, {0, 0, 255}, {255, 0, 0} }
  180.  
  181.  
  182. new CsTeams:g_PlayerTeam[33]
  183. new Float:g_SimonRandom
  184. new Trie:g_CellManagers
  185. new g_HelpText[512]
  186. new g_JailDay
  187. new g_PlayerJoin
  188. new g_PlayerReason[33]
  189. new g_PlayerSpect[33]
  190. new g_PlayerSimon[33]
  191. new g_PlayerNomic
  192. new g_PlayerWanted
  193. new g_PlayerCrowbar
  194. new g_PlayerRevolt
  195. new g_PlayerHelp
  196. new g_PlayerFreeday
  197. new g_PlayerLast
  198. new g_FreedayAuto
  199. new g_FreedayNext
  200. new g_TeamCount[CsTeams]
  201. new g_TeamAlive[CsTeams]
  202. new g_BoxStarted
  203. new g_CrowbarCount
  204. new g_Simon
  205. new g_SimonAllowed
  206. new g_SimonTalking
  207. new g_SimonVoice
  208. new g_RoundStarted
  209. new g_LastDenied
  210. new g_Freeday
  211. new g_BlockWeapons
  212. new g_RoundEnd
  213. new g_Duel
  214. new g_DuelA
  215. new g_DuelB
  216. new g_SafeTime
  217. new g_Buttons[10]
  218.  
  219. public plugin_init()
  220. {
  221. unregister_forward(FM_Spawn, gp_PrecacheSpawn)
  222. unregister_forward(FM_KeyValue, gp_PrecacheKeyValue)
  223.  
  224. register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
  225. register_cvar(PLUGIN_CVAR, PLUGIN_VERSION, FCVAR_SERVER|FCVAR_SPONLY)
  226.  
  227. register_dictionary("jbextreme.txt")
  228.  
  229. g_MsgStatusText = get_user_msgid("StatusText")
  230. g_MsgStatusIcon = get_user_msgid("StatusIcon")
  231. g_MsgVGUIMenu = get_user_msgid("VGUIMenu")
  232. g_MsgShowMenu = get_user_msgid("ShowMenu")
  233. g_MsgMOTD = get_user_msgid("MOTD")
  234. g_MsgClCorpse = get_user_msgid("ClCorpse")
  235.  
  236. register_message(g_MsgStatusText, "msg_statustext")
  237. register_message(g_MsgStatusIcon, "msg_statusicon")
  238. register_message(g_MsgVGUIMenu, "msg_vguimenu")
  239. register_message(g_MsgShowMenu, "msg_showmenu")
  240. register_message(g_MsgMOTD, "msg_motd")
  241. register_message(g_MsgClCorpse, "msg_clcorpse")
  242.  
  243. register_event("CurWeapon", "current_weapon", "be", "1=1", "2=29")
  244. register_event("StatusValue", "player_status", "be", "1=2", "2!0")
  245. register_event("StatusValue", "player_status", "be", "1=1", "2=0")
  246.  
  247. register_impulse(100, "impulse_100")
  248.  
  249. RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
  250. RegisterHam(Ham_TakeDamage, "player", "player_damage")
  251. RegisterHam(Ham_TraceAttack, "player", "player_attack")
  252. RegisterHam(Ham_TraceAttack, "func_button", "button_attack")
  253. RegisterHam(Ham_Killed, "player", "player_killed", 1)
  254. RegisterHam(Ham_Touch, "weapon_hegrenade", "player_touchweapon")
  255. RegisterHam(Ham_Touch, "weaponbox", "player_touchweapon")
  256. RegisterHam(Ham_Touch, "armoury_entity", "player_touchweapon")
  257.  
  258. register_forward(FM_SetClientKeyValue, "set_client_kv")
  259. register_forward(FM_EmitSound, "sound_emit")
  260. register_forward(FM_Voice_SetClientListening, "voice_listening")
  261. register_forward(FM_CmdStart, "player_cmdstart", 1)
  262.  
  263. register_logevent("round_end", 2, "1=Round_End")
  264. register_logevent("round_first", 2, "0=World triggered", "1&Restart_Round_")
  265. register_logevent("round_first", 2, "0=World triggered", "1=Game_Commencing")
  266. register_logevent("round_start", 2, "0=World triggered", "1=Round_Start")
  267.  
  268. register_menucmd(register_menuid(TEAM_MENU), 51, "team_select")
  269. register_menucmd(register_menuid(TEAM_MENU2), 51, "team_select")
  270.  
  271. register_clcmd("jointeam", "cmd_jointeam")
  272. register_clcmd("joinclass", "cmd_joinclass")
  273. register_clcmd("+simonvoice", "cmd_voiceon")
  274. register_clcmd("-simonvoice", "cmd_voiceoff")
  275.  
  276. register_clcmd("say /fd", "cmd_freeday")
  277. register_clcmd("say /freeday", "cmd_freeday")
  278. register_clcmd("say /day", "cmd_freeday")
  279. register_clcmd("say /lr", "cmd_lastrequest")
  280. register_clcmd("say /lastrequest", "cmd_lastrequest")
  281. register_clcmd("say /duel", "cmd_lastrequest")
  282. register_clcmd("say /simon", "cmd_simon")
  283. register_clcmd("say /open", "cmd_open")
  284. register_clcmd("say /nomic", "cmd_nomic")
  285. register_clcmd("say /box", "cmd_box")
  286. register_clcmd("say /help", "cmd_help")
  287.  
  288. register_clcmd("jbe_freeday", "adm_freeday", ADMIN_KICK)
  289. register_concmd("jbe_nomic", "adm_nomic", ADMIN_KICK)
  290. register_concmd("jbe_open", "adm_open", ADMIN_KICK)
  291. register_concmd("jbe_box", "adm_box", ADMIN_KICK)
  292.  
  293. gp_GlowModels = register_cvar("jbe_glowmodels", "0")
  294. gp_SimonSteps = register_cvar("jbe_simonsteps", "1")
  295. gp_CrowbarMul = register_cvar("jbe_crowbarmultiplier", "25.0")
  296. gp_CrowbarMax = register_cvar("jbe_maxcrowbar", "1")
  297. gp_TeamRatio = register_cvar("jbe_teamratio", "3")
  298. gp_TeamChange = register_cvar("jbe_teamchange", "0") // 0-disable team change for tt / 1-enable team change
  299. gp_CtMax = register_cvar("jbe_maxct", "6")
  300. gp_BoxMax = register_cvar("jbe_boxmax", "6")
  301. gp_RetryTime = register_cvar("jbe_retrytime", "10.0")
  302. gp_RoundMax = register_cvar("jbe_freedayround", "240.0")
  303. gp_AutoLastresquest = register_cvar("jbe_autolastrequest", "1")
  304. gp_LastRequest = register_cvar("jbe_lastrequest", "1")
  305. gp_Motd = register_cvar("jbe_motd", "1")
  306. gp_SpectRounds = register_cvar("jbe_spectrounds", "3")
  307. gp_NosimonRounds = register_cvar("jbe_nosimonrounds", "7")
  308. gp_SimonRandom = register_cvar("jbe_randomsimon", "0")
  309. gp_AutoOpen = register_cvar("jbe_autoopen", "1")
  310. gp_TalkMode = register_cvar("jbe_talkmode", "2") // 0-alltak / 1-tt talk / 2-tt no talk
  311. gp_VoiceBlock = register_cvar("jbe_blockvoice", "2") // 0-dont block / 1-block voicerecord / 2-block voicerecord except simon
  312. gp_ButtonShoot = register_cvar("jbe_buttonshoot", "1") // 0-standard / 1-func_button shoots!
  313.  
  314. g_MaxClients = get_global_int(GL_maxClients)
  315.  
  316. for(new i = 0; i < sizeof(g_HudSync); i++)
  317. g_HudSync[i][_hudsync] = CreateHudSyncObj()
  318.  
  319. formatex(g_HelpText, charsmax(g_HelpText), "%L^n^n%L^n^n%L^n^n%L",
  320. LANG_SERVER, "JBE_HELP_TITLE",
  321. LANG_SERVER, "JBE_HELP_BINDS",
  322. LANG_SERVER, "JBE_HELP_GUARD_CMDS",
  323. LANG_SERVER, "JBE_HELP_PRISONER_CMDS")
  324.  
  325. setup_buttons()
  326. }
  327.  
  328. public plugin_precache()
  329. {
  330. static i
  331. precache_model("models/player/jbemodel/DirtyJB.mdl")
  332.  
  333. for(i = 0; i < sizeof(_FistModels); i++)
  334. precache_model(_FistModels[i])
  335.  
  336. for(i = 0; i < sizeof(_CrowbarModels); i++)
  337. precache_model(_CrowbarModels[i])
  338.  
  339. for(i = 0; i < sizeof(_FistSounds); i++)
  340. precache_sound(_FistSounds[i])
  341.  
  342. precache_sound("jbextreme/nm_goodbadugly.wav")
  343. precache_sound("jbextreme/brass_bell_C.wav")
  344.  
  345. g_CellManagers = TrieCreate()
  346. gp_PrecacheSpawn = register_forward(FM_Spawn, "precache_spawn", 1)
  347. gp_PrecacheKeyValue = register_forward(FM_KeyValue, "precache_keyvalue", 1)
  348. }
  349.  
  350. public precache_spawn(ent)
  351. {
  352. if(is_valid_ent(ent))
  353. {
  354. static szClass[33]
  355. entity_get_string(ent, EV_SZ_classname, szClass, sizeof(szClass))
  356. for(new i = 0; i < sizeof(_RemoveEntities); i++)
  357. if(equal(szClass, _RemoveEntities[i]))
  358. remove_entity(ent)
  359. }
  360. }
  361.  
  362. public precache_keyvalue(ent, kvd_handle)
  363. {
  364. static info[32]
  365. if(!is_valid_ent(ent))
  366. return FMRES_IGNORED
  367.  
  368. get_kvd(kvd_handle, KV_ClassName, info, charsmax(info))
  369. if(!equal(info, "multi_manager"))
  370. return FMRES_IGNORED
  371.  
  372. get_kvd(kvd_handle, KV_KeyName, info, charsmax(info))
  373. TrieSetCell(g_CellManagers, info, ent)
  374. return FMRES_IGNORED
  375. }
  376.  
  377. public client_putinserver(id)
  378. {
  379. clear_bit(g_PlayerJoin, id)
  380. clear_bit(g_PlayerHelp, id)
  381. clear_bit(g_PlayerCrowbar, id)
  382. clear_bit(g_PlayerNomic, id)
  383. clear_bit(g_PlayerWanted, id)
  384. clear_bit(g_SimonTalking, id)
  385. clear_bit(g_SimonVoice, id)
  386. g_PlayerSpect[id] = 0
  387. g_PlayerSimon[id] = 0
  388. }
  389.  
  390. public client_disconnect(id)
  391. {
  392. if(g_Simon == id)
  393. {
  394. g_Simon = 0
  395. ClearSyncHud(0, g_HudSync[2][_hudsync])
  396. player_hudmessage(0, 2, 5.0, _, "%L", LANG_SERVER, "JBE_SIMON_HASGONE")
  397. }
  398. else if(g_PlayerLast == id || (g_Duel && (id == g_DuelA || id == g_DuelB)))
  399. {
  400. g_Duel = 0
  401. g_DuelA = 0
  402. g_DuelB = 0
  403. g_LastDenied = 0
  404. g_BlockWeapons = 0
  405. g_PlayerLast = 0
  406. }
  407. team_count()
  408. }
  409.  
  410. public client_PostThink(id)
  411. {
  412. if(id != g_Simon || !gc_SimonSteps || !is_user_alive(id) ||
  413. !(entity_get_int(id, EV_INT_flags) & FL_ONGROUND) || entity_get_int(id, EV_ENT_groundentity))
  414. return PLUGIN_CONTINUE
  415.  
  416. static Float:origin[3]
  417. static Float:last[3]
  418.  
  419. entity_get_vector(id, EV_VEC_origin, origin)
  420. if(get_distance_f(origin, last) < 32.0)
  421. {
  422. return PLUGIN_CONTINUE
  423. }
  424.  
  425. vec_copy(origin, last)
  426. if(entity_get_int(id, EV_INT_bInDuck))
  427. origin[2] -= 18.0
  428. else
  429. origin[2] -= 36.0
  430.  
  431.  
  432. message_begin(MSG_BROADCAST, SVC_TEMPENTITY, {0,0,0}, 0)
  433. write_byte(TE_WORLDDECAL)
  434. write_coord(floatround(origin[0]))
  435. write_coord(floatround(origin[1]))
  436. write_coord(floatround(origin[2]))
  437. write_byte(105)
  438. message_end()
  439.  
  440. return PLUGIN_CONTINUE
  441. }
  442.  
  443.  
  444. public msg_statustext(msgid, dest, id)
  445. {
  446. return PLUGIN_HANDLED
  447. }
  448.  
  449. public msg_statusicon(msgid, dest, id)
  450. {
  451. static icon[5]
  452. get_msg_arg_string(2, icon, charsmax(icon))
  453. if(icon[0] == 'b' && icon[2] == 'y' && icon[3] == 'z')
  454. {
  455. set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0))
  456. return PLUGIN_HANDLED
  457. }
  458.  
  459. return PLUGIN_CONTINUE
  460. }
  461.  
  462. public msg_vguimenu(msgid, dest, id)
  463. {
  464. static msgarg1
  465. static CsTeams:team
  466.  
  467. msgarg1 = get_msg_arg_int(1)
  468. if(msgarg1 == 2)
  469. {
  470. team = cs_get_user_team(id)
  471. if((team == CS_TEAM_T) && !is_user_admin(id) && (is_user_alive(id) || !get_pcvar_num(gp_TeamChange)))
  472. {
  473. client_print(id, print_center, "%L", LANG_SERVER, "JBE_TEAM_CANTCHANGE")
  474. return PLUGIN_HANDLED
  475. }
  476. show_menu(id, 51, TEAM_MENU, -1)
  477. return PLUGIN_HANDLED
  478. }
  479.  
  480. return PLUGIN_CONTINUE
  481. }
  482.  
  483. public msg_showmenu(msgid, dest, id)
  484. {
  485. static msgarg1, roundloop
  486. static CsTeams:team
  487. msgarg1 = get_msg_arg_int(1)
  488.  
  489. if(msgarg1 != 531 && msgarg1 != 563)
  490. return PLUGIN_CONTINUE
  491.  
  492. roundloop = floatround(get_pcvar_float(gp_RetryTime) / 2)
  493. team = cs_get_user_team(id)
  494.  
  495. if(team == CS_TEAM_T)
  496. {
  497. if(!is_user_admin(id) && (is_user_alive(id) || (g_RoundStarted >= roundloop) || !get_pcvar_num(gp_TeamChange)))
  498. {
  499. client_print(id, print_center, "%L", LANG_SERVER, "JBE_TEAM_CANTCHANGE")
  500. return PLUGIN_HANDLED
  501. }
  502. else
  503. {
  504. show_menu(id, 51, TEAM_MENU, -1)
  505. return PLUGIN_HANDLED
  506. }
  507. }
  508. else
  509. {
  510. show_menu(id, 51, TEAM_MENU, -1)
  511. return PLUGIN_HANDLED
  512. }
  513.  
  514. return PLUGIN_CONTINUE
  515. }
  516.  
  517. public msg_motd(msgid, dest, id)
  518. {
  519. if(get_pcvar_num(gp_Motd))
  520. return PLUGIN_HANDLED
  521.  
  522. return PLUGIN_CONTINUE
  523. }
  524.  
  525. public msg_clcorpse(msgid, dest, id)
  526. {
  527. return PLUGIN_HANDLED
  528. }
  529.  
  530. public current_weapon(id)
  531. {
  532. if(!is_user_alive(id))
  533. return PLUGIN_CONTINUE
  534.  
  535. if(get_bit(g_PlayerCrowbar, id))
  536. {
  537. set_pev(id, pev_viewmodel2, _CrowbarModels[1])
  538. set_pev(id, pev_weaponmodel2, _CrowbarModels[0])
  539. }
  540. else
  541. {
  542. set_pev(id, pev_viewmodel2, _FistModels[1])
  543. set_pev(id, pev_weaponmodel2, _FistModels[0])
  544. }
  545. return PLUGIN_CONTINUE
  546. }
  547.  
  548. public player_status(id)
  549. {
  550. static type, player, CsTeams:team, name[32], health
  551. type = read_data(1)
  552. player = read_data(2)
  553. switch(type)
  554. {
  555. case(1):
  556. {
  557. ClearSyncHud(id, g_HudSync[1][_hudsync])
  558. }
  559. case(2):
  560. {
  561. team = cs_get_user_team(player)
  562. if((team != CS_TEAM_T) && (team != CS_TEAM_CT))
  563. return PLUGIN_HANDLED
  564.  
  565. health = get_user_health(player)
  566. get_user_name(player, name, charsmax(name))
  567. player_hudmessage(id, 4, 2.0, {0, 255, 0}, "%L", LANG_SERVER,
  568. (team == CS_TEAM_T) ? "JBE_PRISONER_STATUS" : "JBE_GUARD_STATUS", name, health)
  569. }
  570. }
  571.  
  572. return PLUGIN_HANDLED
  573. }
  574.  
  575. public impulse_100(id)
  576. {
  577. if(cs_get_user_team(id) == CS_TEAM_T)
  578. return PLUGIN_HANDLED
  579.  
  580. return PLUGIN_CONTINUE
  581. }
  582.  
  583. public player_spawn(id)
  584. {
  585. static CsTeams:team
  586.  
  587. if(!is_user_connected(id))
  588. return HAM_IGNORED
  589.  
  590. set_pdata_float(id, m_fNextHudTextArgsGameTime, get_gametime() + 999999.0)
  591. player_strip_weapons(id)
  592. if(g_RoundEnd)
  593. {
  594. g_RoundEnd = 0
  595. g_JailDay++
  596. }
  597.  
  598. set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
  599.  
  600. clear_bit(g_PlayerCrowbar, id)
  601. clear_bit(g_PlayerWanted, id)
  602. team = cs_get_user_team(id)
  603.  
  604. switch(team)
  605. {
  606. case(CS_TEAM_T):
  607. {
  608. g_PlayerLast = 0
  609. if(!g_PlayerReason[id])
  610. g_PlayerReason[id] = random_num(1, 6)
  611.  
  612. player_hudmessage(id, 0, 5.0, {255, 0, 255}, "%L %L", LANG_SERVER, "JBE_PRISONER_REASON",
  613. LANG_SERVER, g_Reasons[g_PlayerReason[id]])
  614.  
  615. set_user_info(id, "model", "jbemodel")
  616. entity_set_int(id, EV_INT_body, 2)
  617. if(is_freeday() || get_bit(g_FreedayAuto, id))
  618. {
  619. freeday_set(0, id)
  620. clear_bit(g_FreedayAuto, id)
  621. }
  622. else
  623. {
  624. entity_set_int(id, EV_INT_skin, random_num(0, 2))
  625. }
  626.  
  627. if(g_CrowbarCount < get_pcvar_num(gp_CrowbarMax))
  628. {
  629. if(random_num(0, g_MaxClients) > (g_MaxClients / 2))
  630. {
  631. g_CrowbarCount++
  632. set_bit(g_PlayerCrowbar, id)
  633. }
  634. }
  635. cs_set_user_armor(id, 0, CS_ARMOR_NONE)
  636. }
  637. case(CS_TEAM_CT):
  638. {
  639. g_PlayerSimon[id]++
  640. set_user_info(id, "model", "jbemodel")
  641. entity_set_int(id, EV_INT_body, 3)
  642. cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)
  643. }
  644. }
  645. first_join(id)
  646. return HAM_IGNORED
  647. }
  648.  
  649. public player_damage(victim, ent, attacker, Float:damage, bits)
  650. {
  651. if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker)
  652. return HAM_IGNORED
  653.  
  654. switch(g_Duel)
  655. {
  656. case(0):
  657. {
  658. if(attacker == ent && get_user_weapon(attacker) == CSW_KNIFE && get_bit(g_PlayerCrowbar, attacker) && cs_get_user_team(victim) != CS_TEAM_T)
  659. {
  660. SetHamParamFloat(4, damage * gc_CrowbarMul)
  661. return HAM_OVERRIDE
  662. }
  663. }
  664. case(2):
  665. {
  666. if(attacker != g_PlayerLast)
  667. return HAM_SUPERCEDE
  668. }
  669. default:
  670. {
  671. if((victim == g_DuelA && attacker == g_DuelB) || (victim == g_DuelB && attacker == g_DuelA))
  672. return HAM_IGNORED
  673.  
  674. return HAM_SUPERCEDE
  675. }
  676. }
  677.  
  678. return HAM_IGNORED
  679. }
  680.  
  681. public player_attack(victim, attacker, Float:damage, Float:direction[3], tracehandle, damagebits)
  682. {
  683. static CsTeams:vteam, CsTeams:ateam
  684. if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker)
  685. return HAM_IGNORED
  686.  
  687. vteam = cs_get_user_team(victim)
  688. ateam = cs_get_user_team(attacker)
  689.  
  690. if(ateam == CS_TEAM_CT && vteam == CS_TEAM_CT)
  691. return HAM_SUPERCEDE
  692.  
  693. switch(g_Duel)
  694. {
  695. case(0):
  696. {
  697. if(ateam == CS_TEAM_CT && vteam == CS_TEAM_T)
  698. {
  699. if(get_bit(g_PlayerRevolt, victim))
  700. {
  701. clear_bit(g_PlayerRevolt, victim)
  702. hud_status(0)
  703. }
  704. return HAM_IGNORED
  705. }
  706. }
  707. case(2):
  708. {
  709. if(attacker != g_PlayerLast)
  710. return HAM_SUPERCEDE
  711. }
  712. default:
  713. {
  714. if((victim == g_DuelA && attacker == g_DuelB) || (victim == g_DuelB && attacker == g_DuelA))
  715. return HAM_IGNORED
  716.  
  717. return HAM_SUPERCEDE
  718. }
  719. }
  720.  
  721. if(ateam == CS_TEAM_T && vteam == CS_TEAM_T && !g_BoxStarted)
  722. return HAM_SUPERCEDE
  723.  
  724. if(ateam == CS_TEAM_T && vteam == CS_TEAM_CT)
  725. {
  726. if(!g_PlayerRevolt)
  727. revolt_start()
  728.  
  729. set_bit(g_PlayerRevolt, attacker)
  730. }
  731.  
  732. return HAM_IGNORED
  733. }
  734.  
  735. public button_attack(button, id, Float:damage, Float:direction[3], tracehandle, damagebits)
  736. {
  737. if(is_valid_ent(button) && gc_ButtonShoot)
  738. {
  739. ExecuteHamB(Ham_Use, button, id, 0, 2, 1.0)
  740. entity_set_float(button, EV_FL_frame, 0.0)
  741. }
  742.  
  743. return HAM_IGNORED
  744. }
  745.  
  746. public player_killed(victim, attacker, shouldgib)
  747. {
  748. static CsTeams:vteam, CsTeams:kteam
  749. if(!(0 < attacker <= g_MaxClients) || !is_user_connected(attacker))
  750. kteam = CS_TEAM_UNASSIGNED
  751. else
  752. kteam = cs_get_user_team(attacker)
  753.  
  754. vteam = cs_get_user_team(victim)
  755. if(g_Simon == victim)
  756. {
  757. g_Simon = 0
  758. ClearSyncHud(0, g_HudSync[2][_hudsync])
  759. player_hudmessage(0, 2, 5.0, _, "%L", LANG_SERVER, "JBE_SIMON_KILLED")
  760. }
  761.  
  762. switch(g_Duel)
  763. {
  764. case(0):
  765. {
  766. switch(vteam)
  767. {
  768. case(CS_TEAM_CT):
  769. {
  770. if(kteam == CS_TEAM_T && !get_bit(g_PlayerWanted, attacker))
  771. {
  772. set_bit(g_PlayerWanted, attacker)
  773. entity_set_int(attacker, EV_INT_skin, 4)
  774. }
  775. }
  776. case(CS_TEAM_T):
  777. {
  778. clear_bit(g_PlayerRevolt, victim)
  779. clear_bit(g_PlayerWanted, victim)
  780. }
  781. }
  782. }
  783. default:
  784. {
  785. if(g_Duel != 2 && (attacker == g_DuelA || attacker == g_DuelB))
  786. {
  787. set_user_rendering(victim, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
  788. set_user_rendering(attacker, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
  789. g_Duel = 0
  790. g_LastDenied = 0
  791. g_BlockWeapons = 0
  792. g_PlayerLast = 0
  793. team_count()
  794. }
  795. }
  796. }
  797. hud_status(0)
  798. return HAM_IGNORED
  799. }
  800.  
  801. public player_touchweapon(id, ent)
  802. {
  803. static model[32], class[32]
  804. if(g_BlockWeapons)
  805. return HAM_SUPERCEDE
  806.  
  807. if(is_valid_ent(id) && g_Duel != 6 && is_user_alive(ent) && cs_get_user_team(ent) == CS_TEAM_CT)
  808. {
  809. entity_get_string(id, EV_SZ_model, model, charsmax(model))
  810. if(model[7] == 'w' && model[9] == 'h' && model[10] == 'e' && model[11] == 'g')
  811. {
  812. entity_get_string(id, EV_SZ_classname, class, charsmax(class))
  813. if(equal(class, "weapon_hegrenade"))
  814. remove_entity(id)
  815.  
  816. return HAM_SUPERCEDE
  817. }
  818.  
  819. }
  820.  
  821. return HAM_IGNORED
  822. }
  823.  
  824. public set_client_kv(id, const info[], const key[])
  825. {
  826. if(equal(key, "model"))
  827. return FMRES_SUPERCEDE
  828.  
  829. return FMRES_IGNORED
  830. }
  831.  
  832. public sound_emit(id, channel, sample[])
  833. {
  834. if(is_user_alive(id) && equal(sample, "weapons/knife_", 14))
  835. {
  836. switch(sample[17])
  837. {
  838. case('b'):
  839. {
  840. emit_sound(id, CHAN_WEAPON, "weapons/cbar_hitbod2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  841. }
  842. case('w'):
  843. {
  844. emit_sound(id, CHAN_WEAPON, "weapons/cbar_hitbod1.wav", 1.0, ATTN_NORM, 0, PITCH_LOW)
  845. }
  846. case('1', '2'):
  847. {
  848. emit_sound(id, CHAN_WEAPON, "weapons/bullet_hit2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM)
  849. }
  850. }
  851. return FMRES_SUPERCEDE
  852. }
  853. return FMRES_IGNORED
  854. }
  855.  
  856. public voice_listening(receiver, sender, bool:listen)
  857. {
  858. if((receiver == sender))
  859. return FMRES_IGNORED
  860.  
  861. if(is_user_admin(sender))
  862. {
  863. engfunc(EngFunc_SetClientListening, receiver, sender, true)
  864. return FMRES_SUPERCEDE
  865. }
  866.  
  867. switch(gc_VoiceBlock)
  868. {
  869. case(2):
  870. {
  871. if((sender != g_Simon) && (!get_bit(g_SimonVoice, sender) && gc_VoiceBlock))
  872. {
  873. engfunc(EngFunc_SetClientListening, receiver, sender, false)
  874. return FMRES_SUPERCEDE
  875. }
  876. }
  877. case(1):
  878. {
  879. if(!get_bit(g_SimonVoice, sender) && gc_VoiceBlock)
  880. {
  881. engfunc(EngFunc_SetClientListening, receiver, sender, false)
  882. return FMRES_SUPERCEDE
  883. }
  884. }
  885. }
  886. if(!is_user_alive(sender))
  887. {
  888. engfunc(EngFunc_SetClientListening, receiver, sender, false)
  889. return FMRES_SUPERCEDE
  890. }
  891.  
  892. if(sender == g_Simon)
  893. {
  894. engfunc(EngFunc_SetClientListening, receiver, sender, true)
  895. return FMRES_SUPERCEDE
  896. }
  897.  
  898. listen = true
  899.  
  900. if(g_SimonTalking && (sender != g_Simon))
  901. {
  902. listen = false
  903. }
  904. else
  905. {
  906. static CsTeams:steam
  907. steam = cs_get_user_team(sender)
  908. switch(gc_TalkMode)
  909. {
  910. case(2):
  911. {
  912. listen = (steam == CS_TEAM_CT)
  913. }
  914. case(1):
  915. {
  916. listen = (steam == CS_TEAM_CT || steam == CS_TEAM_T)
  917. }
  918. }
  919. }
  920.  
  921. engfunc(EngFunc_SetClientListening, receiver, sender, listen)
  922. return FMRES_SUPERCEDE
  923. }
  924.  
  925. public player_cmdstart(id, uc, random)
  926. {
  927. if(g_Duel > 3)
  928. {
  929. cs_set_user_bpammo(id, _Duel[g_Duel - 4][_csw], 1)
  930. }
  931. }
  932.  
  933. public round_first()
  934. {
  935. g_JailDay = 0
  936. for(new i = 1; i <= g_MaxClients; i++)
  937. g_PlayerSimon[i] = 0
  938.  
  939. set_cvar_num("sv_alltalk", 1)
  940. set_cvar_num("mp_roundtime", 2)
  941. set_cvar_num("mp_limitteams", 0)
  942. set_cvar_num("mp_autoteambalance", 0)
  943. set_cvar_num("mp_tkpunish", 0)
  944. set_cvar_num("mp_friendlyfire", 1)
  945. round_end()
  946. }
  947.  
  948. public round_end()
  949. {
  950. static CsTeams:team
  951. static maxnosimon, spectrounds
  952. g_SafeTime = 0
  953. g_PlayerRevolt = 0
  954. g_PlayerFreeday = 0
  955. g_PlayerLast = 0
  956. g_BoxStarted = 0
  957. g_CrowbarCount = 0
  958. g_Simon = 0
  959. g_SimonAllowed = 0
  960. g_RoundStarted = 0
  961. g_LastDenied = 0
  962. g_BlockWeapons = 0
  963. g_TeamCount[CS_TEAM_T] = 0
  964. g_TeamCount[CS_TEAM_CT] = 0
  965. g_Freeday = 0
  966. g_FreedayNext = (random_num(0,99) >= 95)
  967. g_RoundEnd = 1
  968. g_Duel = 0
  969.  
  970. remove_task(TASK_STATUS)
  971. remove_task(TASK_FREEDAY)
  972. remove_task(TASK_FREEEND)
  973. remove_task(TASK_ROUND)
  974. maxnosimon = get_pcvar_num(gp_NosimonRounds)
  975. spectrounds = get_pcvar_num(gp_SpectRounds)
  976. for(new i = 1; i <= g_MaxClients; i++)
  977. {
  978. if(!is_user_connected(i))
  979. continue
  980.  
  981. menu_cancel(i)
  982. team = cs_get_user_team(i)
  983. player_strip_weapons(i)
  984. switch(team)
  985. {
  986. case(CS_TEAM_CT):
  987. {
  988. if(g_PlayerSimon[i] > maxnosimon)
  989. {
  990. cmd_nomic(i)
  991. }
  992. }
  993. case(CS_TEAM_SPECTATOR,CS_TEAM_UNASSIGNED):
  994. {
  995. g_PlayerSpect[i]++
  996. if(g_PlayerSpect[i] > spectrounds)
  997. {
  998. client_cmd(i, "disconnect")
  999. server_print("JBE Disconnected spectator client #%i", i)
  1000. }
  1001. else
  1002. {
  1003. show_menu(i, 51, TEAM_MENU, -1)
  1004. }
  1005. }
  1006. }
  1007. }
  1008. for(new i = 0; i < sizeof(g_HudSync); i++)
  1009. ClearSyncHud(0, g_HudSync[i][_hudsync])
  1010.  
  1011. }
  1012.  
  1013. public round_start()
  1014. {
  1015. if(g_RoundEnd)
  1016. return
  1017.  
  1018. team_count()
  1019. if(!g_Simon && is_freeday())
  1020. {
  1021. g_Freeday = 1
  1022. emit_sound(0, CHAN_AUTO, "jbextreme/brass_bell_C.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  1023. check_freeday(TASK_FREEDAY)
  1024. }
  1025. else
  1026. {
  1027. set_task(60.0, "check_freeday", TASK_FREEDAY)
  1028. }
  1029. set_task(HUD_DELAY, "hud_status", TASK_STATUS, _, _, "b")
  1030. set_task(get_pcvar_float(gp_RetryTime) + 1.0, "safe_time", TASK_SAFETIME)
  1031. set_task(120.0, "freeday_end", TASK_FREEDAY)
  1032. g_SimonRandom = get_pcvar_num(gp_SimonRandom) ? random_float(15.0, 45.0) : 0.0
  1033. g_SimonAllowed = 1
  1034. g_FreedayNext = 0
  1035. }
  1036.  
  1037. public cmd_jointeam(id)
  1038. {
  1039. return PLUGIN_HANDLED
  1040. }
  1041.  
  1042. public cmd_joinclass(id)
  1043. {
  1044. return PLUGIN_HANDLED
  1045. }
  1046.  
  1047. public cmd_voiceon(id)
  1048. {
  1049. client_cmd(id, "+voicerecord")
  1050. set_bit(g_SimonVoice, id)
  1051. if(g_Simon == id || is_user_admin(id))
  1052. set_bit(g_SimonTalking, id)
  1053.  
  1054. return PLUGIN_HANDLED
  1055. }
  1056.  
  1057. public cmd_voiceoff(id)
  1058. {
  1059. client_cmd(id, "-voicerecord")
  1060. clear_bit(g_SimonVoice, id)
  1061. if(g_Simon == id || is_user_admin(id))
  1062. clear_bit(g_SimonTalking, id)
  1063.  
  1064. return PLUGIN_HANDLED
  1065. }
  1066.  
  1067. public cmd_simon(id)
  1068. {
  1069. static CsTeams:team, name[32]
  1070. if(!is_user_connected(id))
  1071. return PLUGIN_HANDLED
  1072.  
  1073. team = cs_get_user_team(id)
  1074. if(g_SimonAllowed && !g_Freeday && is_user_alive(id) && team == CS_TEAM_CT && !g_Simon)
  1075. {
  1076. g_Simon = id
  1077. get_user_name(id, name, charsmax(name))
  1078. entity_set_int(id, EV_INT_body, 1)
  1079. g_PlayerSimon[id]--
  1080. if(get_pcvar_num(gp_GlowModels))
  1081. player_glow(id, g_Colors[0])
  1082.  
  1083. hud_status(0)
  1084. }
  1085. return PLUGIN_HANDLED
  1086. }
  1087.  
  1088. public cmd_open(id)
  1089. {
  1090. if(id == g_Simon)
  1091. jail_open()
  1092.  
  1093. return PLUGIN_HANDLED
  1094. }
  1095.  
  1096. public cmd_nomic(id)
  1097. {
  1098. static CsTeams:team
  1099. team = cs_get_user_team(id)
  1100. if(team == CS_TEAM_CT)
  1101. {
  1102. server_print("JBE Transfered guard to prisoners team client #%i", id)
  1103. if(g_Simon == id)
  1104. {
  1105. g_Simon = 0
  1106. player_hudmessage(0, 2, 5.0, _, "%L", LANG_SERVER, "JBE_SIMON_TRANSFERED")
  1107. }
  1108. if(!is_user_admin(id))
  1109. set_bit(g_PlayerNomic, id)
  1110.  
  1111. user_silentkill(id)
  1112. cs_set_user_team(id, CS_TEAM_T)
  1113. }
  1114. return PLUGIN_HANDLED
  1115. }
  1116.  
  1117. public cmd_box(id)
  1118. {
  1119. static i
  1120. if((id < 0) || (is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT))
  1121. {
  1122. if(g_TeamAlive[CS_TEAM_T] <= get_pcvar_num(gp_BoxMax) && g_TeamAlive[CS_TEAM_T] > 1)
  1123. {
  1124. for(i = 1; i <= g_MaxClients; i++)
  1125. if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_T)
  1126. set_user_health(i, 100)
  1127.  
  1128. set_cvar_num("mp_tkpunish", 0)
  1129. set_cvar_num("mp_friendlyfire", 1)
  1130. g_BoxStarted = 1
  1131. player_hudmessage(0, 1, 3.0, _, "%L", LANG_SERVER, "JBE_GUARD_BOX")
  1132. }
  1133. else
  1134. {
  1135. player_hudmessage(id, 1, 3.0, _, "%L", LANG_SERVER, "JBE_GUARD_CANTBOX")
  1136. }
  1137. }
  1138. return PLUGIN_HANDLED
  1139. }
  1140.  
  1141. public cmd_help(id)
  1142. {
  1143. if(id > g_MaxClients)
  1144. id -= TASK_HELP
  1145.  
  1146. remove_task(TASK_HELP + id)
  1147. switch(get_bit(g_PlayerHelp, id))
  1148. {
  1149. case(0):
  1150. {
  1151. set_bit(g_PlayerHelp, id)
  1152. player_hudmessage(id, 7, 15.0, {230, 100, 10}, "%s", g_HelpText)
  1153. set_task(15.0, "cmd_help", TASK_HELP + id)
  1154. }
  1155. default:
  1156. {
  1157. clear_bit(g_PlayerHelp, id)
  1158. ClearSyncHud(id, g_HudSync[7][_hudsync])
  1159. }
  1160. }
  1161. }
  1162.  
  1163. public cmd_freeday(id)
  1164. {
  1165. static menu, menuname[32], option[64]
  1166. if(!is_freeday() && ((is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT) || is_user_admin(id)))
  1167. {
  1168. formatex(menuname, charsmax(menuname), "%L", LANG_SERVER, "JBE_MENU_FREEDAY")
  1169. menu = menu_create(menuname, "freeday_choice")
  1170.  
  1171. formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_FREEDAY_PLAYER")
  1172. menu_additem(menu, option, "1", 0)
  1173.  
  1174. formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_FREEDAY_ALL")
  1175. menu_additem(menu, option, "2", 0)
  1176.  
  1177. menu_display(id, menu)
  1178. }
  1179. return PLUGIN_HANDLED
  1180. }
  1181.  
  1182. public cmd_freeday_player(id)
  1183. {
  1184. if((is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT) || is_user_admin(id))
  1185. menu_players(id, CS_TEAM_T, id, 1, "freeday_select", "%L", LANG_SERVER, "JBE_MENU_FREEDAY")
  1186.  
  1187. return PLUGIN_CONTINUE
  1188. }
  1189.  
  1190. public cmd_lastrequest(id)
  1191. {
  1192. static i, num[5], menu, menuname[32], option[64]
  1193. if(!get_pcvar_num(gp_LastRequest) || g_Freeday || g_LastDenied || id != g_PlayerLast || g_RoundEnd || get_bit(g_PlayerWanted, id) || get_bit(g_PlayerFreeday, id) || !is_user_alive(id))
  1194. return PLUGIN_CONTINUE
  1195.  
  1196. formatex(menuname, charsmax(menuname), "%L", LANG_SERVER, "JBE_MENU_LASTREQ")
  1197. menu = menu_create(menuname, "lastrequest_select")
  1198.  
  1199. formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_LASTREQ_OPT1")
  1200. menu_additem(menu, option, "1", 0)
  1201.  
  1202. formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_LASTREQ_OPT2")
  1203. menu_additem(menu, option, "2", 0)
  1204.  
  1205. formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_LASTREQ_OPT3")
  1206. menu_additem(menu, option, "3", 0)
  1207.  
  1208. for(i = 0; i < sizeof(_Duel); i++)
  1209. {
  1210. num_to_str(i + 4, num, charsmax(num))
  1211. formatex(option, charsmax(option), "%L", LANG_SERVER, _Duel[i][_opt])
  1212. menu_additem(menu, option, num, 0)
  1213. }
  1214.  
  1215. menu_display(id, menu)
  1216. return PLUGIN_CONTINUE
  1217. }
  1218.  
  1219. public adm_freeday(id)
  1220. {
  1221. static player, user[32]
  1222. if(!is_user_admin(id))
  1223. return PLUGIN_CONTINUE
  1224.  
  1225. read_argv(1, user, charsmax(user))
  1226. player = cmd_target(id, user, 2)
  1227. if(is_user_connected(player) && cs_get_user_team(player) == CS_TEAM_T)
  1228. {
  1229. freeday_set(id, player)
  1230. }
  1231. return PLUGIN_HANDLED
  1232. }
  1233.  
  1234. public adm_nomic(id)
  1235. {
  1236. static player, user[32]
  1237. if(id == 0 || is_user_admin(id))
  1238. {
  1239. read_argv(1, user, charsmax(user))
  1240. player = cmd_target(id, user, 3)
  1241. if(is_user_connected(player))
  1242. {
  1243. cmd_nomic(player)
  1244. }
  1245. }
  1246. return PLUGIN_HANDLED
  1247. }
  1248.  
  1249. public adm_open(id)
  1250. {
  1251. if(!is_user_admin(id))
  1252. return PLUGIN_CONTINUE
  1253.  
  1254. jail_open()
  1255. return PLUGIN_HANDLED
  1256. }
  1257.  
  1258. public adm_box(id)
  1259. {
  1260. if(!is_user_admin(id))
  1261. return PLUGIN_CONTINUE
  1262.  
  1263. cmd_box(-1)
  1264. return PLUGIN_HANDLED
  1265. }
  1266.  
  1267. public team_select(id, key)
  1268. {
  1269. static CsTeams:team, roundloop, admin
  1270.  
  1271. roundloop = get_pcvar_num(gp_RetryTime) / 2
  1272. team = cs_get_user_team(id)
  1273. admin = is_user_admin(id)
  1274. team_count()
  1275.  
  1276. if(!admin && (team == CS_TEAM_UNASSIGNED) && (g_RoundStarted >= roundloop) && g_TeamCount[CS_TEAM_CT] && g_TeamCount[CS_TEAM_T] && !is_user_alive(id))
  1277. {
  1278. team_join(id, CS_TEAM_SPECTATOR)
  1279. client_print(id, print_center, "%L", LANG_SERVER, "JBE_TEAM_CANTJOIN")
  1280. return PLUGIN_HANDLED
  1281. }
  1282.  
  1283.  
  1284. switch(key)
  1285. {
  1286. case(0):
  1287. {
  1288. if(team == CS_TEAM_T)
  1289. return PLUGIN_HANDLED
  1290.  
  1291. g_PlayerReason[id] = random_num(1, 6)
  1292.  
  1293. team_join(id, CS_TEAM_T)
  1294. }
  1295. case(1):
  1296. {
  1297. if(team == CS_TEAM_CT || (!admin && get_bit(g_PlayerNomic, id)))
  1298. return PLUGIN_HANDLED
  1299.  
  1300. if(g_TeamCount[CS_TEAM_CT] < ctcount_allowed() || admin)
  1301. team_join(id, CS_TEAM_CT)
  1302. else
  1303. client_print(id, print_center, "%L", LANG_SERVER, "JBE_TEAM_CTFULL")
  1304. }
  1305. case(5):
  1306. {
  1307. user_silentkill(id)
  1308. team_join(id, CS_TEAM_SPECTATOR)
  1309. }
  1310. }
  1311. return PLUGIN_HANDLED
  1312. }
  1313.  
  1314. public team_join(id, CsTeams:team)
  1315. {
  1316. static restore, vgui, msgblock
  1317.  
  1318. restore = get_pdata_int(id, m_iVGUI)
  1319. vgui = restore & (1<<0)
  1320. if(vgui)
  1321. set_pdata_int(id, m_iVGUI, restore & ~(1<<0))
  1322.  
  1323. switch(team)
  1324. {
  1325. case CS_TEAM_SPECTATOR:
  1326. {
  1327. msgblock = get_msg_block(g_MsgShowMenu)
  1328. set_msg_block(g_MsgShowMenu, BLOCK_ONCE)
  1329. dllfunc(DLLFunc_ClientPutInServer, id)
  1330. set_msg_block(g_MsgShowMenu, msgblock)
  1331. set_pdata_int(id, m_fGameHUDInitialized, 1)
  1332. engclient_cmd(id, "jointeam", "6")
  1333. }
  1334. case CS_TEAM_T, CS_TEAM_CT:
  1335. {
  1336. msgblock = get_msg_block(g_MsgShowMenu)
  1337. set_msg_block(g_MsgShowMenu, BLOCK_ONCE)
  1338. engclient_cmd(id, "jointeam", (team == CS_TEAM_CT) ? "2" : "1")
  1339. engclient_cmd(id, "joinclass", "1")
  1340. set_msg_block(g_MsgShowMenu, msgblock)
  1341. g_PlayerSpect[id] = 0
  1342. }
  1343. }
  1344.  
  1345. if(vgui)
  1346. set_pdata_int(id, m_iVGUI, restore)
  1347. }
  1348.  
  1349. public team_count()
  1350. {
  1351. static CsTeams:team, last
  1352. g_TeamCount[CS_TEAM_UNASSIGNED] = 0
  1353. g_TeamCount[CS_TEAM_T] = 0
  1354. g_TeamCount[CS_TEAM_CT] = 0
  1355. g_TeamCount[CS_TEAM_SPECTATOR] = 0
  1356. g_TeamAlive[CS_TEAM_UNASSIGNED] = 0
  1357. g_TeamAlive[CS_TEAM_T] = 0
  1358. g_TeamAlive[CS_TEAM_CT] = 0
  1359. g_TeamAlive[CS_TEAM_SPECTATOR] = 0
  1360. for(new i = 1; i <= g_MaxClients; i++)
  1361. {
  1362. if(is_user_connected(i))
  1363. {
  1364. team = cs_get_user_team(i)
  1365. g_TeamCount[team]++
  1366. g_PlayerTeam[i] = team
  1367. if(is_user_alive(i))
  1368. {
  1369. g_TeamAlive[team]++
  1370. if(team == CS_TEAM_T)
  1371. last = i
  1372. }
  1373. }
  1374. else
  1375. {
  1376. g_PlayerTeam[i] = CS_TEAM_UNASSIGNED
  1377. }
  1378. }
  1379. if(g_TeamAlive[CS_TEAM_T] == 1)
  1380. {
  1381. if(last != g_PlayerLast && g_SafeTime)
  1382. {
  1383. prisoner_last(last)
  1384. }
  1385. }
  1386. else
  1387. {
  1388. if(g_Duel || g_DuelA || g_DuelB)
  1389. {
  1390. if(is_user_alive(g_DuelA))
  1391. {
  1392. set_user_rendering(g_DuelA, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
  1393. player_strip_weapons(g_DuelA)
  1394. }
  1395.  
  1396. if(is_user_alive(g_DuelB))
  1397. {
  1398. set_user_rendering(g_DuelB, kRenderFxNone, 0, 0, 0, kRenderNormal, 0)
  1399. player_strip_weapons(g_DuelB)
  1400. }
  1401.  
  1402. }
  1403. g_PlayerLast = 0
  1404. g_DuelA = 0
  1405. g_DuelB = 0
  1406. g_Duel = 0
  1407. }
  1408. }
  1409.  
  1410. public revolt_start()
  1411. {
  1412. client_cmd(0,"speak ambience/siren")
  1413. set_task(8.0, "stop_sound")
  1414. hud_status(0)
  1415. }
  1416.  
  1417. public stop_sound(task)
  1418. {
  1419. client_cmd(0, "stopsound")
  1420. }
  1421.  
  1422. public hud_status(task)
  1423. {
  1424. static i, n
  1425. new name[32], szStatus[64], wanted[1024]
  1426.  
  1427. if(g_RoundStarted < (get_pcvar_num(gp_RetryTime) / 2))
  1428. g_RoundStarted++
  1429.  
  1430. if(!g_Freeday && !g_Simon && g_SimonAllowed && (0.0 < g_SimonRandom < get_gametime()))
  1431. {
  1432. cmd_simon(random_num(1, g_MaxClients))
  1433. }
  1434.  
  1435. n = 0
  1436. formatex(wanted, charsmax(wanted), "%L", LANG_SERVER, "JBE_PRISONER_WANTED")
  1437. n = strlen(wanted)
  1438. for(i = 0; i < g_MaxClients; i++)
  1439. {
  1440. if(get_bit(g_PlayerWanted, i) && is_user_alive(i) && n < charsmax(wanted))
  1441. {
  1442. get_user_name(i, name, charsmax(name))
  1443. n += copy(wanted[n], charsmax(wanted) - n, "^n^t")
  1444. n += copy(wanted[n], charsmax(wanted) - n, name)
  1445. }
  1446. }
  1447.  
  1448. team_count()
  1449. formatex(szStatus, charsmax(szStatus), "%L", LANG_SERVER, "JBE_STATUS", g_TeamAlive[CS_TEAM_T], g_TeamCount[CS_TEAM_T])
  1450. message_begin(MSG_BROADCAST, get_user_msgid("StatusText"), {0,0,0}, 0)
  1451. write_byte(0)
  1452. write_string(szStatus)
  1453. message_end()
  1454.  
  1455. if(g_Simon)
  1456. {
  1457. get_user_name(g_Simon, name, charsmax(name))
  1458. player_hudmessage(0, 2, HUD_DELAY + 1.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_SIMON_FOLLOW", name)
  1459. }
  1460. else if(g_Freeday)
  1461. {
  1462. player_hudmessage(0, 2, HUD_DELAY + 1.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_FREEDAY")
  1463. }
  1464.  
  1465. if(g_PlayerWanted)
  1466. player_hudmessage(0, 3, HUD_DELAY + 1.0, {255, 25, 50}, "%s", wanted)
  1467. else if(g_PlayerRevolt)
  1468. player_hudmessage(0, 3, HUD_DELAY + 1.0, {255, 25, 50}, "%L", LANG_SERVER, "JBE_PRISONER_REVOLT")
  1469.  
  1470. player_hudmessage(0, 5, HUD_DELAY + 1.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_DAY", g_JailDay)
  1471.  
  1472. gc_TalkMode = get_pcvar_num(gp_TalkMode)
  1473. gc_VoiceBlock = get_pcvar_num(gp_VoiceBlock)
  1474. gc_SimonSteps = get_pcvar_num(gp_SimonSteps)
  1475. gc_ButtonShoot = get_pcvar_num(gp_ButtonShoot)
  1476. gc_CrowbarMul = get_pcvar_float(gp_CrowbarMul)
  1477.  
  1478. }
  1479.  
  1480. public safe_time(task)
  1481. {
  1482. g_SafeTime = 1
  1483. }
  1484.  
  1485. public check_freeday(task)
  1486. {
  1487. static Float:roundmax, i
  1488. if(!g_Simon && !g_PlayerLast)
  1489. {
  1490. g_Freeday = 1
  1491. hud_status(0)
  1492. roundmax = get_pcvar_float(gp_RoundMax)
  1493. if(roundmax > 0.0)
  1494. {
  1495. for(i = 1; i <= g_MaxClients; i++)
  1496. {
  1497. if(is_user_alive(i) && cs_get_user_team(i) == CS_TEAM_T)
  1498. freeday_set(0, i)
  1499. }
  1500. emit_sound(0, CHAN_AUTO, "jbextreme/brass_bell_C.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  1501. player_hudmessage(0, 8, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_ENDTIMER", floatround(roundmax - 60.0))
  1502. remove_task(TASK_ROUND)
  1503. set_task(roundmax - 60.0, "check_end", TASK_ROUND)
  1504. }
  1505. }
  1506.  
  1507. if(get_pcvar_num(gp_AutoOpen))
  1508. jail_open()
  1509. }
  1510.  
  1511. public freeday_end(task)
  1512. {
  1513. if(g_Freeday || g_PlayerFreeday)
  1514. {
  1515. emit_sound(0, CHAN_AUTO, "jbextreme/brass_bell_C.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  1516. player_hudmessage(0, 8, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_ENDFREEDAY")
  1517. }
  1518. }
  1519.  
  1520. public check_end(task)
  1521. {
  1522. team_count()
  1523. for(new i = 1; i <= g_MaxClients; i++)
  1524. {
  1525. if(g_PlayerTeam[i] == CS_TEAM_T && is_user_alive(i))
  1526. {
  1527. user_silentkill(i)
  1528. cs_set_user_deaths(i, get_user_deaths(i) - 1)
  1529. }
  1530. }
  1531. for(new i = 1; i <= g_MaxClients; i++)
  1532. {
  1533. if(g_PlayerTeam[i] == CS_TEAM_CT && is_user_alive(i))
  1534. {
  1535. user_silentkill(i)
  1536. cs_set_user_deaths(i, get_user_deaths(i) - 1)
  1537. }
  1538. }
  1539. player_hudmessage(0, 6, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_ROUNDEND")
  1540. }
  1541.  
  1542. public prisoner_last(id)
  1543. {
  1544. static name[32], Float:roundmax
  1545. if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_T)
  1546. {
  1547. roundmax = get_pcvar_float(gp_RoundMax)
  1548. get_user_name(id, name, charsmax(name))
  1549. g_PlayerLast = id
  1550. player_hudmessage(0, 6, 5.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_PRISONER_LAST", name)
  1551. remove_task(TASK_ROUND)
  1552. if(roundmax > 0.0)
  1553. {
  1554. player_hudmessage(0, 8, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_STATUS_ENDTIMER", floatround(roundmax - 60.0))
  1555. set_task(roundmax - 60.0, "check_end", TASK_ROUND)
  1556. }
  1557. if((g_TeamAlive[CS_TEAM_CT] > 0) && get_pcvar_num(gp_AutoLastresquest))
  1558. cmd_lastrequest(id)
  1559. }
  1560. }
  1561.  
  1562. public freeday_select(id, menu, item)
  1563. {
  1564. if(item == MENU_EXIT)
  1565. {
  1566. menu_destroy(menu)
  1567. return PLUGIN_HANDLED
  1568. }
  1569.  
  1570. static dst[32], data[5], player, access, callback
  1571.  
  1572. menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
  1573. player = str_to_num(data)
  1574. freeday_set(id, player)
  1575. return PLUGIN_HANDLED
  1576. }
  1577.  
  1578. public duel_knives(id, menu, item)
  1579. {
  1580. if(item == MENU_EXIT)
  1581. {
  1582. menu_destroy(menu)
  1583. g_LastDenied = 0
  1584. return PLUGIN_HANDLED
  1585. }
  1586.  
  1587. static dst[32], data[5], access, callback, option[128], player, src[32]
  1588.  
  1589. menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
  1590. get_user_name(id, src, charsmax(src))
  1591. player = str_to_num(data)
  1592. formatex(option, charsmax(option), "%L^n%L", LANG_SERVER, "JBE_MENU_LASTREQ_SEL3", src, LANG_SERVER, "JBE_MENU_DUEL_SEL", src, dst)
  1593. player_hudmessage(0, 6, 3.0, {0, 255, 0}, option)
  1594.  
  1595. g_DuelA = id
  1596. clear_bit(g_PlayerCrowbar, id)
  1597. player_strip_weapons(id)
  1598. player_glow(id, g_Colors[3])
  1599. set_user_health(id, 100)
  1600.  
  1601. g_DuelB = player
  1602. player_strip_weapons(player)
  1603. player_glow(player, g_Colors[2])
  1604. set_user_health(player, 100)
  1605. g_BlockWeapons = 1
  1606. return PLUGIN_HANDLED
  1607. }
  1608.  
  1609. public duel_guns(id, menu, item)
  1610. {
  1611. if(item == MENU_EXIT)
  1612. {
  1613. menu_destroy(menu)
  1614. g_LastDenied = 0
  1615. g_Duel = 0
  1616. return PLUGIN_HANDLED
  1617. }
  1618.  
  1619. static gun, dst[32], data[5], access, callback, option[128], player, src[32]
  1620.  
  1621. menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
  1622. get_user_name(id, src, charsmax(src))
  1623. player = str_to_num(data)
  1624. formatex(option, charsmax(option), "%L^n%L", LANG_SERVER, _Duel[g_Duel - 4][_sel], src, LANG_SERVER, "JBE_MENU_DUEL_SEL", src, dst)
  1625. emit_sound(0, CHAN_AUTO, "jbextreme/nm_goodbadugly.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
  1626. player_hudmessage(0, 6, 3.0, {0, 255, 0}, option)
  1627.  
  1628. g_DuelA = id
  1629. clear_bit(g_PlayerCrowbar, id)
  1630. player_strip_weapons(id)
  1631. gun = give_item(id, _Duel[g_Duel - 4][_entname])
  1632. cs_set_weapon_ammo(gun, 1)
  1633. set_user_health(id, 100)
  1634. player_glow(id, g_Colors[3])
  1635.  
  1636. g_DuelB = player
  1637. player_strip_weapons(player)
  1638. gun = give_item(player, _Duel[g_Duel - 4][_entname])
  1639. cs_set_weapon_ammo(gun, 1)
  1640. set_user_health(player, 100)
  1641. player_glow(player, g_Colors[2])
  1642.  
  1643. g_BlockWeapons = 1
  1644. return PLUGIN_HANDLED
  1645. }
  1646.  
  1647. public freeday_choice(id, menu, item)
  1648. {
  1649. if(item == MENU_EXIT)
  1650. {
  1651. menu_destroy(menu)
  1652. return PLUGIN_HANDLED
  1653. }
  1654.  
  1655. static dst[32], data[5], access, callback
  1656.  
  1657. menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
  1658. menu_destroy(menu)
  1659. get_user_name(id, dst, charsmax(dst))
  1660. switch(data[0])
  1661. {
  1662. case('1'):
  1663. {
  1664. cmd_freeday_player(id)
  1665. }
  1666. case('2'):
  1667. {
  1668. if((id == g_Simon) || is_user_admin(id))
  1669. {
  1670. g_Simon = 0
  1671. get_user_name(id, dst, charsmax(dst))
  1672. client_print(0, print_console, "%s mindenkinek szabadnapot adott", dst)
  1673. server_print("JBE Client %i mindenkinek szabadnapot adott", id)
  1674. check_freeday(TASK_FREEDAY)
  1675. }
  1676. }
  1677. }
  1678. return PLUGIN_HANDLED
  1679. }
  1680.  
  1681. public lastrequest_select(id, menu, item)
  1682. {
  1683. if(item == MENU_EXIT)
  1684. {
  1685. menu_destroy(menu)
  1686. return PLUGIN_HANDLED
  1687. }
  1688.  
  1689. static i, dst[32], data[5], access, callback, option[64]
  1690.  
  1691. menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
  1692. get_user_name(id, dst, charsmax(dst))
  1693. switch(data[0])
  1694. {
  1695. case('1'):
  1696. {
  1697. formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_LASTREQ_SEL1", dst)
  1698. player_hudmessage(0, 6, 3.0, {0, 255, 0}, option)
  1699. set_bit(g_FreedayAuto, id)
  1700. user_silentkill(id)
  1701. }
  1702. case('2'):
  1703. {
  1704. formatex(option, charsmax(option), "%L", LANG_SERVER, "JBE_MENU_LASTREQ_SEL2", dst)
  1705. player_hudmessage(0, 6, 3.0, {0, 255, 0}, option)
  1706. g_Duel = 2
  1707. player_strip_weapons_all()
  1708. i = random_num(0, sizeof(_WeaponsFree) - 1)
  1709. give_item(id, _WeaponsFree[i])
  1710. g_BlockWeapons = 1
  1711. cs_set_user_bpammo(id, _WeaponsFreeCSW[i], _WeaponsFreeAmmo[i])
  1712. }
  1713. case('3'):
  1714. {
  1715. g_Duel = 3
  1716. menu_players(id, CS_TEAM_CT, 0, 1, "duel_knives", "%L", LANG_SERVER, "JBE_MENU_DUEL")
  1717. }
  1718. default:
  1719. {
  1720. g_Duel = str_to_num(data)
  1721. menu_players(id, CS_TEAM_CT, 0, 1, "duel_guns", "%L", LANG_SERVER, "JBE_MENU_DUEL")
  1722. }
  1723. }
  1724. g_LastDenied = 1
  1725. menu_destroy(menu)
  1726. return PLUGIN_HANDLED
  1727. }
  1728.  
  1729. public setup_buttons()
  1730. {
  1731. new ent[3]
  1732. new Float:origin[3]
  1733. new info[32]
  1734. new pos
  1735.  
  1736. while((pos <= sizeof(g_Buttons)) && (ent[0] = engfunc(EngFunc_FindEntityByString, ent[0], "classname", "info_player_deathmatch")))
  1737. {
  1738. pev(ent[0], pev_origin, origin)
  1739. while((ent[1] = engfunc(EngFunc_FindEntityInSphere, ent[1], origin, CELL_RADIUS)))
  1740. {
  1741. if(!is_valid_ent(ent[1]))
  1742. continue
  1743.  
  1744. entity_get_string(ent[1], EV_SZ_classname, info, charsmax(info))
  1745. if(!equal(info, "func_door"))
  1746. continue
  1747.  
  1748. entity_get_string(ent[1], EV_SZ_targetname, info, charsmax(info))
  1749. if(!info[0])
  1750. continue
  1751.  
  1752. if(TrieKeyExists(g_CellManagers, info))
  1753. {
  1754. TrieGetCell(g_CellManagers, info, ent[2])
  1755. }
  1756. else
  1757. {
  1758. ent[2] = engfunc(EngFunc_FindEntityByString, 0, "target", info)
  1759. }
  1760.  
  1761. if(is_valid_ent(ent[2]) && (in_array(ent[2], g_Buttons, sizeof(g_Buttons)) < 0))
  1762. {
  1763. g_Buttons[pos] = ent[2]
  1764. pos++
  1765. break
  1766. }
  1767. }
  1768. }
  1769. TrieDestroy(g_CellManagers)
  1770. }
  1771.  
  1772. stock in_array(needle, data[], size)
  1773. {
  1774. for(new i = 0; i < size; i++)
  1775. {
  1776. if(data[i] == needle)
  1777. return i
  1778. }
  1779. return -1
  1780. }
  1781.  
  1782. stock freeday_set(id, player)
  1783. {
  1784. static src[32], dst[32]
  1785. get_user_name(player, dst, charsmax(dst))
  1786.  
  1787. if(is_user_alive(player) && !get_bit(g_PlayerWanted, player))
  1788. {
  1789. set_bit(g_PlayerFreeday, player)
  1790. entity_set_int(player, EV_INT_skin, 3)
  1791. if(get_pcvar_num(gp_GlowModels))
  1792. player_glow(player, g_Colors[1])
  1793.  
  1794. if(0 < id <= g_MaxClients)
  1795. {
  1796. get_user_name(id, src, charsmax(src))
  1797. player_hudmessage(0, 6, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_GUARD_FREEDAYGIVE", src, dst)
  1798. }
  1799. else if(!is_freeday())
  1800. {
  1801. player_hudmessage(0, 6, 3.0, {0, 255, 0}, "%L", LANG_SERVER, "JBE_PRISONER_HASFREEDAY", dst)
  1802. }
  1803. }
  1804. }
  1805.  
  1806. stock first_join(id)
  1807. {
  1808. if(!get_bit(g_PlayerJoin, id))
  1809. {
  1810. set_bit(g_PlayerJoin, id)
  1811. clear_bit(g_PlayerHelp, id)
  1812. set_task(5.0, "cmd_help", TASK_HELP + id)
  1813. }
  1814. }
  1815.  
  1816. stock ctcount_allowed()
  1817. {
  1818. static count
  1819. count = ((g_TeamCount[CS_TEAM_T] + g_TeamCount[CS_TEAM_CT]) / get_pcvar_num(gp_TeamRatio))
  1820. if(count < 2)
  1821. count = 2
  1822. else if(count > get_pcvar_num(gp_CtMax))
  1823. count = get_pcvar_num(gp_CtMax)
  1824.  
  1825. return count
  1826. }
  1827.  
  1828. stock player_hudmessage(id, hudid, Float:time = 0.0, color[3] = {0, 255, 0}, msg[], any:...)
  1829. {
  1830. static text[512], Float:x, Float:y
  1831. x = g_HudSync[hudid][_x]
  1832. y = g_HudSync[hudid][_y]
  1833.  
  1834. if(time > 0)
  1835. set_hudmessage(color[0], color[1], color[2], x, y, 0, 0.00, time, 0.00, 0.00)
  1836. else
  1837. set_hudmessage(color[0], color[1], color[2], x, y, 0, 0.00, g_HudSync[hudid][_time], 0.00, 0.00)
  1838.  
  1839. vformat(text, charsmax(text), msg, 6)
  1840. ShowSyncHudMsg(id, g_HudSync[hudid][_hudsync], text)
  1841. }
  1842.  
  1843. stock menu_players(id, CsTeams:team, skip, alive, callback[], title[], any:...)
  1844. {
  1845. static i, name[32], num[5], menu, menuname[32]
  1846. vformat(menuname, charsmax(menuname), title, 7)
  1847. menu = menu_create(menuname, callback)
  1848. for(i = 1; i <= g_MaxClients; i++)
  1849. {
  1850. if(!is_user_connected(i) || (alive && !is_user_alive(i)) || (skip == i))
  1851. continue
  1852.  
  1853. if(!(team == CS_TEAM_T || team == CS_TEAM_CT) || ((team == CS_TEAM_T || team == CS_TEAM_CT) && (cs_get_user_team(i) == team)))
  1854. {
  1855. get_user_name(i, name, charsmax(name))
  1856. num_to_str(i, num, charsmax(num))
  1857. menu_additem(menu, name, num, 0)
  1858. }
  1859. }
  1860. menu_display(id, menu)
  1861. }
  1862.  
  1863. stock player_glow(id, color[3], amount=40)
  1864. {
  1865. set_user_rendering(id, kRenderFxGlowShell, color[0], color[1], color[2], kRenderNormal, amount)
  1866. }
  1867.  
  1868. stock player_strip_weapons(id)
  1869. {
  1870. strip_user_weapons(id)
  1871. give_item(id, "weapon_knife")
  1872. set_pdata_int(id, m_iPrimaryWeapon, 0)
  1873. }
  1874.  
  1875. stock player_strip_weapons_all()
  1876. {
  1877. for(new i = 1; i <= g_MaxClients; i++)
  1878. {
  1879. if(is_user_alive(i))
  1880. {
  1881. player_strip_weapons(i)
  1882. }
  1883. }
  1884. }
  1885.  
  1886. stock is_freeday()
  1887. {
  1888. return (g_FreedayNext || g_Freeday || (g_JailDay == 1))
  1889. }
  1890.  
  1891. public jail_open()
  1892. {
  1893. static i
  1894. for(i = 0; i < sizeof(g_Buttons); i++)
  1895. {
  1896. if(g_Buttons[i])
  1897. {
  1898. ExecuteHamB(Ham_Use, g_Buttons[i], 0, 0, 1, 1.0)
  1899. entity_set_float(g_Buttons[i], EV_FL_frame, 0.0)
  1900. }
  1901. }
  1902. }
  1903.  

_________________
-----------------------------------------------------------------------------------------------------------
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Simon.mdl
HozzászólásElküldve: 2013.06.14. 21:00 
Offline
Beavatott
Avatar

Csatlakozott: 2012.08.03. 01:31
Hozzászólások: 74
Megköszönt másnak: 11 alkalommal
Megköszönték neki: 7 alkalommal
Nem fogod tudni lecserélni.Nem az .sma-t kell átírni,hanem a modellt,mert a jailbreak mod egy összetett
modellt használ,ami magába foglalja a CT-skint; T-skint és a Simon skint.Ahoz,hogy meg tudd
változtatni,kell csinálni egy új modell pack-et és az elérhetőséget megváltoztatod az .sma-ban.
De ha valaki tud valami más megoldást erre akkor én is szívesen meghallgatnám :D

_________________
Nézzetek fel :)
Kép

Honlap: http://chos-team.ucoz.hu


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Simon.mdl
HozzászólásElküldve: 2013.06.15. 11:56 
Offline
Félisten
Avatar

Csatlakozott: 2010.09.16. 20:57
Hozzászólások: 950
Megköszönt másnak: 9 alkalommal
Megköszönték neki: 101 alkalommal
Dharma írta:
Nem fogod tudni lecserélni.Nem az .sma-t kell átírni,hanem a modellt,mert a jailbreak mod egy összetett
modellt használ,ami magába foglalja a CT-skint; T-skint és a Simon skint.Ahoz,hogy meg tudd
változtatni,kell csinálni egy új modell pack-et és az elérhetőséget megváltoztatod az .sma-ban.
De ha valaki tud valami más megoldást erre akkor én is szívesen meghallgatnám :D

Az sma-ban átírod h ne a "modell pack"-ból olvassa be a simon modelljét...

UI: nem "modell pack" van hanem 1 modell van és az tartalmazza az összes játékos modell-t

_________________
Weboldalam: nandee.smmg.hu
Kép

Ők köszönték meg Nandee nek ezt a hozzászólást: csmester (2013.06.15. 12:07)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Simon.mdl
HozzászólásElküldve: 2013.06.15. 19:29 
Offline
Beavatott
Avatar

Csatlakozott: 2012.08.03. 01:31
Hozzászólások: 74
Megköszönt másnak: 11 alkalommal
Megköszönték neki: 7 alkalommal
Nandee írta:
UI: nem "modell pack" van hanem 1 modell van és az tartalmazza az összes játékos modell-t


Én is erre gondoltam...csak lehet,hogy nem mindenkinek volt érthető :D

_________________
Nézzetek fel :)
Kép

Honlap: http://chos-team.ucoz.hu


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


Ki van itt

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