Jump to content

Question

Posted

Hello guys, i'm looking for a code for Enchant Configs for aCis.

I searched and i couldn't find something working.

 

I'm not asking for crazy things like to set rate for every enchant level or not brake or w/e.

I just want config files for enchants.

 

Here is an example of what i want:

WeaponNormalEnchantRate = 50
ArmorNormalEnchantRate = 50
JewelsNormalEnchantRate = 50
WeaponBlessedEnchantRate = 50
ArmorBlessedEnchantRate = 50
JewelsNormalEnchantRate = 50
WeaponCrystalEnchantRate = 50
ArmorCrystalEnchantRate = 50
JewelsCrystalEnchantRate = 50

As a reward i can create a banner,logo or cover for him and give him a rep for his help.

 

Thanks in advance.

10 answers to this question

Recommended Posts

  • 0
Posted

Lock it.

I "fixed" an old code and it's working.

 

If someone need the code here you are

Go to: gameserver/network/clientpacket/AbstractEnchantPacket.java  find this

if (enchantItem.isArmor())
                chance = Math.pow(Config.ENCHANT_CHANCE_ARMOR, (enchantItem.getEnchantLevel() - 2));
            // Weapon formula is 70% for fighter weapon, 40% for mage weapon. Special rates after +14.
            else if (enchantItem.isWeapon())
            {
                if (((L2Weapon) enchantItem.getItem()).isMagical())
                    chance = (enchantItem.getEnchantLevel() > 14) ? Config.ENCHANT_CHANCE_WEAPON_MAGIC_15PLUS : Config.ENCHANT_CHANCE_WEAPON_MAGIC;
                else
                    chance = (enchantItem.getEnchantLevel() > 14) ? Config.ENCHANT_CHANCE_WEAPON_NONMAGIC_15PLUS : Config.ENCHANT_CHANCE_WEAPON_NONMAGIC;
            }

And replace it with this

if (isBlessed())
            {
                if (enchantItem.isArmor())
                    chance = Math.pow(Config.ENCHANT_CHANCE_ARMOR_BLESSED, (enchantItem.getEnchantLevel() - 2));
                // Weapon formula is 70% for fighter weapon, 40% for mage weapon. Special rates after +14.
                else if (enchantItem.isWeapon())
                {
                    if (((Weapon) enchantItem.getItem()).isMagical())
                        chance = (enchantItem.getEnchantLevel() > 14) ? Config.ENCHANT_CHANCE_WEAPON_MAGIC_15PLUS_BLESSED : Config.ENCHANT_CHANCE_WEAPON_MAGIC_BLESSED;
                    else
                        chance = (enchantItem.getEnchantLevel() > 14) ? Config.ENCHANT_CHANCE_WEAPON_NONMAGIC_15PLUS_BLESSED : Config.ENCHANT_CHANCE_WEAPON_NONMAGIC_BLESSED;
                }
            }
            else if (isCrystal())
            {
                if (enchantItem.isArmor())
                    chance = Math.pow(Config.ENCHANT_CHANCE_ARMOR_CRYSTAL, (enchantItem.getEnchantLevel() - 2));
                // Weapon formula is 70% for fighter weapon, 40% for mage weapon. Special rates after +14.
                else if (enchantItem.isWeapon())
                {
                    if (((Weapon) enchantItem.getItem()).isMagical())
                        chance = (enchantItem.getEnchantLevel() > 14) ? Config.ENCHANT_CHANCE_WEAPON_MAGIC_15PLUS_CRYSTAL : Config.ENCHANT_CHANCE_WEAPON_MAGIC_CRYSTAL;
                    else
                        chance = (enchantItem.getEnchantLevel() > 14) ? Config.ENCHANT_CHANCE_WEAPON_NONMAGIC_15PLUS_CRYSTAL : Config.ENCHANT_CHANCE_WEAPON_NONMAGIC_CRYSTAL;
                }
            }
            else
            {
                if (enchantItem.isArmor())
                    chance = Math.pow(Config.ENCHANT_CHANCE_ARMOR, (enchantItem.getEnchantLevel() - 2));
                // Weapon formula is 70% for fighter weapon, 40% for mage weapon. Special rates after +14.
                else if (enchantItem.isWeapon())
                {
                    if (((Weapon) enchantItem.getItem()).isMagical())
                        chance = (enchantItem.getEnchantLevel() > 14) ? Config.ENCHANT_CHANCE_WEAPON_MAGIC_15PLUS : Config.ENCHANT_CHANCE_WEAPON_MAGIC;
                    else
                        chance = (enchantItem.getEnchantLevel() > 14) ? Config.ENCHANT_CHANCE_WEAPON_NONMAGIC_15PLUS : Config.ENCHANT_CHANCE_WEAPON_NONMAGIC;
                }
            }

The Configs @ net.sf.l2j.Config.java

public static double ENCHANT_CHANCE_WEAPON_MAGIC;
public static double ENCHANT_CHANCE_WEAPON_MAGIC_15PLUS;
public static double ENCHANT_CHANCE_WEAPON_NONMAGIC;
public static double ENCHANT_CHANCE_WEAPON_NONMAGIC_15PLUS;
+public static double ENCHANT_CHANCE_WEAPON_MAGIC_BLESSED;
+public static double ENCHANT_CHANCE_WEAPON_MAGIC_15PLUS_BLESSED;
+public static double ENCHANT_CHANCE_WEAPON_NONMAGIC_BLESSED;
+public static double ENCHANT_CHANCE_WEAPON_NONMAGIC_15PLUS_BLESSED;
+public static double ENCHANT_CHANCE_WEAPON_NONMAGIC_CRYSTAL;
+public static double ENCHANT_CHANCE_WEAPON_NONMAGIC_15PLUS_CRYSTAL;
+public static double ENCHANT_CHANCE_WEAPON_MAGIC_CRYSTAL;
+public static double ENCHANT_CHANCE_WEAPON_MAGIC_15PLUS_CRYSTAL;
public static double ENCHANT_CHANCE_ARMOR;
+public static double ENCHANT_CHANCE_ARMOR_BLESSED;
+public static double ENCHANT_CHANCE_ARMOR_CRYSTAL;
ENCHANT_CHANCE_WEAPON_MAGIC = players.getProperty("EnchantChanceMagicWeapon", 0.4);
ENCHANT_CHANCE_WEAPON_MAGIC_15PLUS = players.getProperty("EnchantChanceMagicWeapon15Plus", 0.2);
ENCHANT_CHANCE_WEAPON_NONMAGIC = players.getProperty("EnchantChanceNonMagicWeapon", 0.7);
ENCHANT_CHANCE_WEAPON_NONMAGIC_15PLUS = players.getProperty("EnchantChanceNonMagicWeapon15Plus", 0.35);
+ENCHANT_CHANCE_WEAPON_MAGIC_BLESSED = players.getProperty("EnchantChangeWeaponMagicBlessed", 0.35);
+ENCHANT_CHANCE_WEAPON_MAGIC_15PLUS_BLESSED = players.getProperty("EnchantChangeWeaponMagic15PlusBlessed", 0.35);
+ENCHANT_CHANCE_WEAPON_NONMAGIC_BLESSED = players.getProperty("EnchantChangeWeaponNonMagicBlessed", 0.35);
+ENCHANT_CHANCE_WEAPON_NONMAGIC_15PLUS_BLESSED = players.getProperty("EnchantChangeWeaponNonMagic15PlusBlessed", 0.35);
+ENCHANT_CHANCE_WEAPON_NONMAGIC_CRYSTAL = players.getProperty("EnchantChanceWeaponNonMagicCrystal", 0.35);
+ENCHANT_CHANCE_WEAPON_NONMAGIC_15PLUS_CRYSTAL = players.getProperty("EnchantChanceWeaponNonMagic15PlusCrystal", 0.35);
+ENCHANT_CHANCE_WEAPON_MAGIC_CRYSTAL = players.getProperty("EnchantChanceWeaponMagicCrystal", 0.35);
+ENCHANT_CHANCE_WEAPON_MAGIC_15PLUS_CRYSTAL = players.getProperty("EnchantChanceWeaponMagic15PlusCrystal", 0.35);
ENCHANT_CHANCE_ARMOR = players.getProperty("EnchantChanceArmor", 0.66);
+ENCHANT_CHANCE_ARMOR_BLESSED = players.getProperty("EnchantChanceArmorBlessed", 0.66); 
+ENCHANT_CHANCE_ARMOR_CRYSTAL = players.getProperty("EnchantChanceArmorCrystal", 0.66);

And the properties

# % chance of success to enchant a non magic weapon with normal scroll
EnchantChanceNonMagicWeapon = 0.55
EnchantChanceNonMagicWeapon15Plus = 0.55
+
+# % chance of success to enchant a magic weapon with blessed scroll
+EnchantChangeWeaponMagicBlessed = 0.75
+EnchantChangeWeaponMagic15PlusBlessed = 0.75
+
+# % chance of success to enchant a non magic weapon with blessed scroll
+EnchantChangeWeaponNonMagicBlessed = 0.75
+EnchantChangeWeaponNonMagic15PlusBlessed = 0.75
+
+# % chance of success to enchant a magic weapon with crystal scroll
+EnchantChanceWeaponMagicCrystal = 0.95
+EnchantChanceWeaponMagic15PlusCrystal = 0.95
+
+# % chance of success to enchant a non magic weapon with crystal scroll
+EnchantChanceWeaponNonMagicCrystal = 0.95
+EnchantChanceWeaponNonMagic15PlusCrystal = 0.95
+
# % chance of success for normal scrolls to enchant an armor part (both jewelry or armor)
EnchantChanceArmor = 0.66
+
+# % chance of success for blessed scrolls to enchant an armor part (both jewelry or armor)
+EnchantChanceArmorBlessed = 0.75
+
+# % chance of success for crystal scrolls to enchant an armor part (both jewelry or armor)
+EnchantChanceArmorCrystal = 0.95

# Enchant limit [default = 0]
EnchantMaxWeapon = 0
EnchantMaxArmor = 0
  • 0
Posted (edited)

well, i found a lot of codes, the one of Hasha with the xml and the simple one for blessed and crystal but i got tons of errors which i can't fix xd

i'll give one more try, i'll fix it or i'll fck the whole enchant system ;D

Edited by Psyancy
  • 0
Posted

well, i found a lot of codes, the one of Hasha with the xml and the simple one for blessed and crystal but i got tons of errors which i can't fix xd

i'll give one more try, i'll fix it or i'll fck the whole enchant system ;D

Pm me psyancy i will give you this code..is for normal scrolls blessed and crystal...max enchant and change with config.
  • 0
Posted

Because Hasha code was updated sometime ago by the new aCis model. Now we have equip grade variable as ENUM. It's one of some problems in code.

yup, i know. i had this code on my previous sources with an older revision and i didn't had any problem with both codes

 

Pm me psyancy i will give you this code..is for normal scrolls blessed and crystal...max enchant and change with config.

alright mate, i'll pm you now, thanks :)

  • 0
Posted

Pm me psyancy i will give you this code..is for normal scrolls blessed and crystal...max enchant and change with config.

 

 

Why you giving it with pm? Maybe someone looking for it too? Cant you just share in topic? ..

Guest
This topic is now closed to further replies.


  • Posts

    • I suggest you provide Test server for public and add a price.
    • Kroma — Lineage II Interlude on LU4 Client (Latest client)   I'm selling this project. Here's what it actually is and what's been done.   This is a few months of work, most of it on the reverse engineering side. I built it because I wanted to open my own Interlude server on it. That's not happening any more — I've moved on to other projects and don't have the free time left to take it the rest of the way, so I'd rather it went to someone who will.   The idea was to take the modern LU4 client and make it run an Interlude version of the game. Not a reskin of an old client — the actual current client, playing Interlude, against a server I wrote. That's what this is, and it works end to end: the client boots, authenticates, connects, and you play. There are six repositories. Roughly, it splits into three kinds of work: reverse engineering the client, writing the server, and rebuilding the client's own content so it matches Interlude.   Fully reverse engineered   The client's protocol wasn't documented anywhere, so it was derived from scratch off real traffic. I built a sniffer (bypassing anticheat packet encryption) that drops into the client's binaries folder and dumps live traffic to disk, then a separate Java toolchain that decrypts those captures — login and game traffic, both directions. Everything the server knows about the protocol came out of that loop: capture, decrypt, read, implement, test against the real client.   On top of that there's a native x64 hook and injector in C++. It points the client at your own servers and handles its authentication and session layer, plus a few client-side stability fixes that were needed to keep it from falling over once it's talking to something that isn't the official backend. The hooking is pattern-based rather than address-based, so a client patch doesn't automatically break it.   The reverse-engineering notes are in the repos — the patterns, the disassembly, the decompiled functions, what each one does and why it's hooked. That documentation is a real part of what's being sold; it's the difference between inheriting a working system and inheriting a black box.   The server   Interlude ruleset, aCis lineage, but substantially rewritten and extended to speak the LU5 client's protocol with modern features like Party matching, Offline shops or Mailbox. The geodata has been updated according to some layout changes in LU4 cities. There's also a separate login server handling the client's auth flow.   Customized client to adapt to Interlude   This is the part people underestimate. The retail client ships retail content — retail NPCs, retail items, retail zones, retail UI. All of that had to be reshaped. The whole client-side pipeline is scripted: extract the retail PAKs, apply every edit from data files, rebuild, drop the result back into the game folder. 23 purpose-built C# tools, ~6,700 lines, organised into three pipelines that are guaranteed not to write over each other. There's a documented checklist for regenerating everything from scratch when a new patch drops. The important thing is that none of it is hand-editing. Every change is a line in a data file. When the client updates, you re-run the scripts instead of redoing the work from memory.   All NPC / item / drop lists updated according to Interlude   The client's own data tables were rewritten from the real Interlude client data files — `npcname-e`, `itemname-e`, `skillname-e`, `systemmsg-e`, `npcgrp`. That means roughly 6,470 NPC and skill name/title updates and about 4,000 Drops/Spoils rows written directly into the client's `NPCDataTable` and `SkillTable`, so the client shows Interlude names, Interlude item text, Interlude system messages, and Interlude drop and spoil lists. There are also custom NPC rows on top of that, plus 304 game action rewrites.   Opened the catacombs   In the LU4 client the catacombs and necropolises are unusable — flooded, unlit, and with holes in the geometry. All three were fixed: Water removed. Water exclusion volumes were placed over all 12 of them: Rifts, Apostate, Patriots, Devotion, Dark Omens, Heretics, Pilgrims, Saints, Worship, Martyr, Forbidden Path and Witch. This was more involved than it sounds — the volumes' scale is ignored at runtime, so the tool picks the best-fitting native template per hole, and nearby lakes and rivers are separate water bodies that have to be excluded individually or you get leftover water borders. Lights added. About 28,900 light definitions imported into the client's level files. Missing walls fixed. Mesh actors replaced and spawned to close the gaps in the geometry.   Removed the modern "slop" features from the UI   The LU4 client is full of things that have no business in an Interlude server, and most of them are wired into the UI. Those are stripped out: The assistant manager — the auto-hunt / auto-play slot on the XP bar Vitality*and the XP lock button The fatigue system — updated the format to a regular VIP format The in-game browser and in-game radio buttons The "Learn Skill" tab in the player skills window Removals are scripted by path, so they survive a client patch and are trivially reversible if a buyer wants any of them back.   Reworked the UI toward an actual Lineage II feel   The original LU4 UI looks AI-generated. It doesn't feel like Lineage II. A good part of it has been reworked toward the classic look — the menu button row rebuilt as a wrapping layout with a proper background, the self status and target windows cleaned up, and 590 asset field edits covering textures, positions, colours, text and compiled Blueprint literals.   This part is not finished, and I want to be straight about that But the tooling to continue it is all there, and it's the good kind of tooling: you can target any widget property in any UI asset by dotted path, remove widgets by path without knowing their auto-generated slot names, and edit text that's dynamically bound through Blueprint bytecode rather than stored as a plain property. Continuing the UI work means adding lines to a data file, not reverse engineering anything new.   Other client-side work   A custom login scene, built in a real Unreal Engine project that's included Interlude music restored, plus ambient sound work (cities only for now) Custom splash and branding   What's included   All six git repositories, the Unreal Engine project and its custom assets, all the tooling — injector, hook, sniffer, decryptor, asset editor — every data set including geodata, XML, HTML and the SQL schema, the build and repack scripts, and the per-repo technical documentation including the reverse-engineering notes.   Happy to answer questions or show it running.   Gallery
  • 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..