hlmod.hu
https://hlmod.hu/

Mission MYSQL
https://hlmod.hu/viewtopic.php?f=10&t=7998
Oldal: 1 / 1

Szerző:  RaZzoR [2013.04.03. 20:30 ]
Hozzászólás témája:  Mission MYSQL

Vki át tudná írni, h mysql-re is mentse??

SMA Forráskód: [ Mindet kijelol ]
  1. /*
  2. Current Version: 0.7.0
  3.  
  4. - Description -
  5.  
  6. This plugin tries to simulate Counter-Strike: CZ singleplayer Career missions.
  7. Imagine, now you can complete them in both Counter-Strike 1.6 and Condition Zero multiplayer!
  8. You start at level 1. Every level missions get harder and harder.
  9. As you gain levels you unlock new types of missions. Your level and current mission is automatically
  10. saved and loaded on connect and disconnect. There is no max level where you have to stop and restart over.
  11. To simulate CZ for CS 1.6 i made tutor support, it looks awesome. This plugin supports players without
  12. tutor in CS 1.6 after the first connect. It'll show mission info in status text and chat messages.
  13.  
  14. - Missions -
  15.  
  16. There are five mission types for now:
  17.  
  18. * Kill players
  19. * Plant bombs
  20. * Defuse bombs
  21. * Rescue Hostages
  22. * Win rounds
  23.  
  24. There are several conditions for missions:
  25.  
  26. * Headshot - You must complete your mission killing players only in head. Only for Kill missions.
  27. * Weapon - You must kill your enemies with a specific weapon. Only for Kill missions.
  28. * In one round - You must do your mission in one round. Only for Kill and Hostage missions.
  29. Sometimes you'll need to do one round missions several times to complete the actual mission.
  30. * Survive - You must complete the mission and survive the round to fully complete the mission.
  31. For every mission except win and defuse.
  32. * Time - You must complete your mission in time. For all missions.
  33.  
  34. Conditions can be combined to make a different mission every time.
  35.  
  36. - Cvars -
  37.  
  38. amx_czsm_save_by < 1 / 2 > < 1 - IP | 2 - Steam ID. > < Def: 1 >
  39. amx_czsm_use_tutor < 1 / 0 > < Use CZ Tutor. Note that players connecting first time without
  40. Tutor in CS 1.6 wont see it until he restarts cs and connects to your server again. > < Def: 1 >
  41.  
  42. amx_czsm_min_kill_level < ## > < Min level for killing missions to become available to players.
  43. I strongly suggest you to leave this to one, or if you change it
  44. then change another missions type minimal level to 1. > < Def: 1 >
  45. amx_czsm_min_killweapon_level < ## > < Min level for killing with weapons to become available to players. > < Def: 5 >
  46. amx_czsm_min_plant_level < ## > < Min level for planting missions to become available to players. > < Def: 3 >
  47. amx_czsm_min_defuse_level < ## > < Min level for defusing missions to become available to players. > < Def: 3 >
  48. amx_czsm_min_win_level < ## > < Min level for winning missions to become available to players. > < Def: 7 >
  49. amx_czsm_min_hostage_level < ## > < Min level for hostage rescuing missions to become available to players. > < Def: 10 >
  50.  
  51. amx_czsm_min_hs_level < ## > < Min level for headshot missions to become available to players. > < Def: 5 >
  52. amx_czsm_min_round_level < ## > < Min level for round missions to become available to players. > < Def: 10 >
  53. amx_czsm_min_survive_level < ## > < Min level for survive missions to become available to players. > < Def: 15 >
  54. amx_czsm_min_time_level < ## > < Min level for time missions to become available to players. > < Def: 20 >
  55.  
  56. amx_czsm_roundtime_step < ## > < Time step for time missions. If timestep is 60 you can only get
  57. time missions with times like - 60, 120, 180, 240.. etc. > < Def: 60 >
  58.  
  59. amx_czsm_max_in_round < 0 / ## > < Max players you have to shoot in one round.
  60. Leave 0 to automatically set it to half of server maxplayer limit. \
  61. If you have 16 slots and it's set to 0, you can have max 8 kills in one round for missions,
  62. but if there less than 8 players on your opposing team, you cannot complete your mission. > < Def: 5 >
  63.  
  64. amx_czsm_autocorrect_missions < 0 / 1 > < If you join a cs_ map and your last mission was to defuse a bomb you'll
  65. be given a new mission if this is set to 1. > < Def: 0 >
  66.  
  67. - Super Health, Gravity and Speed upgrades for levels -
  68.  
  69. I'm afraid - none.
  70.  
  71. - Future Upgrades -
  72.  
  73. MySQL and VIP escape and ES_ mission types. Maybe some more conditions for missions. NO ML.
  74.  
  75. - ScreenShots -
  76.  
  77.  
  78. - Change Log -
  79.  
  80. 0.7.0
  81. * Initial Release
  82.  
  83. */
  84.  
  85. #include <amxmodx>
  86. #include <amxmisc>
  87. #include <fakemeta>
  88. #include <fun>
  89. #include <cstrike>
  90. #include <hamsandwich>
  91. #include <nvault>
  92.  
  93. #define VERSION "0.7.0"
  94.  
  95. //Maxplayers
  96. #define MAXPLAYERS 32 + 1
  97.  
  98. //Mission Types
  99. #define MISSIONS 6
  100.  
  101. //Weapons
  102. #define WEAPONS 30
  103.  
  104. //Sounds
  105. #define SOUNDS 3
  106.  
  107. //Param count
  108. #define MAXPARAMS 10
  109.  
  110. //Player tasks
  111. #define TASK_TUTOR 1111
  112. #define TASK_MISSION 2222
  113.  
  114. //Global Tasks
  115. #define TASK_CHECKTIME 999990
  116.  
  117. //Map Types
  118. #define MAP_DE (1<<1)
  119. #define MAP_CS (1<<2)
  120.  
  121. //Difficulty
  122. #define DIFFICULTY_VERYEASY 0.25
  123. #define DIFFICULTY_EASY 0.5
  124. #define DIFFICULTY_EASYNORMAL 0.75
  125. #define DIFFICULTY_NORMAL 1.0
  126. #define DIFFICULTY_HARDNORMAL 1.5
  127. #define DIFFICULTY_HARD 2.0
  128.  
  129. //Cs Teams
  130. enum
  131. {
  132. TEAM_UNASS,
  133. TEAM_T,
  134. TEAM_CT,
  135. TEAM_SPEC
  136. }
  137.  
  138. //Mission Types
  139. enum
  140. {
  141. KILL_NORMAL,
  142. KILL_WEAPON,
  143. PLANT,
  144. DEFUSE,
  145. WIN,
  146. HOSTAGE
  147. }
  148.  
  149. //Params
  150. enum
  151. {
  152. PARAM_PLAYER,
  153. PARAM_CONST,
  154. PARAM_WEAPON,
  155. PARAM_HS,
  156. PARAM_ROUND,
  157. PARAM_SURVIVE,
  158. PARAM_TIME,
  159. PARAM_TIMEAMT,
  160. PARAM_ROUNDTIMES,
  161. PARAM_ROUNDTIME_COUNT
  162. }
  163.  
  164. //Min & Max param
  165. enum
  166. {
  167. Float:PARAM_MIN,
  168. Float:PARAM_MAX
  169. }
  170.  
  171. //Tutor color
  172. enum
  173. {
  174. RED = 1,
  175. BLUE,
  176. YELLOW,
  177. GREEN
  178. }
  179.  
  180. //Mission status
  181. enum
  182. {
  183. STATUS_NORMAL,
  184. STATUS_FAILED
  185. }
  186.  
  187. //Sounds
  188. enum
  189. {
  190. SOUND_LVLUP,
  191. SOUND_OBJ,
  192. SOUND_FAILED
  193. }
  194.  
  195. //Mission description. Used to make missions TutorMsg/Chat Msg
  196. new const g_MissionDesc[MISSIONS][] = {
  197. "Ölj embereket",
  198. "Ölj embereket ezzel:",
  199. "Rakj le C4-et",
  200. "Hatástalaníts C4-et",
  201. "Nyerj köröket",
  202. "Ments túszokat"
  203. }
  204.  
  205. //Mission param Multipliers
  206. new const Float:g_MissionParams[MISSIONS][2] = {
  207. {DIFFICULTY_NORMAL , DIFFICULTY_HARD }, //Kill
  208. {DIFFICULTY_NORMAL , DIFFICULTY_NORMAL }, //Kill Weapon
  209. {DIFFICULTY_NORMAL , DIFFICULTY_HARDNORMAL }, //Plant
  210. {DIFFICULTY_NORMAL , DIFFICULTY_HARDNORMAL }, //Defuse
  211. {DIFFICULTY_VERYEASY , DIFFICULTY_EASYNORMAL }, //Win
  212. {DIFFICULTY_VERYEASY , DIFFICULTY_EASYNORMAL } //Hostage
  213. }
  214.  
  215. //Weapon names
  216. new g_WeaponNames[WEAPONS][] = {
  217. "weapon_p228",
  218. 0,
  219. "weapon_scout",
  220. "weapon_hegrenade",
  221. "weapon_xm1014",
  222. 0,
  223. "weapon_mac10",
  224. "weapon_aug",
  225. 0,
  226. "weapon_elite",
  227. "weapon_fiveseven",
  228. "weapon_ump45",
  229. "weapon_sg550",
  230. "weapon_galil",
  231. "weapon_famas",
  232. "weapon_usp",
  233. "weapon_glock18",
  234. "weapon_awp",
  235. "weapon_mp5navy",
  236. "weapon_m249",
  237. "weapon_m3",
  238. "weapon_m4a1",
  239. "weapon_tmp",
  240. "weapon_g3sg1",
  241. 0,
  242. "weapon_deagle",
  243. "weapon_sg552",
  244. "weapon_ak47",
  245. "weapon_knife",
  246. "weapon_p90"
  247. }
  248.  
  249. //Sounds
  250. new const g_Sounds[SOUNDS][] = {
  251. "r3load-zon3_sounds/levelup.wav",
  252. "plats/elevbell1.wav",
  253. "buttons/bell1.wav"
  254. }
  255.  
  256. //Resources needed to precache for Tutors.
  257. new const g_TutorPrecache[][] = {
  258. "gfx/career/icon_!.tga",
  259. "gfx/career/icon_!-bigger.tga",
  260. "gfx/career/icon_i.tga",
  261. "gfx/career/icon_i-bigger.tga",
  262. "gfx/career/icon_skulls.tga",
  263. "gfx/career/round_corner_ne.tga",
  264. "gfx/career/round_corner_nw.tga",
  265. "gfx/career/round_corner_se.tga",
  266. "gfx/career/round_corner_sw.tga",
  267. "resource/TutorScheme.res",
  268. "resource/UI/TutorTextWindow.res"
  269. }
  270.  
  271. //Map parameters(MAP_DE,MAP_CS).
  272. new g_MapParams
  273.  
  274. //Holds Hostage_Entity count(max hostages).
  275. new g_MapParamsCount
  276.  
  277. //Hostages alive in game.
  278. new g_GameHostages
  279.  
  280. //Handler entity ID.
  281. new g_HandlerEnt
  282.  
  283. //Has anyone got a time mission?
  284. new bool:g_TimerOn
  285.  
  286. //Server maxplayers
  287. new g_MaxPlayers
  288.  
  289. //Roundtime in seconds. Used in time missions.
  290. new g_RoundTimerStart
  291.  
  292. //Roundtime left(in seconds). Used in time missions.
  293. new g_RoundTimer
  294.  
  295. //RoundTime Amount Checked every round. Used for Time missions.
  296. new g_MaxRoundTimeAmt
  297.  
  298. //There variables hold the message id's.
  299. new g_MsgSay,g_MsgTutor,g_MsgTutorClose
  300. new g_MsgStatusText,g_MsgStatusValue
  301.  
  302. //Vault ID
  303. new g_Vault
  304.  
  305. //Player level
  306. new g_PlayerLevel[MAXPLAYERS]
  307.  
  308. //Player mission type(ex. Kill, plant bomb, defuse bomb e.c)
  309. new g_PlayerMissionType[MAXPLAYERS]
  310.  
  311. //Mission Time status
  312. new g_PlayerMissionTimeStatus[MAXPLAYERS]
  313.  
  314. //Can player complete his mission in the current round(for kills in round u.c?
  315. new g_PlayerMissionStatus[MAXPLAYERS]
  316.  
  317. //Specific Mission params(like Hs/Survive round,Kill e.c).
  318. new g_PlayerMissionParams[MAXPLAYERS][MAXPARAMS]
  319.  
  320. //Buttons player was holding last cmdstart frame.
  321. new g_PlayerOldButtons[MAXPLAYERS]
  322.  
  323. //Player Holding IN_SCORE(TAB) button.
  324. new g_PlayerInScore[MAXPLAYERS]
  325.  
  326. //Can show mission objectives through StatusText.
  327. new bool:g_PlayerCanShow[MAXPLAYERS]
  328.  
  329. //Is an info message currently displayed to player?
  330. new bool:g_PlayerInfoMsg[MAXPLAYERS]
  331.  
  332. //Tutur On for player | Player has tutor available.
  333. new bool:g_PlayerHasTutor[MAXPLAYERS],bool:g_PlayerHasTutor2[MAXPLAYERS]
  334.  
  335. //Is true if player just connected and hasn't spawned.
  336. new bool:g_PlayerJustConnected[MAXPLAYERS]
  337.  
  338. //Cvars
  339. new /*c_save_type,*/c_save_by,c_use_tutor
  340.  
  341. new c_roundtime_step
  342.  
  343. new c_min_level[MISSIONS]
  344.  
  345. new c_min_hs_level,c_min_round_level,c_min_survive_level,c_min_time_level
  346.  
  347. new c_max_in_round
  348.  
  349. new c_autocorrect_missions
  350.  
  351. //Cvar Pointers
  352. new cp_roundtime,cp_freezetime
  353.  
  354. public plugin_init() {
  355.  
  356. register_plugin("Advanced Condition Zero Style Career Missions",VERSION,"shine")
  357.  
  358. register_cvar("czscm",VERSION,FCVAR_SERVER|FCVAR_SPONLY)
  359.  
  360. //Debug
  361. register_clcmd("say /resetstats","CmdReset")
  362.  
  363. //Cvars
  364. //In future releases
  365. //c_save_type = register_cvar("amx_czsm_save_type","1") //1 - nVault, 2 - MySQL
  366. c_save_by = register_cvar("amx_czsm_save_by","1") //1 - Ip, 2 - SteamID
  367. c_use_tutor = register_cvar("amx_czsm_use_tutor","1")
  368.  
  369. c_roundtime_step = register_cvar("amx_czsm_roundtime_step","60") //Sec
  370.  
  371. c_min_level[KILL_NORMAL] = register_cvar("amx_czsm_min_kill_level","1")
  372. c_min_level[KILL_WEAPON] = register_cvar("amx_czsm_min_killweapon_level","5")
  373. c_min_level[PLANT] = register_cvar("amx_czsm_min_plant_level","3")
  374. c_min_level[DEFUSE] = register_cvar("amx_czsm_min_defuse_level","3")
  375. c_min_level[WIN] = register_cvar("amx_czsm_min_win_level","7")
  376. c_min_level[HOSTAGE] = register_cvar("amx_czsm_min_hostage_level","10")
  377.  
  378. c_min_hs_level = register_cvar("amx_czsm_min_hs_level","5")
  379. c_min_round_level = register_cvar("amx_czsm_min_round_level","10")
  380. c_min_survive_level = register_cvar("amx_czsm_min_survive_level","15")
  381. c_min_time_level = register_cvar("amx_czsm_min_time_level","20")
  382.  
  383. c_max_in_round = register_cvar("amx_czsm_max_in_round","5") //0 - maxplayers / 2
  384.  
  385. c_autocorrect_missions = register_cvar("amx_czsm_autocorrect_missions","1")
  386.  
  387. //Cvar Pointers
  388. cp_roundtime = get_cvar_pointer("mp_roundtime")
  389. cp_freezetime = get_cvar_pointer("mp_freezetime")
  390.  
  391. //Events
  392. register_event("DeathMsg","PlayerDeath","a")
  393. register_event("HLTV","RoundStart","a","1=0","2=0")
  394. register_event("TextMsg","HostageAliveCheck","b","1=4","2=#Killed_Hostage")
  395.  
  396. register_logevent("RoundEnd",2,"1=Round_End")
  397. register_logevent("PlayerRescueHostage",3,"1=triggered","2=Rescued_A_Hostage")
  398.  
  399. register_logevent("PlayerPlantedBomb",3,"2=Planted_The_Bomb")
  400. register_logevent("PlayerDefusedBomb",3,"2=Defused_The_Bomb")
  401.  
  402. //Audio Events
  403. register_event("SendAudio","TerroristsWin","a","2=%!MRAD_terwin")
  404. register_event("SendAudio","CTWin","a","2=%!MRAD_ctwin")
  405.  
  406. //Fakemeta Forwards
  407. register_forward(FM_CmdStart,"PlayerCmdStart")
  408.  
  409. //Ham Forwards
  410. RegisterHam(Ham_Spawn,"player","PlayerSpawn",1)
  411. RegisterHam(Ham_Think,"info_target","HandlerThink")
  412.  
  413. //Messages
  414. g_MsgSay = get_user_msgid("SayText")
  415. g_MsgTutor = get_user_msgid("TutorText")
  416. g_MsgTutorClose = get_user_msgid("TutorClose")
  417.  
  418. g_MsgStatusText = get_user_msgid("StatusText")
  419. g_MsgStatusValue = get_user_msgid("StatusValue")
  420.  
  421. //Hook Messages
  422. register_message(g_MsgStatusText,"BlockMessage")
  423. register_message(g_MsgStatusValue,"BlockMessage")
  424.  
  425. //Open nVault
  426. g_Vault = nvault_open("czstyle_missions")
  427.  
  428. //Get maxplayers
  429. g_MaxPlayers = get_maxplayers()
  430.  
  431. //Make the time mission handler
  432. MakeHandler()
  433.  
  434. //Check Map Params
  435. CheckMap()
  436.  
  437. //Start Configs
  438. StartCfg()
  439. }
  440.  
  441. public MakeHandler() {
  442.  
  443. g_HandlerEnt = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_target"))
  444.  
  445. set_pev(g_HandlerEnt,pev_classname,"CZSMHandler")
  446.  
  447. set_pev(g_HandlerEnt,pev_nextthink,get_gametime() + 1.0)
  448. }
  449.  
  450. public CheckMap() {
  451.  
  452. new tVar = -1
  453.  
  454. if
  455. (
  456. engfunc(EngFunc_FindEntityByString,-1,"classname","info_bomb_target")
  457. ||
  458. engfunc(EngFunc_FindEntityByString,-1,"classname","func_bomb_target")
  459. ) {
  460. g_MapParams |= MAP_DE
  461. }
  462.  
  463. while((tVar = engfunc(EngFunc_FindEntityByString,tVar,"classname","hostage_entity")) != 0) {
  464.  
  465. if(!g_MapParamsCount) g_MapParams |= MAP_CS
  466.  
  467. g_MapParamsCount++
  468. }
  469. }
  470.  
  471. public StartCfg() {
  472.  
  473. g_RoundTimerStart = floatround(get_pcvar_float(cp_roundtime) * 60.0)
  474. g_RoundTimer = g_RoundTimerStart
  475.  
  476. g_GameHostages = g_MapParamsCount
  477.  
  478. g_MaxRoundTimeAmt = floatround(get_pcvar_float(cp_roundtime) * 60) / get_pcvar_num(c_roundtime_step)
  479. }
  480.  
  481. //Debug
  482. public CmdReset(id) {
  483.  
  484. new i
  485.  
  486. g_PlayerLevel[id] = 0
  487.  
  488. g_PlayerMissionType[id] = 0
  489.  
  490. for(i = 0; i < 4; i++) g_PlayerMissionParams[id][i] = 0
  491.  
  492. SaveMission(id)
  493. }
  494.  
  495. public plugin_precache() {
  496.  
  497. new i
  498.  
  499. for(i = 0; i < sizeof g_TutorPrecache; i++) precache_generic(g_TutorPrecache[i])
  500.  
  501. for(i = 0; i < sizeof g_Sounds; i++) precache_sound(g_Sounds[i])
  502. }
  503.  
  504. public client_putinserver(id) {
  505.  
  506. if(!is_user_bot(id)) {
  507.  
  508. g_PlayerJustConnected[id] = true
  509.  
  510. if(!get_pcvar_num(c_use_tutor)) g_PlayerHasTutor[id] = false
  511.  
  512. set_task(0.3,"CheckPlayerInfo",id)
  513.  
  514. LoadMission(id)
  515. }
  516. }
  517.  
  518. public client_disconnect(id) {
  519.  
  520. if(!is_user_bot(id)) {
  521.  
  522. new i
  523.  
  524. if(g_PlayerMissionParams[id][PARAM_ROUND]) {
  525.  
  526. g_PlayerMissionParams[id][PARAM_PLAYER] = 0
  527. }
  528.  
  529. SaveMission(id)
  530.  
  531. g_PlayerLevel[id] = 0
  532.  
  533. g_PlayerMissionType[id] = 0
  534.  
  535. g_PlayerMissionStatus[id] = STATUS_NORMAL
  536.  
  537. g_PlayerMissionTimeStatus[id] = STATUS_NORMAL
  538.  
  539. g_PlayerInfoMsg[id] = false
  540.  
  541. g_PlayerInScore[id] = false
  542.  
  543. g_PlayerCanShow[id] = true
  544.  
  545. for(i = 0; i < MAXPARAMS; i++) g_PlayerMissionParams[id][i] = 0
  546.  
  547. remove_task(id + TASK_TUTOR)
  548. remove_task(id + TASK_MISSION)
  549. }
  550.  
  551. CheckStatus()
  552. }
  553.  
  554. public CheckPlayerInfo(id) {
  555.  
  556. new Info[33]
  557. get_user_info(id,"cl_tutor",Info,32)
  558.  
  559. if(Info[0] != '1') {
  560.  
  561. client_cmd(id,"setinfo cl_tutor 1")
  562.  
  563. g_PlayerHasTutor2[id] = false
  564. }
  565. else {
  566.  
  567. g_PlayerHasTutor2[id] = true
  568. }
  569.  
  570. if(get_pcvar_num(c_use_tutor) && g_PlayerHasTutor2[id]) {
  571.  
  572. g_PlayerHasTutor[id] = true
  573. }
  574. else {
  575.  
  576. g_PlayerHasTutor[id] = false
  577. }
  578. }
  579.  
  580. public PlayerDeath() {
  581.  
  582. new Killer = read_data(1)
  583. new Victim = read_data(2)
  584.  
  585. RemoveTutor(Victim + TASK_TUTOR)
  586.  
  587. if(g_PlayerMissionParams[Killer][PARAM_ROUND]) CheckPlayerMission(Killer,1)
  588.  
  589. if(g_PlayerMissionTimeStatus[Killer] == STATUS_FAILED) return PLUGIN_CONTINUE
  590.  
  591. if
  592. (
  593. Killer != Victim
  594. &&
  595. get_user_team(Killer) != get_user_team(Victim)
  596. &&
  597. (
  598. g_PlayerMissionType[Killer] == KILL_NORMAL
  599. ||
  600. g_PlayerMissionType[Killer] == KILL_WEAPON
  601. )
  602. &&
  603. !is_user_bot(Killer)
  604. &&
  605. is_user_alive(Killer)
  606. ) {
  607.  
  608. if(g_PlayerMissionType[Killer] == KILL_NORMAL) {
  609.  
  610. new HeadShot = read_data(3)
  611.  
  612. if(g_PlayerMissionParams[Killer][PARAM_HS] && HeadShot || !g_PlayerMissionParams[Killer][PARAM_HS]) {
  613.  
  614. g_PlayerMissionParams[Killer][PARAM_PLAYER]++
  615.  
  616. client_cmd(Killer,"spk ^"%s^"",g_Sounds[SOUND_OBJ])
  617.  
  618. if(!g_PlayerMissionParams[Killer][PARAM_SURVIVE]) {
  619.  
  620. CheckPlayerMission(Killer,1)
  621. }
  622. else {
  623.  
  624. CheckPlayerMission(Killer,0)
  625. }
  626. }
  627. }
  628.  
  629. else if(g_PlayerMissionType[Killer] == KILL_WEAPON) {
  630.  
  631. new Weapon[16],wWeapon[16],HeadShot
  632.  
  633. read_data(4,Weapon,15)
  634.  
  635. HeadShot = read_data(3)
  636.  
  637. if(equal(Weapon,"grenade")) {
  638.  
  639. formatex(wWeapon,15,"%s",g_WeaponNames[g_PlayerMissionParams[Killer][PARAM_WEAPON]][9])
  640. }
  641. else {
  642.  
  643. formatex(wWeapon,15,"%s",g_WeaponNames[g_PlayerMissionParams[Killer][PARAM_WEAPON]][7])
  644. }
  645.  
  646. if(equal(Weapon,wWeapon)) {
  647.  
  648. if(g_PlayerMissionParams[Killer][PARAM_HS] && HeadShot || !g_PlayerMissionParams[Killer][PARAM_HS]) {
  649.  
  650. g_PlayerMissionParams[Killer][PARAM_PLAYER]++
  651.  
  652. client_cmd(Killer,"spk ^"%s^"",g_Sounds[SOUND_OBJ])
  653.  
  654. if(!g_PlayerMissionParams[Killer][PARAM_SURVIVE]) {
  655.  
  656. CheckPlayerMission(Killer,1)
  657. }
  658. else {
  659.  
  660. CheckPlayerMission(Killer,0)
  661. }
  662. }
  663. }
  664. }
  665. }
  666.  
  667. CheckStatus()
  668.  
  669. return PLUGIN_CONTINUE
  670. }
  671.  
  672. public RoundEnd() {
  673.  
  674. new i,TutorOn = get_pcvar_num(c_use_tutor)
  675.  
  676. for(i = 0; i < MAXPLAYERS; i++) {
  677.  
  678. if(is_user_connected(i)) {
  679.  
  680. if(TutorOn && g_PlayerHasTutor2[i]) g_PlayerHasTutor[i] = true
  681. else g_PlayerHasTutor[i] = false
  682.  
  683. if(g_PlayerMissionParams[i][PARAM_SURVIVE] && is_user_alive(i)) CheckPlayerMission(i,1)
  684.  
  685. if(g_PlayerMissionParams[i][PARAM_ROUND] || g_PlayerMissionParams[i][PARAM_SURVIVE]) {
  686.  
  687. g_PlayerMissionParams[i][PARAM_PLAYER] = 0
  688. }
  689.  
  690. g_PlayerMissionStatus[i] = STATUS_NORMAL
  691.  
  692. g_PlayerMissionTimeStatus[i] = STATUS_NORMAL
  693. }
  694. }
  695. }
  696.  
  697. public PlayerRescueHostage() {
  698.  
  699. new LogArgs[128],Name[33],i
  700.  
  701. read_logargv(0,LogArgs,127)
  702.  
  703. parse_loguser(LogArgs,Name,32)
  704.  
  705. new id = get_user_index(Name)
  706.  
  707. if(g_PlayerMissionType[id] == HOSTAGE && !is_user_bot(id) && g_PlayerMissionTimeStatus[id] == STATUS_NORMAL) {
  708.  
  709. g_PlayerMissionParams[id][PARAM_PLAYER]++
  710.  
  711. client_cmd(id,"spk ^"%s^"",g_Sounds[SOUND_OBJ])
  712.  
  713. if(!g_PlayerMissionParams[id][PARAM_SURVIVE]) {
  714.  
  715. CheckPlayerMission(id,1)
  716. }
  717. else {
  718.  
  719. CheckPlayerMission(id,0)
  720. }
  721. }
  722.  
  723. g_GameHostages--
  724.  
  725. for(i = 0; i < MAXPLAYERS; i++) {
  726.  
  727. if(
  728. is_user_alive(i) &&
  729. !is_user_bot(i) &&
  730. g_PlayerMissionType[i] == HOSTAGE &&
  731. i != id &&
  732. g_GameHostages > g_PlayerMissionParams[i][PARAM_PLAYER] &&
  733. g_PlayerMissionParams[i][PARAM_ROUND]
  734. ) {
  735.  
  736. if(g_PlayerMissionTimeStatus[i] == STATUS_NORMAL) client_cmd(i,"spk ^"%s^"",g_Sounds[SOUND_FAILED])
  737.  
  738. g_PlayerMissionStatus[i] = STATUS_FAILED
  739.  
  740. CheckPlayerMission(i,0)
  741. }
  742. }
  743. }
  744.  
  745. public RoundStart() {
  746.  
  747. g_TimerOn = false
  748.  
  749. remove_task(TASK_CHECKTIME)
  750.  
  751. set_task(get_pcvar_float(cp_freezetime),"CheckTimer",TASK_CHECKTIME)
  752. }
  753.  
  754. public HostageAliveCheck() {
  755.  
  756. new i
  757.  
  758. g_GameHostages--
  759.  
  760. for(i = 0; i < MAXPLAYERS; i++) {
  761.  
  762. if(is_user_alive(i) && !is_user_bot(i) && g_PlayerMissionType[i] == HOSTAGE && g_GameHostages > g_PlayerMissionParams[i][PARAM_PLAYER] && g_PlayerMissionParams[i][PARAM_ROUND]) {
  763.  
  764. if(g_PlayerMissionTimeStatus[i] == STATUS_NORMAL) client_cmd(i,"spk ^"%s^"",g_Sounds[SOUND_FAILED])
  765.  
  766. g_PlayerMissionStatus[i] = STATUS_FAILED
  767.  
  768. CheckPlayerMission(i,0)
  769. }
  770. }
  771. }
  772.  
  773. public CheckTimer() {
  774.  
  775. new bool:AnyoneHasTimer,i
  776.  
  777. for(i = 0; i < MAXPLAYERS; i++) {
  778.  
  779. if(is_user_alive(i) && g_PlayerMissionParams[i][PARAM_TIME]) {
  780.  
  781. AnyoneHasTimer = true
  782.  
  783. break
  784. }
  785. }
  786.  
  787. if(AnyoneHasTimer) {
  788.  
  789. g_RoundTimerStart = floatround(get_pcvar_float(cp_roundtime) * 60.0)
  790. g_RoundTimer = g_RoundTimerStart
  791.  
  792. g_TimerOn = true
  793. }
  794. else {
  795.  
  796. g_TimerOn = false
  797. }
  798. }
  799.  
  800.  
  801. public PlayerPlantedBomb() {
  802.  
  803. new LogArgs[128],Name[33],i
  804.  
  805. read_logargv(0,LogArgs,127)
  806.  
  807. parse_loguser(LogArgs,Name,32)
  808.  
  809. new id = get_user_index(Name)
  810.  
  811. if(g_PlayerMissionType[id] == PLANT && !is_user_bot(id) && g_PlayerMissionTimeStatus[id] == STATUS_NORMAL) {
  812.  
  813. g_PlayerMissionParams[id][PARAM_PLAYER]++
  814.  
  815. client_cmd(id,"spk ^"%s^"",g_Sounds[SOUND_OBJ])
  816.  
  817. if(!g_PlayerMissionParams[id][PARAM_SURVIVE]) {
  818.  
  819. CheckPlayerMission(id,1)
  820. }
  821. else {
  822.  
  823. CheckPlayerMission(id,0)
  824. }
  825. }
  826.  
  827. for(i = 0; i < MAXPLAYERS; i++) {
  828.  
  829. if(is_user_alive(i) && !is_user_bot(i) && g_PlayerMissionType[i] == PLANT && i != id) {
  830.  
  831. if(g_PlayerMissionTimeStatus[i] == STATUS_NORMAL) client_cmd(i,"spk ^"%s^"",g_Sounds[SOUND_FAILED])
  832.  
  833. g_PlayerMissionStatus[i] = STATUS_FAILED
  834.  
  835. CheckPlayerMission(i,0)
  836. }
  837. }
  838. }
  839.  
  840. public PlayerDefusedBomb() {
  841.  
  842. new LogArgs[128],Name[33],i
  843.  
  844. read_logargv(0,LogArgs,127)
  845.  
  846. parse_loguser(LogArgs,Name,32)
  847.  
  848. new id = get_user_index(Name)
  849.  
  850. if(g_PlayerMissionType[id] == DEFUSE && !is_user_bot(id) && g_PlayerMissionTimeStatus[id] == STATUS_NORMAL) {
  851.  
  852. g_PlayerMissionParams[id][PARAM_PLAYER]++
  853.  
  854. client_cmd(id,"spk ^"%s^"",g_Sounds[SOUND_OBJ])
  855.  
  856. if(!g_PlayerMissionParams[id][PARAM_SURVIVE]) {
  857.  
  858. CheckPlayerMission(id,1)
  859. }
  860. else {
  861.  
  862. CheckPlayerMission(id,0)
  863. }
  864. }
  865.  
  866. for(i = 0; i < MAXPLAYERS; i++) {
  867.  
  868. if(is_user_alive(i) && !is_user_bot(i) && g_PlayerMissionType[i] == DEFUSE && i != id) {
  869.  
  870. if(g_PlayerMissionTimeStatus[i] == STATUS_NORMAL) client_cmd(i,"spk ^"%s^"",g_Sounds[SOUND_FAILED])
  871.  
  872. g_PlayerMissionStatus[i] = STATUS_FAILED
  873.  
  874. CheckPlayerMission(i,0)
  875. }
  876. }
  877. }
  878.  
  879. public TerroristsWin() {
  880.  
  881. new i
  882.  
  883. for(i = 0; i < MAXPLAYERS; i++) {
  884.  
  885. if(is_user_alive(i) && get_user_team(i) == TEAM_T && !is_user_bot(i) && g_PlayerMissionType[i] == WIN && g_PlayerMissionTimeStatus[i] == STATUS_NORMAL) {
  886.  
  887. g_PlayerMissionParams[i][PARAM_PLAYER]++
  888.  
  889. client_cmd(i,"spk ^"%s^"",g_Sounds[SOUND_OBJ])
  890.  
  891. CheckPlayerMission(i,1)
  892. }
  893. }
  894. }
  895.  
  896. public CTWin() {
  897.  
  898. new i
  899.  
  900. for(i = 0; i < MAXPLAYERS; i++) {
  901.  
  902. if(is_user_alive(i) && get_user_team(i) == TEAM_CT && !is_user_bot(i) && g_PlayerMissionType[i] == WIN && g_PlayerMissionTimeStatus[i] == STATUS_NORMAL) {
  903.  
  904. g_PlayerMissionParams[i][PARAM_PLAYER]++
  905.  
  906. client_cmd(i,"spk ^"%s^"",g_Sounds[SOUND_OBJ])
  907.  
  908. CheckPlayerMission(i,1)
  909. }
  910. }
  911. }
  912.  
  913. public PlayerCmdStart(id,Uc_Handle,Seed) {
  914.  
  915. static Buttons
  916.  
  917. Buttons = get_uc(Uc_Handle,UC_Buttons)
  918.  
  919. if(Buttons & IN_SCORE && !(g_PlayerOldButtons[id] & IN_SCORE)) {
  920.  
  921. g_PlayerInScore[id] = true
  922.  
  923. if(!g_PlayerInfoMsg[id]) {
  924.  
  925. CheckPlayerMission(id,0)
  926. }
  927. }
  928. else if(!(Buttons & IN_SCORE) && g_PlayerOldButtons[id] & IN_SCORE) {
  929.  
  930. g_PlayerInScore[id] = false
  931.  
  932. if(!g_PlayerInfoMsg[id]) {
  933.  
  934. if(g_PlayerHasTutor[id]) {
  935.  
  936. RemoveTutor(id + TASK_TUTOR)
  937. }
  938. else {
  939.  
  940. HideStatusText(id)
  941. }
  942. }
  943. }
  944.  
  945. g_PlayerOldButtons[id] = Buttons
  946.  
  947. return FMRES_IGNORED
  948. }
  949.  
  950. public PlayerSpawn(id) {
  951.  
  952. if(!is_user_alive(id) || is_user_bot(id)) return HAM_IGNORED
  953.  
  954. CheckStatus()
  955.  
  956. //RemoveTutor(id +TASK_TUTOR)
  957.  
  958. if(g_PlayerJustConnected[id]) {
  959.  
  960. g_PlayerJustConnected[id] = false
  961.  
  962. new Text[192],Level[4]
  963.  
  964. formatex(Level,3,"%d",g_PlayerLevel[id])
  965.  
  966. if(g_PlayerHasTutor[id]) {
  967.  
  968. formatex(Text,191,"Üdv a karrier módban!^n^n%s%s.",g_PlayerLevel[id] == 0 ?
  969. "Üdv újonc! Első alkalommal játszol itt?^nNe aggódj, ezek az üzenetek végigvezetnek a karriered során!" :
  970. "Üdv újra! Ezen a szinten vagy: ",
  971. g_PlayerLevel[id] == 0 ? "" : Level
  972.  
  973. )
  974.  
  975. g_PlayerInfoMsg[id] = true
  976.  
  977. MakeTutor(id,Text,YELLOW,10.0)
  978. }
  979. else {
  980.  
  981. formatex(Text,191,"^x04[AMXX]^x01 Welcome to CZ Style Missions Mod!")
  982.  
  983. ColorPrint(id,Text)
  984.  
  985. formatex(Text,191,"^x04[AMXX]^x01 %s%s.",g_PlayerLevel[id] == 0 ?
  986. "Hello there Newb. Is this the first time you play here?^nDon't worry! Just complete missions displayed in chat to level up" :
  987. "Welcome back! You're on level ",
  988. g_PlayerLevel[id] == 0 ? "" : Level
  989. )
  990.  
  991. g_PlayerInfoMsg[id] = false
  992.  
  993. ColorPrint(id,Text)
  994. }
  995.  
  996. if(!g_PlayerLevel[id]) {
  997.  
  998. g_PlayerLevel[id] = 1
  999.  
  1000. MakeMission(id,g_PlayerLevel[id],0)
  1001. }
  1002. else {
  1003.  
  1004. if
  1005. (
  1006. (
  1007. (
  1008. (
  1009. g_PlayerMissionType[id] == PLANT || g_PlayerMissionType[id] == DEFUSE
  1010. )
  1011. &&
  1012. !(g_MapParams & MAP_DE)
  1013. )
  1014. ||
  1015. (
  1016. g_PlayerMissionType[id] == HOSTAGE
  1017. &&
  1018. !(g_MapParams & MAP_CS)
  1019. )
  1020. )
  1021. &&
  1022. get_pcvar_num(c_autocorrect_missions)
  1023. ) {
  1024.  
  1025. MakeMission(id,g_PlayerLevel[id])
  1026. }
  1027.  
  1028. if(g_PlayerMissionType[id] == HOSTAGE && g_PlayerMissionParams[id][PARAM_ROUND] && g_PlayerMissionParams[id][PARAM_CONST] > g_MapParamsCount && get_pcvar_num(c_autocorrect_missions)) {
  1029.  
  1030. g_PlayerMissionParams[id][PARAM_CONST] = g_MapParamsCount
  1031. }
  1032.  
  1033. if(g_PlayerMissionParams[id][PARAM_TIMEAMT] > g_MaxRoundTimeAmt) g_PlayerMissionParams[id][PARAM_TIMEAMT] = g_MaxRoundTimeAmt
  1034. }
  1035.  
  1036. set_task(10.1,"CheckPlayerMissionT",id + TASK_MISSION)
  1037.  
  1038. return HAM_IGNORED
  1039. }
  1040.  
  1041. if(g_PlayerMissionParams[id][PARAM_TIMEAMT] > g_MaxRoundTimeAmt) g_PlayerMissionParams[id][PARAM_TIMEAMT] = g_MaxRoundTimeAmt
  1042.  
  1043. g_PlayerInScore[id] = false
  1044.  
  1045. //remove_task(id + TASK_TUTOR)
  1046.  
  1047. if(!task_exists(id + TASK_MISSION)) CheckPlayerMission(id,0)
  1048.  
  1049. return HAM_IGNORED
  1050. }
  1051.  
  1052. public HandlerThink(Ent) {
  1053.  
  1054. if(Ent == g_HandlerEnt) {
  1055.  
  1056. if(g_TimerOn && g_RoundTimer) {
  1057.  
  1058. g_RoundTimer--
  1059.  
  1060. static i,TimePassed,PlayerTimeLeft
  1061.  
  1062. TimePassed = g_RoundTimerStart - g_RoundTimer
  1063.  
  1064. for(i = 0; i < MAXPLAYERS; i++) {
  1065.  
  1066. if
  1067. (
  1068. is_user_alive(i)
  1069. &&
  1070. !is_user_bot(i)
  1071. &&
  1072. g_PlayerMissionParams[i][PARAM_TIME]
  1073. &&
  1074. g_PlayerMissionTimeStatus[i] == STATUS_NORMAL
  1075. ) {
  1076.  
  1077. PlayerTimeLeft = (g_PlayerMissionParams[i][PARAM_TIMEAMT] * 60) - TimePassed
  1078.  
  1079. if(PlayerTimeLeft <= 0) {
  1080.  
  1081. if(g_PlayerMissionParams[i][PARAM_PLAYER] < g_PlayerMissionParams[i][PARAM_CONST]) {
  1082.  
  1083. g_PlayerMissionTimeStatus[i] = STATUS_FAILED
  1084.  
  1085. CheckPlayerMission(i,0)
  1086. }
  1087. }
  1088. else {
  1089.  
  1090. set_hudmessage(255,255,255,-1.0,0.90,0,6.0,1.0)
  1091. show_hudmessage(i, "Küldetés: %d mp van hátra, hogy teljesítsd!",PlayerTimeLeft)
  1092. }
  1093. }
  1094. }
  1095. }
  1096.  
  1097. set_pev(Ent,pev_nextthink,get_gametime() + 1.0)
  1098. }
  1099.  
  1100. return HAM_IGNORED
  1101. }
  1102.  
  1103. public BlockMessage(MsgID,MsgDest,id) {
  1104.  
  1105. if(!g_PlayerHasTutor[id] && g_PlayerInScore[id]) {
  1106.  
  1107. new Args[3]
  1108. get_msg_arg_string(2,Args,2)
  1109.  
  1110. if(Args[0] != 'L' || Args[1] != 'v' || Args[2] != 'l') {
  1111.  
  1112. return PLUGIN_HANDLED
  1113. }
  1114. }
  1115.  
  1116. return PLUGIN_CONTINUE
  1117. }
  1118.  
  1119. MakeMission(id,Level,UpdateTutor = 1) {
  1120.  
  1121. new i,Weapon = -1,Float:DifficultyMulti = DIFFICULTY_NORMAL
  1122.  
  1123. g_PlayerMissionType[id] = RandomMission(Level)
  1124.  
  1125. if(g_PlayerMissionType[id] < 0) return 1
  1126.  
  1127. for(i = 0; i < MAXPARAMS; i++) g_PlayerMissionParams[id][i] = 0
  1128.  
  1129. if(g_PlayerMissionType[id] == KILL_WEAPON) {
  1130.  
  1131. while(Weapon < 0) {
  1132.  
  1133. Weapon = random_num(0,WEAPONS - 1)
  1134.  
  1135. if(g_WeaponNames[Weapon][0] == 0) Weapon = -1
  1136.  
  1137. }
  1138.  
  1139. g_PlayerMissionParams[id][PARAM_WEAPON] = Weapon
  1140.  
  1141. if(Weapon != CSW_HEGRENADE - 1) {
  1142.  
  1143. if(get_pcvar_num(c_min_hs_level) <= Level) g_PlayerMissionParams[id][PARAM_HS] = random_num(0,1)
  1144.  
  1145. if(get_pcvar_num(c_min_round_level) <= Level) {
  1146.  
  1147. g_PlayerMissionParams[id][PARAM_ROUND] = random_num(0,1)
  1148. }
  1149. }
  1150. }
  1151. else if(g_PlayerMissionType[id] == KILL_NORMAL) {
  1152.  
  1153. if(Weapon != CSW_HEGRENADE - 1) {
  1154.  
  1155. if(get_pcvar_num(c_min_hs_level) <= Level) g_PlayerMissionParams[id][PARAM_HS] = random_num(0,1)
  1156.  
  1157. if(get_pcvar_num(c_min_round_level) <= Level) g_PlayerMissionParams[id][PARAM_ROUND] = random_num(0,1)
  1158. }
  1159. }
  1160.  
  1161. if(g_PlayerMissionType[id] == HOSTAGE ) {
  1162.  
  1163. if(get_pcvar_num(c_min_round_level) <= Level) g_PlayerMissionParams[id][PARAM_ROUND] = random_num(0,1)
  1164. }
  1165.  
  1166.  
  1167. if(g_PlayerMissionType[id] != DEFUSE && g_PlayerMissionType[id] != WIN && get_pcvar_num(c_min_survive_level) <= Level) {
  1168.  
  1169. g_PlayerMissionParams[id][PARAM_SURVIVE] = random_num(0,1)
  1170.  
  1171. if(g_PlayerMissionParams[id][PARAM_SURVIVE]) {
  1172.  
  1173. DifficultyMulti *= DIFFICULTY_EASYNORMAL
  1174. }
  1175. }
  1176.  
  1177. if(!g_PlayerMissionParams[id][PARAM_ROUND] && g_PlayerMissionType[id] != DEFUSE && get_pcvar_num(c_min_time_level) <= Level) {
  1178.  
  1179. g_PlayerMissionParams[id][PARAM_TIME] = random_num(0,1)
  1180.  
  1181. if(g_PlayerMissionParams[id][PARAM_TIME]) {
  1182.  
  1183. i = random_num(1,g_MaxRoundTimeAmt)
  1184.  
  1185. g_PlayerMissionParams[id][PARAM_TIMEAMT] = i
  1186.  
  1187. DifficultyMulti *= DIFFICULTY_NORMAL / 4 * i
  1188. }
  1189. }
  1190.  
  1191. //Yes, i'm making variables.
  1192. static Float:Rand,Float:Lvl,MaxInRound
  1193.  
  1194. Rand = random_float
  1195. (
  1196. g_MissionParams[g_PlayerMissionType[id]][PARAM_MIN],
  1197. g_MissionParams[g_PlayerMissionType[id]][PARAM_MAX]
  1198. )
  1199.  
  1200. Lvl = float(Level)
  1201.  
  1202. g_PlayerMissionParams[id][PARAM_CONST] = floatround(Rand * Lvl * DifficultyMulti)
  1203.  
  1204. if(g_PlayerMissionParams[id][PARAM_CONST] < 1) g_PlayerMissionParams[id][PARAM_CONST] = 1
  1205.  
  1206. if(g_PlayerMissionParams[id][PARAM_CONST] < 2 && g_PlayerMissionParams[id][PARAM_ROUND]) g_PlayerMissionParams[id][PARAM_CONST] = 2
  1207.  
  1208. MaxInRound = get_pcvar_num(c_max_in_round) ? get_pcvar_num(c_max_in_round) : g_MaxPlayers / 2
  1209.  
  1210. if(g_PlayerMissionParams[id][PARAM_ROUND] || g_PlayerMissionParams[id][PARAM_TIME]) {
  1211.  
  1212. if(g_PlayerMissionParams[id][PARAM_CONST] > MaxInRound && (g_PlayerMissionType[id] == KILL_NORMAL || g_PlayerMissionType[id] == KILL_WEAPON)) {
  1213.  
  1214. g_PlayerMissionParams[id][PARAM_ROUNDTIMES] = g_PlayerMissionParams[id][PARAM_CONST] / MaxInRound + ((g_PlayerMissionParams[id][PARAM_CONST] % MaxInRound > 0) ? 1 : 0)
  1215. g_PlayerMissionParams[id][PARAM_CONST] = MaxInRound
  1216. }
  1217. else if(g_PlayerMissionParams[id][PARAM_CONST] > g_MapParamsCount && g_PlayerMissionType[id] == HOSTAGE) {
  1218.  
  1219. g_PlayerMissionParams[id][PARAM_ROUNDTIMES] = g_PlayerMissionParams[id][PARAM_CONST] / g_MapParamsCount + ((g_PlayerMissionParams[id][PARAM_CONST] % g_MapParamsCount != 0) ? 1 : 0)
  1220. g_PlayerMissionParams[id][PARAM_CONST] = g_MapParamsCount
  1221. }
  1222. }
  1223.  
  1224. new Plrs[3]
  1225.  
  1226. for(i = 0; i < MAXPLAYERS; i++) {
  1227.  
  1228. if(is_user_alive(i)) {
  1229.  
  1230. switch(get_user_team(i)) {
  1231.  
  1232. case TEAM_T : Plrs[TEAM_T]++
  1233.  
  1234. case TEAM_CT : Plrs[TEAM_CT]++
  1235. }
  1236. }
  1237. }
  1238.  
  1239. if((g_PlayerMissionType[id] == KILL_NORMAL || g_PlayerMissionType[id] == KILL_WEAPON) && g_PlayerMissionParams[id][PARAM_ROUND]) {
  1240.  
  1241. if(
  1242. g_PlayerMissionParams[id][PARAM_CONST] - g_PlayerMissionParams[id][PARAM_PLAYER] >
  1243. Plrs[get_user_team(id) == TEAM_CT ? TEAM_T : TEAM_CT]
  1244. ) {
  1245. if(g_PlayerMissionTimeStatus[id] == STATUS_NORMAL) client_cmd(id,"spk ^"%s^"",g_Sounds[SOUND_FAILED])
  1246.  
  1247. g_PlayerMissionStatus[id] = STATUS_FAILED
  1248. }
  1249. else {
  1250.  
  1251. g_PlayerMissionStatus[id] = STATUS_NORMAL
  1252. }
  1253. }
  1254.  
  1255. if(UpdateTutor) CheckPlayerMission(id,0)
  1256.  
  1257. return 1
  1258. }
  1259.  
  1260. public CheckPlayerMissionT(taskID) {
  1261.  
  1262. new id = taskID - TASK_MISSION
  1263.  
  1264. CheckPlayerMission(id,0)
  1265. }
  1266.  
  1267. public CheckPlayerMission(id,CheckWin) {
  1268.  
  1269. static Text[192],sMission[33],TimeStr[16],RoundTimeStr[33]
  1270.  
  1271. if(g_PlayerMissionParams[id][PARAM_PLAYER] > g_PlayerMissionParams[id][PARAM_CONST]) {
  1272.  
  1273. g_PlayerMissionParams[id][PARAM_PLAYER] = g_PlayerMissionParams[id][PARAM_CONST]
  1274. }
  1275.  
  1276. if
  1277. (
  1278. g_PlayerMissionParams[id][PARAM_PLAYER] == g_PlayerMissionParams[id][PARAM_CONST]
  1279. &&
  1280. g_PlayerMissionParams[id][PARAM_CONST]
  1281. &&
  1282. CheckWin
  1283. ) {
  1284.  
  1285. if(g_PlayerMissionParams[id][PARAM_ROUNDTIMES] > 0) {
  1286.  
  1287. g_PlayerMissionParams[id][PARAM_ROUNDTIME_COUNT]++
  1288.  
  1289. g_PlayerMissionParams[id][PARAM_PLAYER] = 0
  1290. }
  1291.  
  1292. if(g_PlayerMissionParams[id][PARAM_ROUNDTIMES] == g_PlayerMissionParams[id][PARAM_ROUNDTIME_COUNT]) {
  1293.  
  1294. static i
  1295.  
  1296. g_PlayerLevel[id]++
  1297.  
  1298. formatex(Text,191,"%sKüldetés teljesítve! Te ezen a szinten vagy: %s%d%s!",
  1299. g_PlayerHasTutor[id] == false ? "^x04[Küldetés]^x01 " : "",
  1300. g_PlayerHasTutor[id] == false ? "^x03" : "",
  1301. g_PlayerLevel[id],
  1302. g_PlayerHasTutor[id] == false ? "^x01" : "",
  1303. g_PlayerHasTutor[id] == false ? "^x03" : ""
  1304. )
  1305.  
  1306. if(g_PlayerHasTutor[id]) {
  1307.  
  1308. g_PlayerInfoMsg[id] = true
  1309.  
  1310. MakeTutor(id,Text,GREEN,4.9)
  1311.  
  1312. }
  1313. else {
  1314.  
  1315. ColorPrint(id,Text)
  1316. }
  1317.  
  1318. g_PlayerMissionType[id] = 0
  1319.  
  1320. for(i = 0; i < MAXPARAMS; i++) g_PlayerMissionParams[id][i] = 0
  1321.  
  1322. MakeMission(id,g_PlayerLevel[id],0)
  1323.  
  1324. set_task(5.0,"CheckPlayerMissionT",id + TASK_MISSION)
  1325.  
  1326. client_cmd(id,"spk ^"%s^"",g_Sounds[SOUND_LVLUP])
  1327.  
  1328. if(get_user_flags(id) & ADMIN_LEVEL_H)
  1329.  
  1330. {
  1331.  
  1332. switch (random_num(1,5))
  1333.  
  1334. {
  1335.  
  1336. case 1:
  1337.  
  1338. {
  1339.  
  1340. cs_set_user_money(id, cs_get_user_money(id) + 5000)
  1341.  
  1342. }
  1343.  
  1344. case 2:
  1345.  
  1346. {
  1347.  
  1348. set_user_health(id, get_user_health(id) + 8)
  1349.  
  1350. }
  1351.  
  1352. case 3:
  1353.  
  1354. {
  1355.  
  1356. set_user_maxspeed(id, 350.0)
  1357.  
  1358. set_user_gravity(id, 0.4)
  1359.  
  1360. }
  1361.  
  1362. case 4:
  1363.  
  1364. {
  1365.  
  1366. give_item(id, "weapon_m4a1")
  1367.  
  1368. give_item(id, "weapon_hegrenade")
  1369.  
  1370. give_item(id, "weapon_flashbang")
  1371.  
  1372. give_item(id, "weapon_smokegrenade")
  1373.  
  1374. }
  1375.  
  1376. case 5:
  1377.  
  1378. {
  1379.  
  1380. give_item(id, "weapon_awp")
  1381.  
  1382. give_item(id, "weapon_deagle")
  1383.  
  1384. give_item(id, "item_assaultsuit")
  1385.  
  1386. give_item(id, "item_thighpack")
  1387.  
  1388. }
  1389.  
  1390. }
  1391.  
  1392. }
  1393.  
  1394. else
  1395.  
  1396. {
  1397.  
  1398. switch (random_num(1,3))
  1399.  
  1400. {
  1401.  
  1402. case 1:
  1403.  
  1404. {
  1405.  
  1406. cs_set_user_money(id, cs_get_user_money(id) + 2500)
  1407.  
  1408. }
  1409.  
  1410. case 2:
  1411.  
  1412. {
  1413.  
  1414. set_user_health(id, get_user_health(id) + 4)
  1415.  
  1416. }
  1417.  
  1418. case 3:
  1419.  
  1420. {
  1421.  
  1422. give_item(id, "weapon_ak47")
  1423.  
  1424. give_item(id, "item_assaultsuit")
  1425.  
  1426. give_item(id, "item_thighpack")
  1427.  
  1428. }
  1429.  
  1430. }
  1431.  
  1432. }
  1433. }
  1434.  
  1435. return PLUGIN_CONTINUE
  1436. }
  1437.  
  1438. if(!is_user_alive(id)) return PLUGIN_CONTINUE
  1439.  
  1440. if(g_PlayerMissionType[id] == KILL_WEAPON) {
  1441.  
  1442. formatex(sMission,32,"%s ",g_WeaponNames[g_PlayerMissionParams[id][PARAM_WEAPON]][7])
  1443. }
  1444.  
  1445. if(g_PlayerMissionParams[id][PARAM_TIME]) {
  1446.  
  1447. formatex(TimeStr,15,"ennyi idő alatt: %d mp. ",g_PlayerMissionParams[id][PARAM_TIMEAMT] * 60)
  1448. }
  1449.  
  1450. if(g_PlayerMissionParams[id][PARAM_ROUNDTIMES] > 0) {
  1451.  
  1452. formatex(RoundTimeStr,32," csináld meg ennyiszer: %d/%d ",g_PlayerMissionParams[id][PARAM_ROUNDTIME_COUNT],g_PlayerMissionParams[id][PARAM_ROUNDTIMES])
  1453. }
  1454. else {
  1455.  
  1456. RoundTimeStr[0] = 0
  1457. }
  1458.  
  1459. // Line In Time
  1460. // Weapon Survive
  1461. // Level Desc ROUND
  1462. // Level Text D W HS P/C
  1463. formatex(Text,191,"%s: %d%s[Küldetés] %s %s%s%s%s%s- %d/%d%s.",
  1464. g_PlayerHasTutor[id] == true ? "Aktuális szinted" : "Lvl",
  1465. g_PlayerLevel[id],
  1466. g_PlayerHasTutor[id] == true ? "^n" : " -- ",
  1467. g_MissionDesc[g_PlayerMissionType[id]],
  1468. g_PlayerMissionType[id] == KILL_WEAPON ? sMission : "",
  1469. g_PlayerMissionParams[id][PARAM_HS] == 1 ? "[fejlövéssel] " : "",
  1470. g_PlayerMissionParams[id][PARAM_ROUND] == 1 ? "1 kör alatt " : "",
  1471. g_PlayerMissionParams[id][PARAM_TIME] == 1 ? TimeStr : "",
  1472. g_PlayerMissionParams[id][PARAM_SURVIVE] == 1 ? "és éld túl " : "",
  1473. g_PlayerMissionParams[id][PARAM_PLAYER],
  1474. g_PlayerMissionParams[id][PARAM_CONST],
  1475. RoundTimeStr
  1476. )
  1477.  
  1478. if(g_PlayerHasTutor[id]) {
  1479.  
  1480. static Color
  1481.  
  1482. if(g_PlayerMissionStatus[id] == STATUS_FAILED || g_PlayerMissionTimeStatus[id] == STATUS_FAILED) Color = RED
  1483. else if(g_PlayerMissionParams[id][PARAM_PLAYER] == 0) Color = BLUE
  1484. else if(g_PlayerMissionParams[id][PARAM_PLAYER] == g_PlayerMissionParams[id][PARAM_CONST]) Color = GREEN
  1485. else Color = YELLOW
  1486.  
  1487. if(g_PlayerInScore[id]) {
  1488.  
  1489. MakeTutor(id,Text,Color)
  1490. }
  1491. }
  1492. else {
  1493.  
  1494. if(g_PlayerInScore[id]) {
  1495.  
  1496. MakeStatusText(id,Text)
  1497. }
  1498. }
  1499.  
  1500. return PLUGIN_CONTINUE
  1501. }
  1502.  
  1503. public CheckStatus() {
  1504.  
  1505. new Plrs[3],i
  1506.  
  1507. for(i = 0; i < MAXPLAYERS; i++) {
  1508.  
  1509. if(is_user_alive(i)) {
  1510.  
  1511. switch(get_user_team(i)) {
  1512.  
  1513. case TEAM_T : Plrs[TEAM_T]++
  1514.  
  1515. case TEAM_CT : Plrs[TEAM_CT]++
  1516. }
  1517. }
  1518. }
  1519.  
  1520. for(i = 0; i < MAXPLAYERS; i++) {
  1521.  
  1522. if((g_PlayerMissionType[i] == KILL_NORMAL || g_PlayerMissionType[i] == KILL_WEAPON) && g_PlayerMissionParams[i][PARAM_ROUND] && is_user_alive(i)) {
  1523.  
  1524. if(
  1525. g_PlayerMissionParams[i][PARAM_CONST] - g_PlayerMissionParams[i][PARAM_PLAYER] >
  1526. Plrs[get_user_team(i) == TEAM_CT ? TEAM_T : TEAM_CT]
  1527. ) {
  1528. if(g_PlayerMissionTimeStatus[i] == STATUS_NORMAL) client_cmd(i,"spk ^"%s^"",g_Sounds[SOUND_FAILED])
  1529.  
  1530. g_PlayerMissionStatus[i] = STATUS_FAILED
  1531. }
  1532. else {
  1533.  
  1534. g_PlayerMissionStatus[i] = STATUS_NORMAL
  1535. }
  1536. }
  1537. }
  1538. }
  1539.  
  1540. //Stocks
  1541.  
  1542. RandomMission(Level) {
  1543.  
  1544. new Nums[MISSIONS] = {-1,...},i,x
  1545.  
  1546. for(i = 0; i < MISSIONS; i++) {
  1547.  
  1548. if
  1549. (
  1550. get_pcvar_num(c_min_level[i]) > Level
  1551. ||
  1552. (
  1553. (
  1554. (
  1555. i == PLANT || i == DEFUSE
  1556. )
  1557. && !(g_MapParams & MAP_DE)
  1558. )
  1559. ||
  1560. (
  1561. i == HOSTAGE && !(g_MapParams & MAP_CS)
  1562. )
  1563. )
  1564. ) {
  1565.  
  1566. continue
  1567. }
  1568.  
  1569. Nums[x] = i
  1570.  
  1571. x++
  1572. }
  1573.  
  1574. if(Nums[0] == -1) {
  1575.  
  1576. return -1
  1577. }
  1578. else {
  1579.  
  1580. return Nums[random_num(0,x - 1)]
  1581. }
  1582.  
  1583. return -1
  1584. }
  1585.  
  1586.  
  1587. MakeTutor(id,Text[],Color,Float:Time = 0.0) {
  1588.  
  1589. message_begin(MSG_ONE_UNRELIABLE,g_MsgTutor,_,id)
  1590. write_string(Text)
  1591. write_byte(0)
  1592. write_short(0)
  1593. write_short(0)
  1594. write_short(1<<Color)
  1595. message_end()
  1596.  
  1597. if(Time != 0.0) {
  1598.  
  1599. set_task(Time,"RemoveTutor",id + TASK_TUTOR)
  1600. }
  1601. }
  1602.  
  1603. MakeStatusText(id,Text[]) {
  1604.  
  1605. message_begin(MSG_ONE_UNRELIABLE,g_MsgStatusText,_,id)
  1606. write_byte(0)
  1607. write_string(Text)
  1608. message_end()
  1609. }
  1610.  
  1611. HideStatusText(id) {
  1612.  
  1613. message_begin(MSG_ONE_UNRELIABLE,g_MsgStatusText,_,id)
  1614. write_byte(0)
  1615. write_string("1 %c1: %p2^n2 %h: %i3%%")
  1616. message_end()
  1617.  
  1618. message_begin(MSG_ONE_UNRELIABLE,g_MsgStatusValue,_,id)
  1619. write_byte(2)
  1620. write_short(1)
  1621. message_end()
  1622. }
  1623.  
  1624. public RemoveTutor(taskID) {
  1625.  
  1626. new id = taskID - TASK_TUTOR
  1627.  
  1628. g_PlayerInfoMsg[id] = false
  1629.  
  1630. message_begin(MSG_ONE_UNRELIABLE,g_MsgTutorClose,_,id)
  1631. message_end()
  1632. }
  1633.  
  1634. ColorPrint(id,Text[]) {
  1635.  
  1636. message_begin(MSG_ONE_UNRELIABLE,g_MsgSay,_,id)
  1637. write_byte(id)
  1638. write_string(Text)
  1639. message_end()
  1640. }
  1641.  
  1642. //Vault
  1643. public SaveMission(Player) {
  1644.  
  1645. new SteamID_IP[33],Key[64],Data[256]
  1646.  
  1647. get_pcvar_num(c_save_by) == 1 ? get_user_ip(Player,SteamID_IP,32,1) : get_user_authid(Player,SteamID_IP,32)
  1648.  
  1649. formatex(Key,63,"%s_msn",SteamID_IP)
  1650.  
  1651. formatex(Data,255,"%d %d %d %d %d %d %d %d %d %d %d %d",
  1652. g_PlayerLevel[Player],
  1653. g_PlayerMissionType[Player],
  1654. g_PlayerMissionParams[Player][PARAM_PLAYER],
  1655. g_PlayerMissionParams[Player][PARAM_CONST],
  1656. g_PlayerMissionParams[Player][PARAM_WEAPON],
  1657. g_PlayerMissionParams[Player][PARAM_HS],
  1658. g_PlayerMissionParams[Player][PARAM_ROUND],
  1659. g_PlayerMissionParams[Player][PARAM_SURVIVE],
  1660. g_PlayerMissionParams[Player][PARAM_TIME],
  1661. g_PlayerMissionParams[Player][PARAM_TIMEAMT],
  1662. g_PlayerMissionParams[Player][PARAM_ROUNDTIMES],
  1663. g_PlayerMissionParams[Player][PARAM_ROUNDTIME_COUNT]
  1664. )
  1665.  
  1666. nvault_set(g_Vault,Key,Data)
  1667. }
  1668.  
  1669. public LoadMission(Player) {
  1670.  
  1671. new SteamID_IP[33],Key[64],Data[256],tStr[MAXPARAMS + 2][6]
  1672.  
  1673. get_pcvar_num(c_save_by) == 1 ? get_user_ip(Player,SteamID_IP,32,1) : get_user_authid(Player,SteamID_IP,32)
  1674.  
  1675. formatex(Key,63,"%s_msn",SteamID_IP)
  1676.  
  1677. nvault_get(g_Vault,Key,Data,255)
  1678.  
  1679. parse
  1680. (
  1681. Data,
  1682. tStr[0],5,
  1683. tStr[1],5,
  1684. tStr[2],5,
  1685. tStr[3],5,
  1686. tStr[4],5,
  1687. tStr[5],5,
  1688. tStr[6],5,
  1689. tStr[7],5,
  1690. tStr[8],5,
  1691. tStr[9],5,
  1692. tStr[10],5,
  1693. tStr[11],5
  1694. )
  1695.  
  1696. g_PlayerLevel[Player] = str_to_num(tStr[0])
  1697. g_PlayerMissionType[Player] = str_to_num(tStr[1])
  1698.  
  1699. g_PlayerMissionParams[Player][PARAM_PLAYER] = str_to_num(tStr[2])
  1700. g_PlayerMissionParams[Player][PARAM_CONST] = str_to_num(tStr[3])
  1701. g_PlayerMissionParams[Player][PARAM_WEAPON] = str_to_num(tStr[4])
  1702.  
  1703. g_PlayerMissionParams[Player][PARAM_HS] = str_to_num(tStr[5])
  1704. g_PlayerMissionParams[Player][PARAM_ROUND] = str_to_num(tStr[6])
  1705. g_PlayerMissionParams[Player][PARAM_SURVIVE] = str_to_num(tStr[7])
  1706. g_PlayerMissionParams[Player][PARAM_TIME] = str_to_num(tStr[8])
  1707. g_PlayerMissionParams[Player][PARAM_TIMEAMT] = str_to_num(tStr[9])
  1708. g_PlayerMissionParams[Player][PARAM_ROUNDTIMES] = str_to_num(tStr[10])
  1709. g_PlayerMissionParams[Player][PARAM_ROUNDTIME_COUNT] = str_to_num(tStr[11])
  1710. }
  1711.  

Oldal: 1 / 1 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/