Jump to content
  • 0

PK Cleaner NPC Problem


Question

Recommended Posts

  • 0
Posted

change line:

if(player.getInventory().getItemByItemId(Config.PK_CLEAN_ID).getCount() < Config.PK_CLEAN_PRICE)

to:

L2ItemInstance item = player.getInventory().getItemByItemId(Config.PK_CLEAN_ID);
if(item != null && item.getCount() < Config.PK_CLEAN_PRICE)

  • 0
Posted

[PL] teraz  dziala ale choc kiedy mam pk i nie mam itema zeruje mi pk a gdy nie mam pk i klikne zeby wyczyscilo caly czas  mi pisze "Your karma cleaned, continue to play"

i mam tez :

http://s6.ifotos.pl/img/Przechwyt_rqrweep.PNG

 

[en]

when i no have item and have pk  npc clean mine pk

and  when no have pk  and click "clean" i have messesage

"Your karma cleaned, continue to play"

and i have :

http://s6.ifotos.pl/img/Przechwyt_rqrweep.PNG

how to fix it?

 

 

  • 0
Posted

First of all , i really love that

 

/**

* Author: Leki

*/

 

Good job Leki with your share .

Anyway , keeping onpost , all gonna work for sure , i read the whole code and didn't found something wrong . Maybe there should be the problem :

 

 else if(player.getKarma() == 0)
                                player.sendMessage("You don't have any karma, i cannot change it any lower!");
                else // here should be added another if ? Not sure 

As Leki said , " I don't know H5 core as good as interlude ". The best developers for hi5 that i know are from "L2jHidden" project .You should contact them.

 

Good luck in fixing your problem .

  • 0
Posted

add the {} to the else block

before

                               player.setKarma(0);

{

after

                                player.sendMessage("Your karma cleaned, continue to play!"); 

}

add an else before the super(...) call, we dont need it if it was CleanPK

 

add "final" to

L2ItemInstance item = player.getInventory().getItemByItemId(Config.PK_CLEAN_ID);

this is not an error but will have better performance

  • 0
Posted

As wrote vampir, if you haven't the item, it tries to find setCount from a null item, so you will have a NPE in case you haven't the item and try to speak with the PK remover dude. And that will happen on every chronicle, even IL, until you edited method.

 

"final" keyword doesn't impact performance at all, but it's a security for coder. He knows this stuff won't be edited by future edition. You could drop entire final keys from the code with no change. You're right to use "final" when you can, cause it's a good use.

 

A contrario, "static" keyword improves performance, as that method/variable will be shared amongst instances of that class (case of loggers, for example : you use static, only one logger is created for all instances). It means too if you edited (in case of a variable) it, it will affect all instances. So it must be used only when you need it.

 

Just saying.

 

About

super.onBypassFeedback(player, command);

, generally it's with a "else" before. Like that even if that npc hasn't the command, he inherits of others commands "in case of".

 

Finaly, L2PcInstance got a useful check you're using, but you use it bad.

 

					if (!player.destroyItemByItemId("SevenSigns", stoneType, stonesNeeded, this, true))
					return;

 

destroyItemByItemId returns a boolean which mean you can drop the previous check about count. You get ride of one check, and of the NPE in same time and reduces code.

 


 

@Override
public void onBypassFeedback(L2PcInstance player, String command)
{
if (command.startsWith("CleanPK"))
{
	if(player.destroyItemByItemId("CleanKarma", Config.PK_CLEAN_ID, Config.PK_CLEAN_PRICE, this, true))
	{
		player.setKarma(0);
		player.sendMessage("Your karma is cleaned.");       
	}
	else
		player.sendMessage("You don't have enough required items.");
}
else 
	super.onBypassFeedback(player, command);
}

  • 0
Posted

[pl]dobra wszystko  dziala thx Vampir i sorry ze ci zawracalem przyslowiowa dupe :P tylko mi wyskakuje gdy nacisne clean "L2PKCleanerInstance:

Unkown NPC bypass: "cleanPK" npcid: 9999" ale to chyba nic waznego. aa ps moge z 1 sprawa do ciebie na PM ?

  • 0
Posted

"final" keyword doesn't impact performance at all

they do, since you have a var that can only de intialized once, the VM can use it read-only, and that will increase the performance.

 

[...] declaring a final field helps the optimizer make better optimization decisions, because if the compiler knows the field's value will not change, it can safely cache the value in a register.

http://www.ibm.com/developerworks/java/library/j-jtp1029/index.html

 

The revised memory model proposed by JSR 133 includes special provisions for final fields, provisions that are absent from the existing specification. Newer VMs already implement this specification, and treat final fields accordingly. Because final fields are assigned exactly once, aggressive optimizations in a multithreaded context become possible. Specifically, a field doesn't need to be ever reloaded, since its value is guaranteed never to change.

http://renaud.waldura.com/doc/java/final-keyword.shtml

 

Example of Strings differences (final/ not final). nothing to do with our case, but still a relation between "final" and "performance"

http://www.coderanch.com/t/518466/Performance/java/Compiler-optimization-final-variables

 

 

This is a minimal impove. And there are things that can give a lot more than this (for example direct access and not getters/setters, inside the class) or use C++. But still impact on performance

  • 0
Posted

In your own IBM link, you can read

While performance is not a good reason to declare a class or method as final, there are still good reasons to sometimes write final classes.

 

Seems only variables worth to put final. I don't believe you gain something like even 1%, the main point is immutation (or whatever it's named).

  • 0
Posted

I agree, so best thing is to make variables final if they are outside methods, otherwise it's not that important and code isnt readable that well as before.

Guest
This topic is now closed to further replies.


  • Posts

    • these are all my interfaces)
    • Updates:    Revision 568: 2020-10-28 Fix: -Mp potions thanks to RuLLezZ for report. -Archangels(Baium) attack. -geonegine doors npe. -geoengine layer correction. -boats are now properly working. -max enchant protection ,thanks to RuLLezZ-Fortitude for report. -character selection enchant effect,thanks to RuLLezZ-Fortitude for report. -multisell exploit. -SevenSigns leak-optimize. -pledge visual packet. -Party match room unhardcoded newid. -party match room auto join l2off like. Skills fix: -Force Meditation. -skill type: TARGET_MULTIFACE properly working. Rework: -sql connection pt2. -community board ClanList.java (from 120 lines to 65) -community board CastleStatus.java -community board RaidList.java optimize: -sql: player item restore. -Cboard HeroList update every 4 hours(avoid to execute sql connection on click.) Remove: -top players from cboard(and kept the one from rank system, in order to work you must enable the rank system) -   Revision 569: 2020-12-14 Fix: -npe onMagicFinalizer. -FrequentSkill npe. -Cyrillic characters support in cboard ,thanks to Fortitude for report. -255 tutorial message,thanks to Fortitude for report. -cboard switch typo,thanks to Fortitude for report. -multiply statement , thanks to Fortitude for report. -allow to interact with dead monsters to use "sweep" correctly. -potions are now visible under buffs(l2off like). -hp-mp negative value. -optimize-fix updateAbnormalEffect unnecessary packet broadcast. now it will send the update only if abnormal effects are in use or effected by somone,which is lead to a huge broadcast optimize. Monster behavior: -onAggression remove minion assist(l2 off like), -onAggression minions are following master and attacking only when we attack master-minion.tested on advext. Skills fix: -lure(skill) behavior on monster,thanks nijota for report. Rework: CharEffectList.java optimize: (Custom)EventEgnine: "asynchronize" teleport to avoid massive lag. -   Revision 570: 2021-04-11 Fix: -client-server desync(jump backward ,weird effect) while pressing attack and try to move away. -npe on player protection. -npe on summon magic skill use. -npe on use item. -on duel: you can attack summons properly.(with same duel id) -on duel finish: summons are now stop attacking and return to their owner. -soulshot properly usage after finish casting. -party member position. thanks Cibo for report. -combat-chase movement system. -Antharas-Valakas Shock skill effect l2off like. -properly remove cubics on restart-logout. -status update avoid sending unnecessary packets. -On equip-unequip item avoid sending unnecessary packets. -Revert L2GamePacketHandler.java to switch method. -shortcut doubling(properly update). thanks to ragef for report. -Event engine teleport , thanks to daffynash for report. Quest fix: -Q115_TheOtherSideOfTruth: Misa Spawn at night. thanks Cibo for report. -Q648_AnIceMerchantsDream: Steward on talk html. thanks Cibo for report. Skills fix: -augment stack. Rework: -Friend system (client-server packets l2off like). -   Revision 571: 2021-09-11 Bug fix: -avoid following target after restart-logout , thanks to EXCLUS1VE for report. -pick up stuck , thanks to EXCLUS1VE for report. -summon patk/matk speed visual animation. -summon attack request , thanks to EXCLUS1VE for report. -effect relax , thanks to EXCLUS1VE for report. -formulas hitmiss , thanks to EXCLUS1VE for report. -Social action request , thanks to EXCLUS1VE for report. -cubic attack , thanks to EXCLUS1VE for report. -Party match room chat, thanks to EXCLUS1VE for report. -pick up issue , thanks to EXCLUS1VE for report. -pet npe, thanks to EXCLUS1VE for report. Rework: -player template. -skilltreedata. -RequestAquireSkill. -RequestAquireSkillInfo. -RequestExEnchantSkill. -RequestExEnchantSkillInfo. -AcquireSkillList. -ExEnchantSkillList. Optimize: -players got their own getMoveSpeed getter , and triggers when speed change by user(walk/run commands) or buff-debuff, that way we avoid unnecessary speed calculation by updateposition task that literaly spam the calculators. -castle traps are optimized and enabled. damage calculation formula: -blow damage position bonus. -when you make a magic critical hit, the magic damage is now tripled. -melee normal attack Damage position bonus. Implement: -new vote api system.(npc-> //spawn 61) Organization: FenceManager moved in -> datatables/xml and rename to FenceData. Remove: -old antibot system and kept only one as main. -old vote system. -   Revision 572: 2022-01-08 fix -Elroki , ToIVortex , Pagan , Oracle teleporters. -shop distance(sell-buy) bug, thanks to exclusive for report. -Monster Derby Track teleport. thanks to lorka for report. -MissQueen multisell coupon. thanks to lorka for report. -Olympiad spectator error thanks to magister for report. -Quest ShowResult replace objId instead name. -html over 200++ corrections typo - bypass. -(Custom config) DAGGERS-ARCHERS wear HEAVY-LIGHT on use item unequip equipped item if config is false , to avoid stuck , thanks to exclusive for report. -Npe on connection close , thanks to exclusive for report. -Herbs auto destroy , thanks to exclusive for report. Spawn: -Implement L2off spawn data and territory system. -xml spawn list added inside datapack data/xml/spawn. -Sql spawn list has been merged with new spawn system and manage only the custom admin //spawn. -Territory Monsters randomly spawn in their territory. -Shift click on monters -> "visual" will allow you to check their territory. Skill fix: -fixed all chance skills. Optimize: -NpcData.java -PetNameTable -Siege(tasks - sql connection) Implement: -Server-Player Variable -ClientSetTime packet. -AttackDeadTarget packet. -AttackinCoolTime packet. -AttackOutOfRange packet. Rework: -L2BossSpawnInstance Clean up - Delete: -remove L2ProtectorInstance. -remove unused configs. -remove AdminUnblockIp. -remove VipTeleportCmd. -AdminCommands.xml clean up. Organization: -AutoSpawnHandler,L2Spawn,SpawnData,SpawnTerritory moved inside gameserver.model.spawn . Dont forget: to update your databse and use geodata!!! is important for the new spawn system! -   Revision 573-574: 2022-02-04 fix -Herbs auto destroy time (14 seconds) -Clan skills learn npe , thanks to Ziklis for report. -potions visual bug , thanks to Ziklis for report. Optimize: -Quest engine. -Hero engine. -SevenSigns. -Event engine. Implement: -Siegable Clan Halls (from l2j thanks to Zoey76) you can use //siege ingame for test. -Spawn data spawn_bydefault field. -CustomSpawnManager (holds npc spawn data by field "spawn_bydefault" that equals false) Clean up - Delete: -delete:EventStats.java -delete:pmoff - tradeoff handlers and merge in one (.menu voiced) -spawnlist old sql file. -   Revision 575: 2022-05-14 Fix: -Clan Skills , thanks to shush for report. -Olympiad doDie error , thanks to shush and Elliot for report. -backstub 100 % succes if attacker is behind of target. -player siege state status update. -CrownManager unhardcoded checkCrowns. -   Revision 576: 2022-07-21 Fix: -Elven Fortress teleport. thanks to JMD for report. -Traders when geodata enabled. thanks to JMD for report. -Summon Cp Potion(skills store-restore has been fixed) thanks to Noone4 for report. -Elixir reuse time , to Noone4 for report.   - Revision 577: 2022-09-25 Fix: -Drop item location.(items cannot be dropped inside wall etc, geodata must be enabled) -Hero count. Npc -Dark Choir Lancer heigh correction -Dark Choir Captain heigh correction Misc Ai: -Implement NpcWalkerTaskManager(handle npc walker ai). Misc: -isNewBie delete config-sql-getters and now depends on level. -TopRankManager is now available(merged with community board) holding stats for top players pvp-pk etc. -   Revision 578: 2022-11-07 Misc: Sql typo , thanks to noone4. Rework: -Balancer.(also save button added at the bottom) - Revision 579: 2023-03-28 Fix: -Multisell ingredient for clan points, thanks to noone4 for report. -Raid respawn time, thanks to noone4 for report. -Quest delay , thanks to noone4 for report. -Minion respawn task, thanks to noone4 for report. Rework: -Achievement Engine.(rework and optimize). -Couple - Wedding Manager.(rework and optimize). Delete: -WeddingCmd (voiced command) , wedding is now available only on npc manager. Dont forget to update your sql tables and config files.    -   Revision 580: Fix: -Start creatures AI only when they are in active region. -Subclass : In order to change the base class you can only manage it by using the master with the same type, thanks  to noone4 for report. -olympiad check item restriction and unharcoded. -monster properly delete by admin command , thanks to noone4 for report. -Zaken properly attack. thanks to l2valhalla for report. -QueenAnt nurse heal. thanks to l2valhalla for report. -Door region check to avoid stuck while wallking through.thanks to l2valhalla for report. -Rain of Fire (1296) skill radius , thanks to millerose for report. -Frost Wall (1174) skill radius , thanks to millerose for report. -RaidBossSpawnManager calendar replaced with system current time millis. -VIPTvT npe on selectNewVipOfTeam , .thanks to l2valhalla for report. -onActionShift spawn-territory npe. -L2Party properly change party leader. -AutoAttackable class cast exeption. -RequestMagicSkilluse AIOB. -L2StaticObjectInstance npe. Rework: -Project update to java 17.(you can download latest jdk version here: https://adoptium.net/temurin/releases/ ) -Remove MysqlConnector and implement MariaDb. -GeoEngine.(currently working only with l2j type , download the new geodata here: https://www.mediafire.com/file/c2tvxwt5bz086jh/geodata.rar/file ) -DoorData. -Geometry algorithm. -SQL account manager. -CustomSpawnManager(Handle npcs-monsters that are not spawned by default via xml spawn.) -L2Skill.java getTargetList rework and cleanup : case TARGET_AURA , case TARGET_AREA , case TARGET_MULTIFACE , case TARGET_PARTY ,  avoid unnecessary - heavy tasks(optimized). -Impement: -Support api for https://l2rankzone.com/ . -Admin Bookmark. -FakePlayer Chat. Organise: -CustomSpawnManager moved inside -> gameserver.model.spawn Delete: -Unused libs.   Revision 581: Fix -Fishing skill list properly show, thanks to ByDenisko for report. -Multisell enchanted items , thanks to ByDenisko for report. -Drop range between mercenary tickets. -Break Duress skill(461) , thanks to DevilMStar for report. -Interact-pickup tickets , thanks to DevilMStar for report. Rework: -refreshExpertisePenalty to avoid unnecessary calculation. -Mercenary tickets. -ClanGate skill handler.   -   Revision 582: Fix: -Siege guard aggro due to the last rework , thanks to ByDenisko for report. -Siege zone , thanks to ByDenisko for report. -Trade npe , thanks to ByDenisko for report. -Olympiad port player back position. -Antharas CCE , thanks to ByDenisko for report. -Interact exception , thanks to ByDenisko for report. -interact-pick up: action denied if the player is dead-fakedeath. (players can still interact with NPCs, but they must be within the designated interaction distance.) Rework: -Skills Array to ConcurrentSkipListMap. -L2AttackableAI think to avoid unnecessary - heavy tasks. Implement: -AutoSaveTaskManager. -AiThinkTaskManager wich handle attackable think. -Check for Event engine to activate-deactivate. -Admin zone cretion. Organization: -Rename gameserver.scrips -> gameserver.scripts   -   Revision:583 Java 21 ,DropItem-protection,ThreadPoolManager,Geongine,AdminTeleport,TopRankmanager Java 21: -The project has transitioned to Java (JDK) 21 for improved performance and features. Fix: -TopRankManager added snap list to avoid empty list while updating. -TopRankManager npe. -BookMark Teleport. -Siege: Allow pray only on the artifact spot. -Olympiad hp npe -Olympiad ip check npe -Olympiad teleport back npe Rework: -Reworked the whole Drop Protection concept and eliminated the need for synchronized methods and multiple tasks for each item.  The process is now centralized under a single manager: DropProtectionManager which centrally manages all items by one task for optimal efficiency. GeoEngine: -Maxiterations are now depends on mapsize and limit them to 13500. ThreadPoolManager: -ThreadPoolManager is now using java virtual pools.   -   Revision:584(latest 24/8/2025) RespawnTaskManager,TradeController,MerchantTaskManager,StatusListenerManager,FollowTaskManager,ItemAutoSaveTaskManager Rework: -Refactored inventory save system for improved efficiency The entire inventory save system has been restructured to eliminate redundancy and enhance performance. Previously, each item triggered its own database save Connection task (e.g., on equip, unequip, drop, add, etc.), resulting in overhead and complexity. Now, a centralized ItemAutoSaveTaskManager handles all pending item saves through a single, unified SQL connection task. -The entire creature respawn system has been restructured to eliminate redundant tasks and improve efficiency. Previously, each creature had its own separate respawn task, leading to potential overhead and complexity. Now, a centralized RespawnTaskManager handles all pending creature respawns through a single task. -TradeController has been restructured to eliminate redundant tasks by using MerchantTaskManager(same optimization as creature spawn) -StatusListenerManager now handles broadcast of statusUpdate(hp) -FollowTaskManager handles all following creatures through a single task. Fix: -clan hall buff support. thanks to Almaz. -Valakas Teleport. thanks to Almaz.  SQL Connection: Update MariaDB connector to 3.5.4          
    • isnt his i also find it on l2ketrawars  https://imgur.com/a/4BMldRQ someone lock the topic ,solved!
    • You might also take https://github.com/vercel-labs/agent-skills into consideration
    • Hay Algun datapack de L1 OFF ? 
  • 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..

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock