Guest User

Untitled

a guest
Apr 26th, 2018
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.62 KB | None | 0 0
  1.  
  2. ////////////////////////////////////////////////////////////
  3. //////////////////////includes//////////////////////////////
  4. ////////////////////////////////////////////////////////////
  5.  
  6. INCLUDE StdLib/npc.l2c
  7. INCLUDE StdLib/inventory.l2c
  8.  
  9. ////////////////////////////////////////////////////////////
  10. ////////////////////////events//////////////////////////////
  11. ////////////////////////////////////////////////////////////
  12.  
  13. SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" SystemMessage 98
  14. SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" cancel_trade 112
  15. SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" cancel_party 57
  16. SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" cancel_clan 44
  17.  
  18. ////////////////////////////////////////////////////////////
  19. ////////////////////////arrays//////////////////////////////
  20. ////////////////////////////////////////////////////////////
  21.  
  22. DEFINE_GLOBAL ARRAYLIST ALL_MOBLIST 0
  23. DEFINE_GLOBAL SORTEDLIST AGGRO_MOBLIST 0
  24. DEFINE_GLOBAL SORTEDLIST RANGE_MOBLIST 0
  25.  
  26. ////////////////////////////////////////////////////////////
  27. //////////////////////////vars//////////////////////////////
  28. ////////////////////////////////////////////////////////////
  29.  
  30. DEFINE_GLOBAL INT TIMEOUT 0
  31. DEFINE_GLOBAL INT FARM 1 // 1=farm; 0=dontfarm
  32. DEFINE_GLOBAL INT StartTime 0
  33. DEFINE_GLOBAL INT EndTime 7200
  34. DEFINE_GLOBAL INT RunTime 0
  35. DEFINE_GLOBAL INT TempTime 0
  36. DEFINE_GLOBAL STRING NICK_ONE "FromZeroo"
  37. DEFINE_GLOBAL STRING NICK_TWO "WindTard"
  38. DEFINE_GLOBAL INT CANT_SEE 0 // 0=can see; 1=cant see (recieved from event)
  39. DEFINE_GLOBAL INT MOB_DIST 0
  40. DEFINE_GLOBAL INT NPC_DIST 0
  41. DEFINE_GLOBAL INT MOB_DIST_LOOPZ 0
  42. DEFINE_GLOBAL STRING MOB_DIST_STRING ""
  43. DEFINE_GLOBAL INT MAX_MOB_DIST 2300
  44. DEFINE_GLOBAL INT CAN_ATTACK 0
  45. DEFINE_GLOBAL INT ATTACK_SUBJECT 0
  46. DEFINE_GLOBAL INT MOB_DEAD 0
  47. DEFINE_GLOBAL INT SUBJECT_AGGRO 0
  48. DEFINE_GLOBAL INT ARCANE_ON 0 // 0=off; 1=on
  49. DEFINE_GLOBAL INT DEATHS 0
  50. DEFINE_GLOBAL INT DEATH_MSG 0
  51. DEFINE_GLOBAL INT LOC 0
  52. DEFINE_GLOBAL INT PERCENT_HP 0
  53. DEFINE_GLOBAL INT DANGER_HP 0
  54. DEFINE_GLOBAL INT MINDIST 50
  55. DEFINE_GLOBAL INT TDIST 150
  56. DEFINE_GLOBAL INT X 0
  57. DEFINE_GLOBAL INT y 0
  58. DEFINE_GLOBAL INT z 0
  59. DEFINE_GLOBAL INT X_STORE 0
  60. DEFINE_GLOBAL INT Y_STORE
  61. DEFINE_GLOBAL INT Z_STORE
  62. DEFINE_GLOBAL STRING TITLE_AVOID "Mantra Master"
  63. //for antidisarm
  64. DEFINE_GLOBAL STRING WEAPON "Icarus Spirit" //name of weapon, only have 1 in inv
  65.  
  66. DEFINE_GLOBAL STRING USE_ME ""
  67. DEFINE_GLOBAL STRING TEMP ""
  68. DEFINE_GLOBAL ARRAYLIST INV_LIST 0
  69.  
  70.  
  71. ////////////////////////////////////////////////////////////
  72. ////////////////////MAIN_SCRIPT/////////////////////////////
  73. ////////////////////////////////////////////////////////////
  74.  
  75. GET_TIME StartTime
  76. PERCENT_HP = CHAR_MAX_HP / #i100
  77. DANGER_HP = PERCENT_HP * #i60
  78. ////PRINT_TEXT "critical HP is <&DANGER_HP&>"
  79. SLEEP 1000
  80. DEATHS = ZERO
  81.  
  82. DO
  83. CALLSUB DETECT_AGGRO_MOBS
  84. SLEEP 100
  85. CALLSUB DETECT_RANGE_MOBS
  86. SLEEP 100
  87. CALLSUB DESTROY_AGGRO_MOBS
  88. SLEEP 100
  89. CALLSUB DESTROY_RANGE_MOBS
  90. SLEEP 100
  91. LOOP CHAR_CUR_HP != ZERO
  92. SLEEP 1000
  93. TAP_TO TOWN
  94. SCRIPT_END
  95.  
  96. ////////////////////////////////////////////////////////////
  97. /////////////////////functions//////////////////////////////
  98. ////////////////////////////////////////////////////////////
  99.  
  100. FUNCTION SystemMessage
  101. DEFINE INT PacketType 0
  102. DEFINE INT MsgID 0
  103. DEFINE INT typesCount 0
  104.  
  105. PACKET.READ_BYTE PacketType
  106. PACKET.READ_INT32 MsgID
  107. PACKET.READ_INT32 typesCount
  108.  
  109.  
  110. IF MsgID == #i181
  111. ////PRINT_TEXT ">>>> recieved cantsee_sysmsg"
  112. CANT_SEE = ONE
  113. ENDIF
  114. RETURN VOID
  115.  
  116. ////////////////////////////////////////////////////////////
  117. ////////////////////////////////////////////////////////////
  118.  
  119.  
  120. FUNCTION CONVERT_DIST 2 INTVALUE STRLENGTH
  121. DEFINE STRING RETURNSTRING "<&INTVALUE&>"
  122. DEFINE INT REST 0
  123. REST = STRLENGTH - RETURNSTRING.LENGTH
  124. FOR I 0 "<&REST&>" 1
  125. RETURNSTRING = "#$0<&RETURNSTRING&>"
  126. NEXT
  127.  
  128. RETURN RETURNSTRING
  129.  
  130. ////////////////////////////////////////////////////////////
  131. ////////////////////////////////////////////////////////////
  132.  
  133. FUNCTION MOVER 3 X Y Z
  134. DISTANCE TDIST X Y Z CHAR_X CHAR_Y CHAR_Z
  135. IF CHAR_CUR_HP < ONE
  136. TDIST = ZERO
  137. ENDIF
  138. WHILE TDIST > MINDIST
  139. MOVE_TO "<&X&>" "<&Y&>" "<&Z&>"
  140. SLEEP 100
  141. DISTANCE TDIST X Y Z CHAR_X CHAR_Y CHAR_Z
  142. //PRINT_TEXT "TDIST = <&TDIST&>"
  143.  
  144. IF CHAR_CUR_HP < ONE
  145. TDIST = ZERO
  146. ENDIF
  147. WEND
  148. RETURN VOID
  149.  
  150. ////////////////////////////////////////////////////////////
  151. ////////////////////////////////////////////////////////////
  152.  
  153. FUNCTION cancel_trade
  154. //PRINT_TEXT "recieved trade invite ..."
  155. SLEEP 2000
  156. //PRINT_TEXT "cancelling trade invite ..."
  157. INJECT "55 00 00 00 00"
  158. SLEEP 1000
  159. RETURN VOID
  160. FUNCTION cancel_party
  161. //PRINT_TEXT "recieved party invite ..."
  162. SLEEP 2000
  163. //PRINT_TEXT "cancelling party invite ..."
  164. INJECT "43 00 00 00 00"
  165. SLEEP 1000
  166. RETURN VOID
  167. FUNCTION cancel_clan
  168. //PRINT_TEXT "recieved clan invite ..."
  169. SLEEP 2000
  170. //PRINT_TEXT "cancelling clan invite ..."
  171. INJECT "27 00 00 00 00"
  172. SLEEP 1000
  173. RETURN VOID
  174.  
  175. ////////////////////////////////////////////////////////////
  176. ////////////////////////////////////////////////////////////
  177.  
  178. FUNCTION CHECKEQ
  179.  
  180. FOREACH I Inventory INV_LIST
  181.  
  182. IF INV_LIST.I.NAME == "#$<&WEAPON&>"
  183. IF INV_LIST.I.EQUIPPED == #i0
  184. //PRINT_TEXT "Equipping <&WEAPON&>"
  185. TEMP = INV_LIST.I.ID.GET_HEX32
  186. USE_ME = "#$19 <&TEMP&> 00 00 00 00"
  187. INJECT "<&USE_ME&>"
  188. ENDIF
  189. ENDIF
  190.  
  191. ////PRINT_TEXT "Name:<&INV_LIST.I.NAME&>|ObjID:<&INV_LIST.I.ID&>|Equip:<&INV_LIST.I.EQUIPPED&>"
  192. NEXTEACH
  193.  
  194. RETURN VOID
  195.  
  196. ////////////////////////////////////////////////////////////
  197. //////////////////////////subs//////////////////////////////
  198. ////////////////////////////////////////////////////////////
  199.  
  200. SUB DETECT_AGGRO_MOBS
  201. ALL_MOBLIST.CLEAR
  202. AGGRO_MOBLIST.CLEAR
  203. GET_NPCS ALL_MOBLIST
  204. //PRINT_TEXT ""
  205. //PRINT_TEXT ""
  206. //PRINT_TEXT "================================="
  207. //PRINT_TEXT "================================="
  208. //PRINT_TEXT "!!!!!<&ALL_MOBLIST.COUNT&> NPC detected!!!!!"
  209. //PRINT_TEXT "================================="
  210. //PRINT_TEXT "================================="
  211. //PRINT_TEXT "!!!!! detecting AGGRO mobs !!!!!!"
  212. //PRINT_TEXT "================================="
  213. //PRINT_TEXT ""
  214. //PRINT_TEXT ""
  215. FOREACH A NPC ALL_MOBLIST
  216. IF ALL_MOBLIST.A.TARGET_ID == CHAR_ID
  217. DISTANCE MOB_DIST CHAR_X CHAR_Y CHAR_Z ALL_MOBLIST.A.X ALL_MOBLIST.A.Y ALL_MOBLIST.A.Z
  218. CONVERT_DIST MOB_DIST_STRING 2 MOB_DIST #i6
  219. AGGRO_MOBLIST.ADD ALL_MOBLIST.A.ID "<&MOB_DIST_STRING&>"
  220. ENDIF
  221. NEXTEACH
  222.  
  223. //PRINT_TEXT "...<&AGGRO_MOBLIST.COUNT&> AGGRO mobs detected..."
  224. //PRINT_TEXT "================================="
  225. //PRINT_TEXT "================================="
  226. RETURNSUB
  227.  
  228. ////////////////////////////////////////////////////////////
  229. ////////////////////////////////////////////////////////////
  230.  
  231. SUB DETECT_RANGE_MOBS
  232. ALL_MOBLIST.CLEAR
  233. RANGE_MOBLIST.CLEAR
  234. GET_NPCS ALL_MOBLIST
  235. //PRINT_TEXT ""
  236. //PRINT_TEXT ""
  237. //PRINT_TEXT "================================="
  238. //PRINT_TEXT "================================="
  239. //PRINT_TEXT "!!!!!<&ALL_MOBLIST.COUNT&> NPCs detected!!!!!"
  240. //PRINT_TEXT "================================="
  241. //PRINT_TEXT "================================="
  242. //PRINT_TEXT "!!!!! detecting RANGE mobs !!!!!!"
  243. //PRINT_TEXT "================================="
  244. //PRINT_TEXT ""
  245. //PRINT_TEXT ""
  246. FOREACH B NPC ALL_MOBLIST
  247. IF ALL_MOBLIST.B.ATTACKABLE == ONE
  248. IF ALL_MOBLIST.B.TITLE != TITLE_AVOID
  249. DISTANCE MOB_DIST CHAR_X CHAR_Y CHAR_Z ALL_MOBLIST.B.X ALL_MOBLIST.B.Y ALL_MOBLIST.B.Z
  250. IF MOB_DIST <= MAX_MOB_DIST
  251. CONVERT_DIST MOB_DIST_STRING 2 MOB_DIST #i6
  252. RANGE_MOBLIST.ADD ALL_MOBLIST.B.ID "<&MOB_DIST_STRING&>"
  253. ENDIF
  254. ENDIF
  255. ENDIF
  256. NEXTEACH
  257.  
  258. //PRINT_TEXT "...<&RANGE_MOBLIST.COUNT&> RANGE mobs detected..."
  259. //PRINT_TEXT "================================="
  260. //PRINT_TEXT "================================="
  261. RETURNSUB
  262.  
  263. ////////////////////////////////////////////////////////////
  264. ////////////////////////////////////////////////////////////
  265.  
  266. SUB //PRINT_AGGRO_MOBS
  267. //PRINT_TEXT "AGGRO MOBLIST ARRAY:COUNT:<&AGGRO_MOBLIST.COUNT&>"
  268. FOREACH C INT AGGRO_MOBLIST
  269. //PRINT_TEXT "index:<&C&> ID:<&AGGRO_MOBLIST.C&> range:<&AGGRO_MOBLIST.GET_KEY C&>"
  270. NEXTEACH
  271. //PRINT_TEXT "end of AGGRO moblist //PRINT"
  272. RETURNSUB
  273.  
  274. ////////////////////////////////////////////////////////////
  275. ////////////////////////////////////////////////////////////
  276.  
  277. SUB //PRINT_RANGE_MOBS
  278. //PRINT_TEXT "RANGE MOBLIST ARRAY:COUNT:<&RANGE_MOBLIST.COUNT&>"
  279. FOREACH D INT RANGE_MOBLIST
  280. //PRINT_TEXT "index:<&D&> ID:<&RANGE_MOBLIST.D&> range:<&RANGE_MOBLIST.GET_KEY D&>"
  281. NEXTEACH
  282. //PRINT_TEXT "end of RANGE moblist //PRINT"
  283. RETURNSUB
  284.  
  285. ////////////////////////////////////////////////////////////
  286. ////////////////////////////////////////////////////////////
  287.  
  288. SUB DESTROY_AGGRO_MOBS
  289. MOB_DEAD = ZERO
  290. FOREACH C INT AGGRO_MOBLIST
  291.  
  292. //PRINT_TEXT "targetting <&AGGRO_MOBLIST.C&>"
  293. ATTACK_SUBJECT = AGGRO_MOBLIST.C
  294. SUBJECT_AGGRO = ONE
  295. CALLSUB ATTACK_SPH
  296. NEXTEACH
  297. RETURNSUB
  298.  
  299. ////////////////////////////////////////////////////////////
  300. ////////////////////////////////////////////////////////////
  301.  
  302. SUB DESTROY_RANGE_MOBS
  303. IF MOB_DEAD == ZERO
  304. FOREACH D INT RANGE_MOBLIST
  305.  
  306. IF MOB_DEAD == ZERO
  307. //PRINT_TEXT "targetting <&RANGE_MOBLIST.D&>"
  308. ATTACK_SUBJECT = RANGE_MOBLIST.D
  309. SUBJECT_AGGRO = ZERO
  310. CALLSUB ATTACK_SPH
  311. ENDIF
  312. NEXTEACH
  313. ENDIF
  314. RETURNSUB
  315.  
  316. ////////////////////////////////////////////////////////////
  317. ////////////////////////////////////////////////////////////
  318.  
  319. SUB ATTACK_SPH
  320. CANT_SEE = ZERO
  321. CAN_ATTACK = ZERO
  322. //PRINT_TEXT "attacking subject: <&ATTACK_SUBJECT&> ..."
  323. TARGET "<&ATTACK_SUBJECT&>"
  324. SLEEP 100
  325. IF TARGET_ID != ATTACK_SUBJECT
  326. TARGET "<&ATTACK_SUBJECT&>"
  327. SLEEP 100
  328. //PRINT_TEXT "retargetting at begin of atk ..."
  329. ENDIF
  330. IF TARGET_CUR_HP == ZERO
  331. CAN_ATTACK = ONE
  332. //PRINT_TEXT "its dead ... HP <&TARGET_CUR_HP&>/<&TARGET_MAX_HP&> "
  333. ENDIF
  334. IF SUBJECT_AGGRO == ZERO
  335. IF TARGET_CUR_HP != TARGET_MAX_HP
  336. CAN_ATTACK = ONE
  337. IF TARGET_CUR_HP > ZERO
  338. //PRINT_TEXT "we wont KS ..."
  339. ENDIF
  340. ENDIF
  341. ENDIF
  342.  
  343. IF CAN_ATTACK == ZERO
  344. DISTANCE MOB_DIST CHAR_X CHAR_Y CHAR_Z TARGET_X TARGET_Y TARGET_Z
  345. MOB_DIST_LOOPZ = ZERO
  346. WHILE MOB_DIST > #i900
  347. MOB_DIST_LOOPZ = MOB_DIST_LOOPZ + ONE
  348. //PRINT_TEXT "...comming:(loop <&MOB_DIST_LOOPZ&>)"
  349. IF MOB_DIST_LOOPZ == ONE
  350. X_STORE = CHAR_X
  351. Y_STORE = CHAR_Y
  352. Z_STORE = CHAR_Z
  353. //PRINT_TEXT "storing values: <&X_STORE&>;<&Y_STORE&>;<&Z_STORE&>"
  354. ENDIF
  355. ATTACK_TARGET
  356. SLEEP 250
  357. DISTANCE MOB_DIST CHAR_X CHAR_Y CHAR_Z TARGET_X TARGET_Y TARGET_Z
  358. IF MOB_DIST_LOOPZ == #i20
  359. //PRINT_TEXT "comparing stored values: <&X_STORE&>;<&Y_STORE&>;<&Z_STORE&> vs current: <&CHAR_X&>;<&CHAR_Y&>;<&CHAR_Z&>"
  360. IF X_STORE == CHAR_X
  361. IF Y_STORE == CHAR_Y
  362. IF Z_STORE == CHAR_Z
  363. //PRINT_TEXT "still jerked, canceling loop"
  364. MOB_DIST = ZERO
  365. CAN_ATTACK = ONE
  366. ENDIF
  367. ENDIF
  368. ENDIF
  369. MOB_DIST_LOOPZ = ZERO
  370. ENDIF
  371. IF CANT_SEE == ONE
  372. MOB_DIST = ZERO
  373. CAN_ATTACK = ONE
  374. ENDIF
  375. WEND
  376. ENDIF
  377.  
  378. IF CAN_ATTACK == ZERO
  379. USE_SKILL 1074 //surrender to wind
  380. SLEEP 300
  381. ENDIF
  382. IF CANT_SEE == ONE
  383. CAN_ATTACK = ONE
  384. SLEEP 100
  385. ENDIF
  386. IF CAN_ATTACK == ZERO
  387. IF ARCANE_ON == ZERO
  388. SLEEP 200
  389. USE_SKILL 337 //arcane power turn on
  390. SLEEP 200
  391. ARCANE_ON = ONE
  392. ENDIF
  393. ENDIF
  394. IF CAN_ATTACK == ZERO
  395. USE_SKILL 1343 //dark vortex 1341=wind vortex
  396. SLEEP 200
  397. ENDIF
  398. IF CANT_SEE == ONE
  399. CAN_ATTACK = ONE
  400. SLEEP 100
  401. ENDIF
  402.  
  403. WHILE CAN_ATTACK == ZERO
  404. IF TARGET_ID != ATTACK_SUBJECT
  405. TARGET "<&ATTACK_SUBJECT&>"
  406. //PRINT_TEXT "retargetting in the loop"
  407. ENDIF
  408. IF CHAR_CUR_HP <= DANGER_HP
  409. USE_SKILL 1343 //dark vortex 1341=wind vortex
  410. SLEEP 200
  411. ENDIF
  412. USE_SKILL 1234 //vampiric
  413. SLEEP 200
  414. USE_SKILL 1239 //hurricane
  415. SLEEP 200
  416. IF CANT_SEE == ONE
  417. CAN_ATTACK = ONE
  418. ENDIF
  419. IF TARGET_CUR_HP == ZERO
  420. CAN_ATTACK = ONE
  421. MOB_DEAD = ONE
  422. ENDIF
  423. IF CHAR_CUR_HP == ZERO
  424. CAN_ATTACK = ONE
  425. ENDIF
  426. GET_INVENTORY INV_LIST
  427. SLEEP 100
  428. CALL CHECKEQ
  429. SLEEP 100
  430. WEND
  431. IF MOB_DEAD == ONE
  432. IF CHAR_CUR_HP <= DANGER_HP
  433. USE_SKILL 1151 //corpse life drain
  434. SLEEP 100
  435. ENDIF
  436. ENDIF
  437. IF ARCANE_ON == ONE
  438. SLEEP 200
  439. USE_SKILL 337 //arcane power turn off
  440. SLEEP 200
  441. ARCANE_ON = ZERO
  442. ENDIF
  443. RETURNSUB
  444.  
  445. ////////////////////////////////////////////////////////////
  446. ////////////////////////////////////////////////////////////
Add Comment
Please, Sign In to add comment