Jump to content

Recommended Posts

Posted

Auto-Enchant script

 

For Gracia1-2-Final (i use version L2NET v.371) UDPATE!

 

INCLUDE StdLib\inventory.l2c

// ===================================================================================================================

// START OF EDITING PART (YOU SHOULD CHANGE THE SETTINGS FROM BELOW TO YOUR NEEDS)

// ===================================================================================================================

DEFINE_GLOBAL STRING item_name "Striped Mithril Shirt"        // Here you need to change with what item you want to enchant

DEFINE_GLOBAL STRING normal_enchant_name "Scroll: Enchant Armor (S)"        // The exact name of your normal enchant scroll

DEFINE_GLOBAL STRING blessed_enchant_name "Blessed Scroll: Enchant Armor (S)"        // The exact name of you blessed enchant scroll(only for blessed enchants)

DEFINE_GLOBAL INT type_of_enchanting 6    // The method of enchanting you want set from 1-7 (see below):

        // 1 - Normal enchant each One by One;

        // 2 - Normal enchant each One to Top;

        // 3 - Blessed enchant only one item;

        // 4 - Blessed enchant each One to Top;

        // 5 - Blessed enchant each One by One an keep the highest;

        // 6 - Normal enchant each One by One and stop to Top;

        // 7 - Blessed enchant each One by One and stop to Top;

                                             

DEFINE_GLOBAL INT keep_items_num 1        // How meny items you want to keep when enchanting One by One (for One by One enchanting + blessed)

DEFINE_GLOBAL INT enchant_to_top 16        // The top level witch enchantig should stop at (for One to Top enchanting + blessed)

DEFINE_GLOBAL INT enchant_safe 5        // Safe enchant level on witch normal anchant stop and continues with blessed (for Blessed enchanting)

DEFINE_GLOBAL INT min_little_delay 120        // min_little_delay should be always lower than max_little_delay - these two are for random delay between the values.

DEFINE_GLOBAL INT max_little_delay 220        // max_little_delay should be always higher than main_little_delay - this two will add some delay so carefull what you set.

// ===================================================================================================================

// END OF EDITING PART (DON'T CHANGE NOTHING FROM BELOW)

// ===================================================================================================================

//  

// TEMP Auto Enchant IS temporary solution - have 7 methods of enchanting and is safe for auto kick

//                                                                   (don't cancel the enchant window when ingame)

// Fully working with L2NET v37x and on L2J Gracia Final (ct2.3) servers.

//

// special thanks to: slothmo, mpj123, rocket666, easy2k4, trixy and everybody working for l2net project

// made by iosc

// ===================================================================================================================

// ===================================================================================================================

DEFINE_GLOBAL INT min_delay 2118

DEFINE_GLOBAL INT max_delay 2333

DEFINE_GLOBAL INT rand_delay 0

DEFINE_GLOBAL INT some_loop 0

DEFINE_GLOBAL INT item_uid 0

DEFINE_GLOBAL INT enchant_result 9999

DEFINE_GLOBAL INT n_scroll_id 0

DEFINE_GLOBAL INT b_scroll_id 0

DEFINE_GLOBAL INT n_scrolls_count 0

DEFINE_GLOBAL INT b_scrolls_count 0

DEFINE_GLOBAL Inventory n_enchant_scroll 0

DEFINE_GLOBAL Inventory b_enchant_scroll 0

DEFINE_GLOBAL ARRAYLIST full_inventory 0

DEFINE_GLOBAL ARRAYLIST remove_uid 0

ITEM_GET_ID n_scroll_id "<&normal_enchant_name&>"

ITEM_GET_ID b_scroll_id "<&blessed_enchant_name&>"

GET_INVENTORY full_inventory

PRINT_TEXT "10 seconds ========================"

PRINT_TEXT "== Temp Auto Enchant Script"

PRINT_TEXT "================================"

SLEEP 1000

ITEM_COUNT n_scrolls_count "<&n_scroll_id&>"

ITEM_COUNT b_scrolls_count "<&b_scroll_id&>"

FOREACH x Inventory full_inventory

   IF full_inventory.x.name == normal_enchant_name

       n_enchant_scroll = full_inventory.x

   ENDIF

   IF full_inventory.x.name == blessed_enchant_name

       b_enchant_scroll = full_inventory.x

   ENDIF

NEXTEACH

IF n_scrolls_count == ONE

   PRINT_TEXT "You don't have <&normal_enchant_name&>"

   JUMP_TO_LABEL THE_END

ENDIF

SWITCH type_of_enchanting

   CASE #i3

   CASE #i4

   CASE #i5

   CASE #i7

       IF b_scrolls_count == ONE

           PRINT_TEXT "You don't have <&blessed_enchant_name&>"

           JUMP_TO_LABEL THE_END

       ENDIF

       BREAK 1

   DEFAULT

       BREAK 1

ENDSWITCH

SWITCH type_of_enchanting

   CASE #i1

       PRINT_TEXT "== "

       PRINT_TEXT "== You chosed the One by One method"

       PRINT_TEXT "== Enchanting: <&item_name&>"

       PRINT_TEXT "== Keeping: <&keep_items_num&>"

       PRINT_TEXT "== "

       PRINT_TEXT "9 seconds ========================="

       SLEEP 9000

       CALL EnchantEachOnebyOne

       BREAK 1

   CASE #i2

       PRINT_TEXT "== "

       PRINT_TEXT "== You chosed the One to Top method"

       PRINT_TEXT "== Enchanting: <&item_name&>"

       PRINT_TEXT "== Enchant till: +<&enchant_to_top&>"

       PRINT_TEXT "== "

       PRINT_TEXT "9 seconds ========================="

       SLEEP 9000

       CALL EnchantEachOnetoTop

       BREAK 1

   CASE #i3

       PRINT_TEXT "== "

       PRINT_TEXT "== You chosed Blessed Enchant one item"

       PRINT_TEXT "== Enchanting: <&item_name&>"

       PRINT_TEXT "== Enchant till: +<&enchant_to_top&>"

       PRINT_TEXT "== Safe enchant is set to: +<&enchant_safe&>"

       PRINT_TEXT "== "

       PRINT_TEXT "9 seconds ========================="

       SLEEP 9000

       CALL BlessedEnchantOne

       BREAK 1

   CASE #i4

       PRINT_TEXT "== "

       PRINT_TEXT "== You chosed Blessed Enchant each One to Top"

       PRINT_TEXT "== Enchanting: <&item_name&>"

       PRINT_TEXT "== Enchant till: +<&enchant_to_top&>"

       PRINT_TEXT "== Safe enchant is set to: +<&enchant_safe&>"

       PRINT_TEXT "== "

       PRINT_TEXT "9 seconds ========================="

       SLEEP 9000

       CALL EnchantEachOnetoTop

       BREAK 1

   CASE #i5

       PRINT_TEXT "== "

       PRINT_TEXT "== You chosed Blessed Enchant each One by One"

       PRINT_TEXT "== Enchanting: <&item_name&>"

       PRINT_TEXT "== Keep enchanted: <&keep_items_num&>"

       PRINT_TEXT "== Safe enchant is set to: +<&enchant_safe&>"

       PRINT_TEXT "== "

       PRINT_TEXT "9 seconds ========================="

       SLEEP 9000

       CALL EnchantEachOnebyOne

       BREAK 1

   CASE #i6

       PRINT_TEXT "== "

       PRINT_TEXT "== You chosed each One by One and stop to Top"

       PRINT_TEXT "== Enchanting: <&item_name&>"

       PRINT_TEXT "== Keep - <&keep_items_num&> - items or stop to +<&enchant_to_top&>"

       PRINT_TEXT "== "

       PRINT_TEXT "9 seconds ========================="

       SLEEP 9000

       CALL EnchantEachOnebyOne

       BREAK 1

   CASE #i7

       PRINT_TEXT "== "

       PRINT_TEXT "== You chosed Blessed - One by One and stop to Top"

       PRINT_TEXT "== Enchanting: <&item_name&>"

       PRINT_TEXT "== Enchant till: +<&enchant_to_top&>"

       PRINT_TEXT "== "

       PRINT_TEXT "9 seconds ========================="

       SLEEP 9000

       CALL EnchantEachOnebyOne

       BREAK 1

   DEFAULT

       PRINT_TEXT "Bad option chosen at Type of Enchant"

ENDSWITCH

LABEL THE_END

GET_RAND rand_delay "<&min_little_delay&>" "<&max_little_delay&>"

SLEEP "<&rand_delay&>"

full_inventory.clear

GET_INVENTORY full_inventory

CALL RemoveFromInv

PRINT_TEXT "==============================="

PRINT_TEXT "== Thanks for using Temp Auto Enchant Script =="

PRINT_TEXT "==============================="

FOREACH x Inventory full_inventory

   IF full_inventory.x.name == item_name

       PRINT_TEXT "==  <&item_name&> +<&full_inventory.x.enchant&>"

   ENDIF

NEXTEACH

PRINT_TEXT "=======================iosc======"

END_SCRIPT

FUNCTION EnchantEachOnebyOne

   DEFINE ARRAYLIST current_items 0

   

   DEFINE INT total_items 0

   DEFINE INT enchanting_level 0

   DEFINE INT lag_flag1 0

   DEFINE INT lag_flag2 0

   DEFINE INT lag_flag6 0

   DEFINE INT bless_start 0

   LABEL A_FLAGS

   current_items.clear

   full_inventory.clear

   GET_INVENTORY full_inventory

   CALL RemoveFromInv

   enchanting_level = #i65535

   total_items = ZERO

   ITEM_COUNT n_scrolls_count "<&n_scroll_id&>"

   ITEM_COUNT b_scrolls_count "<&b_scroll_id&>"

   

   IF ( type_of_enchanting == #i5 ) && ( bless_start == ONE )

       FOREACH x Inventory full_inventory

           IF ( full_inventory.x.name == item_name ) && ( full_inventory.x.enchant > ZERO )

               total_items = total_items + ONE

               IF  full_inventory.x.enchant < enchanting_level

                   enchanting_level = full_inventory.x.enchant

               ENDIF

           ENDIF

       NEXTEACH

   ELSE

       IF type_of_enchanting == #i6

           

           FOREACH x Inventory full_inventory

               IF full_inventory.x.name == item_name

                   total_items = total_items + ONE

                   IF (full_inventory.x.enchant < enchanting_level) && ( full_inventory.x.enchant < enchant_to_top )

                       enchanting_level = full_inventory.x.enchant

                   ENDIF

               ENDIF

           NEXTEACH

       ELSE

           IF type_of_enchanting == #i7

               FOREACH x Inventory full_inventory

                   IF full_inventory.x.name == item_name

                       IF ( full_inventory.x.enchant < enchanting_level ) && ( full_inventory.x.enchant < enchant_to_top )

                           enchanting_level = full_inventory.x.enchant

                       ENDIF

                   ENDIF

               NEXTEACH

           ELSE

               FOREACH x Inventory full_inventory

                   IF full_inventory.x.name == item_name

                       total_items = total_items + ONE

                       IF full_inventory.x.enchant < enchanting_level

                           enchanting_level = full_inventory.x.enchant

                       ENDIF

                   ENDIF

               NEXTEACH

           ENDIF

       ENDIF

   ENDIF

   FOREACH x Inventory full_inventory

       IF full_inventory.x.name == item_name

           IF full_inventory.x.enchant == enchanting_level

               current_items.ADD full_inventory.x.id

           ENDIF

       ENDIF

   NEXTEACH

   IF current_items.count == ZERO

       lag_flag1 = lag_flag1 + ONE

       IF lag_flag1 == #i3

           PRINT_TEXT "No more items to echant."

           JUMP_TO_LABEL THE_END

       ENDIF

       JUMP_TO_LABEL A_FLAGS

       lag_flag1 = ZERO

   ENDIF

   FOREACH y INT current_items

       IF type_of_enchanting != #i7

           IF total_items <= keep_items_num

               lag_flag1 = lag_flag1 + ONE

               IF lag_flag1 == #i3

                   PRINT_TEXT "We are done here. Your items number is <&total_items&>"

                   JUMP_TO_LABEL THE_END

               ENDIF

               JUMP_TO_LABEL A_FLAGS

           ENDIF

       ENDIF

       IF n_scrolls_count == ONE

           lag_flag2 = lag_flag2 + ONE

           IF lag_flag2 == #i3

               PRINT_TEXT "You are out of <&normal_enchant_name&>"

               JUMP_TO_LABEL THE_END

           ENDIF

           JUMP_TO_LABEL A_FLAGS

       ENDIF

       IF ( type_of_enchanting == #i5 ) || ( type_of_enchanting == #i7 )

           IF b_scrolls_count == ONE

               lag_flag6 = lag_flag6 + ONE

               IF lag_flag6 == #i3

                   PRINT_TEXT "You are out of <&blessed_enchant_name&>"

                   JUMP_TO_LABEL THE_END

               ENDIF

               JUMP_TO_LABEL A_FLAGS

           ENDIF

       ENDIF

       lag_flag1 = ZERO

       lag_flag2 = ZERO

       lag_flag6 = ZERO

       

       item_uid = current_items.y

       

       IF ( type_of_enchanting == #i5 ) || ( type_of_enchanting == #i7 )

   

           IF enchanting_level < enchant_safe

               CALL Enchanting VOID 1 n_enchant_scroll.id

           ELSE

               CALL Enchanting VOID 1 b_enchant_scroll.id

               IF type_of_enchanting == #i5

               bless_start = ONE

               ENDIF

           ENDIF

           ITEM_COUNT n_scrolls_count "<&n_scroll_id&>"

           ITEM_COUNT b_scrolls_count "<&b_scroll_id&>"

           IF enchant_result > ZERO

               IF type_of_enchanting == #i5

                   total_items = total_items - ONE

               ELSE

                   JUMP_TO_LABEL A_FLAGS

               ENDIF

               PRINT_TEXT "Enchanting <&item_name&> faild at +<&enchanting_level&>. (<&n_scrolls_count&>/<&b_scrolls_count&> scrolls left)"

           ELSE

               PRINT_TEXT "Enchanting <&item_name&> succeeded from +<&enchanting_level&>. (<&n_scrolls_count&>/<&b_scrolls_count&> scrolls left)"

           ENDIF

       ELSE

                   

           CALL Enchanting VOID 1 n_enchant_scroll.id

           

           ITEM_COUNT n_scrolls_count "<&n_scroll_id&>"

           

           IF enchant_result > ZERO

               total_items = total_items - ONE

               PRINT_TEXT "<&item_name&> was cristalized at +<&enchanting_level&>. (<&n_scrolls_count&> scrolls left)"

               remove_uid.ADD "#i<&item_uid&>"

           ELSE

               PRINT_TEXT "Enchanting <&item_name&> succeeded from +<&enchanting_level&>. (<&n_scrolls_count&> scrolls left)"

           ENDIF

       ENDIF

   NEXTEACH

   JUMP_TO_LABEL A_FLAGS

RETURN VOID

FUNCTION EnchantEachOnetoTop

   DEFINE INT enchant_level 0

   DEFINE INT lag_flag3 0

   DEFINE INT lag_flag4 0

   DEFINE INT lag_flag5 0

   LABEL B_FLAGS

   

   full_inventory.clear

   GET_INVENTORY full_inventory

   CALL RemoveFromInv

   item_uid = ZERO

   enchant_level = ZERO

   ITEM_COUNT n_scrolls_count "<&n_scroll_id&>"

   ITEM_COUNT b_scrolls_count "<&b_scroll_id&>"

   

   FOREACH x Inventory full_inventory

       IF full_inventory.x.name == item_name

           IF full_inventory.x.enchant < enchant_to_top

               item_uid = full_inventory.x.id

               enchant_level = full_inventory.x.enchant

           ENDIF

       ENDIF

   NEXTEACH

   

   IF item_uid == ZERO

       lag_flag3 = lag_flag3 + ONE

       IF lag_flag3 == #i3

           PRINT_TEXT "We are done here. No more items to enchant."

           JUMP_TO_LABEL THE_END

       ENDIF

       JUMP_TO_LABEL B_FLAGS

   ENDIF

   IF n_scrolls_count == ONE

       lag_flag4 = lag_flag4 + ONE

       IF lag_flag4 == #i3

           PRINT_TEXT "You are out of <&normal_enchant_name&>"

           JUMP_TO_LABEL THE_END

       ENDIF

       JUMP_TO_LABEL B_FLAGS

   ENDIF

   IF type_of_enchanting == #i4

       IF b_scrolls_count == ONE

           lag_flag5 = lag_flag5 + ONE

           IF lag_flag5 == #i3

               PRINT_TEXT "You are out of <&blessed_enchant_name&>"

               JUMP_TO_LABEL THE_END

           ENDIF

           JUMP_TO_LABEL B_FLAGS

       ENDIF

       lag_flag5 = ZERO

   ENDIF

   lag_flag3 = ZERO

   lag_flag4 = ZERO

   

   

   DO

       IF n_scrolls_count == ONE

           PRINT_TEXT "You are out of <&normal_enchant_name&>"

           JUMP_TO_LABEL THE_END

       ENDIF

   

       IF type_of_enchanting == #i4

           IF b_scrolls_count == ONE

               PRINT_TEXT "You are out of <&blessed_enchant_name&>"

               JUMP_TO_LABEL THE_END

           ENDIF

       

           IF enchant_level < enchant_safe

               CALL Enchanting VOID 1 n_enchant_scroll.id

           ELSE

               CALL Enchanting VOID 1 b_enchant_scroll.id

           ENDIF

           ITEM_COUNT n_scrolls_count "<&n_scroll_id&>"

           ITEM_COUNT b_scrolls_count "<&b_scroll_id&>"

           IF enchant_result > ZERO

               PRINT_TEXT "Enchanting <&item_name&> faild at +<&enchant_level&>. (<&n_scrolls_count&>/<&b_scrolls_count&> scrolls left)"

               enchant_level = ZERO

           ELSE

               enchant_level = enchant_level + ONE

               PRINT_TEXT "Enchanting <&item_name&> succeeded to +<&enchant_level&>. (<&n_scrolls_count&>/<&b_scrolls_count&> scrolls left)"

           ENDIF

       ELSE

   

           CALL Enchanting VOID 1 n_enchant_scroll.id

   

           ITEM_COUNT n_scrolls_count "<&n_scroll_id&>"

           

           IF enchant_result > ZERO

               PRINT_TEXT "<&item_name&> was cristalized at +<&enchant_level&>. (<&n_scrolls_count&> scrolls left)"

               remove_uid.ADD "#i<&item_uid&>"

               JUMP_TO_LABEL B_FLAGS

           ELSE

               enchant_level = enchant_level + ONE

               PRINT_TEXT "Enchanting <&item_name&> succeeded to +<&enchant_level&>. (<&n_scrolls_count&> scrolls left)"

           ENDIF

       

       ENDIF

   

   LOOP enchant_level < enchant_to_top

   

   JUMP_TO_LABEL B_FLAGS

RETURN VOID

FUNCTION BlessedEnchantOne

   DEFINE INT enchant_level 0

   DEFINE INT lag_flag8 0

   LABEL C_FLAGS

   

   full_inventory.clear

   GET_INVENTORY full_inventory

   item_uid = ZERO

   enchant_level = ZERO

   ITEM_COUNT n_scrolls_count "<&n_scroll_id&>"

   ITEM_COUNT b_scrolls_count "<&b_scroll_id&>"

   

   FOREACH x Inventory full_inventory

       IF full_inventory.x.name == item_name

           IF full_inventory.x.enchant < enchant_to_top

               item_uid = full_inventory.x.id

               enchant_level = full_inventory.x.enchant

           ENDIF

       ENDIF

   NEXTEACH

   

   IF item_uid == ZERO

       lag_flag8 = lag_flag8 + ONE

       IF lag_flag8 == #i3

           PRINT_TEXT "No item to enchant!"

           JUMP_TO_LABEL THE_END

       ENDIF

       JUMP_TO_LABEL C_FLAGS

   ENDIF

   lag_flag8 = ZERO

   

   DO

   

       IF n_scrolls_count == ONE

           PRINT_TEXT "You are out of <&normal_enchant_name&>"

           JUMP_TO_LABEL THE_END

       ENDIF

       IF b_scrolls_count == ONE

           PRINT_TEXT "You are out of <&blessed_enchant_name&>"

           JUMP_TO_LABEL THE_END

       ENDIF

   

       IF enchant_level < enchant_safe

           CALL Enchanting VOID 1 n_enchant_scroll.id

       ELSE

           CALL Enchanting VOID 1 b_enchant_scroll.id

       ENDIF

   

       ITEM_COUNT b_scrolls_count "<&b_scroll_id&>"

       ITEM_COUNT n_scrolls_count "<&n_scroll_id&>"

       

       IF enchant_result > ZERO

           PRINT_TEXT "Enchanting <&item_name&> faild at +<&enchant_level&>. (<&n_scrolls_count&>/<&b_scrolls_count&> scrolls left)"

           enchant_level = ZERO

       ELSE

           enchant_level = enchant_level + ONE

           PRINT_TEXT "Enchanting <&item_name&> succeeded to +<&enchant_level&>. (<&n_scrolls_count&>/<&b_scrolls_count&> scrolls left)"

       ENDIF

   

   LOOP enchant_level < enchant_to_top

   

   JUMP_TO_LABEL THE_END

RETURN VOID

FUNCTION Enchanting 1 scroll_id

   enchant_result = #i9999

   some_loop = ZERO

   GET_RAND rand_delay "<&min_little_delay&>" "<&max_little_delay&>"

   SLEEP "<&rand_delay&>"

   SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" InsertItem 124

   DEFINE BYTEBUFFER use_scroll_buffer 256

   use_scroll_buffer.write_byte #i25

   use_scroll_buffer.write_int32 scroll_id

   use_scroll_buffer.write_int32 #i0

   use_scroll_buffer.trim_to_index

   INJECTBB use_scroll_buffer

   DELETE use_scroll_buffer

   

   WHILE some_loop == ZERO

   SLEEP 50

   WEND

   LOCK A

   SLEEP 50

   UNLOCK A

   

RETURN VOID

FUNCTION InsertItem

   

   LOCK A

   some_loop = ONE

   

   SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" BlankFunc 124

   SET_EVENT "<&SCRIPTEVENT_SERVERPACKETEX&>" "<&SYSTEM_CURRENTFILE&>" ClickOK 129

   

   GET_RAND rand_delay "<&min_little_delay&>" "<&max_little_delay&>"

   SLEEP "<&rand_delay&>"

   

   DEFINE BYTEBUFFER use_item_buffer 256

   use_item_buffer.write_byte #i208

   use_item_buffer.write_int16 #i76

   use_item_buffer.write_int32 item_uid

   use_item_buffer.trim_to_index

   INJECTBB use_item_buffer

   DELETE use_item_buffer

   

RETURN VOID

FUNCTION ClickOK

   SET_EVENT "<&SCRIPTEVENT_SERVERPACKETEX&>" "<&SYSTEM_CURRENTFILE&>" BlankFunc 129

   SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" EnchantComplete 135

   GET_RAND rand_delay "<&min_delay&>" "<&max_delay&>"

   SLEEP "<&rand_delay&>"

   

   DEFINE BYTEBUFFER confirm_enchant_buffer 256

   confirm_enchant_buffer.write_byte #i95

   confirm_enchant_buffer.write_int32 item_uid

   confirm_enchant_buffer.write_int32 #i0

   confirm_enchant_buffer.trim_to_index

   INJECTBB confirm_enchant_buffer

   DELETE confirm_enchant_buffer

RETURN VOID

FUNCTION EnchantComplete

   SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" BlankFunc 135

   

   DEFINE INT result_byte 0

   

   PACKET.READ_BYTE result_byte

   PACKET.READ_INT32 enchant_result

   

   DELETE result_byte

   

   UNLOCK A

RETURN VOID

FUNCTION RemoveFromInv

   DEFINE ARRAYLIST temp_arr 0

   

   FOREACH igzs Inventory full_inventory

       FOREACH zedt INT remove_uid

           

           IF full_inventory.igzs.ID == remove_uid.zedt

               full_inventory.igzs.NAME = "none"

               full_inventory.igzs.ID = #i0

               full_inventory.igzs.ITEM_ID = #i0

               full_inventory.igzs.ENCHANT = #i0

           ENDIF

           

       NEXTEACH

   NEXTEACH

RETURN VOID

FUNCTION BlankFunc

SLEEP 25 //e = mc^2 nonsence

RETURN VOID

 

 

 

 

 

 

 

 

 

 

 

Posted

Auto-Augment    (this one is for figther passive pattack and focus you must change..search_for_skills.ADD #i3240 // Item Skill: Might - Passive: Increases P. Atk. when equipped

search_for_skills.ADD #i3249 // Item Skill: Focus - Passive: Increases critical attack rate when equipped.) if you want other passive/active.

 

INCLUDE StdLib\inventory.l2c

INCLUDE StdLib/npc.l2c

 

DEFINE_GLOBAL ARRAYLIST search_for_skills 0        // DON'T CHANGE

 

//===========================================================================================

//

// Augmentation script fully automated. v2.0.1 (13.06.09)

// Fully working with L2NET v370 and on L2J Gracia Final (ct2.3) servers.

//

//

// special thanks to: slothmo and everybody working for l2net project

// made by iosc

//===========================================================================================

 

 

 

DEFINE_GLOBAL STRING item_to_aug "Sword of Miracles"        // The name of the weapon you want to augment

DEFINE_GLOBAL STRING ls_for_aug "Top-Grade Life Stone: level 80"        // The EXACT name of the Life Stone used for augment

 

//===========================================================================================

// The skill ID's that you want to get

// You can add or delete some "search_for_skills.ADD #i" lines

// The IDs of skills are after "#i"  ex: #i3250 - 3250

//===========================================================================================

search_for_skills.ADD #i3240 // Item Skill: Might - Passive: Increases P. Atk. when equipped.

search_for_skills.ADD #i3249 // Item Skill: Focus - Passive: Increases critical attack rate when equipped.

 

 

 

 

 

//===========================================================================================

// DON'T EDIT ANYTHING FROM BELOW UNLESS U KNOW WHAT U'RE DOING

//===========================================================================================

DEFINE_GLOBAL STRING l2incgem "Magic Gem"

 

DEFINE_GLOBAL INT skills_flag 0

DEFINE_GLOBAL INT add_loop 0

DEFINE_GLOBAL INT rem_loop 0

DEFINE_GLOBAL INT first_round 0

DEFINE_GLOBAL INT _50d 50

DEFINE_GLOBAL INT adena_rem_aug 0

DEFINE_GLOBAL INT adena_checked 0

DEFINE_GLOBAL STRING request_skills "50"

DEFINE_GLOBAL STRING adena "Adena"

DEFINE_GLOBAL ARRAYLIST skill_ids 0

DEFINE_GLOBAL ARRAYLIST full_invent 0   

DEFINE_GLOBAL Inventory work_item 0

DEFINE_GLOBAL Inventory work_ls 0

DEFINE_GLOBAL Inventory work_gem 0

DEFINE_GLOBAL INT num_of_gems 0

DEFINE_GLOBAL INT ls_count 0

DEFINE_GLOBAL INT gem_count 0

DEFINE_GLOBAL INT id_of_ls 0

DEFINE_GLOBAL INT id_of_gem 0

DEFINE_GLOBAL INT id_of_adena 0

DEFINE_GLOBAL INT adena_count 0

DEFINE_GLOBAL INT uid_of_incgem 0

ITEM_GET_ID id_of_ls "<&ls_for_aug&>"

ITEM_GET_ID id_of_adena "<&adena&>"

ITEM_COUNT adena_count "<&id_of_adena&>"

ITEM_COUNT ls_count "<&id_of_ls&>"

CALL reload_invent

 

CALL f_random_delay VOID 1 ZERO

DEFINE STRING itemfound_name " "

ITEM_GET_NAME itemfound_name "<&work_item.ITEM_ID&>"

DEFINE STRING lsfound_name " "

ITEM_GET_NAME lsfound_name "<&work_ls.ITEM_ID&>"

 

 

PRINT_TEXT "====================================="

PRINT_TEXT "== Auto Augment Script started."

PRINT_TEXT "== Augmenting <&itemfound_name&>"

PRINT_TEXT "== With: <&lsfound_name&> (<&ls_count&>)"

PRINT_TEXT "====================================="

 

SLEEP 3000

 

LABEL INFINITE_LOOP

 

 

CALL reload_invent

 

CALL remove_augment

 

CALL f_random_delay VOID 1 ONE

 

CALL reload_invent

 

CALL add_augment

 

CALL f_random_delay VOID 1 ONE

 

CALL equip_augmented_item

 

CALL BeforeCheck

 

LOCK C

SLEEP 50

UNLOCK C

 

JUMP_TO_LABEL INFINITE_LOOP

 

 

LABEL THE_END

 

 

PRINT_TEXT "== Please go on ltwonet.org forum"

PRINT_TEXT "== and post you experience with this script."

PRINT_TEXT "====================================="

 

END_SCRIPT

 

 

 

 

FUNCTION add_augment

 

add_loop = ZERO

 

IF work_item.aug_id > ZERO

CALL f_random_delay VOID 1 ONE

CALL reload_invent

CALL f_random_delay VOID 1 ONE

IF work_item.aug_id > ZERO

RETURN VOID

ENDIF

ENDIF

 

 

ITEM_COUNT ls_count "<&id_of_ls&>"

CALL f_random_delay VOID 1 ZERO

 

IF ls_count <= ONE

CALL reload_invent

ITEM_COUNT ls_count "<&id_of_ls&>"

CALL f_random_delay VOID 1 ONE

CALL f_random_delay VOID 1 ONE

IF ls_count <= ONE

PRINT_TEXT "====================================="

PRINT_TEXT "== Not enough <&ls_for_aug&>."

PRINT_TEXT "====================================="

JUMP_TO_LABEL THE_END

 

ENDIF

ENDIF

 

IF first_round == ONE

ITEM_COUNT gem_count "<&id_of_gem&>"

CALL f_random_delay VOID 1 ZERO

 

IF gem_count <= num_of_gems

CALL reload_invent

ITEM_COUNT gem_count "<&id_of_gem&>"

CALL f_random_delay VOID 1 ONE

CALL f_random_delay VOID 1 ONE

 

IF gem_count <= num_of_gems

DEFINE STRING gem_name " "

ITEM_GET_NAME gem_name "<&id_of_gem&>"

PRINT_TEXT "====================================="

PRINT_TEXT "== Not enough <&gem_name&>."

PRINT_TEXT "====================================="

JUMP_TO_LABEL THE_END

 

ENDIF

ENDIF

ENDIF

PRINT_TEXT "====================================="

PRINT_TEXT "== Adding Augment..."

PRINT_TEXT "====================================="

 

SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" add_after_target_talk 25

 

CALL f_random_delay VOID 1 ONE

 

CALL use_magic_gem

 

WHILE add_loop == ZERO

SLEEP 50

WEND

LOCK A

SLEEP 50

UNLOCK A

 

 

RETURN VOID

 

 

FUNCTION add_after_target_talk

 

LOCK A

add_loop = ONE

 

SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" selecting_html_add_augment 25

 

NPC_DIALOG "bypass -h pc_augment_chat 0"

 

RETURN VOID

 

 

FUNCTION selecting_html_add_augment

CALL f_random_delay VOID 1 ONE

 

SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" blankfunc 25

SET_EVENT "<&SCRIPTEVENT_SERVERPACKETEX&>" "<&SYSTEM_CURRENTFILE&>" aug_insert_item 81

NPC_DIALOG "bypass -h pc_augment_start 1"

 

 

RETURN VOID

 

 

FUNCTION aug_insert_item

 

CALL f_random_delay VOID 1 ONE

SET_EVENT "<&SCRIPTEVENT_SERVERPACKETEX&>" "<&SYSTEM_CURRENTFILE&>" blankfunc 81

SET_EVENT "<&SCRIPTEVENT_SERVERPACKETEX&>" "<&SYSTEM_CURRENTFILE&>" aug_insert_ls 83

 

DEFINE BYTEBUFFER select_item_buffer 256

select_item_buffer.write_byte #i208

select_item_buffer.write_int16 #i38

select_item_buffer.write_int32 work_item.id

select_item_buffer.trim_to_index

INJECTBB select_item_buffer

DELETE select_item_buffer

 

RETURN VOID

 

 

FUNCTION aug_insert_ls

 

CALL f_random_delay VOID 1 ONE

SET_EVENT "<&SCRIPTEVENT_SERVERPACKETEX&>" "<&SYSTEM_CURRENTFILE&>" blankfunc 83

SET_EVENT "<&SCRIPTEVENT_SERVERPACKETEX&>" "<&SYSTEM_CURRENTFILE&>" aug_read_ins_gems 84

 

DEFINE BYTEBUFFER select_ls_buffer 256

select_ls_buffer.write_byte #i208

select_ls_buffer.write_int16 #i39

select_ls_buffer.write_int32 work_item.id

select_ls_buffer.write_int32 work_ls.id

select_ls_buffer.trim_to_index

INJECTBB select_ls_buffer

DELETE select_ls_buffer

 

RETURN VOID

 

 

FUNCTION aug_read_ins_gems

 

SET_EVENT "<&SCRIPTEVENT_SERVERPACKETEX&>" "<&SYSTEM_CURRENTFILE&>" blankfunc 84

 

IF first_round == ZERO

DEFINE INT firstbyte 0

PACKET.READ_BYTE firstbyte

DELETE firstbyte

 

DEFINE INT expacket 0

PACKET.READ_INT16 expacket

DELETE expacket

 

DEFINE INT itemuid

PACKET.READ_INT32 itemuid

DELETE itemuid

 

DEFINE INT lsid

PACKET.READ_INT32 lsid

DELETE lsid

 

PACKET.READ_INT32 id_of_gem

PACKET.READ_INT32 num_of_gems

 

ITEM_COUNT gem_count "<&id_of_gem&>"

 

first_round = ONE

CALL reload_invent

 

ITEM_COUNT gem_count "<&id_of_gem&>"

CALL f_random_delay VOID 1 ZERO

 

IF gem_count <= num_of_gems

CALL reload_invent

ITEM_COUNT gem_count "<&id_of_gem&>"

CALL f_random_delay VOID 1 ONE

CALL f_random_delay VOID 1 ONE

 

IF gem_count <= num_of_gems

DEFINE STRING gem_name " "

ITEM_GET_NAME gem_name "<&id_of_gem&>"

PRINT_TEXT "====================================="

PRINT_TEXT "== Not enough <&gem_name&>."

PRINT_TEXT "====================================="

JUMP_TO_LABEL THE_END

 

ENDIF

ENDIF

ENDIF

CALL f_random_delay VOID 1 ONE

SET_EVENT "<&SCRIPTEVENT_SERVERPACKETEX&>" "<&SYSTEM_CURRENTFILE&>" aug_start_aug 85

 

DEFINE BYTEBUFFER select_gem_buffer 256

select_gem_buffer.write_byte #i208

select_gem_buffer.write_int16 #i40

select_gem_buffer.write_int32 work_item.id

select_gem_buffer.write_int32 work_ls.id

select_gem_buffer.write_int32 work_gem.id

select_gem_buffer.write_int64 num_of_gems

select_gem_buffer.trim_to_index

INJECTBB select_gem_buffer

DELETE select_gem_buffer

 

RETURN VOID

 

 

FUNCTION aug_start_aug

CALL f_random_delay VOID 1 ONE

SET_EVENT "<&SCRIPTEVENT_SERVERPACKETEX&>" "<&SYSTEM_CURRENTFILE&>" blankfunc 85

 

DEFINE BYTEBUFFER start_aug_buffer 256

start_aug_buffer.write_byte #i208

start_aug_buffer.write_int16 #i65

start_aug_buffer.write_int32 work_item.id

start_aug_buffer.write_int32 work_ls.id

start_aug_buffer.write_int32 work_gem.id

start_aug_buffer.write_int64 num_of_gems

start_aug_buffer.trim_to_index

INJECTBB start_aug_buffer

DELETE start_aug_buffer

 

UNLOCK A

 

RETURN VOID

 

FUNCTION remove_augment

rem_loop = ZERO

 

IF work_item.aug_id == ZERO

CALL f_random_delay VOID 1 ONE

CALL reload_invent

CALL f_random_delay VOID 1 ONE

IF work_item.aug_id == ZERO

RETURN VOID

ENDIF

ENDIF

PRINT_TEXT "== Removing Augment..."

PRINT_TEXT "====================================="

 

SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" rem_after_target_talk 25

 

CALL f_random_delay VOID 1 ONE

 

CALL use_magic_gem

 

WHILE rem_loop == ZERO

SLEEP 50

WEND

LOCK B

SLEEP 50

UNLOCK B

RETURN VOID

 

FUNCTION rem_after_target_talk

 

LOCK B

rem_loop = ONE

 

SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" selecting_html_rem_augment 25

NPC_DIALOG "bypass -h pc_augment_chat 0"

 

RETURN VOID

 

 

FUNCTION selecting_html_rem_augment

CALL f_random_delay VOID 1 ONE

 

SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" blankfunc 25

SET_EVENT "<&SCRIPTEVENT_SERVERPACKETEX&>" "<&SYSTEM_CURRENTFILE&>" rem_aug_item 82

NPC_DIALOG "bypass -h pc_augment_start 2"

 

RETURN VOID

 

FUNCTION rem_aug_item

 

CALL f_random_delay VOID 1 ONE

SET_EVENT "<&SCRIPTEVENT_SERVERPACKETEX&>" "<&SYSTEM_CURRENTFILE&>" blankfunc 82

SET_EVENT "<&SCRIPTEVENT_SERVERPACKETEX&>" "<&SYSTEM_CURRENTFILE&>" aug_start_rem 87

 

DEFINE BYTEBUFFER select_item_buffer 256

select_item_buffer.write_byte #i208

select_item_buffer.write_int16 #i66

select_item_buffer.write_int32 work_item.id

select_item_buffer.trim_to_index

INJECTBB select_item_buffer

DELETE select_item_buffer

 

RETURN VOID

 

 

FUNCTION aug_start_rem

 

SET_EVENT "<&SCRIPTEVENT_SERVERPACKETEX&>" "<&SYSTEM_CURRENTFILE&>" blankfunc 87

IF adena_checked == ZERO

DEFINE INT firstbyte 0

PACKET.READ_BYTE firstbyte

DELETE firstByte

 

DEFINE INT expacket 0

PACKET.READ_INT16 expacket

DELETE expacket

 

DEFINE INT notinteresting 0

PACKET.READ_INT64 notinteresting

PACKET.READ_INT64 notinteresting

DELETE notinteresting

 

PACKET.READ_INT64 adena_rem_aug

CALL reload_invent

adena_checked = ONE

ENDIF

 

ITEM_COUNT adena_count "<&id_of_adena&>"

CALL f_random_delay VOID 1 ZERO

IF adena_count <= adena_rem_aug

CALL reload_invent

CALL f_random_delay VOID 1 ONE

CALL f_random_delay VOID 1 ONE

ITEM_COUNT adena_count "<&id_of_adena&>"

IF adena_count <= adena_rem_aug

PRINT_TEXT "====================================="

PRINT_TEXT "== Not enough Adena(<&adena_count&>) to remove augment!"

PRINT_TEXT "====================================="

JUMP_TO_LABEL THE_END

ENDIF

ENDIF

 

CALL f_random_delay VOID 1 ONE

DEFINE BYTEBUFFER rem_aug_buffer 256

rem_aug_buffer.write_byte #i208

rem_aug_buffer.write_int16 #i67

rem_aug_buffer.write_int32 work_item.id

rem_aug_buffer.trim_to_index

INJECTBB rem_aug_buffer

DELETE rem_aug_buffer

 

UNLOCK B

 

RETURN VOID

 

 

FUNCTION BeforeCheck

 

SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" CheckSkillList 95

skills_flag = ZERO

 

DO

INJECT "<&request_skills&>"

CALL f_random_delay VOID 1 ONE

LOOP skills_flag == ZERO

 

RETURN VOID

 

 

FUNCTION CheckSkillList

 

SET_EVENT "<&SCRIPTEVENT_SERVERPACKET&>" "<&SYSTEM_CURRENTFILE&>" blankfunc 95

LOCK C

skills_flag = ONE

 

DEFINE INT skill_byte 0

DEFINE INT skill_list_size 0

 

PACKET.READ_BYTE skill_byte

PACKET.READ_INT32 skill_list_size

 

FOR Z 0 "<&skill_list_size&>" 1

 

DEFINE INT _i64

PACKET.READ_INT64 _i64

DELETE _i64

 

DEFINE INT skillID

PACKET.READ_INT32 skillID

skill_ids.ADD skillID

DELETE skillID

 

DEFINE INT c_byte

PACKET.READ_BYTE c_byte

DELETE c_byte

 

NEXT

 

DELETE skill_byte

DELETE skill_list_size

 

FOREACH X INT skill_ids

FOREACH Z INT search_for_skills

 

IF skill_ids.X == search_for_skills.Z

PRINT_TEXT "====================================="

PRINT_TEXT "== Augment Script finished."

PRINT_TEXT "== Augmentation with Skill ID <&search_for_skills.Z&> was succesfull."

PRINT_TEXT "====================================="

JUMP_TO_LABEL THE_END

ENDIF

 

NEXTEACH

NEXTEACH

CALL equip_augmented_item

 

ITEM_COUNT gem_count "<&id_of_gem&>"

DEFINE STRING gem_name " "

ITEM_GET_NAME gem_name "<&id_of_gem&>"

ITEM_COUNT ls_count "<&id_of_ls&>"

 

PRINT_TEXT "====================================="

PRINT_TEXT "== No luck this round..."

PRINT_TEXT "== Items Remaining:"

PRINT_TEXT "== <&gem_count&> - <&gem_name&>"

PRINT_TEXT "== <&ls_count&> - <&ls_for_aug&> "

PRINT_TEXT "====================================="

 

CALL f_random_delay VOID 1 ZERO

 

UNLOCK C

 

RETURN VOID

 

FUNCTION f_random_delay 1 lmh

DEFINE INT rand_min 0

DEFINE INT rand_max 0

SLEEP 25

SWITCH lmh

CASE #i0

rand_min = #i150

rand_max = #i300

BREAK 1

CASE #i1

rand_min = #i400

rand_max = #i550

BREAK 1

CASE #i2

rand_min = #i2103

rand_max = #i2408

BREAK 1

DEFAULT

BREAK 1

ENDSWITCH

DEFINE INT random_delay 0

GET_RAND random_delay "<&rand_min&>" "<&rand_max&>"

SLEEP 25

SLEEP "<&random_delay&>"

 

DELETE rand_min

DELETE rand_max

DELETE random_delay

 

RETURN VOID

 

FUNCTION reload_invent

 

GET_INVENTORY full_invent

CALL f_random_delay VOID 1 ZERO

 

FOREACH item Inventory full_invent

IF full_invent.item.name == item_to_aug   

work_item = full_invent.item

ENDIF

IF first_round == ONE

IF full_invent.item.ITEM_ID == id_of_gem   

work_gem = full_invent.item

ENDIF

ENDIF

IF full_invent.item.name == ls_for_aug   

work_ls = full_invent.item

ENDIF

IF full_invent.item.name == l2incgem

uid_of_incgem = full_invent.item.id

ENDIF

NEXTEACH

 

RETURN VOID

 

FUNCTION blankfunc

SLEEP 50

RETURN VOID

 

 

FUNCTION use_magic_gem

 

DEFINE BYTEBUFFER use_magic_gem_bufer 256

 

use_magic_gem_bufer.write_byte #i25

use_magic_gem_bufer.write_int32 uid_of_incgem

use_magic_gem_bufer.write_int32 #i0

use_magic_gem_bufer.trim_to_index

INJECTBB use_magic_gem_bufer

CALL f_random_delay VOID 1 ONE

 

DELETE use_magic_gem_bufer

 

RETURN VOID

 

 

FUNCTION equip_augmented_item

 

DEFINE BYTEBUFFER equip_item 256

 

equip_item.write_byte #i25

equip_item.write_int32 work_item.id

equip_item.write_int32 #i0

equip_item.trim_to_index

INJECTBB equip_item

CALL f_random_delay VOID 1 ONE

 

DELETE equip_item

 

RETURN VOID

Posted

i cant try it now but i will asap.. but i dont think that u made it by urself..

no i dont make it alone i just i ''fix'' the script i change some things like the type for enchant or i put passive might or focus passive at aug script

i just change some things and i post here if some1 need scripts for l2 net.

Posted

Okay, new rule was added how to post scripts, be sure to read it. I've edited your topic already so nothing to be worry about. I won't punish in next few days if somebody posts a script without proper pre-fix, cause it's a new rule. So be sure to read it :}

Posted

Okay, new rule was added how to post scripts, be sure to read it. I've edited your topic already so nothing to be worry about. I won't punish in next few days if somebody posts a script without proper pre-fix, cause it's a new rule. So be sure to read it :}

script working i test it allready in l2inc,i just i dont tell the version from l2net.but we are humans sometimes we can do wrong things but we can fix it too :S

  • 3 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...