HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <ze_vip>
  2.  
  3. // Variables
  4. new g_szPasswordKey[65], g_szPassword[65]
  5. new bool:g_bIsUserVIP[33], bool:g_bSetVIP[33], g_iFlags[33], bool:g_bIsHappyHour
  6.  
  7. // Const.
  8. static const COLOR[] = "^x04"
  9. static const g_szLocalFile[] = "addons/amxmodx/configs/ze_vips.ini"
  10.  
  11. new const szCommands[][] =
  12. {
  13. "say /vip",
  14. "say /vips",
  15. "say_team /vip",
  16. "say_team /vips"
  17. }
  18.  
  19. // Cvars
  20. new Cvar_Show_VIP_Scoreboard, Cvar_Give_Multijump, Cvar_Connect_Message, Cvar_Admin_Contact,
  21. Cvar_Give_Parachute, Cvar_Enable_Happy_Hours, Cvar_Happy_Hour_Start, Cvar_Happy_Hour_End,
  22. Cvar_VIP_Flag
  23.  
  24. public plugin_natives()
  25. {
  26. register_native("ze_get_vip_flags", "native_ze_get_vip_flags", 1)
  27. register_native("ze_set_vip_flags", "native_ze_set_vip_flags", 1)
  28. }
  29.  
  30. public plugin_init()
  31. {
  32. register_plugin("[ZE] Zombie Escape VIP", VIP_VERSION, AUTHORS)
  33.  
  34. // Hook Chains
  35. RegisterHookChain(RG_CBasePlayer_Spawn, "Fw_PlayerSpawn_Post", 1)
  36.  
  37. // Cvars
  38. Cvar_Connect_Message = register_cvar("ze_connect_message", "1")
  39. Cvar_Admin_Contact = register_cvar("ze_admin_contact", "Admin Name")
  40. Cvar_Give_Multijump = register_cvar("ze_give_vip_multijump", "1")
  41. Cvar_Show_VIP_Scoreboard = register_cvar("ze_show_vip_scoreboard", "1")
  42. Cvar_Give_Parachute = register_cvar("ze_give_vip_parachute", "1")
  43. Cvar_Enable_Happy_Hours = register_cvar("ze_enable_happy_hours", "1")
  44. Cvar_Happy_Hour_Start = register_cvar("ze_happy_hours_start", "9")
  45. Cvar_Happy_Hour_End = register_cvar("ze_happy_hours_end", "12")
  46. Cvar_VIP_Flag = register_cvar("ze_happy_hours_vip_flags", "abcd")
  47.  
  48. register_cvar("ze_vip_version", VIP_VERSION, FCVAR_SERVER|FCVAR_SPONLY)
  49. set_cvar_string("ze_vip_version", VIP_VERSION)
  50.  
  51. // Commands
  52. for (new i = 0; i < charsmax(szCommands); i++)
  53. register_clcmd(szCommands[i], "CmdVIP")
  54.  
  55. register_clcmd("say /getvip", "CmdMotd")
  56. register_clcmd("say_team /getvip", "CmdMotd")
  57.  
  58. // Get Password Key
  59. get_cvar_string("amx_password_field", g_szPasswordKey, charsmax(g_szPasswordKey))
  60.  
  61. // Initialize Arrays
  62. arrayset(g_bIsUserVIP, false, 32)
  63. arrayset(g_bSetVIP, false, 32)
  64. }
  65.  
  66. public plugin_cfg()
  67. {
  68. // Get our configiration file and Execute it
  69. new szCfgDir[64]
  70. get_localinfo("amxx_configsdir", szCfgDir, charsmax(szCfgDir))
  71. server_cmd("exec %s/ze_vip.cfg", szCfgDir)
  72. }
  73.  
  74. public client_authorized(id)
  75. {
  76. // Get password from Setinfo
  77. new szPassword[65]
  78. get_user_info(id, g_szPasswordKey, szPassword, charsmax(szPassword))
  79.  
  80. // Player VIP?
  81. ze_get_vip_flags(id)
  82.  
  83. if (g_bIsUserVIP[id])
  84. {
  85. if (!equal(szPassword, g_szPassword))
  86. {
  87. // VIP-nak ha hibás a jelszó? Kirúgja a szerver
  88. client_cmd(id, "echo ^"* VIP hibás jelszó!^"")
  89. server_cmd("kick #%d ^"Nincs bejegyzésed a szerveren...^"", get_user_userid(id))
  90. }
  91. else
  92. {
  93. client_cmd(id, "echo ^"* VIP jelszó elfogadva!^"")
  94. }
  95. }
  96. }
  97.  
  98. public client_putinserver(id)
  99. {
  100. if (ze_get_vip_flags(id) & VIP_A)
  101. {
  102. if (get_pcvar_num(Cvar_Connect_Message) != 0)
  103. {
  104. new szName[32]
  105. get_user_name(id, szName, charsmax(szName))
  106. ze_colored_print(0, "!tVIP !g%s !tcsatlakozott a szerverre!y.", szName)
  107. }
  108. }
  109. }
  110.  
  111. public CmdMotd(id)
  112. {
  113. show_motd(id, "ze_vip.txt", "Zombie Escape VIP")
  114. }
  115.  
  116. public CmdVIP(id)
  117. {
  118. set_task(0.1, "Print_VIP_Names", id)
  119. }
  120.  
  121. public Print_VIP_Names(id)
  122. {
  123. new szAdminName[33][32], szMessage[256]
  124. new szContactInfo[256], szContact[112]
  125. new id, iCount, x, iLen
  126.  
  127. for (id = 1 ; id <= get_member_game(m_nMaxPlayers) ; id++)
  128. {
  129. if (is_user_connected(id) && (ze_get_vip_flags(id) & VIP_A))
  130. {
  131. get_user_name(id, szAdminName[iCount++], charsmax(szAdminName))
  132. }
  133.  
  134. iLen = format(szMessage, charsmax(szMessage), "%s Jelenlévő VIP: ", COLOR)
  135.  
  136. if (iCount > 0)
  137. {
  138. for (x = 0 ; x < iCount ; x++)
  139. {
  140. iLen += format(szMessage[iLen], charsmax(szMessage) - iLen, "%s%s ", szAdminName[x], x < (iCount - 1) ? ", " : "")
  141.  
  142. if (iLen > 96 )
  143. {
  144. print_message(id, szMessage)
  145. iLen = format(szMessage, charsmax(szMessage), "%s ", COLOR)
  146. }
  147. }
  148.  
  149. print_message(id, szMessage)
  150. }
  151. else
  152. {
  153. iLen += format(szMessage[iLen], charsmax(szMessage) - iLen, "Nincsenek elérhető VIP-ek.")
  154. print_message(id, szMessage)
  155. }
  156.  
  157. get_pcvar_string(Cvar_Admin_Contact, szContact, charsmax(szContact))
  158.  
  159. if (szContact[0])
  160. {
  161. format(szContactInfo, charsmax(szContactInfo), "%s- Kapcsolat a Szerver Tulajdonossal -- %s", COLOR, szContact)
  162. print_message(id, szContactInfo)
  163. }
  164. }
  165. }
  166.  
  167. public Fw_PlayerSpawn_Post(id)
  168. {
  169. if (!is_user_alive(id))
  170. return
  171.  
  172. Happy_Hours()
  173.  
  174. if (g_bIsHappyHour == true && get_pcvar_num(Cvar_Enable_Happy_Hours) != 0)
  175. {
  176. new szFlags[VIP_MAX_FLAGS]
  177. get_pcvar_string(Cvar_VIP_Flag, szFlags, charsmax(szFlags))
  178. ze_set_vip_flags(id, read_flags(szFlags))
  179. }
  180.  
  181. // Get password from Setinfo
  182. new szPassword[65]
  183. get_user_info(id, g_szPasswordKey, szPassword, charsmax(szPassword))
  184.  
  185. ze_get_vip_flags(id)
  186.  
  187. if (g_bIsUserVIP[id])
  188. {
  189. if (!equal(szPassword, g_szPassword))
  190. {
  191. // VIP ha hibás a jelszó? Kirúgja a szerver
  192. client_cmd(id, "echo ^"* VIP Hibás Jelszó!^"")
  193. server_cmd("kick #%d ^"Nincs bejegyzésed a szerveren...^"", get_user_userid(id))
  194. }
  195. else
  196. {
  197. client_cmd(id, "echo ^"* VIP Jelszó Elfogadva!^"")
  198. }
  199. }
  200.  
  201. if (ze_get_vip_flags(id) & VIP_B)
  202. {
  203. if (get_pcvar_num(Cvar_Give_Multijump) != 0)
  204. {
  205. ze_give_user_multijump(id)
  206. }
  207. }
  208.  
  209. if (ze_get_vip_flags(id) & VIP_C)
  210. {
  211. if (get_pcvar_num(Cvar_Give_Parachute) != 0)
  212. {
  213. ze_give_user_parachute(id)
  214. }
  215. }
  216.  
  217. set_task(0.1, "Update_Attribute", id, _, _, "a", 10)
  218. }
  219.  
  220. public ze_roundend(WinTeam)
  221. {
  222. for (new i = 0; i < get_member_game(m_nMaxPlayers); i++)
  223. {
  224. g_bSetVIP[i] = false
  225. }
  226. }
  227.  
  228. public Update_Attribute(id)
  229. {
  230. if ((ze_get_vip_flags(id) & VIP_D) && get_pcvar_num(Cvar_Show_VIP_Scoreboard) != 0)
  231. {
  232. message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"), {0, 0, 0}, id)
  233. write_byte(id)
  234. write_byte(4)
  235. message_end()
  236. }
  237. }
  238.  
  239. public native_ze_get_vip_flags(id)
  240. {
  241. if (file_exists(g_szLocalFile))
  242. {
  243. new iMaxLines = file_size(g_szLocalFile, 1)
  244. new szLineToRead[129]
  245. new szSteamID[35], szName[32]
  246. new szParse[3][65]
  247. new iTextLen
  248.  
  249. get_user_authid(id, szSteamID, charsmax(szSteamID))
  250. get_user_name(id, szName, charsmax(szName))
  251.  
  252. for (new iLineToRead = 0; iLineToRead < iMaxLines; iLineToRead++)
  253. {
  254. read_file(g_szLocalFile, iLineToRead, szLineToRead, charsmax(szLineToRead), iTextLen)
  255. parse(szLineToRead, szParse[0], 64, szParse[1], 64, szParse[2], 64)
  256.  
  257. remove_quotes(szParse[0])
  258. remove_quotes(szParse[1])
  259. remove_quotes(szParse[2])
  260.  
  261. if (!szParse[0][0] || szParse[0][0] == ';' || (szParse[0][0] == '/' && szParse[0][1] == '/'))
  262. continue
  263.  
  264. if ((equali(szSteamID, szParse[0]) && szParse[0][0] == 'S') || equali(szName, szParse[0]))
  265. {
  266. g_bIsUserVIP[id] = true
  267. copy(g_szPassword, charsmax(g_szPassword), szParse[1])
  268.  
  269. return read_flags(szParse[2])
  270. }
  271. }
  272. }
  273. else
  274. {
  275. write_file(g_szLocalFile, "; Zombie Escape VIP^n^n;Jogok:^n")
  276. write_file(g_szLocalFile, "; a -- Csatlakozó Üzenet, és VIP listán megjelenik")
  277. write_file(g_szLocalFile, "; b -- Többszöri Ugrás")
  278. write_file(g_szLocalFile, "; c -- Ejtőernyő")
  279. write_file(g_szLocalFile, "; d -- Megjelenik az eredmény jelzőn.^n^n;Példák:^n")
  280. write_file(g_szLocalFile, "; ^"Steam/Név^" ^"Jelszó^" ^"Jogok^"")
  281. }
  282.  
  283. g_bIsUserVIP[id] = false
  284.  
  285. if (g_bSetVIP[id] == true)
  286. {
  287. return g_iFlags[id]
  288. }
  289. else
  290. {
  291. return VIP_Z
  292. }
  293.  
  294. return VIP_Z
  295. }
  296.  
  297. public native_ze_set_vip_flags(id, Flags)
  298. {
  299. g_bSetVIP[id] = true
  300. g_iFlags[id] = Flags
  301. ze_get_vip_flags(id)
  302. }
  303.  
  304. stock Happy_Hours()
  305. {
  306. new szTime[3]
  307. get_time("%H", szTime, charsmax(szTime))
  308.  
  309. if(get_pcvar_num(Cvar_Happy_Hour_End) > str_to_num(szTime) >= get_pcvar_num(Cvar_Happy_Hour_Start))
  310. {
  311. g_bIsHappyHour = true
  312. }
  313. else
  314. {
  315. g_bIsHappyHour = false
  316. }
  317. }
  318.  
  319. stock print_message(id, msg[])
  320. {
  321. message_begin(MSG_ONE, get_user_msgid("SayText"), {0,0,0}, id)
  322. write_byte(id)
  323. write_string(msg)
  324. message_end()
  325. }