Advertisement
Guest User

Untitled

a guest
Jul 21st, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.61 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <fakemeta>
  3. #include <hamsandwich>
  4. #include <dhudmessage>
  5. #include <sqlx>
  6. #include <zombieplague>
  7. #include <zp_level_system>
  8.  
  9.  
  10. native box_number(index)
  11. native box_set_number(index, num)
  12.  
  13. native star_number(index)
  14.  
  15. #define STATUS_TASK 36788
  16. #define HUD_TASK 56343
  17.  
  18. #define ID_STATUS (taskid - STATUS_TASK)
  19. #define ID_TASK (taskid - HUD_TASK)
  20.  
  21. enum Quest
  22. {
  23. KillerCountOne = 0,
  24. DamageCountOne,
  25. KillerCountTwo,
  26. DamageCountTwo,
  27. KillerCountThree,
  28. DamageCountThree,
  29. CollectBox,
  30. CollectItem,
  31. CollectStar,
  32. BecomeHero,
  33. BecomeZombie,
  34. CraftItem
  35. }
  36.  
  37. new g_Quest[33], g_BoxGiver[33] // id player хранящие id от Enuma -> g_PlayerQuest[id][g_Quest]
  38. new g_PlayerQuest[33][12] // массив для соединения id квара и самого задания -> на выполнение p.s
  39. // первый квест g_PlayerQuest[id][0] = убить 3 зомби -> записываем при убийстве туда +1, и проверяем на следующий
  40.  
  41. new g_PlayerDamage[33]
  42. new q_Cvar[12], q_Cvar_Reward[2][12] // на каждый следующий квар - следующий квест. 0 соответсвует 0 и так далее
  43.  
  44. #define SQL_HOST "-"
  45. #define SQL_USER "-"
  46. #define SQL_PASSWORD "-"
  47. #define SQL_DATABASE "-" // don't change
  48. #define SQL_TABLENAME "quest_system"
  49.  
  50. new Handle:MYSQL_Tuple
  51. new Handle:MYSQL_Connect
  52. new g_szQuery[512];
  53.  
  54. new bool: UserLoaded[33];
  55. new UserSteamID[33][34];
  56.  
  57. public plugin_init()
  58. {
  59. register_plugin("[ZP] Quest-System", "3.0", "Dambas");
  60. RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage");
  61. RegisterHam(Ham_Killed, "player", "fw_PlayerKilled");
  62.  
  63. // Сколько нужно для выполнения
  64. q_Cvar[0] = register_cvar("Quest_KillZombie_One", "5");
  65. q_Cvar[1] = register_cvar("Quest_Damage_One", "10000.0");
  66. q_Cvar[2] = register_cvar("Quest_Quest_KillZombie_Two", "15");
  67. q_Cvar[3] = register_cvar("Quest_Damage_Two", "30000.0");
  68. q_Cvar[4] = register_cvar("Quest_Quest_KillZombie_Three", "40");
  69. q_Cvar[5] = register_cvar("Quest_Damage_Three", "50000.0");
  70. q_Cvar[6] = register_cvar("Quest_Collect_Box", "3");
  71. q_Cvar[7] = register_cvar("Quest_CollectItem", "3");
  72. q_Cvar[8] = register_cvar("Quest_CollectStar", "3");
  73. q_Cvar[9] = register_cvar("Quest_BecomeHero", "1");
  74. q_Cvar[10] = register_cvar("Quest_BecomeZombie", "1");
  75. q_Cvar[11] = register_cvar("Quest_CraftItem", "1");
  76.  
  77. // Аммо
  78. q_Cvar_Reward[0][0] = register_cvar("Ammo_Reward_One", "4000");
  79. q_Cvar_Reward[0][1] = register_cvar("Ammo_Reward_Two", "4000");
  80. q_Cvar_Reward[0][2] = register_cvar("Ammo_Reward_Three", "4000");
  81. q_Cvar_Reward[0][3] = register_cvar("Ammo_Reward_Four", "4000");
  82. q_Cvar_Reward[0][4] = register_cvar("Ammo_Reward_Five", "4000");
  83. q_Cvar_Reward[0][5] = register_cvar("Ammo_Reward_Six", "4000");
  84. q_Cvar_Reward[0][6] = register_cvar("Ammo_Reward_Seven", "4000");
  85. q_Cvar_Reward[0][7] = register_cvar("Ammo_Reward_Eight", "4000");
  86. q_Cvar_Reward[0][8] = register_cvar("Ammo_Reward_Nine", "4000");
  87. q_Cvar_Reward[0][9] = register_cvar("Ammo_Reward_Ten", "4000");
  88. q_Cvar_Reward[0][10] = register_cvar("Ammo_Reward_Elev", "4000");
  89. q_Cvar_Reward[0][11] = register_cvar("Ammo_Reward_Tw", "4000");
  90.  
  91. // Опыт
  92. q_Cvar_Reward[1][0] = register_cvar("XP_Reward_One", "1500");
  93. q_Cvar_Reward[1][1] = register_cvar("XP_Reward_Two", "1500");
  94. q_Cvar_Reward[1][2] = register_cvar("XP_Reward_Three", "1500");
  95. q_Cvar_Reward[1][3] = register_cvar("XP_Reward_Four", "1500");
  96. q_Cvar_Reward[1][4] = register_cvar("XP_Reward_Five", "1500");
  97. q_Cvar_Reward[1][5] = register_cvar("XP_Reward_Six", "1500");
  98. q_Cvar_Reward[1][6] = register_cvar("XP_Reward_Seven", "1500");
  99. q_Cvar_Reward[1][7] = register_cvar("XP_Reward_Eight", "1500");
  100. q_Cvar_Reward[1][8] = register_cvar("XP_Reward_Nine", "1500");
  101. q_Cvar_Reward[1][9] = register_cvar("XP_Reward_Ten", "1500");
  102. q_Cvar_Reward[1][10] = register_cvar("XP_Reward_Elev", "1500");
  103. q_Cvar_Reward[1][11] = register_cvar("XP_Reward_Tw", "1500");
  104.  
  105.  
  106. //register_dictionary("zp_quest_system.txt")
  107. }
  108.  
  109. public plugin_natives()
  110. {
  111. register_native("get_quest_number", "native_get_quest_number", 1)
  112. register_native("box_giver", "native_box_giver", 1)
  113.  
  114. register_native("get_player_quest_box", "native_get_player_quest_box", 1)
  115. register_native("set_player_quest_box", "native_set_player_quest_box", 1)
  116.  
  117. register_native("get_player_quest_star", "native_get_player_quest_star", 1)
  118. register_native("set_player_quest_star", "native_set_player_quest_star", 1)
  119.  
  120. register_native("get_player_quest_item", "native_get_player_quest_item", 1)
  121. register_native("set_player_quest_item", "native_set_player_quest_item", 1)
  122.  
  123. register_native("get_player_quest_eh", "native_get_player_quest_eh", 1)
  124. register_native("set_player_quest_eh", "native_set_player_quest_eh", 1)
  125.  
  126. register_native("get_player_quest_ez", "native_get_player_quest_ez", 1)
  127. register_native("set_player_quest_ez", "native_set_player_quest_ez", 1)
  128.  
  129. register_native("get_player_quest_ci", "native_get_player_quest_ci", 1)
  130. register_native("set_player_quest_ci", "native_set_player_quest_ci", 1)
  131. }
  132.  
  133. public native_get_player_quest_ci(id)
  134. {
  135. return g_PlayerQuest[id][11]
  136. }
  137.  
  138. public native_set_player_quest_ci(id, num)
  139. {
  140. return g_PlayerQuest[id][11] = num;
  141. }
  142.  
  143. public native_get_player_quest_eh(id)
  144. {
  145. return g_PlayerQuest[id][9];
  146. }
  147.  
  148. public native_set_player_quest_eh(id, num)
  149. {
  150. return g_PlayerQuest[id][9] = num;
  151. }
  152.  
  153. public native_get_player_quest_ez(id)
  154. {
  155. return g_PlayerQuest[id][10];
  156. }
  157.  
  158. public native_set_player_quest_ez(id, num)
  159. {
  160. g_PlayerQuest[id][10] = num;
  161. }
  162.  
  163. public native_get_player_quest_star(id)
  164. {
  165. return g_PlayerQuest[id][8];
  166. }
  167.  
  168. public native_set_player_quest_star(id, num)
  169. {
  170. g_PlayerQuest[id][8] = num;
  171. }
  172.  
  173. public native_get_quest_number(id)
  174. {
  175. return g_Quest[id];
  176. }
  177.  
  178. public native_box_giver(id)
  179. {
  180. return g_BoxGiver[id];
  181. }
  182.  
  183. public native_get_player_quest_box(id)
  184. {
  185. return g_PlayerQuest[id][6];
  186. }
  187.  
  188. public native_set_player_quest_box(id, num)
  189. {
  190. g_PlayerQuest[id][6] = num;
  191. }
  192.  
  193. public native_get_player_quest_item(id)
  194. {
  195. return g_PlayerQuest[id][7];
  196. }
  197.  
  198. public native_set_player_quest_item(id, num)
  199. {
  200. g_PlayerQuest[id][7] = num;
  201. }
  202.  
  203. public client_connect(id)
  204. {
  205. if(is_user_bot(id))
  206. return PLUGIN_HANDLED;
  207.  
  208. return PLUGIN_HANDLED;
  209. }
  210.  
  211. public plugin_cfg()
  212. {
  213. SQL_LoadDebug();
  214. }
  215.  
  216. public plugin_end()
  217. {
  218. if(MYSQL_Tuple)
  219. SQL_FreeHandle(MYSQL_Tuple)
  220.  
  221. if(MYSQL_Connect)
  222. SQL_FreeHandle(MYSQL_Connect)
  223. }
  224.  
  225. public client_putinserver(id)
  226. {
  227. LoadData(id)
  228.  
  229. set_task(1.0, "show_hudstatus", id+HUD_TASK,_ ,_ , "b");
  230. set_task(1.0, "check_status_quests", id+STATUS_TASK, _, _, "b");
  231. }
  232.  
  233. public client_disconnect(id)
  234. {
  235. if(!UserLoaded[id])
  236. return;
  237.  
  238. //new UserNick[32];
  239. formatex(g_szQuery, charsmax(g_szQuery), "UPDATE `%s` SET `Quests` = '%d', `QuestExecute` = '%d', `Box` = '%d', `BoxGiver` = '%d' WHERE `%s`.`SteamID` = '%s';", SQL_TABLENAME, g_Quest[id], g_PlayerQuest[id][g_Quest[id]], box_number(id), g_BoxGiver[id], SQL_TABLENAME, UserSteamID[id])
  240. SQL_ThreadQuery(MYSQL_Tuple, "SQL_Thread", g_szQuery)
  241.  
  242. remove_task(id);
  243. }
  244.  
  245.  
  246.  
  247. public SQL_LoadDebug()
  248. {
  249. new szError[512]
  250. new iErrorCode
  251.  
  252. MYSQL_Tuple = SQL_MakeDbTuple(SQL_HOST, SQL_USER, SQL_PASSWORD, SQL_DATABASE)
  253. MYSQL_Connect = SQL_Connect(MYSQL_Tuple, iErrorCode, szError, charsmax(szError))
  254.  
  255. if(MYSQL_Connect == Empty_Handle)
  256. set_fail_state(szError)
  257.  
  258. if(!SQL_TableExists(MYSQL_Connect, SQL_TABLENAME))
  259. {
  260. new Handle:hQueries
  261. new szQuery[512]
  262.  
  263. formatex( szQuery, charsmax(szQuery), "CREATE TABLE IF NOT EXISTS `%s` (SteamID VARCHAR(32) CHARACTER SET cp1250 COLLATE cp1250_general_ci NOT NULL, NickName VARCHAR(32) NOT NULL, Quests INT NOT NULL, QuestExecute INT NOT NULL, Box INT NOT NULL, BoxGiver INT NOT NULL, PRIMARY KEY (SteamID))", SQL_TABLENAME)
  264. hQueries = SQL_PrepareQuery(MYSQL_Connect, szQuery)
  265.  
  266. if(!SQL_Execute(hQueries))
  267. {
  268. SQL_QueryError(hQueries, szError, charsmax(szError))
  269. set_fail_state(szError)
  270. }
  271. SQL_FreeHandle(hQueries)
  272. }
  273. SQL_QueryAndIgnore(MYSQL_Connect, "SET NAMES utf8")
  274. }
  275.  
  276. public SQL_Query( iState, Handle: hQuery, szError[], iErrorCode, iParams[], iParamsSize)
  277. {
  278. switch(iState)
  279. {
  280. case TQUERY_CONNECT_FAILED: log_amx("Load - Could not connect to SQL database. [%d] %s", iErrorCode, szError)
  281. case TQUERY_QUERY_FAILED: log_amx("Load Query failed. [%d] %s", iErrorCode, szError)
  282. }
  283.  
  284. new id = iParams[0]
  285. new NickName[32];
  286. get_user_name(id, NickName, 31);
  287. UserLoaded[id] = true
  288.  
  289. if(SQL_NumResults(hQuery) < 1)
  290. {
  291. if(equal(UserSteamID[id], "ID_PENDING"))
  292. return PLUGIN_HANDLED
  293. formatex(g_szQuery, charsmax(g_szQuery), "REPLACE INTO `%s` (`SteamID`, `NickName`, `Quests`, `QuestExecute`, `Box`, `BoxGiver`) VALUES ('%s', '%s', '%d', '%d', '%d', '%d');", SQL_TABLENAME, UserSteamID[id], NickName, g_Quest[id], g_PlayerQuest[id][g_Quest[id]], box_number(id), g_BoxGiver[id])
  294. SQL_ThreadQuery(MYSQL_Tuple, "SQL_Thread", g_szQuery)
  295.  
  296. return PLUGIN_HANDLED;
  297. }
  298. else
  299. {
  300. g_Quest[id] = SQL_ReadResult(hQuery, 2)
  301. g_PlayerQuest[id][g_Quest[id]] = SQL_ReadResult(hQuery, 3)
  302. box_set_number(id, SQL_ReadResult(hQuery, 4))
  303. g_BoxGiver[id] = SQL_ReadResult(hQuery, 5)
  304. }
  305.  
  306. return PLUGIN_HANDLED;
  307. }
  308.  
  309. public LoadData(id)
  310. {
  311. if(!is_user_connected(id))
  312. return;
  313.  
  314. new iParams[1]
  315. iParams[0] = id
  316.  
  317. get_user_authid(id, UserSteamID[id], charsmax(UserSteamID[]))
  318.  
  319. formatex(g_szQuery, charsmax(g_szQuery), "SELECT * FROM `%s` WHERE (`%s`.`SteamID` = '%s')", SQL_TABLENAME, SQL_TABLENAME, UserSteamID[id])
  320. SQL_ThreadQuery(MYSQL_Tuple, "SQL_Query", g_szQuery, iParams, sizeof iParams)
  321. }
  322.  
  323. public SQL_Thread(iState, Handle: hQuery, szError[], iErrorCode, iParams[], iParamsSize)
  324. {
  325. if(iState == 0)
  326. return;
  327.  
  328. log_amx("SQL Error: %d (%s)", iErrorCode, szError)
  329. }
  330.  
  331. public check_status_quests(taskid)
  332. {
  333. switch(g_Quest[ID_STATUS])
  334. {
  335. case KillerCountOne:
  336. {
  337. if(g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] >= get_pcvar_num(q_Cvar[g_Quest[ID_STATUS]]))
  338. {
  339. g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] = 0;
  340. zp_set_user_ammo_packs(ID_STATUS, zp_get_user_ammo_packs(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]))
  341. zp_set_user_exp(ID_STATUS, zp_get_user_exp(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  342. Colorchat(ID_STATUS, "!g[ZP] !yYou completed the task %d, and got !g%d Ammo !yand !g%d EXP", g_Quest[ID_STATUS], get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]), get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  343. g_Quest[ID_STATUS]++;
  344. }
  345. }
  346. case DamageCountOne:
  347. {
  348. if(g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] >= 1)
  349. {
  350. g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] = 0;
  351. zp_set_user_ammo_packs(ID_STATUS, zp_get_user_ammo_packs(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]))
  352. zp_set_user_exp(ID_STATUS, zp_get_user_exp(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  353. Colorchat(ID_STATUS, "!g[ZP] !yYou completed the task %d, and got !g%d Ammo !yand !g%d EXP", g_Quest[ID_STATUS], get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]), get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  354. g_Quest[ID_STATUS]++;
  355. }
  356. }
  357. case KillerCountTwo:
  358. {
  359. if(g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] >= get_pcvar_num(q_Cvar[g_Quest[ID_STATUS]]))
  360. {
  361. g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] = 0;
  362. zp_set_user_ammo_packs(ID_STATUS, zp_get_user_ammo_packs(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]))
  363. zp_set_user_exp(ID_STATUS, zp_get_user_exp(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  364. Colorchat(ID_STATUS, "!g[ZP] !g[ZP] !yYou completed the task %d, and got !g%d Ammo !yand !g%d EXP", g_Quest[ID_STATUS], get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]), get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  365. g_Quest[ID_STATUS]++;
  366. }
  367. }
  368. case DamageCountTwo:
  369. {
  370. if(g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] >= 1)
  371. {
  372. g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] = 0;
  373. zp_set_user_ammo_packs(ID_STATUS, zp_get_user_ammo_packs(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]))
  374. zp_set_user_exp(ID_STATUS, zp_get_user_exp(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  375. Colorchat(ID_STATUS, "!g[ZP] !g[ZP] !yYou completed the task %d, and got !g%d Ammo !yand !g%d EXP", g_Quest[ID_STATUS], get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]), get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  376. g_Quest[ID_STATUS]++;
  377. }
  378. }
  379. case KillerCountThree:
  380. {
  381. if(g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] >= get_pcvar_num(q_Cvar[g_Quest[ID_STATUS]]))
  382. {
  383. g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] = 0;
  384. zp_set_user_ammo_packs(ID_STATUS, zp_get_user_ammo_packs(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]))
  385. zp_set_user_exp(ID_STATUS, zp_get_user_exp(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  386. Colorchat(ID_STATUS, "!g[ZP] !g[ZP] !yYou completed the task %d, and got !g%d Ammo !yand !g%d EXP", g_Quest[ID_STATUS], get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]), get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  387. g_Quest[ID_STATUS]++;
  388. }
  389. }
  390. case DamageCountThree:
  391. {
  392. if(g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] >= 1)
  393. {
  394. g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] = 0;
  395. zp_set_user_ammo_packs(ID_STATUS, zp_get_user_ammo_packs(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]))
  396. zp_set_user_exp(ID_STATUS, zp_get_user_exp(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  397. Colorchat(ID_STATUS, "!g[ZP] !g[ZP] !yYou completed the task %d, and got !g%d Ammo !yand !g%d EXP", g_Quest[ID_STATUS], get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]), get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  398. g_Quest[ID_STATUS]++;
  399. }
  400. }
  401. case CollectBox:
  402. {
  403. if(g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] >= get_pcvar_num(q_Cvar[g_Quest[ID_STATUS]]))
  404. {
  405. g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] = 0;
  406. zp_set_user_ammo_packs(ID_STATUS, zp_get_user_ammo_packs(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]))
  407. zp_set_user_exp(ID_STATUS, zp_get_user_exp(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  408. Colorchat(ID_STATUS, "!g[ZP] !g[ZP] !yYou completed the task %d, and got !g%d Ammo !yand !g%d EXP", g_Quest[ID_STATUS], get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]), get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  409. g_Quest[ID_STATUS]++;
  410. }
  411. }
  412. case CollectItem:
  413. {
  414. if(g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] >= get_pcvar_num(q_Cvar[g_Quest[ID_STATUS]]))
  415. {
  416. g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] = 0;
  417. zp_set_user_ammo_packs(ID_STATUS, zp_get_user_ammo_packs(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]))
  418. zp_set_user_exp(ID_STATUS, zp_get_user_exp(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  419. Colorchat(ID_STATUS, "!g[ZP] !g[ZP] !yYou completed the task %d, and got !g%d Ammo !yand !g%d EXP", g_Quest[ID_STATUS], get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]), get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  420. g_Quest[ID_STATUS]++;
  421. }
  422. }
  423. case CollectStar:
  424. {
  425. if(g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] >= get_pcvar_num(q_Cvar[g_Quest[ID_STATUS]]))
  426. {
  427. g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] = 0;
  428. zp_set_user_ammo_packs(ID_STATUS, zp_get_user_ammo_packs(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]))
  429. zp_set_user_exp(ID_STATUS, zp_get_user_exp(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  430. Colorchat(ID_STATUS, "!g[ZP] !g[ZP] !yYou completed the task %d, and got !g%d Ammo !yand !g%d EXP", g_Quest[ID_STATUS], get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]), get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  431. g_Quest[ID_STATUS]++;
  432. }
  433. }
  434. case BecomeHero:
  435. {
  436. if(g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] >= get_pcvar_num(q_Cvar[g_Quest[ID_STATUS]]))
  437. {
  438. g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] = 0;
  439. zp_set_user_ammo_packs(ID_STATUS, zp_get_user_ammo_packs(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]))
  440. zp_set_user_exp(ID_STATUS, zp_get_user_exp(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  441. Colorchat(ID_STATUS, "!g[ZP] !g[ZP] !yYou completed the task %d, and got !g%d Ammo !yand !g%d EXP", g_Quest[ID_STATUS], get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]), get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  442. g_Quest[ID_STATUS]++;
  443. }
  444. }
  445. case BecomeZombie:
  446. {
  447. if(g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] >= get_pcvar_num(q_Cvar[g_Quest[ID_STATUS]]))
  448. {
  449. g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] = 0;
  450. zp_set_user_ammo_packs(ID_STATUS, zp_get_user_ammo_packs(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]))
  451. zp_set_user_exp(ID_STATUS, zp_get_user_exp(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  452. Colorchat(ID_STATUS, "!g[ZP] !g[ZP] !yYou completed the task %d, and got !g%d Ammo !yand !g%d EXP", g_Quest[ID_STATUS], get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]), get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  453. g_Quest[ID_STATUS]++;
  454. }
  455. }
  456. case CraftItem:
  457. {
  458. if(g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] >= get_pcvar_num(q_Cvar[g_Quest[ID_STATUS]]))
  459. {
  460. g_PlayerQuest[ID_STATUS][g_Quest[ID_STATUS]] = 0;
  461. zp_set_user_ammo_packs(ID_STATUS, zp_get_user_ammo_packs(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]))
  462. zp_set_user_exp(ID_STATUS, zp_get_user_exp(ID_STATUS) + get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  463. Colorchat(ID_STATUS, "!g[ZP] !g[ZP] !yYou completed the task %d, and got !g%d Ammo !yand !g%d EXP", g_Quest[ID_STATUS], get_pcvar_num(q_Cvar_Reward[0][g_Quest[ID_STATUS]]), get_pcvar_num(q_Cvar_Reward[1][g_Quest[ID_STATUS]]))
  464. g_Quest[ID_STATUS]++;
  465. }
  466. }
  467. }
  468. }
  469.  
  470. public fw_PlayerKilled(iVictim, iAttacker, iShouldgib)
  471. {
  472. if(!is_user_connected(iVictim) || !is_user_connected(iAttacker))
  473. return HAM_IGNORED;
  474.  
  475. if(!zp_get_user_zombie(iAttacker) && zp_get_user_zombie(iVictim))
  476. {
  477. switch(g_Quest[iAttacker])
  478. {
  479. case KillerCountOne:
  480. {
  481. g_PlayerQuest[iAttacker][0]++;
  482. }
  483. case KillerCountTwo:
  484. {
  485. g_PlayerQuest[iAttacker][2]++;
  486. }
  487. case KillerCountThree:
  488. {
  489. g_PlayerQuest[iAttacker][4]++;
  490. }
  491. }
  492. }
  493.  
  494. return HAM_IGNORED;
  495. }
  496.  
  497. public fw_TakeDamage(iVictim, iInflictor, iAttacker, Float:Damage, DamageType)
  498. {
  499. if(iVictim == iAttacker || !is_user_connected(iAttacker))
  500. return HAM_IGNORED;
  501.  
  502. if(DamageType & 1<<24)
  503. return HAM_SUPERCEDE;
  504.  
  505. if(zp_get_user_zombie(iAttacker) == zp_get_user_zombie(iVictim))
  506. return HAM_SUPERCEDE;
  507.  
  508. g_PlayerDamage[iAttacker] += Damage
  509.  
  510. switch(g_Quest[iAttacker])
  511. {
  512. case DamageCountOne:
  513. {
  514. if(g_PlayerDamage[iAttacker] >= get_pcvar_float(q_Cvar[g_Quest[iAttacker]]))
  515. {
  516. g_PlayerQuest[iAttacker][1]++;
  517. g_PlayerDamage[iAttacker] = 0;
  518. }
  519. }
  520. case DamageCountTwo:
  521. {
  522. if(g_PlayerDamage[iAttacker] >= get_pcvar_float(q_Cvar[g_Quest[iAttacker]]))
  523. {
  524. g_PlayerQuest[iAttacker][3]++;
  525. g_PlayerDamage[iAttacker] = 0;
  526. }
  527. }
  528. case DamageCountThree:
  529. {
  530. if(g_PlayerDamage[iAttacker] >= get_pcvar_float(q_Cvar[g_Quest[iAttacker]]))
  531. {
  532. g_PlayerQuest[iAttacker][5]++;
  533. g_PlayerDamage[iAttacker] = 0;
  534. }
  535. }
  536. }
  537.  
  538. return HAM_IGNORED;
  539. }
  540.  
  541. public show_hudstatus(taskid)
  542. {
  543. if(is_user_alive(ID_TASK) && is_user_connected(ID_TASK))
  544. {
  545. if(g_Quest[ID_TASK] == 12)
  546. {
  547. Colorchat(ID_TASK, "!g[ZP] !yВы завершили линейку заданий и получаете 1 ящик!")
  548. box_set_number(ID_TASK, box_number(ID_TASK) + 1)
  549. g_BoxGiver[ID_TASK] = 1;
  550. g_Quest[ID_TASK] = 0;
  551. return PLUGIN_HANDLED;
  552. }
  553.  
  554. set_dhudmessage(0, 255, 0, 0.75, 0.16, 0, 6.0, 12.0);
  555.  
  556. switch(g_Quest[ID_TASK])
  557. {
  558. case KillerCountOne:
  559. show_dhudmessage(ID_TASK, "[Quest %d]^nKill %d Zombies^nProgress[%d/%d]", g_Quest[ID_TASK], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]), g_PlayerQuest[ID_TASK][g_Quest[ID_TASK]], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]))
  560. case DamageCountOne:
  561. show_dhudmessage(ID_TASK, "[Quest %d]^nDo %d Damage", g_Quest[ID_TASK], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]))
  562. case KillerCountTwo:
  563. show_dhudmessage(ID_TASK, "[Quest %d]^nKill %d Zombies^nProgress[%d/%d]", g_Quest[ID_TASK], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]), g_PlayerQuest[ID_TASK][g_Quest[ID_TASK]], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]))
  564. case DamageCountTwo:
  565. show_dhudmessage(ID_TASK, "[Quest %d]^nDo %d Damage", g_Quest[ID_TASK], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]))
  566. case KillerCountThree:
  567. show_dhudmessage(ID_TASK, "[Quest %d]^nKill %d Zombies^nProgress[%d/%d]", g_Quest[ID_TASK], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]), g_PlayerQuest[ID_TASK][g_Quest[ID_TASK]], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]))
  568. case DamageCountThree:
  569. show_dhudmessage(ID_TASK, "[Quest %d]^nDo %d Damage", g_Quest[ID_TASK], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]))
  570. case CollectBox:
  571. show_dhudmessage(ID_TASK, "[Quest %d]^nCollect %d Boxes^nProgress[%d/%d]", g_Quest[ID_TASK], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]), g_PlayerQuest[ID_TASK][g_Quest[ID_TASK]], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]))
  572. case CollectItem:
  573. show_dhudmessage(ID_TASK, "[Quest %d]^nGet %d Items^nProgress[%d/%d]", g_Quest[ID_TASK], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]), g_PlayerQuest[ID_TASK][g_Quest[ID_TASK]], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]))
  574. case CollectStar:
  575. show_dhudmessage(ID_TASK, "[Quest %d]^nCollect %d Stars^nProgress[%d/%d]", g_Quest[ID_TASK], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]), g_PlayerQuest[ID_TASK][g_Quest[ID_TASK]], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]))
  576. case BecomeHero:
  577. show_dhudmessage(ID_TASK, "[Quest %d]^nBecome %d once Hero^nProgress[%d/%d]", g_Quest[ID_TASK], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]), g_PlayerQuest[ID_TASK][g_Quest[ID_TASK]], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]))
  578. case BecomeZombie:
  579. show_dhudmessage(ID_TASK, "[Quest %d]^nBecome %d once Super Zombie^nProgress[%d/%d]", g_Quest[ID_TASK], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]), g_PlayerQuest[ID_TASK][g_Quest[ID_TASK]], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]))
  580. case CraftItem:
  581. show_dhudmessage(ID_TASK, "[Quest %d]^nCreate %d times items^nProgress[%d/%d]", g_Quest[ID_TASK], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]), g_PlayerQuest[ID_TASK][g_Quest[ID_TASK]], get_pcvar_num(q_Cvar[g_Quest[ID_TASK]]))
  582. }
  583. }
  584. return PLUGIN_HANDLED;
  585. }
  586.  
  587. stock Colorchat(const id, const input[], any:...)
  588. {
  589. new count = 1, players[32]
  590. static msg[191]
  591. vformat(msg, 190, input, 3)
  592. replace_all(msg, 190, "!g", "^4")
  593. replace_all(msg, 190, "!y", "^1")
  594. replace_all(msg, 190, "!t", "^3")
  595. if (id) players[0] = id; else get_players(players, count, "ch")
  596. {
  597. for(new i = 0; i < count; i++)
  598. {
  599. if(is_user_connected(players[i]))
  600. {
  601. message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
  602. write_byte(players[i])
  603. write_string(msg)
  604. message_end()
  605. }
  606. }
  607. }
  608. }
  609.  
  610. stock bool: SQL_TableExists(Handle: hDataBase, const szTable[])
  611. {
  612. new Handle: hQuery = SQL_PrepareQuery(hDataBase, "SELECT * FROM information_schema.tables WHERE table_name = '%s' LIMIT 1;", szTable)
  613. new szError[512]
  614.  
  615. if(!SQL_Execute(hQuery))
  616. {
  617. SQL_QueryError(hQuery, szError, charsmax(szError))
  618. set_fail_state(szError)
  619. }
  620. else if( !SQL_NumResults(hQuery))
  621. {
  622. SQL_FreeHandle(hQuery)
  623. return false;
  624. }
  625. SQL_FreeHandle(hQuery)
  626. return true;
  627. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement