Jump to content

Recommended Posts

Posted

I need a little bit of help with phx..i've foud a server where this cheat works.Can sombody say to me what packets do I need to copy to overenchant my weapon ?

Posted

 

INCLUDE StdLib\inventory.l2c 
// ===================================================================================================================

// START OF EDITING PART (YOU SHOULD CHANGE THE SETTINGS FROM BELOW TO YOUR NEEDS) 
// ===================================================================================================================
DEFINE_GLOBAL STRING item_name "Homunkulus's Sword"        // Here you need to change with what item you want to enchant 
DEFINE_GLOBAL STRING normal_enchant_name "Scroll: Enchant Weapon (C)"        // The exact name of your normal enchant scroll 
DEFINE_GLOBAL STRING blessed_enchant_name "Blessed Scroll: Enchant Weapon (C)"        // The exact name of you blessed enchant scroll(only for blessed enchants) 

DEFINE_GLOBAL INT type_of_enchanting 1    // 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 1        // The top level witch enchantig should stop at (for One to Top enchanting + blessed) 

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

DEFINE_GLOBAL INT min_little_delay 205        // 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 327        // 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) 
// ===================================================================================================================
// 
// AIO Auto Enchant v1.2 - have 7 methods of enchanting and is safe for auto kick 
//                                                                   (don't cancel the enchant window when ingame) 
// Fully working with L2NET v370 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 2533 
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 

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 "== AIO Auto Enchant Script v1.1" 
PRINT_TEXT "================================" 
SLEEP 1000 
//SLEEP "<little_delay>" 
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 
GET_RAND rand_delay "<min_little_delay>" "<max_little_delay>" 
SLEEP "<rand_delay>" 

PRINT_TEXT "===============================" 
PRINT_TEXT "== Thanks for using AIO Auto Enchant Script ==" 
PRINT_TEXT "===============================" 
FOREACH x Inventory full_inventory 
   IF full_inventory.x.name == item_name 
      PRINT_TEXT "==  <item_name> +<full_inventory>" 
   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 
   GET_RAND rand_delay "<min_little_delay>" "<max_little_delay>" 
   SLEEP "<rand_delay>" 
    
   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> 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)" 
         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 
   GET_RAND rand_delay "<min_little_delay>" "<max_little_delay>" 
   SLEEP "<rand_delay>" 

   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> 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)" 
            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 
   GET_RAND rand_delay "<min_little_delay>" "<max_little_delay>" 
   SLEEP "<rand_delay>" 

   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> 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 BlankFunc 

SLEEP 25 //e = mc^2 nonsence 

RETURN VOID

hf

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • A modern game panel rebuilt from scratch for Lineage 2 private servers What is L2jWeb V3? L2jWeb V3 is the new version of the panel, fully refactored from scratch. This is not a small update on top of the old V2 code. The whole structure has been redesigned with cleaner logic, better separation between the web panel and the game database, improved security, and a much better way to support different L2J sources. The goal is simple. Server owners should be able to manage their project, users, donations, shops, game accounts, characters, and multiple servers from one panel without having to fight with hardcoded database logic every time they use a different source. Refactored From Scratch The new implementation was built again from the ground up. The old approach worked, but over time it became harder to maintain because every L2J source has its own database structure, table names, columns, and custom changes. V3 solves this in a cleaner way. Instead of mixing source specific queries all over the panel, the system now uses a proper mapping layer for the game database. Correct L2J Source Database Mapping One of the biggest improvements in L2jWeb V3 is the new database mapping system for different L2J sources. Every important game object is bound to an interface contract. Accounts, characters, items, services, rewards, and other source related actions are not hardcoded directly into the panel anymore. The panel works with contracts, and each L2J source has its own implementation behind those contracts. In simple words, the panel knows what it wants to do, and the selected source knows how to do it in its own database. This makes the project much easier to maintain, easier to extend, and much safer when adding support for more L2J sources in the future. Multi Server Support L2jWeb V3 supports multiple game servers from the same installation. You can add and manage different servers from the admin panel. Each server can have its own database connection, source type, settings, shop products, and services. This is useful if you run more than one realm, different chronicles, seasonal servers, test servers, or multiple projects from the same community. x402 Wallet Crypto Payments L2jWeb V3 also adds support for the x402 protocol. This is a very important feature for modern payments because it allows wallet to wallet payments without a traditional middleman holding the money. With normal payment gateways, the payment usually goes through a company that controls the flow, keeps custody for part of the process, applies rules, and may block or delay things. With x402, the user pays directly from their wallet and the server owner receives the payment directly to their wallet. The facilitator helps the application verify the payment. It checks the payment proof and confirms that the request has been paid correctly, so the panel can safely continue with the donation or balance update. The important part is that the facilitator is not the same as a classic payment processor. It helps with verification and coordination, but the funds move wallet to wallet. For server owners, this gives a more direct payment option and reduces dependency on traditional third party platforms. In order to learn more for x402 protocol click here Donation System L2jWeb V3 includes a complete donation system. Supported payment options can include: Stripe PayPal x402 wallet to wallet crypto payments Donations can be stored in the user's master account balance and then used inside the panel for shop purchases, services, or other features depending on your setup. Master Account System Players use one master account to manage their game accounts and characters. This makes things easier for the player because they do not need to remember every detail separately. From the user panel, they can create game accounts, manage existing accounts, recover details, and access available services. Game Account Control Players can manage their game accounts directly from the panel. Available features can include: Create game accounts Manage existing game accounts Reset or recover credentials View linked characters Use account related services Receive game account details by email if enabled Character Menu And Services The character menu gives players quick access to useful character actions from the web panel. For example, if a character gets stuck, the player can use the unstuck option and send the character back to town without waiting for staff support. More services can be configured depending on the server setup. Shop And Services The shop is fully manageable from the admin panel. You can add products, edit prices, enable or disable products, and choose which server each product is available for. This makes it easier to monetize your server while keeping control over what each server can sell. For example, one server can have different products or prices than another server. Fully Customizable Theme The panel is fully customizable through theme settings. You can change logos, icons, and all main colors directly from the panel, so the website can match your server's branding without editing the code manually. Admin Panel L2jWeb V3 includes a powerful admin panel for managing your project. Admin features include: Server management User management Donation logs Shop management Panel settings Theme settings for logos, icons, and colors Social login settings Security options Game source configuration Most important settings are configurable directly from the panel, so you do not need to edit files manually for every small change. Security Features Security was also improved in the new implementation. Available security features include: Two factor authentication Email verification Cloudflare Turnstile protection against bots Rate limiting per guest IP or authenticated user CSRF protection XSS protection Security headers HTTPS only protection Password confirmation for sensitive actions Social login support Social Login The panel can support social login providers such as Google and Discord. This gives players a faster way to register and log in, while still keeping the account system controlled from the panel. Other Features Database cache system Server status Multi source support Optional email verification Optional account details email after registration Cloudflare Turnstile bot protection Modern user dashboard Modern admin dashboard Clean Laravel based implementation Demo demo.l2jweb.com Some features may be disabled in the demo version or may not work exactly like a live installation. Contact Discord: Contact me Pricing Price is 150 euro flat, the same as Version 2. Existing customers get a 50 euro discount. Custom Work If you need custom features, source adaptations, special services, design changes, or extra integrations, you can contact me and we can discuss your request. Extra custom work is not included by default and must be paid separately. Test And Payment Files are not delivered before payment. If you want to test the panel first, a demo link can be provided.
    • Well, it turns out 100 characters really wasn’t enough for a proper test. Here’s a simulation of 1,500 players in a single location — each one is randomly equipped, running around randomly, and casting skills.    
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..