aCis


Beginning of the cycle 380-389. Current focus : exploit fixes, scripts ending. Changeset 380 (1133) is up ! RaidBossManager rework, Admincommands, DayNightSpawnManager rework, Scripts, Cleanup, Bugfixes Changeset 381 (1225) is up ! Updates (Java 11, mysql connector 8.0.15), Cleanup, ClanHall, Bugfixes !

Recent Posts

11
Crappy servers / Re: SERVIDOR DE PRUEBA
« Last post by StinkyMadness on March 31, 2019, 07:13:51 AM »
You spend more time to turn the server live than "develop" the server.
3 Random NPC's and Clean aCis, that what i saw.
12
Crappy servers / SERVIDOR DE PRUEBA
« Last post by collavinoluis on March 31, 2019, 06:17:57 AM »
ACIS 380

Dejamos ONLINE el servidor para las primeras pruebas. Estamos abiertos a cualquier sugerencia.

De momento la ciudad principal es GIRAN, ahi se encuentran todos los NPC.

Zona de inicio completa para Leveleo rapido.

RateXp = 50.
RateSp = 50.
RatePartyXp = 70.
RatePartySp = 50.
RateDropAdena = 100.
RateDropItems = 30.
RateRaidDropItems = 40.
RateDropSpoil = 30.
RateDropManor = 30

EnchantMaxWeapon = 18
EnchantMaxArmor = 18

EnchantSafeMax = 8
EnchantSafeMaxFull = 10

Chances encantamiento
Normal scroll 60%,
Blessed Scroll 70%

LINK PARA DESCARGAR SYSTEM

http://www.collavinoweb.com/lineage/system.rar
13
Announcements / Re: Last aCis updates
« Last post by Tryskell on March 28, 2019, 11:07:17 PM »
Changeset 381 (1225)

Updates, Cleanup, ClanHall, Bugfixes


Updates
   - aCis officially support JDK11 (since Oracle changed their licence, consider to use OpenJDK), and is now mandatory. Older/different versions aren't supported anymore.
   - Refresh mysql connector from 5.1.26 to 8.0.15.
   
Cleanup
   - Revert StringUtil#isEmpty(String... strings) logic.
   - Rnd.get(list) / Rnd.get(array) uses are unified over the source. Those methods don't send anymore default values, and will lead to errors if the given array is null.
   - Add Player#isWearingFormalWear().
   - Add ExProperties#parseIntIntList.
   - Add ZoneType#addKnownObject / removeKnownObject.
   - Drop L2Skill isDemonicSkill() / isFlyingSkill() / isStriderSkill() - no use anymore.
   - Activation of the try-with-ressources warning. All impacted classes were cleaned up in the process (renames, CLogger addition, regular writting style, Stringified queries, Javadoc...). I won't list all changes, but there was something like 200+ warnings.
   - IdFactory
      - Merged with BitSetIDFactory.
      - Drop _freeIds.clear() on initialization (Javadoc says it sets to false by default).
      - Drop _initialized flag (unused).
      - Drop Collections.sort(usedObjectIds) (pointless).
   - Basic Duel packets cleanup. Add missing ExDuelEnemyRelation packet (with no use). Ty RooT.
   - ZoneType#getKnownTypeInside returns Collections.emptyList() if no characters are found - avoid to generate an empty List for nothing. Delete children classes isEmpty() checks.
   
ClanHall
   - Complete rework of ClanHall system. Added to the regular cleanup (CLogger, Javadoc, Stringified queries,...) :
      - Improve clanhall admin management.
         - Usage is now //ch chId <set|del|open|close|goto|end> (one admincommand for all actions).
         - Clan Hall and Siege admincommands got now seperated AdminCommandHandler.
         - No more Exception on invalid parameter for both clan halls and sieges admincommands.
      - Fix clan hall doormen "To Beginning" button.
      - Change the way of attribution of ClanHallManagerNpc ClanHall (no subsequent ClanHallManager calls).
      - XMLize static data (moved out from SQL). Merge Auction db content with ClanHall db content. AuctionManager is dropped, Auction is now stored to the ClanHall directly.
      - Rework the fee task to be more friendly.
      - ClanHallFunctions are loaded in same time than ClanHall, to benefit from the existing Connection. ClanHall don't use anymore one Connection per ClanHall, too.
      - "Clan Action" panel is refreshed upon ClanHall free() method call.
      - Fix an issue with owned ClanHall bids cleaned up upon server start.
      - Upon setOwner() : previous owner got some actions made on it, fee task is renewed for new clan, existing ClanHallFunctions are deleted, outsiders are dumped out.
      - Doors are closed for both free() / setOwner() processes.
   
Bugfixes
   - Implementation of EventTrigger packet + retail usage (castle traps visual effect on siege progress). Ty RooT.
   - Implementation of ExMPCCPartyInfoUpdate packet.
   - Add mods_wedding as part of restored objectIds (otherwise those ids are usable, while they shouldn't).
   - ShortcutList / Shortcut
      - Fix addition/remove/update SKILL shortcut type (manual or from trainer).
      - Integrity check upon addition (check MACRO, RECIPE, ITEM, SKILL types).
      - Fix cleaning issue for ITEM (dropping an item on ground was only clearing the first occurence of shortcut met, not others if existing).
      - Implementation of ShortCutDelete packet.
   - Olympiad Competition starts time seconds are set to 0.
   - EnterWorld exploit fix (create a special GameClientState ENTRING for the occasion, more infos here : https://acis.i-live.eu/index.php?topic=10070).
   - GMViewSkillInfo shows correctly disabled skills when wearing Formal Wear. Also refresh skills state upon equiping/unequiping Formal Wear.
   - Add back regular skills use for mounted players and cursed weapons users. Indirectly fix SoE and alike skills items for mounted / CW user.
   - Fix zone/region overlapping (can be tested on Giran castle active front trap). Ty bowling4soup.
   - Fix Q348. It uses L2OFF script for Blooded Fabric acquisition formula.
   - Add MultiSellChoose _entryId integrity check to avoid packet craft (avoid IOOBE). Ty Ghadda / bowling4soup.
   - Rework BrokenLabyrinth based on L2OFF GF. Fix an IOOBE.
   - Edit Linux shell scripts to automatically create log folder if not existing. Ty RooT.
   - Add CW SocialAnimation upon ranking.
   - Fix CW visual effect (goes from 1 to 10 stage, not 0 to 9). Ty RooT for tip.
   - Fix XP/SP calculation. HP ratio is already taken in consideration by template values. Ty Ghadda.
   - Revert previous edition of a config, based on Sahar observations - From -18104, 109992, -2656 to -18312, 110056, -2512 archers could shoot.

   
PS : if you already own a live server, you have to add "?serverTimezone=UTC" as part of database URL.
PS2 : you have to refresh your developement board :
   - OpenJDK 11 can be downloaded here : https://jdk.java.net/
   - Eclipse 2018-12 or any IDE accepting JDK11.
14
Crappy servers / Re: L2 Order VS Chaos Returns: 27/10/18 !
« Last post by sahar on March 22, 2019, 07:56:43 PM »
Don't forget to join and say hi folks, l2ovc is not the typical crappy server  :happyforever:
Live streams also available to watch on our homepage: http://l2ovc.com



15
Announcements / Re: Forum Announcements
« Last post by Sido on March 17, 2019, 09:21:17 PM »
Everything should be back to normal.
Please report any problems you may encounter.
16
Crappy servers / Re: L2Free returns: 03/03 !
« Last post by henrique on March 16, 2019, 01:25:28 PM »
New season coming, begins on March 30, 2019 at 6PM. (UTC -3)
Server information updated in the first post.
17
Announcements / Re: Forum Announcements
« Last post by Sido on March 15, 2019, 11:44:49 PM »
This weekend our community will be in maintenance as we doing some changes.
18
Crappy servers / Re: L2 Order VS Chaos Returns: 27/10/18 !
« Last post by sahar on March 08, 2019, 10:03:31 PM »
New season coming 15/03 17:00 GMT +3.
First post updated with most recent features.
19
Announcements / EnterWorld exploit fix - ALL L2J versions
« Last post by Tryskell on February 25, 2019, 01:15:50 PM »
Short version : upon L2PHX (or any packet manipulation tool) use, the manual or automatic send of EnterWorld packet creates issues (for example, if the config spawn protection is activated, it sends anew the spawn protection, making you immune everytime you send back the packet). Simply select EnterWorld packet from "Packet Sniffer" tab, "Add packet to send..." and check "send every 100 ms".


Issue : packet manipulation spam, calling multiple times the same subroutines (spawn protection custom and whatever custom you added in EnterWorld). Potentially fix other exploits based on your spawnMe() content.


Fix : generate a new GameClientState (personally called ENTERING), isolate EnterWorld on it (RequestManorList being called automatically, it must be part of ENTERING too). Any subsequent calls of EnterWorld will call onUnknownPacket, because it will be considered out of ENTERING scope, since we're already at IN_GAME scope once the Player instance is fully loaded (such stuff already exists for all packets : login packets can't be called during ingame state, etc. It's just than EnterWorld is a transition packet between lobby and ingame, but it is considered an ingame packet while it shouldn't).


Since chronicle got different opcodes, you have to adapt using your own chronicle opcodes. I can't and won't deliver a unique version for all chronicles. Since I'm an IL guy, I share for IL. The diff patch can help you to guess what to edit.


Possible improvements :
  • If you know more packets which should be sent only during that translation time between AUTHED and IN_GAME, you can answer here (notably for higher chronicles than IL) with your own version for your own chronicle. I will refresh the initial topic with the different versions.
  • Not sure if RequestManorList  can be called anywhere else (manor panel, etc). I preferred to keep it on IN_GAME. If you know the answer, consider to reply :) !

aCis version, based on latest (GameClient is generally called L2GameClient) :

Code: [Select]
### Eclipse Workspace Patch 1.0
#P aCis_gameserver
Index: java/net/sf/l2j/gameserver/network/clientpackets/CharacterSelected.java
===================================================================
--- java/net/sf/l2j/gameserver/network/clientpackets/CharacterSelected.java (revision 1146)
+++ java/net/sf/l2j/gameserver/network/clientpackets/CharacterSelected.java (working copy)
@@ -62,7 +62,7 @@
 
  sendPacket(SSQInfo.sendSky());
 
- client.setState(GameClientState.IN_GAME);
+ client.setState(GameClientState.ENTERING);
 
  sendPacket(new CharSelected(cha, client.getSessionId().playOkID1));
  }
Index: java/net/sf/l2j/gameserver/network/GameClient.java
===================================================================
--- java/net/sf/l2j/gameserver/network/GameClient.java (revision 1157)
+++ java/net/sf/l2j/gameserver/network/GameClient.java (working copy)
@@ -64,6 +64,7 @@
  {
  CONNECTED, // client has just connected
  AUTHED, // client has authed but doesnt has character attached to it yet
+ ENTERING, // client is currently loading his Player instance, but didn't end
  IN_GAME // client has selected a char and is in game
  }
@@ -168,6 +168,7 @@
  case AUTHED:
  return "[Account: " + getAccountName() + " - IP: " + (address == null ? "disconnected" : address.getHostAddress()) + "]";
 
+ case ENTERING:
  case IN_GAME:
  return "[Character: " + (getPlayer() == null ? "disconnected" : getPlayer().getName()) + " - Account: " + getAccountName() + " - IP: " + (address == null ? "disconnected" : address.getHostAddress()) + "]";
 
Index: java/net/sf/l2j/gameserver/network/L2GamePacketHandler.java
===================================================================
--- java/net/sf/l2j/gameserver/network/L2GamePacketHandler.java (revision 1145)
+++ java/net/sf/l2j/gameserver/network/L2GamePacketHandler.java (working copy)
@@ -51,6 +51,7 @@
  break;
  }
  break;
+
  case AUTHED:
  switch (opcode)
  {
@@ -80,6 +81,43 @@
  break;
  }
  break;
+
+ case ENTERING:
+ switch (opcode)
+ {
+ case 0x03:
+ msg = new EnterWorld();
+ break;
+
+ case 0xd0:
+ int id2 = -1;
+ if (buf.remaining() >= 2)
+ {
+ id2 = buf.getShort() & 0xffff;
+ }
+ else
+ {
+ _log.warning("Client: " + client.toString() + " sent a 0xd0 without the second opcode.");
+ break;
+ }
+
+ switch (id2)
+ {
+ case 8:
+ msg = new RequestManorList();
+ break;
+ default:
+ printDebugDoubleOpcode(opcode, id2, buf, state, client);
+ break;
+ }
+ break;
+
+ default:
+ printDebug(opcode, buf, state, client);
+ break;
+ }
+ break;
+
  case IN_GAME:
  switch (opcode)
  {
@@ -89,9 +127,6 @@
  // case 0x02:
  // // Say ... not used any more ??
  // break;
- case 0x03:
- msg = new EnterWorld();
- break;
  case 0x04:
  msg = new Action();
  break;
Index: java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java
===================================================================
--- java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java (revision 1150)
+++ java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java (working copy)
@@ -35,6 +35,7 @@
 import net.sf.l2j.gameserver.model.pledge.SubPledge;
 import net.sf.l2j.gameserver.model.zone.ZoneId;
 import net.sf.l2j.gameserver.network.SystemMessageId;
+import net.sf.l2j.gameserver.network.GameClient.GameClientState;
 import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
 import net.sf.l2j.gameserver.network.serverpackets.Die;
 import net.sf.l2j.gameserver.network.serverpackets.EtcStatusUpdate;
@@ -77,6 +78,8 @@
  return;
  }
 
+ getClient().setState(GameClientState.IN_GAME);
+
  final int objectId = player.getObjectId();
 
  if (player.isGM())

WILL BE PART OF REV 381.
20
Announcements / Re: Latest free sources
« Last post by SweeTs on February 20, 2019, 01:06:47 PM »
SVN updated to 370.

550 files added, 222 removed and 1725 edited.