Advertisement
Guest User

scripts\archievements.script для ОП-2.1 патч 8к2

a guest
Jan 16th, 2021
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.68 KB | None | 0 0
  1. -- Достижения
  2. local medicals = {
  3. "suvorotka",
  4. "vodka",
  5. "antirad",
  6. "medkit",
  7. "medkit_army",
  8. "medkit_scientic",
  9. "energy_drink",
  10. "bandage",
  11. "antizombie",
  12. }
  13.  
  14. local wpns = {
  15. ["wpn_akms_m1"]=true,
  16. ["wpn_kord_m1"]=true,
  17. ["wpn_fn2000_sniper"]=true,
  18. ["wpn_stutzer_m1"]=true,
  19. ["wpn_m500_custom"]=true,
  20. ["wpn_hk417_792"]=true,
  21. ["wpn_akms_m2"]=true,
  22. ["wpn_aug_a2"]=true,
  23. ["wpn_fn2000_paratrooper"]=true,
  24. ["wpn_gauss2b"]=true,
  25. ["wpn_groza_sn"]=true,
  26. ["wpn_oicw"]=true,
  27. ["wpn_sks_cust"]=true,
  28. ["wpn_val_voron"]=true,
  29. ["wpn_ks23"]=true,
  30. ["wpn_sayga12k"]=true,
  31. ["wpn_ak74u_svd"]=true,
  32. ["wpn_awp_m1"]=true,
  33. ["wpn_sg550_sr"]=true,
  34. ["wpn_vihlop_m1"]=true,
  35. ["wpn_zastava_m77"]=true,
  36. ["wpn_20w_vintorez"]=true,
  37. ["wpn_ak74_m3"]=true,
  38. ["wpn_ak74_m1"]=true,
  39. ["wpn_ak104t"]=true,
  40. ["wpn_aks74_m1"]=true,
  41. ["wpn_m4"]=true,
  42. ["wpn_hostel"]=true,
  43. ["wpn_m4_m1"]=true,
  44. ["wpn_ognemet"]=true,
  45. ["wpn_svd_m1"]=true,
  46. ["wpn_svd_m2"]=true,
  47. ["wpn_svd_m3"]=true,
  48. ["wpn_b94_sil"]=true,
  49. ["wpn_protecta_col"]=true,
  50. ["wpn_vintorez_m1"]=true,
  51. ["wpn_walther_wa2000"]=true,
  52. ["wpn_spas12_m1"]=true,
  53. ["wpn_groza_m1"]=true,
  54. ["wpn_dark_gauss"]=true,
  55. ["wpn_benelli_m3_short"]=true,
  56. ["wpn_awm_f"]=true,
  57. ["wpn_trg42"]=true,
  58. ["wpn_rpk47_sk1"]=true,
  59. ["wpn_vepr12_m1"]=true,
  60. ["wpn_sayga_un"]=true,
  61. ["wpn_scar_snip"]=true,
  62. ["wpn_vihlop_camo"]=true,
  63. ["wpn_rg6_m2"]=true
  64. }
  65.  
  66. function get_wpns()
  67. return wpns
  68. end
  69.  
  70. function acv_glaz() send_archievement("acv_glaz") end
  71. function acv_prorok() send_archievement("acv_prorok") end
  72. function acv_sunlight() send_archievement("acv_sunlight") end
  73. function acv_avianosec() send_archievement("acv_avianosec") end
  74. function acv_american() send_archievement("acv_american") end
  75. function acv_annigilator() send_archievement("acv_annigilator") end
  76. function acv_antisniper() send_archievement("acv_antisniper") end
  77. function acv_aptekar() send_archievement("acv_aptekar") end
  78. function acv_archeolog() send_archievement("acv_archeolog") end
  79. function acv_afgan() send_archievement("acv_afgan") end
  80. function acv_bronenosec() send_archievement("acv_bronenosec") end
  81. function acv_vlastelin_kolez() send_archievement("acv_vlastelin_kolez") end
  82. function acv_voenruk() send_archievement("acv_voenruk") end
  83. function acv_volshednik() send_archievement("acv_volshednik") end
  84. function acv_vigigatel() send_archievement("acv_vigigatel") end
  85. function acv_glavkom() send_archievement("acv_glavkom") end
  86. function acv_gluhar() send_archievement("acv_gluhar") end
  87. function acv_gudvin() send_archievement("acv_gudvin") end
  88. function acv_bond() send_archievement("acv_bond") end
  89. function acv_dergach() send_archievement("acv_dergach") end
  90. function acv_jigit() send_archievement("acv_jigit") end
  91. function acv_zavhoz() send_archievement("acv_zavhoz") end
  92. function acv_zoolog() send_archievement("acv_zoolog") end
  93. function acv_cowboy() send_archievement("acv_cowboy") end
  94. function acv_commandos() send_archievement("acv_commandos") end
  95. function acv_korotishka() send_archievement("acv_korotishka") end
  96. function acv_costumer() send_archievement("acv_costumer") end
  97. function acv_laborant() send_archievement("acv_laborant") end
  98. function acv_luchnik() send_archievement("acv_luchnik") end
  99. function acv_meloman() send_archievement("acv_meloman") end
  100. function acv_volonter() send_archievement("acv_volonter") end
  101. function acv_modeller() send_archievement("acv_modeller") end
  102. function acv_misucman() send_archievement("acv_misucman") end
  103. function acv_nevidimka() send_archievement("acv_nevidimka") end
  104. function acv_patriot() send_archievement("acv_patriot") end
  105. function acv_peredelkin() send_archievement("acv_peredelkin") end
  106. function acv_povstanec() send_archievement("acv_povstanec") end
  107. function acv_podkidish() send_archievement("acv_podkidish") end
  108. function acv_podrivnik() send_archievement("acv_podrivnik") end
  109. function acv_soldafon() send_archievement("acv_soldafon") end
  110. function acv_smelchak() send_archievement("acv_smelchak") end
  111. function acv_monosniper() send_archievement("acv_monosniper") end
  112. function acv_ussrsniper() send_archievement("acv_ussrsniper") end
  113. function acv_stalevar() send_archievement("acv_stalevar") end
  114. function acv_specialist() send_archievement("acv_specialist") end
  115. function acv_trangira() send_archievement("acv_trangira") end
  116. function acv_ufolog() send_archievement("acv_ufolog") end
  117. function acv_fantomas() send_archievement("acv_fantomas") end
  118. function acv_hvastun() send_archievement("acv_hvastun") end
  119. function acv_hichnik() send_archievement("acv_hichnik") end
  120. function acv_chistula() send_archievement("acv_chistula") end
  121. function acv_shekunchik() send_archievement("acv_shekunchik") end
  122. function acv_estet() send_archievement("acv_estet") end
  123. function acv_avstriez() send_archievement("acv_avstriez") end
  124. function acv_likvidator() send_archievement("acv_likvidator") end
  125. function acv_baraholez() send_archievement("acv_baraholez") end
  126. function acv_bodyguard() send_archievement("acv_bodyguard") end
  127. function acv_anticollector() send_archievement("acv_anticollector") end
  128. function acv_doublet() send_archievement("acv_doublet") end
  129. function acv_newgame() send_archievement("acv_newgame") end
  130. function acv_halavshic() send_archievement("acv_halavshic") end
  131. function acv_homak() send_archievement("acv_homak") end
  132. function acv_lekar() send_archievement("acv_lekar") end
  133. function acv_lekar2() send_archievement("acv_lekar2") end
  134. function acv_tereza() send_archievement("acv_tereza") end
  135. function acv_vandal() send_archievement("acv_vandal") end
  136. function acv_giv() send_archievement("acv_giv") end
  137. function acv_found_myself() send_archievement("acv_found_myself") end
  138. function acv_mtv() send_archievement("acv_mtv") end
  139. function acv_sol() send_archievement("acv_sol") end
  140. function acv_kart() send_archievement("acv_kart") end
  141. function acv_kro() send_archievement("acv_kro") end
  142. function acv_ele() send_archievement("acv_ele") end
  143. function acv_gromov() send_archievement("acv_gromov") end
  144. function acv_stay1() send_archievement("acv_stay1") end
  145. function acv_stay2() send_archievement("acv_stay2") end
  146. function acv_rank1() send_archievement("acv_rank1") end
  147. function acv_rank2() send_archievement("acv_rank2") end
  148. function acv_rank3() send_archievement("acv_rank3") end
  149. function acv_farm() acv_count_event("acv_farm", 30, "acv_farm") end
  150. function acv_coll() send_archievement("acv_coll") end
  151. function acv_profi() send_archievement("acv_profi") end
  152. function acv_volna() send_archievement("acv_volna") end
  153. function acv_shax() send_archievement("acv_shax") end
  154.  
  155. function acv_sos()
  156. if has_info("acv_sos") then return end
  157.  
  158. if has_info("squad_is_alive") and has_info("psih_is_alive") then
  159. give_info("acv_sos")
  160. send_archievement("acv_sos")
  161. end
  162. end
  163.  
  164. function acv_snp()
  165. if has_info("acv_snp") then return end
  166.  
  167. if has_info("upiter_sdelka_have") and
  168. has_info("fli_chaes_have") and
  169. has_info("borov_bottle_done") and
  170. has_info("viking_proverka_have")
  171. then
  172. give_info("acv_snp")
  173. send_archievement("acv_snp")
  174. end
  175. end
  176.  
  177. function acv_docs()
  178. if not has_info("acv_docs_fail") then
  179. give_info("acv_docs")
  180. send_archievement("acv_docs")
  181. end
  182. end
  183.  
  184. function acv_aem()
  185. if not has_info("acv_aem") then
  186. give_info("acv_aem")
  187. send_archievement("acv_aem")
  188. end
  189. end
  190.  
  191. function acv_cognized_zone()
  192. if has_info("acv_cognized_zone") then return end
  193.  
  194. for i=1,65 do
  195. if not has_info("arhara_obman"..tostring(i)) then return end
  196. end
  197.  
  198. give_info("acv_cognized_zone")
  199. send_archievement("acv_cognized_zone")
  200. end
  201.  
  202. function acv_sishik()
  203. if has_info("acv_sishik") then return end
  204.  
  205. if has_info("acv_sishik1") and has_info("acv_sishik2") and has_info("acv_sishik3") and has_info("acv_sishik4") then
  206. give_info("acv_sishik")
  207. send_archievement("acv_sishik")
  208. end
  209. end
  210.  
  211. function acv_task()
  212.  
  213.  
  214. if has_info("info_chess_dictofon_done") and has_info("snp_video_arhiv_done") then
  215. give_info("acv_task")
  216. send_archievement("acv_task")
  217. timer("run5", 3, "archievements.acv_stalker()")
  218. end
  219. end
  220.  
  221. function acv_real()
  222.  
  223.  
  224. give_info("acv_real")
  225. send_archievement("acv_real")
  226. end
  227.  
  228. function acv_nocheat()
  229.  
  230.  
  231.  
  232.  
  233. give_info("acv_nocheat")
  234. send_archievement("acv_nocheat")
  235. end
  236.  
  237. function acv_vzn()
  238.  
  239.  
  240. if not has_info("acv_vzn1") then
  241. give_info("acv_vzn1")
  242. send_archievement("acv_vzn1")
  243. elseif not has_info("acv_vzn2") then
  244. give_info("acv_vzn2")
  245.  
  246.  
  247.  
  248. end
  249. end
  250.  
  251. function acv_life()
  252.  
  253. if has_info("acv_umer") then
  254. give_info("acv_resur")
  255. send_archievement("acv_resur")
  256. else
  257. give_info("acv_alive")
  258. send_archievement("acv_alive")
  259. end
  260.  
  261. end
  262.  
  263. function acv_money()
  264.  
  265.  
  266. if not has_info("acv_money1") and has_money(5000000) then
  267. give_info("acv_money1")
  268. send_archievement("acv_money1")
  269. end
  270. if not has_info("acv_money2") and has_money(15000000) then
  271. give_info("acv_money2")
  272. send_archievement("acv_money2")
  273. end
  274.  
  275.  
  276.  
  277.  
  278. end
  279.  
  280. function has_cheated_jump()
  281.  
  282.  
  283.  
  284.  
  285.  
  286. end
  287.  
  288. function has_cheated_money()
  289.  
  290.  
  291.  
  292.  
  293.  
  294. end
  295.  
  296. function has_cheated_item()
  297.  
  298.  
  299.  
  300.  
  301.  
  302. end
  303.  
  304. function has_cheated_zone()
  305.  
  306.  
  307.  
  308.  
  309.  
  310. end
  311.  
  312. function acv_angel()
  313. if all_ecologs_alive() then
  314. got("af_hl",1)
  315. give_info("acv_angel")
  316. send_archievement("acv_angel")
  317. end
  318. end
  319. function all_ecologs_alive()
  320. local ecologs = {
  321. "bar_ecolog_professor",
  322. "bar_ecolog_crush_1",
  323. "bar_ecolog_crush_2",
  324. "bar_ecolog_crush_3",
  325. "bar_ecolog_crush_4",
  326. }
  327. local se_obj, obj
  328.  
  329. for _, name in ipairs(ecologs) do
  330. se_obj = server_object(name)
  331. if not se_obj then return false end
  332.  
  333. obj = level_object(se_obj.id)
  334. if not obj or not obj:alive() then return false end
  335. end
  336.  
  337. return true
  338. end
  339.  
  340. function acv_kill()
  341. local value = get_value("acv_kill", 0)+1
  342. set_value("acv_kill", value)
  343.  
  344. if not has_info("acv_kill") and value >= 3000 then
  345. give_info("acv_kill")
  346. send_archievement("acv_kill")
  347. end
  348. if not has_info("acv_kill2") and value >= 6000 then
  349. give_info("acv_kill2")
  350. send_archievement("acv_kill2")
  351. end
  352. acv_unstoppable()
  353. end
  354.  
  355. function acv_kill_phantom()
  356. local value = get_value("acv_kill_phantom", 0)+1
  357. set_value("acv_kill_phantom", value)
  358.  
  359. if not has_info("acv_kill_phantom") and value >= 100 then
  360. give_info("acv_kill_phantom")
  361. send_archievement("acv_kill_phantom")
  362. del_value("acv_kill_phantom")
  363. end
  364. end
  365.  
  366. function acv_psydog_phantom()
  367. local value = get_value("acv_psydog_phantom", 0)+1
  368. set_value("acv_psydog_phantom", value)
  369.  
  370. if not has_info("acv_psydog_phantom") and value >= 100 then
  371. give_info("acv_psydog_phantom")
  372. send_archievement("acv_psydog_phantom")
  373. del_value("acv_psydog_phantom")
  374. end
  375. end
  376.  
  377. function acv_mons()
  378. local value = get_value("acv_mons", 0)+1
  379. set_value("acv_mons", value)
  380.  
  381. if not has_info("acv_mons") and value >= 6000 then
  382. give_info("acv_mons")
  383. send_archievement("acv_mons")
  384. end
  385. if not has_info("acv_mons2") and value >= 10000 then
  386. give_info("acv_mons2")
  387. send_archievement("acv_mons2")
  388. end
  389. acv_unstoppable()
  390. end
  391.  
  392. function acv_unstoppable()
  393. if not has_info("acv_unstoppable") and get_value("acv_kill", 0)+get_value("acv_mons", 0) >= 20000 then
  394. give_info("acv_unstoppable")
  395. send_archievement("acv_unstoppable")
  396. end
  397. end
  398.  
  399. function acv_stalker()
  400. if has_info("acv_sishik") and
  401. has_info("acv_angel") and
  402. has_info("acv_vandal") and
  403. has_info("acv_sos") and
  404. has_info("acv_docs") and
  405. has_info("acv_cognized_zone") and
  406. has_info("acv_lekar") and
  407. has_info("acv_tereza") and
  408. has_info("acv_farm") and
  409. has_info("acv_rank2") and
  410. has_info("acv_emb") and
  411. has_info("acv_hell") and
  412. has_info("acv_snp") and
  413. has_info("acv_ct") and
  414. has_info("acv_kill") and
  415. has_info("acv_mons") and
  416. has_info("acv_zoms") and
  417. has_info("acv_task") and
  418. has_info("acv_vzn1") and
  419. has_info("acv_alive") and
  420. has_info("acv_rem") and
  421. has_info("acv_paparacci") and
  422. has_info("acv_wpn") and
  423. has_info("fli_done") and
  424. has_info("taynik_nayti_oz_10_done") and
  425. has_info("volna_day4_done") and
  426. not has_info("acv_has_cheated") and
  427. not has_info("acv_halavshic3") and
  428. not has_info("acv_bridge") and
  429. not has_info("acv_docs_fail") and
  430. not has_info("acv_money3") and
  431. not has_info("acv_alk") and
  432. not has_info("acv_slp") and
  433. not has_info("acv_xam") and
  434. not has_info("acv_task_fail") and
  435. not has_info("acv_vzn3") and
  436. not has_info("acv_umer")
  437. then
  438. give_info("acv_stalker")
  439. send_archievement("acv_stalker")
  440. end
  441. end
  442.  
  443. -- единая функция обработки и выдачи подсчитываемого достижения
  444. function acv_count_event(acv, count, name, qty)
  445. if has_info(acv) then return end
  446.  
  447. if not qty then
  448. qty = 1
  449. end
  450.  
  451. local value = get_value(acv, 0)+qty
  452. if value >= count then
  453. del_value(acv)
  454. give_info(acv)
  455. send_archievement(name)
  456. return
  457. end
  458.  
  459. set_value(acv, value)
  460. end
  461.  
  462. -- единая функция обработки и выдачи 2-х последовательно подсчитываемых достижений
  463. function acv_count_2event(acv, count, name, acv2, count2, name2, qty)
  464. if has_info(acv) and has_info(acv2) then return end
  465.  
  466. if not qty then
  467. qty = 1
  468. end
  469.  
  470. local value = get_value(acv, 0)+qty
  471.  
  472. if not has_info(acv) and value >= count then
  473. give_info(acv)
  474. send_archievement(name)
  475. end
  476.  
  477. if value >= count2 then
  478. del_value(acv)
  479. give_info(acv2)
  480. send_archievement(name2)
  481. return
  482. end
  483.  
  484. set_value(acv, value)
  485. end
  486.  
  487. -- единая функция обработки и выдачи 3-х последовательно подсчитываемых достижений
  488. function acv_count_3event(acv, count, name, acv2, count2, name2, acv3, count3, name3, qty)
  489. if has_info(acv) and has_info(acv2) and has_info(acv3) then return end
  490.  
  491. if not qty then
  492. qty = 1
  493. end
  494.  
  495. local value = get_value(acv, 0)+qty
  496.  
  497. if not has_info(acv) and value >= count then
  498. give_info(acv)
  499. send_archievement(name)
  500. end
  501.  
  502. if not has_info(acv2) and value >= count2 then
  503. give_info(acv2)
  504. send_archievement(name2)
  505. end
  506.  
  507. if value >= count3 then
  508. del_value(acv)
  509. give_info(acv3)
  510. send_archievement(name3)
  511. return
  512. end
  513.  
  514. set_value(acv, value)
  515. end
  516.  
  517. -- счетчик смертей гг
  518. function on_actor_death(who)
  519. if has_info("peshera_go") then return end -- сон в Пещере не считаем
  520.  
  521. set_death_count("death", get_death_count("death")+1)
  522.  
  523. if who and amk_anoms.is_anomaly(who:clsid()) then
  524. set_death_count("anoms", get_death_count("anoms")+1)
  525. end
  526. end
  527. function acv_death()
  528. if not has_info("acv_death") and get_death_count("death") >= 500 then
  529. give_info("acv_death")
  530. send_archievement("acv_death")
  531. end
  532.  
  533. if not has_info("acv_anoms") and get_death_count("anoms") >= 20 then
  534. give_info("acv_anoms")
  535. send_archievement("acv_anoms")
  536. end
  537. end
  538.  
  539. --хранение данных в user.ltx - как определенный пользователем параметр
  540. function get_death_count(what)
  541. local value=console:get_user_param_value("death_counter")
  542. if not value then
  543. return 0
  544. end
  545. local kv_pairs=safe_utils.splitString(",",value)
  546. for p_key,p_value in pairs(kv_pairs) do
  547. if (string.find(p_value,what.."=")) then
  548. local w_value=tonumber((string.gsub(p_value,what.."=","")))--скобки не лишние!!! убираем лишний результат от gsub
  549. if w_value then
  550. return w_value
  551. end
  552. end
  553. end
  554. return 0
  555. end
  556.  
  557. function set_death_count(what, value)
  558. local param_value=console:get_user_param_value("death_counter")
  559. if not param_value then
  560. console:set_user_param_value("death_counter",what.."="..tostring(value))
  561. return
  562. end
  563. if param_value=="" then --если параметр пустой, но новую игру не начинали
  564. param_value="game=0,death=0,anoms=0"
  565. end
  566. local kv_pairs=safe_utils.splitString(",",param_value)
  567. for p_key,p_value in pairs(kv_pairs) do
  568. if (string.find(p_value,what.."=")) then
  569. kv_pairs[p_key]=what.."="..tostring(value)
  570. end
  571. end
  572. console:set_user_param_value("death_counter",table.strjoin(kv_pairs,","))
  573. end
  574.  
  575. function on_new_game()
  576. console:set_user_param_value("death_counter","game=0,death=0,anoms=0")
  577. end
  578.  
  579. function save_gametime()
  580. if alife() then
  581. set_death_count("game", tonumber(get_death_count("game"))+math.floor(time_global()/60000+0.5))
  582. end
  583. end
  584.  
  585. -- универсальный механизм проверки, что обработан каждый объект из списка
  586. function has_all(tbl, info, section)
  587. for i, s in ipairs(tbl) do
  588. if s == section and not has_info(info..i) then
  589. give_info(info..i)
  590. return has_all_info(tbl, info)
  591. end
  592. end
  593. return false
  594. end
  595. function has_all_info(tbl, info)
  596. for i=1, #tbl do
  597. if not has_info(info..i) then
  598. return false
  599. end
  600. end
  601. return true
  602. end
  603.  
  604. -- взятие тайника без уникальных предметов
  605. function check_treasure(box)
  606. local section = box:section()
  607. if section == "m_inventory_box13" then
  608. give_info("acv_sishik1")
  609. acv_sishik()
  610. elseif section == "x_inventory_box3" then
  611. give_info("acv_sishik2")
  612. acv_sishik()
  613. elseif section == "y_inventory_box1" then
  614. give_info("acv_sishik3")
  615. acv_sishik()
  616. elseif section == "z_inventory_box15" then
  617. give_info("acv_sishik4")
  618. acv_sishik()
  619. end
  620. end
  621.  
  622. -- подъем предмета
  623. function on_item_take(obj)
  624. local section = obj:section()
  625. if section == "mutant_wolf_cocoon" then
  626. if not has_info("acv_emb") then
  627. give_info("acv_emb")
  628. send_archievement("acv_emb")
  629. end
  630. end
  631.  
  632. if not has_info("acv_wpn") and wpns[section] then --and has_all(wpns, "acv_wpn", section) then
  633. local acv_wpn_data=keyvals("achievement"):get("acv_wpn", {})
  634. acv_wpn_data[section]=true
  635. local complete=true
  636. for check_section,_ in pairs(wpns) do
  637. if not acv_wpn_data[check_section] then
  638. complete=false
  639. break
  640. end
  641. end
  642. if complete then
  643. keyvals("achievement"):remove("acv_wpn")
  644. give_info("acv_wpn")
  645. send_archievement("acv_wpn")
  646. end
  647. end
  648.  
  649. if has_info("mm_opt") then
  650. has_cheated_item()
  651. end
  652. end
  653.  
  654. local object_sections={
  655. ["sweetness"]=function(obj)
  656. acv_count_event("acv_mars", 20, "acv_mars")
  657. end,
  658. ["suvorotka"]=function(obj)
  659. acv_count_event("acv_nar", 20, "acv_nar")
  660. end,
  661. ["conserva"]=function(obj)
  662. acv_count_event("acv_kons", 40, "acv_kons")
  663. end,
  664. ["kolbasa"]=function(obj)
  665. acv_count_event("acv_klb", 40, "acv_klb")
  666. end,
  667. ["bread"]=function(obj)
  668. acv_count_event("acv_bul", 40, "acv_bul")
  669. end
  670. }
  671. -- использование предмета
  672. function on_use_item(obj)
  673. local section = obj:section()
  674. if not has_info("acv_tera") and has_all(medicals, "acv_tera", section) then
  675. give_info("acv_tera")
  676. send_archievement("acv_tera")
  677. end
  678.  
  679. if not has_info("acv_gurman") and (section == "vorona_egg" or section == "mozg" or section == "bezoar" or section == "mushroom") then
  680. give_info("acv_gurman")
  681. send_archievement("acv_gurman")
  682. end
  683.  
  684. local arch_use=object_sections[section]
  685. if arch_use then
  686. arch_use(obj)
  687. end
  688. end
  689.  
  690. -- получение поршня
  691. function on_info(info_id)
  692. if not has_info("acv_rem") and
  693. has_info("dolgovazyi_toolkit_done") and
  694. has_info("dolgovazyi_voen2_done") and
  695. has_info("vasily_toolkit_done") and
  696. has_info("dimak_toolkit_done") and
  697. has_info("atp_propusk_shurup_done") and
  698. has_info("petr_sidor_vzyt_done") and
  699. has_info("sidor_amulet_vzyt_done") and
  700. has_info("sak_repair_box_done")
  701. then
  702. give_info("acv_rem")
  703. send_archievement("acv_rem")
  704. end
  705.  
  706. if not has_info("acv_paparacci") and not has_info("foto_ohota_fail") and
  707. has_info("odnonogiy_foto_done") and
  708. has_info("izomorf_dialog_have") and
  709. has_info("izomorf_dialog_done") and
  710. has_info("foto_ohota_done") and
  711. has_info("foto_anomaly_done") and
  712. has_info("silent_hunt_done") and
  713. has_info("kontrik_electro_done") and
  714. has_info("ohota_wolf_done") and
  715. has_info("volna_foto_done") and
  716. has_info("bar_dolg_petrenko_electra_flash_done") and
  717. has_info("fotograf_detector_done") and
  718. has_info("saharov_obrazec_done") and
  719. has_info("foto_strelok_done")
  720. then
  721. give_info("acv_paparacci")
  722. send_archievement("acv_paparacci")
  723. end
  724.  
  725. if not has_info("acv_etolog") and not has_info("foto_ohota_fail") and
  726. has_info("izomorf_dialog_have") and
  727. has_info("izomorf_dialog_done") and
  728. has_info("foto_ohota_done") and
  729. has_info("silent_hunt_done") and
  730. has_info("kontrik_electro_done") and
  731. has_info("ohota_wolf_done") and
  732. has_info("saharov_obrazec_done") and
  733. has_info("bar_dolg_petrenko_electra_flash_done")
  734. then
  735. give_info("acv_etolog")
  736. send_archievement("acv_etolog")
  737. end
  738.  
  739. if not has_info("acv_kulinar") and
  740. has_info("bar_bar_hunter_quest_finish") and
  741. has_info("svoboda_lukash_done") and
  742. has_info("bar_rescue_research_reward") and
  743. has_info("detection_sensor_done") and
  744. has_info("info_amk_recipt_giant_small_brother") and
  745. has_info("info_amk_recipt_soul_drops") and
  746. has_info("kostya_journal_done") and
  747. has_info("ohota_tushkan_done") and
  748. has_info("docent_art_start") and
  749. has_info("info_amk_recipt_tears_electra") and
  750. has_info("yan_kill_brain_done") and
  751. has_info("info_amk_recipt_tears_chimaera") and
  752. has_info("info_amk_recipt_grandmother_glassbeards") and
  753. has_info("info_amk_recipt_pra_grandmother_glassbeards") and
  754. has_info("sidor_ugon_baggi") and
  755. has_info("info_artmod_probabka_burera") and
  756. has_info("info_amk_recipt_dikoobraz") and
  757. has_info("info_amk_recipt_electra_dikoobraz") and
  758. has_info("val_sos_give_info") and
  759. has_info("info_amk_recipt_stone_dikoobraz") and
  760. has_info("info_amk_recipt_shkura") and
  761. has_info("bar_svoboda_rg6_done") and
  762. has_info("escape_blockpost_case_done") and
  763. has_info("info_amk_recipt_simbion") and
  764. has_info("info_amk_recipt_dummy_fire") and
  765. has_info("kalinin_voen1_done") and
  766. has_info("taynik_gila_done") and
  767. has_info("vasily_toolkit_done")
  768. then
  769. give_info("acv_kulinar")
  770. send_archievement("acv_kulinar")
  771. end
  772.  
  773. if not has_info("acv_trans") and
  774. has_info("mil_volk_resiver_done") and
  775. has_info("plov_kulinar_done") and
  776. has_info("val_pula_boar_leg_done") and
  777. has_info("hand_otdan") and
  778. has_info("esc_tolik_five_teil_done") and
  779. has_info("gar_dram_novice_mp5_m1_done") and
  780. has_info("gar_dolg_flesh_eye_done") and
  781. has_info("mil_Svoboda_trader_outfit_done") and
  782. has_info("bar_ivancov_rg6_done") and
  783. has_info("info_artmod_dummy_dummy_mosquito_bald") and
  784. has_info("esc_petruha_toz_done") and
  785. has_info("gar_hellcar_outfit_done") and
  786. has_info("gar_dolg_krovosos_jaw_done") and
  787. has_info("val_pula_ammo_done") and
  788. has_info("sak_repair_box_done") and
  789. has_info("yan_scientist_books_done") and
  790. has_info("esc_shustryi_medusa_done") and
  791. has_info("info_artmod_drops_mincer") and
  792. has_info("info_artmod_rusty_kristall_mincer") and
  793. has_info("mil_Svoboda_trader_ammo_done") and
  794. has_info("info_artmod_ameba_slug_mincer") and
  795. has_info("sak_find_seif_done") and
  796. has_info("esc_bridge_vodka_done") and
  797. has_info("info_artmod_rusty_thorn_buzz") and
  798. has_info("info_artmod_fireball_buzz") and
  799. has_info("info_artmod_cristall_buzz") and
  800. has_info("yan_kruglov_decoder_done") and
  801. has_info("yan_kruglov_art_done") and
  802. has_info("info_artmod_electra_flash_zharka") and
  803. has_info("agr_krot_PDA_done") and
  804. has_info("bar_dolg_petrenko_gaussgan_done") and
  805. has_info("mil_Svoboda_trader_plan_done") and
  806. has_info("bar_dolg_petrenko_electra_flash_done") and
  807. has_info("sak_reward_outfit_done") and
  808. has_info("esc_fox_medkit_done") and
  809. has_info("val_prisoner_give_info") and
  810. has_info("info_artmod_ameba_mica_galant") and
  811. has_info("val_escort_PDA_done") and
  812. has_info("sak_gold_fish_done") and
  813. has_info("krysyk_pomer_give_pda") and
  814. has_info("bandit_krisyk_done") and
  815. has_info("bar_dolg_petrenko_exo_done") and
  816. has_info("life_heart_final") and
  817. has_info("info_artmod_gusenica") and
  818. has_info("shax_plennik_nayti_done")
  819. then
  820. give_info("acv_trans")
  821. send_archievement("acv_trans")
  822. end
  823. -- Достижение по ЦЗ - Новая Игра+
  824. if not has_info("acv_newgame") and
  825. has_info("acv_avianosec") and
  826. has_info("acv_american") and
  827. has_info("acv_annigilator") and
  828. has_info("acv_antisniper") and
  829. has_info("acv_aptekar") and
  830. has_info("acv_archeolog") and
  831. has_info("acv_afgan") and
  832. has_info("acv_bronenosec") and
  833. has_info("acv_voenruk") and
  834. has_info("acv_volshednik") and
  835. has_info("acv_vigigatel") and
  836. has_info("acv_glavkom") and
  837. has_info("acv_gluhar") and
  838. has_info("acv_gudvin") and
  839. has_info("acv_bond") and
  840. has_info("acv_dergach") and
  841. has_info("acv_jigit") and
  842. has_info("acv_zavhoz") and
  843. has_info("acv_zoolog") and
  844. has_info("acv_cowboy") and
  845. has_info("acv_commandos") and
  846. has_info("acv_korotishka") and
  847. has_info("acv_costumer") and
  848. has_info("acv_laborant") and
  849. has_info("acv_luchnik") and
  850. has_info("acv_meloman") and
  851. has_info("acv_volonter") and
  852. has_info("acv_modeller") and
  853. has_info("acv_misucman") and
  854. has_info("acv_nevidimka") and
  855. has_info("acv_patriot") and
  856. has_info("acv_peredelkin") and
  857. has_info("acv_povstanec") and
  858. has_info("acv_podkidish") and
  859. has_info("acv_podrivnik") and
  860. has_info("acv_soldafon") and
  861. has_info("acv_smelchak") and
  862. has_info("acv_monosniper") and
  863. has_info("acv_ussrsniper") and
  864. has_info("acv_stalevar") and
  865. has_info("acv_specialist") and
  866. has_info("acv_trangira") and
  867. has_info("acv_ufolog") and
  868. has_info("acv_fantomas") and
  869. has_info("acv_hvastun") and
  870. has_info("acv_hichnik") and
  871. has_info("acv_chistula") and
  872. has_info("acv_shekunchik") and
  873. has_info("acv_estet") and
  874. has_info("acv_avstriez") and
  875. has_info("acv_likvidator") and
  876. has_info("acv_vlastelin_kolez") and
  877. has_info("acv_baraholez") and
  878. has_info("acv_bodyguard") and
  879. has_info("acv_anticollector") and
  880. has_info("acv_doublet")
  881. then
  882. give_info("acv_newgame")
  883. send_archievement("acv_newgame")
  884. end
  885. end
  886.  
  887. local foods = {
  888. ["kolbasa"] = true,
  889. ["conserva"] = true,
  890. ["bread"] = true,
  891. ["sandwich"] = true,
  892. ["sweetness"] = true
  893. }
  894. local params = {}
  895.  
  896. -- получение подсчитываемого предмета
  897. function on_receive_count_item(obj)
  898. local section = obj:section()
  899.  
  900. if (not foods[section] and
  901. section ~= "vodka" and
  902. section ~= "af_buliz" and
  903. not isMagazinedWeapon(obj))
  904. or
  905. (has_info("acv_food") and
  906. has_info("acv_vodka") and
  907. has_info("acv_buliz") and
  908. has_info("acv_weapon"))
  909. then return end
  910.  
  911. params.food = 0
  912. params.vodka = 0
  913. params.buliz = 0
  914. params.wpn = 0
  915.  
  916. db.actor:iterate_inventory_simple(function(item)
  917. params.sect = item:section()
  918. if foods[params.sect] then
  919. params.food = params.food+1
  920. elseif params.sect == "vodka" then
  921. params.vodka = params.vodka+1
  922. elseif params.sect == "af_buliz" then
  923. params.buliz = params.buliz+1
  924. elseif isMagazinedWeapon(item) then
  925. params.wpn = params.wpn+1
  926. end
  927. end)
  928.  
  929. if not has_info("acv_food") and params.food >= 200 then
  930. give_info("acv_food")
  931. send_archievement("acv_food")
  932. elseif not has_info("acv_vodka") and params.vodka >= 300 then
  933. give_info("acv_vodka")
  934. send_archievement("acv_vodka")
  935. elseif not has_info("acv_buliz") and params.buliz >= 40 then
  936. give_info("acv_buliz")
  937. send_archievement("acv_buliz")
  938. elseif not has_info("acv_weapon") and params.wpn >= 100 then
  939. give_info("acv_weapon")
  940. send_archievement("acv_weapon")
  941. end
  942.  
  943. params = {}
  944. end
  945.  
  946. function send_archievement(text)
  947. timer("send_archievement", 2.5, "archievements.send_archievement_chunk(\""..translate(text).."\")")
  948. end
  949. function send_archievement_chunk(text)
  950. local acv_text = "%c[255,255,255,0]"..translate("new_acv").."\\n%c[255,255,185,0]"..text
  951. db.actor:give_game_news(acv_text, "ui\\ui_iconsTotal", Frect():set(747,517,83,47), 0, 20000)
  952. voice([[device\pda\pda_objective]]):play(db.actor, 0, sound_object.s2d)
  953.  
  954. local acv_hud = hud:AddCustomStatic("main_task", true)
  955. acv_hud:wnd():SetTextST(acv_text)
  956. acv_hud.m_endTime = time_global()/1000+10
  957. acv_count_event("acv_acv", 100, "acv_acv")
  958. end
  959.  
  960. function send_umer_info(obj)
  961. local npc_name = get_npc_name(obj)
  962.  
  963. amk.send_tip("%c[255,255,0,0]"..translate("dead_stalk")..npc_name.."%c[default]", translate("name_lokalnaya_set"), 0, 15, "questman_death", "questman_death")
  964. local acv_hud = hud:AddCustomStatic("main_task", true)
  965. acv_hud:wnd():SetTextST("%c[255,255,0,0]"..translate("stalk_died")..":\\n"..npc_name)
  966. acv_hud.m_endTime = time_global()/1000+10
  967.  
  968. give_info("acv_umer")
  969. end
  970. function get_npc_name(obj)
  971. local tbl = netpacket:get(obj)
  972. return tbl.checked_characters
  973. end
  974.  
  975. function mm_opt()
  976. if game_is_running() then
  977. give_info("mm_opt")
  978. end
  979. timer("mm_opt", 0.2)
  980. end
  981.  
  982.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement