Jump to content
  • 0

[Help] L2 Pvp Custom Skills System


Question

Posted

Καλησπέρα παιδιά , θα ήθελα βοήθεια σε ένα θέμα. Έχω ανοίξει l2jFrozen σερβερ και προσπαθώ να βάλω custom pvp skills .. Έχω και ένα πακ του l2 Finest που παίρνω ιδέες. Αλλά! Όσο και να το έχω παλέψει απο το eclipse + server files  δεν γινεται με τίποτα . Έχω παρει το Code απο gameserver/model/actor/....L2pcInstance 

 

private void pvpSkillsSystem()
{
L2PcInstance activeChar = L2PcInstance.this.getClient().getActiveChar();
if (activeChar.getPvpKills() == 500)
{
activeChar.addSkill(SkillTable.getInstance().getInfo(323, 1), true); // Adena to True Gold
activeChar.sendMessage("You have received Adena to True Gold skill for " + activeChar.getPvpKills() + " PvP's.");
}
else if (activeChar.getPvpKills() == 1000)
{
activeChar.addSkill(SkillTable.getInstance().getInfo(3156, 1), true); // Firework (Recovers 500 CP)
activeChar.sendMessage("You have received Firework skill for " + activeChar.getPvpKills() + " PvP's.");
}
else if (activeChar.getPvpKills() == 1500)
{
activeChar.addSkill(SkillTable.getInstance().getInfo(3157, 1), true); // Large Firework
activeChar.sendMessage("You have received Large Firework skill for " + activeChar.getPvpKills() + " PvP's.");
}
else if (activeChar.getPvpKills() == 3000)
{
activeChar.addSkill(SkillTable.getInstance().getInfo(7045, 1), true); // Blessed Body
activeChar.sendMessage("You have received Blessed Body skill for " + activeChar.getPvpKills() + " PvP's.");
}
else if (activeChar.getPvpKills() == 3500)
{
activeChar.addSkill(SkillTable.getInstance().getInfo(60, 1), true); // Fake Death
activeChar.sendMessage("You have received Fake Death skill for " + activeChar.getPvpKills() + " PvP's.");
}
else if (activeChar.getPvpKills() == 4000)
{
activeChar.addSkill(SkillTable.getInstance().getInfo(7041, 1), true); // Focus
activeChar.sendMessage("You have received Focus skill for " + activeChar.getPvpKills() + " PvP's.");
}
else if (activeChar.getPvpKills() == 5000)
{
activeChar.addSkill(SkillTable.getInstance().getInfo(7049, 1), true); // Decrease Weight
activeChar.sendMessage("You have received Decrease Weight skill for " + activeChar.getPvpKills() + " PvP's.");
}
else if (activeChar.getPvpKills() == 7000)
{
activeChar.addSkill(SkillTable.getInstance().getInfo(7042, 1), true); // Death Whisper
activeChar.sendMessage("You have received Death Whisper skill for " + activeChar.getPvpKills() + " PvP's.");
}
else if (activeChar.getPvpKills() == 9500)
{
activeChar.addSkill(SkillTable.getInstance().getInfo(7050, 1), true); // Might
activeChar.sendMessage("You have received Might skill for " + activeChar.getPvpKills() + " PvP's.");
}
else if (activeChar.getPvpKills() == 11000)
{
activeChar.addSkill(SkillTable.getInstance().getInfo(3089, 1), true); // Medusa
activeChar.sendMessage("You have received Medusa skill for " + activeChar.getPvpKills() + " PvP's.");
}
else if (activeChar.getPvpKills() == 13000)
{
activeChar.addSkill(SkillTable.getInstance().getInfo(4, 1), true); // Dash
activeChar.sendMessage("You have received Dash skill for " + activeChar.getPvpKills() + " PvP's.");
}
else if (activeChar.getPvpKills() == 14000)
{
activeChar.addSkill(SkillTable.getInstance().getInfo(3160, 1), true); // Resurrection
activeChar.sendMessage("You have received Resurrection skill for " + activeChar.getPvpKills() + " PvP's.");
}
else if (activeChar.getPvpKills() == 15000)
{
activeChar.addSkill(SkillTable.getInstance().getInfo(7055, 1), true); // Wind Walk
activeChar.sendMessage("You have received Wind Walk skill for " + activeChar.getPvpKills() + " PvP's.");
}
else if (activeChar.getPvpKills() == 18000)
{
activeChar.addSkill(SkillTable.getInstance().getInfo(1050, 2), true); // Pvp Return
activeChar.sendMessage("You have received Pvp Return skill for " + activeChar.getPvpKills() + " PvP's.");
}
else if (activeChar.getPvpKills() == 20000)
{
activeChar.addSkill(SkillTable.getInstance().getInfo(7064, 1), true); // Pvp Chant of Victory
activeChar.sendMessage("You have received Pvp Chant of Victory skill for " + activeChar.getPvpKills() + " PvP's.");
}
 
και απο config (source)
 
public static boolean ENABLE_PVP_SKILLS;
(αντιστοιχα)
ENABLE_PVP_SKILLS = Boolean.valueOf(pvpSettings.getProperty("EnablePvpSkillsSystem", "True"));
  
και στο (server)functions/pvp
 
# Enable pvp skills system?
EnablePvpSkillsSystem = True
 
Αλλα τίποτα !!!!!! Μπορει καποιος να με βοηθήσει;;;; Γενικα ειμαι νέος με αυτα αλλα το παλεύω καλα!

Recommended Posts

  • 0
Posted (edited)

 Isws gt to reward arxizei apo ta 500 pvp??

Εννοειται οτι έβαλα σε τεστ παίχτη 9001 pvp/pk και δεν αλλαξε τιποτα.

Edited by tonac
  • 0
Posted

Εννοειται οτι έβαλα σε τεστ παίχτη 9001 pvp/pk και δεν αλλαξε τιποτα.

 

sto sigkekrimeno code prepei na pas apo 499 kill sta 500 mesw pvp gia na sou dwsei to pvpskill monima ala mia fora.

 

osa pvp kai an valeis apo tin database, den prokite na doulepsei.

 

Mono mesw pvp, px apo 999 -> 1000, 1499 -> 1500 ktlp

  • 0
Posted (edited)

else IF, else IF   :dat:

L2PcInstance activeChar = L2PcInstance.this.getClient().getActiveChar();

:happyforever: 

Edited by SweeTs
  • 0
Posted (edited)

Εννοειται οτι έβαλα σε τεστ παίχτη 9001 pvp/pk και δεν αλλαξε τιποτα.

Giauto vale to 500 sta 10 gia na sto dosei to prwto apo ta 9 sta 10

Edited by Reborn12
  • 0
Posted

Giauto vale to 500 sta 10 gia na sto dosei to prwto apo ta 9 sta 10

Το έκανα.. Το άλλαξα απο L2PcInstance activeChar = L2PcInstance.this.getClient().getActiveChar();

if (activeChar.getPvpKills() == 500)
 
σε  
 
L2PcInstance activeChar = L2PcInstance.this.getClient().getActiveChar();
if (activeChar.getPvpKills() == 3)
 
μπηκα , εκανα 5 pvp και δεν δούλεψε. :/ Άλλη πρόταση ; ευχαριστω που βοηθατε παιδια!
  • 0
Posted

 

Το έκανα.. Το άλλαξα απο L2PcInstance activeChar = L2PcInstance.this.getClient().getActiveChar();

if (activeChar.getPvpKills() == 500)
 
σε  
 
L2PcInstance activeChar = L2PcInstance.this.getClient().getActiveChar();
if (activeChar.getPvpKills() == 3)
 
μπηκα , εκανα 5 pvp και δεν δούλεψε. :/ Άλλη πρόταση ; ευχαριστω που βοηθατε παιδια!

 

kaneme add sto skype vasilis.kostidis na se voithisw 

  • 0
Posted

 

Το έκανα.. Το άλλαξα απο L2PcInstance activeChar = L2PcInstance.this.getClient().getActiveChar();

if (activeChar.getPvpKills() == 500)
 
σε  
 
L2PcInstance activeChar = L2PcInstance.this.getClient().getActiveChar();
if (activeChar.getPvpKills() == 3)
 
μπηκα , εκανα 5 pvp και δεν δούλεψε. :/ Άλλη πρόταση ; ευχαριστω που βοηθατε παιδια!

 

 

re eisai xazos? oti sou ipa to egrapeses sta arxidia sou?

  • 0
Posted

re eisai xazos? oti sou ipa to egrapeses sta arxidia sou?

re malaka auto pou eipes ekane.. s lew allaxe ot pvp se 3 bike mesa kai skotose 5 fores gia na paei sta 5..

dn to ekane xirokinhta.. 

  • 0
Posted (edited)

btw to problhma sou ine edw.. L2PcInstance activeChar = L2PcInstance.this.getClient().getActiveChar();

 

to void pou exis ine 100% sto L2PcInstance... opote grapse 

this.addSkill(SkillTable.getInstance().getInfo(3160, 1), true); // Resurrection

ή  απλα 

addSkill(SkillTable.getInstance().getInfo(3160, 1), true); // Resurrection

 

really rwra? xD L2PcInstance. this? xD

Edited by AccessDenied
  • 0
Posted

btw to problhma sou ine edw.. L2PcInstance activeChar = L2PcInstance.this.getClient().getActiveChar();

 

to void pou exis ine 100% sto L2PcInstance... opote grapse 

this.addSkill(SkillTable.getInstance().getInfo(3160, 1), true); // Resurrection

ή  απλα 

addSkill(SkillTable.getInstance().getInfo(3160, 1), true); // Resurrection

 

really rwra? xD L2PcInstance. this? xD

 

den einai ekei to provlima apla to kanei kata microsec pio argo

  • 0
Posted (edited)

den einai ekei to provlima apla to kanei kata microsec pio argo

paw stoxiima oti dn tou bgazei kan to minima otan paei sauta ta pvp.. ektos kai an den to kalei kan to void...

 

FILE MOU LOL exeis balei na kalei to void sto UpdatePvP() i pos legete? i apla exis petaxi to void sto pcinstance kai perimeneis to l2 na katalavei oti prepei na to kalesei?

 k really if? xathike ena kwlo

switch (p.getPvP())

{

case x: 

 blabla

break

}

Edited by AccessDenied
  • 0
Posted

Egw lew leipoune komatia apo ton code k sigoura tou vgazei warning

As riksei mia ton code edw me photo gt etsi akri dn tha vgei pote..

  • 0
Posted

Egw lew leipoune komatia apo ton code k sigoura tou vgazei warning

As riksei mia ton code edw me photo gt etsi akri dn tha vgei pote..

sobara auto pou eipes oti 100000 fores pio exupno apo ton xdem .. good

  • 0
Posted (edited)

Παιδια θελω βοήθεια , παλεύω ολη μέρα .. μεχρι που εφτιαξα και code παρομοιο με τον pvp πχ. 

 

(Config SERVER FILES)

EnablePvPSkillSystem = True

 

 

# Settings For Ammount 1.
PvpSkillAmount1 = 3
 
(CONFIG SOURCE)
public static boolean PVP_SKILL_SYSTEM_ENABLED;
public static int PVP_SKILL_AMOUNT1; 
 
 
PVP_SKILL_SYSTEM_ENABLED = Boolean.parseBoolean(pvpSettings.getProperty("EnablePvPSkillSystem", "false"));
PVP_SKILL_AMOUNT1 = Integer.parseInt(pvpSettings.getProperty("PvpSkillAmount1", "3"));
 
(ENTERWORLD)
 
private void ColorSystem(final L2PcInstance activeChar)
{
// Color System checks - Start
// Check if the custom PvP and PK color systems are enabled and if so check the character's counters
// and apply any color changes that must be done.
/** : Ammount 1 **/
if (activeChar.getPvpKills() >= Config.PVP_AMOUNT1 && Config.PVP_COLOR_SYSTEM_ENABLED)
activeChar.updatePvPColor(activeChar.getPvpKills());
if (activeChar.getPvpKills() >= Config.PVP_SKILL_AMOUNT1 && Config.PVP_SKILL_SYSTEM_ENABLED)
activeChar.UpdatePvpSkill(activeChar.getPvpKills());
}
 
L2PcInstance

 

 

private void UpdatePvpSkill()
{
L2PcInstance activeChar = L2PcInstance.this.getClient().getActiveChar();
if (activeChar.getPvpKills() == 3)
{
addSkill(SkillTable.getInstance().getInfo(323, 1), true); // Adena to True Gold
sendMessage("You have received Adena to True Gold skill for " + activeChar.getPvpKills() + " PvP's.");
}
 
 
 
 
(AYTO DEN DOULEPSE .. OUTE KAI TO PARAKATW!)
 
(CONFIG SERVER FILES)
 
# Enable pvp skills system?
EnablePvpSkillsSystem = True
 
 
(Config SOURCE)
 
public static boolean ENABLE_PVP_SKILLS;
 
ENABLE_PVP_SKILLS = Boolean.valueOf(pvpSettings.getProperty("EnablePvpSkillsSystem", "false"));
 
(ENTERWORLD)
 
private void PvpSkillSystem(final L2PcInstance activeChar)
{
 
if (activeChar.getPvpKills() >= Config.ENABLE_PVP_SKILLS)
activeChar.UpdatePvpSkill(activeChar.getPvpKills());
}
 
(L2PCINSTANCE)
 
private void UpdatePvpSkill()
{
L2PcInstance activeChar = L2PcInstance.this.getClient().getActiveChar();
if (activeChar.getPvpKills() == 3)
{
addSkill(SkillTable.getInstance().getInfo(323, 1), true); // Adena to True Gold
sendMessage("You have received Adena to True Gold skill for " + activeChar.getPvpKills() + " PvP's.");
}
else if (activeChar.getPvpKills() == 1000)
{
addSkill(SkillTable.getInstance().getInfo(3156, 1), true); // Firework (Recovers 500 CP)
sendMessage("You have received Firework skill for " + activeChar.getPvpKills() + " PvP's.");
}
 
Το προσπάθησα οπως ειπε ο @AccessDenied μηπως και δουλεψει ,, γιατι εχει δίκιο δεν μου βγαζει καποιο μήνυμα ουτε μου δινει το σκιλ...! Επισης εχω προβλημα με το name +title color. το ονομα πιανει μονο μεχρι 5 PVP_AMOUNT πχ βαζω με τον ιδιο τροπο ακριβως σε ολα τα αρχεια οπως υπαρχουν οι κωδικες αντιστοιχα 9 και φτανει μεχρι το 5 στο παιχνιδι μεσα...! και το Title  δεν δουλευει καθολου.! Ευχαριστω!
 
 
PS: ΣΕ ΕΚΑΝΑ ADD ΣΤΟ SKYPE. Reborn12
Edited by tonac
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..