Jump to content

Tryskell

Legendary Member
  • Posts

    5,346
  • Credits

  • Joined

  • Last visited

  • Days Won

    52
  • Feedback

    0%

Everything posted by Tryskell

  1. Hehe, for the funny story, I never compiled/runned a L2JFree, because at first time (1,5 year ago now) people on their forum never said me how to compile this piece of crap :). Since then, I never searched to retry it or search to do it. I managed to dev on L2J then, as it was working. Little story apart, find a tutorial or go on L2J :D.
  2. You can declinate the ask to infinite, asking if someone can share a server with only elpies spawns, a server where there are only dwarves, a advanced faction engine which is working, an IL pack which is 100% corrected, amazing admin commands you never saw nowhere, the answer will still be : No. We don't have your server's dream pre-made. So work for it.
  3. From what I know, L2JFree uses Maven to compile... Not Ant. And their SVN *seems* full, so except if they got inherent problems at the build, you made something wrong.
  4. CoordSynchronize must be set to 2, and the fact it says it loads in the GS means nothing. IL basic says too it "loads", but see what the mess it is :D. Such topics already exists, the shares are already existing aswell, so you reinvent the fire/wheel/fishrod...
  5. Romanian mafia hits hard. Next rev soon :). And perhaps a core dev (depending of his results).
  6. You have to recompile each time you change something in core. Even the lowest, simplest thing. It is surely for that L2J unhardcode many things, even if it's stupid. The only (in 95% of time) thing you have to do once you recompiled is to drag and drop the l2jserver.jar to your lib folder. Ofc if you made sql changes, htlm changes or whatever changes, do changes... But about core, in 95% of cases it's enough. If you made change on LoginServer, think to drag && drop on the LS lib folder too. Now if your pack was a precompiled pack, sorry, but you have to drop it. You still can keep SQLs tables and datapack, if it matches with the pack you checkouted from the team's SVN (surely L2J/L2JFree). - Find sources (generally pack give a link to checkout), compile them, install a fresh server . - To update server, change sources, compile it, and change (like I said higher.... In 95% on cases) l2jserver.rar Precompiled packs can't be change. You can use a decompiler, but it will give a bad form and can't be recompiled like that. It's only good to "ninja locked features". PS : find a tutorial "how to checkout". The one you showed is once you get sources already.
  7. Not really a dev ask. Just move your ass ingame and /teleport to locations.
  8. Bhe, I put you on msn like 2 days ago, dunno if you missed it... broadcastPacket(new SocialAction(getObjectId(), 15)); If it's not the good animation (but it is), just check social.htm located in data/htm/admin for all possible effects.
  9. w00t, such function exists already... For ToI and eva doors. Check DoorTable, checkAutoOpen() method.
  10. There is no guides, and things outdate easily with both time and pack differences. There is no specialization to have, java is java, you can touch to all if you understand what you do. Any project is only a suit of methods, than you update, remove or add according to your convenience. The only thing you have to know is what method does what, and uses it in good time. If the method doesn't exists or doesn't do what you want, create a new one or edit it. Many things are already created, just re-use codes. And the whole project is a "howto" tutorial. It's just a matter to "how to search exemples"... Imagine you want to effects all logged players with a random effect (skill or whatever). Just think "what current exemple I have which already do that"... Announcements, for exemple, do that. So go on announcements, analyze it, and you got 1/2 solution. Now you can think "how to add a skill to someone"... Cursed weapons do it, salvation bow too if it has been corrected on your pack. Just search for those, or think more exemples. You can dev on L2J without even have a knowledge on java. It's only a question of imagination and logic. Tryskell off :P.
  11. Connection con = null; try { player.destroyItemByItemId("Consume", ITEM_ID, ITEM_COUNT, player, true); con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("REPLACE INTO augmentations VALUES(?,?,?,?)"); statement.setInt(1, item.getObjectId()); statement.setInt(2, attribute*65536+1); statement.setInt(3, skill); statement.setInt(4, level); statement.executeUpdate(); player.sendMessage("Succesfully augmented. You have to relog now."); statement.close(); } catch (Exception e) { _log.log(Level.SEVERE, "Could not augment item: "+item.getObjectId()+" ", e); } finally { try { con.close(); } catch (Exception e) {} } I'm too kind.
  12. This will be the next big step, I wait skills are totally refactored to begin another big refactor. I prefer to fix current bugs than adding bugs after bugs and finally having so much issues it's not possible to know where it came from. ---- The turtle is slower than the rabbit, but you know who win the race at the end :).
  13. L2DatabaseFactory.close(con); = try { con.close(); } catch (Exception e) {} ----- About augments, it's obvious... Be clever, you use postIL stuff and hope an augmenter with elementals stones can work. Remove things using it, but you will surely broke the whole system than correct it. Give the method with errors from L2ItemInstance, and the AugmentShop.java.
  14. Don't use translator (if you did), or use it (if you didn't). I barely understood it was about respawn delay of mobs, the problem itself... I didn't understand at all. Depending of the problem, there can different solutions. If it's a localized problem use a mySQL query, if the problem is general to all mobs, there is surely something messed in core.
  15. Checkout a project and analyze it. There is no guide or book to know how L2J is made. If you got 0 logic, reading Java lessons is your best luck to understand mecanisms, if you don't like books and got a certain amount of logic, do like me, open and explore. Try to understand what you do, add some little customs, ameliorate them or change them for another use, etc etc. Don't copy/paste things without knowing what you do. Knowledge will come with time, and you will know a bigger range of files and possibilities. There aren't many possibilities : - learn to get fundamental mecanisms, and understand the code - be curious to know "what do what" and explore the project experimenting changing values or parts of code - delete your L2J stuff and go play your favorite MMO :)
  16. You're talking about the AntiFeedManager, can be found on instancemanager. The different part of code is spread over the project, but you should find what you talk about in configs. It's not client issue at all, even if it's possible (but considered as exploit then by server admins). And it's pretty old stuff :P.
  17. Check how others global tasks are handled (gameserver.taskmanager.tasks). And don't forget to add your new task in the TaskManager, else it won't load. You successfully load it when you see a new entry in your global_task table. Well, if you didn't focked another part ofc haha.
  18. In L2SkillSummon (gameserver.skills.L2skills), check : public boolean checkCondition(L2Character activeChar) Editing the xml will do nothing, it's an hardcoded skill. Basically, edit that : int mastery = player.getSkillLevel(SKILL_CUBIC_MASTERY);
  19. No, you're right saying monsters and NPCs take a certain % of memory, CPU and inet connection (AIs, packet send,...). If you don't need them, I invite you to delete at least the spawnlist table content, and avoid to load all quests, except some are needed, like clan creation. About the npcs table, you have to spawn all needed npcs, then delete only not used occurences. It's pretty restrictive, so not really helpful in term of administration. You can make too a big clean on config to hunt all not used customs. From a heavy custom pack (4700 lines) you can go to 1600 lines. Guess what, in terme of variables deletion, it removes to the memory usage. ---- To give you a concrete exemple, my custom faction server loads using 150mo for 10-12 seconds on a dev computer. The pack was an archid 1792 revision, loading 320mo for 35 seconds. ---- To short the answer, mobs/npcs is a PART of a ALL. Alone, the impact is low.
  20. I don't get what you talk by "cheat engine", but basically it can't send "faster" packets, whatever you put between a server and a client can only slow the process. It can give you the illusion to have better performance. Well, correct me if I'm wrong, and give more infos about your "miracle" :). It's like killing a sheep and it popups another... That will solve food problems, but that just can't happen :P.
  21. A generated number / suit of letters/number will show the asked code on the html ("To play enter following code : blablabla"), so it's exploitable as the answer is shown. The only real way would be to call an image. The other solution is as the topic owner made, but once the guy got all possible questions/answers, it's bypassed. ---- I gave all codes and what you had to do, so now go work and come if you got issues compiling/ingame :P.
  22. If by "consecutive kills", you mean "5 kills in a row without die", then quake stuff is the basic system to use, if it's to each 5 pvps (which is strange, anyway...), check vampir's. About effect, well, you're only stuck by imagination. You could make all people in a radius die, spawn a mob, launch a siege... Anything you want. Just check where you think such code exists, analyze, and copy it editing parts to fit with your desires. The different "visual graphic" effects are shown on AbnormalEffect, more effects/emotes like levelup and such are socialAction from what I rem (haven't Eclipse up).
  23. If by "consecutive kills", you mean "5 kills in a row without die", then quake stuff is the basic system to use, if it's to each 5 pvps (which is strange, anyway...), check vampir's. About effect, well, you're only stuck by imagination. You could make all people in a radius die, spawn a mob, launch a siege... Anything you want. Just check where you think such code exists, analyze, and copy it editing parts to fit with your desires. The different "visual graphic" effects are shown on AbnormalEffect, more effects/emotes like levelup and such are socialAction from what I rem (haven't Eclipse up).
  24. Well, it totally depends of the "idea" of your mod. A captcha system have more reasons to exist on the entrance of any player (enterWorld.java) than in the DoDie method of any L2Attackable monster/summon/player. Considering your captcha thing is *CURRENTLY* : - generating correctly a random code, and make the association code/input text (well your code is primitive, but it seems to work); - sending a window at the death of a player (killing anything other than a player show a NPE atm, from what I think); - punishing the player if the code is wrong; The only thing you have to do is to remove all the code from L2Attackable and edit it for EnterWorld. Basically your code fits for EnterWorld, as it misses all good instances checks, and enterWorld is "made" for players only. ------ Revert back your code in L2Attackable then /** * Kill the L2Attackable (the corpse disappeared after 7 seconds), distribute rewards (EXP, SP, Drops...) and notify Quest Engine. * * Actions: * Distribute Exp and SP rewards to L2PcInstance (including Summon owner) that hit the L2Attackable and to their Party members * Notify the Quest Engine of the L2Attackable death if necessary * Kill the L2NpcInstance (the corpse disappeared after 7 seconds) * * Caution: This method DOESN'T GIVE rewards to L2PetInstance * * @param killer The L2Character that has killed the L2Attackable */ @Override public boolean doDie(L2Character killer) { // Kill the L2NpcInstance (the corpse disappeared after 7 seconds) if (!super.doDie(killer)) return false; // Notify the Quest Engine of the L2Attackable death if necessary try { L2PcInstance player = null; if (killer != null) player = killer.getActingPlayer(); if (player != null) { if (getTemplate().getEventQuests(Quest.QuestEventType.ON_KILL) != null) for (Quest quest: getTemplate().getEventQuests(Quest.QuestEventType.ON_KILL)) ThreadPoolManager.getInstance().scheduleEffect(new OnKillNotifyTask(this, quest, player, killer instanceof L2Summon), _onKillDelay); } } catch (Exception e) { _log.log(Level.SEVERE, "", e); } return true; } And in enterworld.java, find the good place to put (around the end, as enterWorld initializes many things) - I perhaps made errors, I just edited with notepad and didn't check synthax/logic : if (Config.ENABLE_ANTIBOT_SYSTEM) { private static int AntiBotKills = 0; private static int Change = 0; int AntiBotKillsCheck = (Config.ANTIBOT_KILLS_CHECK); NpcHtmlMessage npcHtmlMessage = new NpcHtmlMessage(0); Change = Rnd.get(8); AntiBotKills++; if (AntiBotKills >= AntiBotKillsCheck) { killer.setIsParalyzed(true); AntiBotKills = 0; switch(Change) { case 0: npcHtmlMessage.setHtml("<html><title>Antibot System</title><body><center>Enter a code below and click CONFIRM<br><br>Question: <font color=\"66FF00\"> 3 + 9 </font> = ?<br><edit var=\"antibot\" width=110><br><br><button value=\"Confirm\" action=\"bypass -h voice .antibot $antibot 12\" width=80 height=26 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><font color=\"FFFFFF\"> If your Type is Incorrect you will be Punished !</font></center></body></html>"); killer.sendPacket(npcHtmlMessage); break; case 1: npcHtmlMessage.setHtml("<html><title>Antibot System</title><body><center>Enter a code below and click CONFIRM<br><br>Question: <font color=\"66FF00\"> 21 - 7 </font> = ?<br><edit var=\"antibot\" width=110><br><br><button value=\"Confirm\" action=\"bypass -h voice .antibot $antibot 14\" width=80 height=26 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><font color=\"FFFFFF\"> If your Type is Incorrect you will be Punished !</font></center></body></html>"); killer.sendPacket(npcHtmlMessage); break; case 2: npcHtmlMessage.setHtml("<html><title>Antibot System</title><body><center>Enter a code below and click CONFIRM<br><br>Question: <font color=\"66FF00\"> 9 + 7 </font> = ?<br><edit var=\"antibot\" width=110><br><br><button value=\"Confirm\" action=\"bypass -h voice .antibot $antibot 16\" width=80 height=26 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><font color=\"FFFFFF\"> If your Type is Incorrect you will be Punished !</font></center></body></html>"); killer.sendPacket(npcHtmlMessage); break; case 3: npcHtmlMessage.setHtml("<html><title>Antibot System</title><body><center>Enter a code below and click CONFIRM<br><br>Question: <font color=\"66FF00\"> 36 - 18 </font> = ?<br><edit var=\"antibot\" width=110><br><br><button value=\"Confirm\" action=\"bypass -h voice .antibot $antibot 18\" width=80 height=26 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><font color=\"FFFFFF\"> If your Type is Incorrect you will be Punished !</font></center></body></html>"); killer.sendPacket(npcHtmlMessage); break; case 4: npcHtmlMessage.setHtml("<html><title>Antibot System</title><body><center>Enter a code below and click CONFIRM<br><br>Question: <font color=\"66FF00\"> 10 + 0 </font> = ?<br><edit var=\"antibot\" width=110><br><br><button value=\"Confirm\" action=\"bypass -h voice .antibot $antibot 10\" width=80 height=26 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><font color=\"FFFFFF\"> If your Type is Incorrect you will be Punished !</font></center></body></html>"); killer.sendPacket(npcHtmlMessage); break; case 5: npcHtmlMessage.setHtml("<html><title>Antibot System</title><body><center>Enter a code below and click CONFIRM<br><br>Question: <font color=\"66FF00\"> 7 + 6 </font> = ?<br><edit var=\"antibot\" width=110><br><br><button value=\"Confirm\" action=\"bypass -h voice .antibot $antibot 13\" width=80 height=26 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><font color=\"FFFFFF\"> If your Type is Incorrect you will be Punished !</font></center></body></html>"); killer.sendPacket(npcHtmlMessage); break; case 6: npcHtmlMessage.setHtml("<html><title>Antibot System</title><body><center>Enter a code below and click CONFIRM<br><br>Question: <font color=\"66FF00\"> 7 + 6 </font> = ?<br><edit var=\"antibot\" width=110><br><br><button value=\"Confirm\" action=\"bypass -h voice .antibot $antibot 13\" width=80 height=26 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><font color=\"FFFFFF\"> If your Type is Incorrect you will be Punished !</font></center></body></html>"); killer.sendPacket(npcHtmlMessage); break; case 7: npcHtmlMessage.setHtml("<html><title>Antibot System</title><body><center>Enter a code below and click CONFIRM<br><br>Question: <font color=\"66FF00\"> 7 + 6 </font> = ?<br><edit var=\"antibot\" width=110><br><br><button value=\"Confirm\" action=\"bypass -h voice .antibot $antibot 13\" width=80 height=26 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><font color=\"FFFFFF\"> If your Type is Incorrect you will be Punished !</font></center></body></html>"); killer.sendPacket(npcHtmlMessage); break; case 8: npcHtmlMessage.setHtml("<html><title>Antibot System</title><body><center>Enter a code below and click CONFIRM<br><br>Question: <font color=\"66FF00\"> 7 + 6 </font> = ?<br><edit var=\"antibot\" width=110><br><br><button value=\"Confirm\" action=\"bypass -h voice .antibot $antibot 13\" width=80 height=26 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><font color=\"FFFFFF\"> If your Type is Incorrect you will be Punished !</font></center></body></html>"); killer.sendPacket(npcHtmlMessage); break; default: npcHtmlMessage.setHtml("<html><title>Antibot System</title><body><center>Enter a code below and click CONFIRM<br><br>Question: <font color=\"66FF00\"> 1 + 8 </font> = ?<br><edit var=\"antibot\" width=110><br><br><button value=\"Confirm\" action=\"bypass -h voice .antibot $antibot 9\" width=80 height=26 back=\"L2UI_CT1.Button_DF_Down\" fore=\"L2UI_ct1.button_df\"><font color=\"FFFFFF\"> If your Type is Incorrect you will be Punished !</font></center></body></html>"); killer.sendPacket(npcHtmlMessage); } } } I didn't test your mechanism, so don't tell it doesn't works (this is your system if I didn't fock the c/p :D), and I don't know how the player isn't supposed to be de-paralized, I guess the voiced command got it. killer have to be replaced to activeChar, imports have surely to be corrected, and such.
×
×
  • Create New...