-
Posts
5,365 -
Credits
0 -
Joined
-
Last visited
-
Days Won
68 -
Feedback
0%
Content Type
Articles
Profiles
Forums
Store
Everything posted by Tryskell
-
When you do this sort of check you haven't to put == 1, because isOnline give back his own answer. Well if it's not clear, just test and if it works be happy... Lol. If not, edit your first post and add the error.
-
[Share]My Services for free
Tryskell replied to Akken's topic in Server Development Discussion [L2J]
xAdd, don't troll please, he tries to help :). For others, if you have any idea of resolution, don't hesitate to PM me to give me your feelings. I can let it as a test for our "helpful developer soul" and give the resolution too if he doesn't find :). ABOUT THE TEST - It is mainly to show your developing skills to others, but it's a real problem I actually try to resolve. - According how you help, people will trust you more or less, so do your best and ask the good questions :). - I can give any parts of code you will judge necessary to resolve the problem, you just can't have the full code. - YOU DON'T NEED TO RESOLVE THE PROBLEM YOURSELF, YOU CAN HELP GIVING ME TRACKS. Once again it's just to see "how you think" and "how far your logic can go". - This case is possible to resolve without the whole acess to all source. I begin to have an idea why it is buggy (see "EXPERIENCES" tab). DA ERROR ! Check my screen in first post to see the full NPE. Error in line 108 of my code (I updated sources, so it's not anymore line 106, but 108), which is supposed to be if (activeChar.getFactionId() != castleLord.getFactionId()) EXPERIENCES - I discovered than the system worked only when the leader of castle was on (so yeah, now I have a track). - I implemented the GameTimeController from L2Jrev, with javolution.jar update etc, without effect. Consider it's not a GameTimeController problem. ABOUT THE SYSTEM L2JArchid, interlude, very very old project :). The project itself isn't to blame in my case. Don't begin a troll war about lacks in Archid. My siege system is fully custom, and you need only the idea to understand it. You can't find it on any place, as I have handed-scripting all. Yeah, some people likes to develop their own ideas and not only apply patches :). L2 got castles, they're NPCs sided at begin. I have a faction server, aka 2 teams fighting each other. One of the goal of my server is to adapt sieges for factions, without using any registering NPCs. For that, I use the castle zone area, which is activated when a siege occurs. Areas got an Enter/Exit solution which is perfect for the purpose. When you enter in a castle zone, AND IF a siege occurs, a check is made about the SiegeState (RelationChanged packet). According to castle lord faction and your own faction, you are put 1 (attacker) or 2 (defender). If you got no clan or are a GM, you're set to 0. This check is usefull only for guards aggro, doors open/kill and artefact skill cast. ---- About your ask, even if I know it won't be useful to resolve this case : package com.l2jarchid.gameserver.model.zone.type; import javolution.util.FastList; import com.l2jarchid.gameserver.datatables.ClanTable; import com.l2jarchid.gameserver.datatables.MapRegionTable; import com.l2jarchid.gameserver.instancemanager.CastleManager; import com.l2jarchid.gameserver.model.L2Clan; import com.l2jarchid.gameserver.model.L2ClanMember; import com.l2jarchid.gameserver.model.actor.L2Character; import com.l2jarchid.gameserver.model.actor.instance.L2PcInstance; import com.l2jarchid.gameserver.model.actor.instance.L2SiegeSummonInstance; import com.l2jarchid.gameserver.model.entity.Castle; import com.l2jarchid.gameserver.model.zone.L2ZoneType; import com.l2jarchid.gameserver.network.SystemMessageId; import com.l2jarchid.gameserver.network.serverpackets.RelationChanged; import com.l2jarchid.gameserver.network.serverpackets.SystemMessage; import com.l2jarchid.gameserver.network.serverpackets.UserInfo; import java.util.logging.Logger; /** * A castle zone * * @author durgus */ public class L2CastleZone extends L2ZoneType { private static Logger _log = Logger.getLogger(L2CastleZone.class.getName()); private int _castleId; private Castle _castle; private int[] _spawnLoc; public L2CastleZone() { super(); _spawnLoc = new int[3]; } @Override public void setParameter(String name, String value) { if (name.equals("castleId")) { _castleId = Integer.parseInt(value); // Register self to the correct castle _castle = CastleManager.getInstance().getCastleById(_castleId); _castle.setZone(this); } else if (name.equals("spawnX")) _spawnLoc[0] = Integer.parseInt(value); else if (name.equals("spawnY")) _spawnLoc[1] = Integer.parseInt(value); else if (name.equals("spawnZ")) _spawnLoc[2] = Integer.parseInt(value); else super.setParameter(name, value); } @Override protected void onEnter(L2Character character) { if (_castle.getSiege().getIsInProgress()) { character.setInsideZone(L2Character.ZONE_PVP, true); character.setInsideZone(L2Character.ZONE_SIEGE, true); if (character instanceof L2PcInstance) { L2PcInstance activeChar = (L2PcInstance) character; activeChar.sendPacket(new SystemMessage(SystemMessageId.ENTERED_COMBAT_ZONE)); // Mise a jour de la relation (excepte pour GMs et joueurs sans clan) if (!activeChar.isGM() && activeChar.getClan() != null) { //si le possesseur du chateau est different de rien if (_castle.getOwnerId() > 0) { //recherche du clan possesseur, et ensuite du clan leader L2Clan clanOwner = ClanTable.getInstance().getClan(_castle.getOwnerId()); if (clanOwner != null) { L2PcInstance castleLord = clanOwner.getLeader().getPlayerInstance(); // si le joueur est d'une faction differente du clan possesseur, // il est affiche en ennemi - sinon il est affiche en defenseur if (activeChar.getFactionId() != castleLord.getFactionId()) activeChar.setSiegeState((byte) 1); else activeChar.setSiegeState((byte) 2); } } //sinon tout le monde est considere comme ennemi. else activeChar.setSiegeState((byte) 1); //renvoit les infos du joueur au joueur activeChar.sendPacket(new UserInfo(activeChar)); //puis aux joueurs autour de lui for (L2PcInstance player : activeChar.getKnownList().getKnownPlayers().values()) player.sendPacket(new RelationChanged(activeChar, activeChar.getRelation(player), activeChar.isAutoAttackable(player))); } } } } @Override protected void onExit(L2Character character) { if (_castle.getSiege().getIsInProgress()) { character.setInsideZone(L2Character.ZONE_PVP, false); character.setInsideZone(L2Character.ZONE_SIEGE, false); if (character instanceof L2PcInstance) { L2PcInstance activeChar = (L2PcInstance) character; activeChar.sendPacket(new SystemMessage(SystemMessageId.LEFT_COMBAT_ZONE)); //reset le state activeChar.setSiegeState((byte) 0); //renvoit les infos du joueur au joueur activeChar.sendPacket(new UserInfo(activeChar)); //puis aux joueurs autour de lui for (L2PcInstance player : activeChar.getKnownList().getKnownPlayers().values()) player.sendPacket(new RelationChanged(activeChar, activeChar.getRelation(player), activeChar.isAutoAttackable(player))); } } // les siege summons sont desummones s'ils quittent la zone if (character instanceof L2SiegeSummonInstance) ((L2SiegeSummonInstance)character).unSummon(((L2SiegeSummonInstance)character).getOwner()); } @Override protected void onDieInside(L2Character character) {} @Override protected void onReviveInside(L2Character character) {} public void updateZoneStatusForCharactersInside() { if (_castle.getSiege().getIsInProgress()) { for (L2Character character : _characterList.values()) { try { onEnter(character); } catch (NullPointerException e) {} } } else { for (L2Character character : _characterList.values()) { try { character.setInsideZone(L2Character.ZONE_PVP, false); character.setInsideZone(L2Character.ZONE_SIEGE, false); if (character instanceof L2PcInstance) ((L2PcInstance)character).sendPacket(new SystemMessage(SystemMessageId.LEFT_COMBAT_ZONE)); if (character instanceof L2SiegeSummonInstance) ((L2SiegeSummonInstance)character).unSummon(((L2SiegeSummonInstance)character).getOwner()); } catch (NullPointerException e) {} } } } /** * Removes all foreigners from the castle * @param owningClanId */ public void banishForeigners(int owningClanId) { for (L2Character temp : _characterList.values()) { if(!(temp instanceof L2PcInstance)) continue; if (((L2PcInstance)temp).getClanId() == owningClanId) continue; ((L2PcInstance)temp).teleToLocation(MapRegionTable.TeleportWhereType.Faction); } } /** * Sends a message to all players in this zone * @param message */ public void announceToPlayers(String message) { for (L2Character temp : _characterList.values()) { if (temp instanceof L2PcInstance) ((L2PcInstance)temp).sendMessage(message); } } /** * Returns all players within this zone * @return */ public FastList<L2PcInstance> getAllPlayers() { FastList<L2PcInstance> players = new FastList<L2PcInstance>(); for (L2Character temp : _characterList.values()) { if (temp instanceof L2PcInstance) players.add((L2PcInstance)temp); } return players; } /** * Get the castles defender spawn * @return */ public int[] getSpawn() { return _spawnLoc; } } TO COMPLETE Sry for french comments, but if you're smart, you can understand it easily. Good luck :D. -
[HELP] Witch EROR HELP Someone
Tryskell replied to [Geo]Sky's question in Request Server Development Help [L2J]
I don't correct fail packs, and if I have to, I prefer correct my pack. I suppose it's not the only error in this distribution, so better change of distribution if dev team sux. Less problems for you. -
[Request] Fully coded website
Tryskell replied to baiumbg's question in Request Server Development Help [L2J]
I understand why some people believe to God, aliens or other non-existant things when I read this sort of topic. Use Joomla or other CMS to do some of the work, but seriously, just give up if you're "lazy" or if you haven't the money. People don't work for free, and when they do, they do for their own. If you search slaves, you are born too late I guess. And even if my answer is highly flame-type, you got your answer in yellow, that will avoid to read my whole post because of your lazyness... -
Edit your first post to add the FULL error. Btw, this check == 1 can be removed. if (onlinePlayer.isOnline()) is normally enough.
-
[Share]My Services for free
Tryskell replied to Akken's topic in Server Development Discussion [L2J]
Currently my test is too a real problem, where he *as he offers his service public* can help. I put it public to people see if the guy can resolve things, or just appply patchs. My last post wasn't a I-already-got-a-solution problem :). Else I won't post a difficult problem. I'm a biatch, but not this day :D. I search myself the solution at this moment, lol :). ---- I didn't say it, but it's interlude, so shouldn't have any difficulty to search solution, even if L2Jbrasil/equal. About packs, they often destroy things in it, but the main code is 98% the same. The main code is around... 90% the same from IL to any other chronicle. If you remove special features (vitality, kamael) of the chronicle, ofc. Don't blame packs owners who commit nothing except credits change :D (ironic). -
[Share]My Services for free
Tryskell replied to Akken's topic in Server Development Discussion [L2J]
Each time you use L2JBrasil pack, God slay a kittie. ---- What are your programming skills ? I mean, what have you done ? As Sido says it's fine you offer your services, but I have to add => what do you offer ? :) ---- LET'S GIVE YOU A TEST (and others, if you get an idea, you can help me ^^). To give you a concrete exemple, I currently work on a new siege system : when you go to the castle area, you become enemy/friend automaticaly (it's a faction system, it's why this system can work without being registered). To be short, you enter in the area, a check is made only if a siege is up on this area. If the siege check is ok, it decides if you're enemy or friend with the castle lord faction. I got a recurrent NPE, which happens when you enter in the area. I currently don't understand why it happens. Here is the onEnter code :). There are many things which are useless, it's to help me find thing which bug. @Override protected void onEnter(L2Character character) { if (_castle.getSiege().getIsInProgress()) { character.setInsideZone(L2Character.ZONE_PVP, true); character.setInsideZone(L2Character.ZONE_SIEGE, true); if (character instanceof L2PcInstance) { L2PcInstance activeChar = (L2PcInstance) character; activeChar.sendPacket(new SystemMessage(SystemMessageId.ENTERED_COMBAT_ZONE)); // Mise a jour de la relation (excepte pour GMs et joueurs sans clan) if (!activeChar.isGM() && activeChar.getClan() != null) { //si le possesseur du chateau est different de rien if (_castle.getOwnerId() > 0) { activeChar.sendMessage ("ClanID du possesseur : "+_castle.getOwnerId()); activeChar.sendMessage ("Faction du joueur : "+activeChar.getFactionId()); //recherche du clan possesseur, et ensuite du clan leader L2Clan clanOwner = ClanTable.getInstance().getClan(_castle.getOwnerId()); activeChar.sendMessage ("clanOwner : "+clanOwner); if (clanOwner != null) { activeChar.sendMessage ("clanOwner.getLeader : "+clanOwner.getLeader()); activeChar.sendMessage ("clanOwner.getLeader.getPlayerInstance : "+clanOwner.getLeader().getPlayerInstance()); // si le joueur est d'une faction differente du clan possesseur, // il est affiche en ennemi - sinon il est affiche en defenseur if (activeChar.getFactionId() != clanOwner.getLeader().getPlayerInstance().getFactionId()) { activeChar.sendMessage ("State mis a 1"); activeChar.setSiegeState((byte) 1); } else { activeChar.sendMessage ("State mis a 2"); activeChar.setSiegeState((byte) 2); } } } //sinon tout le monde est considere comme ennemi. else { activeChar.sendMessage ("Pas d'owners, alors tout le monde est un attaquant"); activeChar.setSiegeState((byte) 1); } activeChar.sendPacket(new UserInfo(activeChar)); } } } } activeChar.sendMessage ("clanOwner.getLeader : "+clanOwner.getLeader()); is supposed to be the 108th line in my NPE report. Let's see if you can understand the code, or even better, help me :D. I added a slideshow to give you an idea what it does ingame : http://img818.imageshack.us/slideshow/webplayer.php?id=shot00025u.jpg Comment on images : 1: siege start 2: castle lord enter in castle siege area 3: left the area, you lose the siege state 4: creation of another clan of the same faction than castle lord one 5: Evil joined the castle lord clan, so his state is updated 6: Sealiah is in another clan, but same faction than lord one, so she's in defense state. 7: Sealiah left the area 8: Lolicon from a good clan is coming in the castle area, his state is updated to attackers 9: As lolicon is an attacker, he can cast on the artefact. Later I will implement mercenaries too. To finish and complete the "how-to", all this trick is made thanks to the state. The state is put to 1 or 2 depending of castle lord faction. According to this state, you can or cant open/kill doors, be attacked by guards and cast on artefact. -
If you have no idea what to do, just pick up a fresh copy of a pack. You deleted a java lib (named awt), which is supposed to draw things. ---- BTW, Give more things about what you did, what pack you use, else don't hope for help. We're not gods, can't see through brains.
-
[HELP] Server Error
Tryskell replied to akaravas's question in Request Server Development Help [L2J]
Burn your old quests folder with fresh datapack quest folder. -
[HELP] Witch EROR HELP Someone
Tryskell replied to [Geo]Sky's question in Request Server Development Help [L2J]
NPE error in ChanceSkillList.java, more accurately in makeCast method. You can't read it ? Forget to do a server lol. And L2J Equal is a shit. Post in their forum if you want help. PS : it's only me, or you got 4x the same thing loading ? I see "Loading 14 handlers" x4... -
[Help] Debuff Slots Java Code
Tryskell replied to charliedvm's question in Request Server Development Help [L2J]
Check L2J timeline, around rev 2000 (1800-2200 for more precisions). -
Not here, because you're in the wrong forum section :D. Wait for a mod to move your message to client side messages.
-
[Share]In Game Npc Guide Char[Interlude]Tested
Tryskell replied to Devangell™'s topic in Server Shares & Files [L2J]
Idea is good, but do a bigger effort in general presentation and mistakes. Add more details in each class review, 2-3 lines are enough. And avoid those freakin big images, they're not even correctly "proportioned" lol, and for me it breaks definitively the "middle ages heroic fantasy". It's like showing Dark Vador or a Tesla Armor. I got my own "classes description" via the class manager, but why not a version 2.0 of your work :). It can be helpful for people. -
[ LF ] Developer For My Freya Private Project!!
Tryskell replied to Street-Gamer's question in Request Server Development Help [L2J]
To post those age ranges, the guy is 16y old. Or he is Erb's fan lol. And what about 50y old discrimination ? I should attack you lol. Old people aren't more retarded than 16y old :D. And lol about the ripped off message, seriously, this becomes just insane haha. After ninjaed servers, ninjaed websites, ninjaed shares, now there are even ninjaed forum messages hahaha. Just awesome, you made my day. You pay with lolipops, or it's a serious message ? -
Please some one told me this npc ID-s
Tryskell replied to ucko1991's question in Request Server Development Help [L2J]
Lol if he asks for NPC IDs from a server, it's surely because he want to make a sort of ripped off server (0 originality but let's forgive this, it's the fashion those days :D). As said others, PHX. For people who didn't understand, he want the NPC IDs from a server he doesn't have any control on it. So, stop talking about dev shits :D. Except if he knows the retail name of the mob, or if you're lucky at //spawn, he have to use PHX. I must add a server with such customs, you surely never play it for 2 years lol. Around 101% sure haha. And you can forget to find a decent protection on those servers too. BTW I don't know those mobs (well I stopped to IL :D) so they must be in the last part of monsters table. -
L2j Infinity Error
Tryskell replied to ChadaS115's question in Request Server Development Help [L2J]
Install Java DEVELOPEMENT kit perhaps ? :D. Normally there aren't any path to make... It should autoconfigure it alone. -
It's related to IA, and you can check faction guards code to adapt it easily. In fact, it's the same lol. About faction guards code, search on this forum you should find some code. I found, so you can find :D. If there aren't, or if I have found it on another place, I could share it. Unfortunately, there are no credits inside...
-
[help] BAN list? possible
Tryskell replied to raimonbrinks's question in Request Server Development Help [L2J]
As I'm insanely cute today, I will share you the mechanism of mine. Some things you must know : - Do whatever you can/want with this source, I don't give any support, except the short explanation I will do right now. - Clever people will find it usefull, lazy will find it useless. Your problem seriously lol. - It's surely not the most optimized way to do it, and I really don't give a fock. - It's made for IL, so try to adapt it if you need. - In Epilogue++ you got a punishement system, no idea how far it's advanced. - I used the veerrryyy old C3 website to make this feature (deutch words in it, I don't even know the translation, just suposed it). First, a picture : You can see my Navicat stuff, with a table named "site_eg". It's a table I specially created to stock all punishements features. It didn't existed at all before. When you open it you got many columns : id, reason, victim_name, etc. In background, you got the formated result on my homemade/stocked website. Now the source code, you can dl too at this address : http://www.4shared.com/file/NdQUBN_W/eg_online.html <?php $verbindung=MYSQL_CONNECT($dbhost,$dbuser,$dbpass) or die ("mySQL database have a problem ; please come back later."); MYSQL_SELECT_DB($dbname) or die ("mySQL database have a problem ; please come back later."); $get_eg="SELECT * FROM site_eg ORDER by id DESC"; $eg=MYSQL_QUERY($get_eg); //Initialisation pour une valeur de départ non null pour rentrer dans la boucle $row = "0"; while ($row != null) { $row = mysql_fetch_array($eg); if ($row["punishement"] == 1) $row["punishement"]="Chatban"; elseif ($row["punishement"] == 2) $row["punishement"]="Jail"; elseif ($row["punishement"] == 3) $row["punishement"]="Delevel"; elseif ($row["punishement"] == 4) $row["punishement"]="Decreased enchant"; elseif ($row["punishement"] == 5) $row["punishement"]="Character ban"; elseif ($row["punishement"] == 6) $row["punishement"]="Account ban"; if ( $row != null ) { echo "<tr>"; echo "<td>" .prettydatenews($row["postdate"]). "</td>"; echo "<td>" .$row["victim_name"]. "</td>"; echo "<td>".$row["punishement"]. "</td>"; echo "<td>".$row["time"]. "</td>"; echo "<td>".$row["reason"]. "</td>"; echo "</tr>"; } } echo "</table>"; function prettydatenews($uglydate) { // Format de la date (DD-MM-YYYY pour les news de l'accueil). return date("d.m.Y", mktime(0,0,0,substr($uglydate, 5, 2),substr($uglydate, 8, 2),substr($uglydate, 0, 4))); } ?> Some explanations : we log to the db, with password W and login Y and we do a SQL request on it : SELECT * FROM site_eg ORDER by id DESC, which means basically : select all the damn data from my table "site_eg" and order it via their "id" After it's a question of format... It creates a table, and do all the shit clean lol. For example, it renames the punishement, which is basically a system of 6 numbers per a "name". Punishement 1 = name1, punishement 2 = name2,... There will have no graphics at all like mine. If you read my sources from the 4shared place, you can see clearly I used headers and footers in php where I do some calls to my .css stylesheet. As I didn't share my whole site (Maxcheaters will rip it in some months perhaps, if my server is launched a day, who know lol), you miss all graphical part, which isn't the issue in your problem, we agree :D. --- Basically, it's all for the "read". Now you need the "write" code, aka java commandhandlers heavy modifications :D. -
[Request]Faction sources(IL)
Tryskell replied to xMrPwN's question in Request Server Development Help [L2J]
You dream lol. Search coyote faction engine, the one which is a rip from L2JFree. If you want a decent faction engine, rip the L2JFree one, and you will have modifications to make anyway according to your wishes. To help you, I have post on it... Some months ago. And forgive blue next time, you killed my eyes, we're not Christmas yet. -
{HELP}Could not store Spawn in the DB!!
Tryskell replied to PoRnosJH's question in Request Server Development Help [L2J]
You surely miss a column in your database, or the //spawn command tries to add more datas than your current database format can support. What can you do then ? Search your spawn command, and analyze it. It will show which columns are used. Compare it with your spawn database format, or the table where your custom spawns are supposed to be stored. My serverpack uses another table for custom spawn. So be AWARE. PS : even if your signature is sexy, can you decrease the height per... 10 ? Lol, just change of signature dude. And she got fake boobs. -
[help] BAN list? possible
Tryskell replied to raimonbrinks's question in Request Server Development Help [L2J]
There is one part related to Java (custom //ban command), and a big part related to PHP. To be simple, when you ban someone ingame, it write his name in a banlist table, with reason etc. PHP read your table "banlist", like it could read your table "heroes" if you had a "heroes" page. ---- THE FOLLOWING IS JUST A GUIDELINE. YOU HAVE TO MAKE THE IMPROVED COMMAND AND THE PHP PART OBVIOUSLY. It could work with a command like //ban characterName Duration ReasonofBan It's an accurate command which need 3 parameters, but you can cut it to the CharacterName if you got a PHP administration panel (which mean more work for my part lol, so I prefer java). The command kick and ban the guy ofc, but write a SQL command in a banlist table (table you improved/created if no exists). Once you got your registered banned character, you have to code a PHP code in your website (make a page for it like your exemple...) to put in in format. I invite you to search guides on this forum about "show heroes on website" and such things. Dunno if I was rly clear lol, but just don't hope someone make it for you. It's rly not hard, but it asks some time if you want to do a clean thing. I coded this thing myself (except the improved //ban command), so it's possible. ----- Some more things : - find the command //ban easily using the powerful "search" from eclipse. It's in admincommandhandlers, or whatever depending of your chronicle. - search definitively a "heroe" or any guide which pick stats from database to call it on webpage. It's the easiest way to understand. -
You focked something which make error when admin commands are initialized, cf "AdminCommandHandler.getInstance" It happens when this line is called AdminCommandHandler.java, line 37 And it's surely related to "GameServer.java". The <init> thing. You perhaps deleted it. If not, I don't know and verify what you edited, you made a stupid thing for sure.
-
[Request] Stack Subclass NPC (Interlude)
Tryskell replied to zolnet's question in Request Server Development Help [L2J]
Fortunately / unfortunaley (depends of PoV), it's the only way. Without bitching, I don't think subclass system have been modded so hard than you can't correct some errors. Correcting errors is often a question of time. Currently that doesn't help you, but you don't give any source code on what to work... My "I Code, you Play" function isn't activated. -
Physical attack stop!
Tryskell replied to Spyrox92's question in Request Server Development Help [L2J]
What release are you using, on what revision ? When exactly it happens ? Any critical error in GS ? Except a badass lag, it has nothing to do with mySQL nor hardware. If you use a release which isn't L2J Free / L2J, you increase by 191,21% your luck to be on a crappy pack. -
[HELP] Java row kill system
Tryskell replied to djpliku's question in Request Server Development Help [L2J]
For upper posts, don't feed trolls. The SpreeKills have been added twice in 2 differents methods, wtf ? Do a search with "switch(SpreeKills)", you will see what I talk. - Just create a method "SpreeKillsCall", and call it when you need it... Normally once is enough. - Your SpreeKills isn't reseted at death... Only at delog lol. On the "doDie" method, put a "SpreeKills = 0;" ----- Second, and this should answer your question, the 2 uses of SpreeKills are in "increasePvpKills" and "increasePkKillsAndKarma" methods. "increasePkKillsAndKarma" got a faction restriction (and it's normal, to avoid to get karma). The whole method is just ignored. For "increasePvpKills" method, it is surely not used in your faction system. Try to verify first if you get a pvp point from an enemy. If you haven't, add "increasePvpKills;" where it is needed. If you have, you're unlucky and need more searches. As I'm very cute (:>) you will surely have to edit "onKillUpdatePvPKarma". And as I'm INSANELY cute it's after "// Check if it's pvp" commentary. Normally a faction system haven't a pvpflag, so this pvp checker is failed, and works for normal players, but not for faction. End of the spoiler. ---- Finally, and as old intensive player of faction servers, and developer of my own, I think the idea is a fail in the sense some guys can reach easily 400 pvps in a row (and it has really happen on a well known server), so what ? You code 400 different sprees ? Even if the render is very graphical and candy-eye looking, it's bad idea finally. Idea is good, but in gamers' reality... Well you got my point. Was my 2,1 cent. ---- Try that : After // Check if it's pvp, you got if ( ( checkIfPvP(target) && // Can pvp and targetPlayer.getPvpFlag() != 0 // Target player has pvp flag set ) || // or ( isInsideZone(ZONE_PVP) && // Player is inside pvp zone and targetPlayer.isInsideZone(ZONE_PVP) // Target player is inside pvp zone ) ) increasePvpKills(target); else // Target player doesn't have pvp flag set { // check about wars if (targetPlayer.getClan() != null && getClan() != null && getClan().isAtWarWith(targetPlayer.getClanId()) && targetPlayer.getClan().isAtWarWith(getClanId()) && targetPlayer.getPledgeType() != L2Clan.SUBUNIT_ACADEMY && getPledgeType() != L2Clan.SUBUNIT_ACADEMY) { // 'Both way war' -> 'PvP Kill' increasePvpKills(target); return; } // 'No war' or 'One way war' -> 'Normal PK' if (targetPlayer.getKarma() > 0) // Target player has karma { if (Config.KARMA_AWARD_PK_KILL) increasePvpKills(target); } else if (targetPlayer.getPvpFlag() == 0) // Target player doesn't have karma { increasePkKillsAndKarma(target); //Unequip adventurer items checkItemRestriction(); } } You have to add a code to say "hiho, i'm in a faction server, all those checks are useless and make my code buggy". For that we will use a variable, like that you can ON/OFF the system. This variable seems to be already used by your faction engine, on configs .txt part. The code I wroten must be taken between that : if (!Config.ENABLE_FACTION_ENGINE) { code I linked } else increasePvpKills(target); What it does exactly ? It bypasses all checks if the variable is set to "True", and go directly to the "increasePvpKills" method, which supposed to add you 1 pvpkill and do your abracadabra system. Don't forget to remove the uselesss code you added in "increasePkKillsAndKarma". It's not needed for your faction system, except for normal players.