Hi, maybe someone have added trance rebirth system to acis 368? because i have some java error with getAllSkill command in L2RebirthInstance.java and SkillTreeTable.java. I try to change it to getSkill only but no help.
can anyone explain me how to fix it? or add code here. :) tnx i mark problem red.
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package net.sf.l2j.gameserver.model.actor.instance;
/**
* Rebirth Manager
* @author Trance
* @skype chr.trance
*/
public final class L2RebirthInstance extends Folk
{
private static HashMap<Integer, Integer> _rebirthInfo = new HashMap<>();
public L2RebirthInstance(int objectId, NpcTemplate template)
{
super(objectId, template);
}
@Override
public void onBypassFeedback(Player player, String command)
{
if (command.startsWith("performRebirth"))
{
// Maximum rebirth count. Return the player's current Rebirth Level.
int currBirth = getRebirthLevel(player);
if (currBirth >= Config.REBIRTH_MAX)
{
NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
html.setFile("data/html/managers/rebirth-max.htm");
player.sendPacket(html);
return;
}
// Level requirement for a rebirth.
if (player.getLevel() < Config.REBIRTH_MIN_LEVEL)
{
NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
html.setFile("data/html/managers/rebirth-level.htm");
// Rewards the player with an item.
rebirthItemReward(player, itemId, itemCount);
// Check and see if its the player's first rebirth calling.
boolean firstBirth = currBirth == 0;
// Player meets requirements and starts Rebirth process.
grantRebirth(player, (currBirth + 1), firstBirth);
}
else
super.onBypassFeedback(player, command);
}
@Override
public void showChatWindow(Player player)
{
NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
html.setFile("data/html/managers/rebirth.htm");
html.replace("%objectId%", String.valueOf(getObjectId()));
html.replace("%level%", + Config.REBIRTH_RETURN_TO_LEVEL);
player.sendPacket(html);
}
/**
* Physically rewards player and resets status to nothing.
*
* @param player the player
* @param newBirthCount the new birth count
* @param firstBirth the first birth
*/
public void grantRebirth(Player player, int newBirthCount, boolean firstBirth)
{
try
{
// Delevel.
player.removeExpAndSp(player.getExp() - Experience.LEVEL[Config.REBIRTH_RETURN_TO_LEVEL], 0);
// Back to the first class.
player.setClassId(player.getClassId().getFirstClass().getId());
// Send the Server->Client packet StatusUpdate with current HP, MP and CP to this L2PcInstance
player.broadcastStatusUpdate();
// Broadcast informations from a user to himself and his knownlist.
player.broadcastUserInfo();
// Remove the player's current skills.
for (L2Skill skill : player.getAllSkills())
player.removeSkill(skill);
// Give all available skills to the player.
player.giveAvailableSkills();
// Update L2PcInstance stats in the characters table of the database.
player.store();
if (firstBirth)
// Stores the player's information in the DB.
storePlayerBirth(player);
else
// Updates the player's information in the DB.
updatePlayerBirth(player, newBirthCount);
// Displays a congratulation window to the player.
NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
html.setFile("data/html/managers/rebirth-successfully.htm");
html.replace("%level%", + Config.REBIRTH_RETURN_TO_LEVEL);
/**
* Rewards the player with an item.
*
* @param player the player
* @param itemId : Identifier of the item.
* @param itemCount : Quantity of items to add.
*/
public static void rebirthItemReward(Player player, int itemId, int itemCount)
{
// Incorrect amount.
if (itemCount <= 0)
return;
final ItemInstance item = player.getInventory().addItem("Quest", itemId, itemCount, player, player);
if (item == null)
return;
// Send status update packet.
StatusUpdate su = new StatusUpdate(player);
su.addAttribute(StatusUpdate.CUR_LOAD, player.getCurrentLoad());
player.sendPacket(su);
}
/**
* Return the player's current Rebirth Level.
*
* @param player the player
* @return the rebirth level
*/
public static int getRebirthLevel(Player player)
{
int playerId = player.getObjectId();
if (_rebirthInfo.get(playerId) == null)
loadRebirthInfo(player);
return _rebirthInfo.get(playerId);
}
/**
* Database caller to retrieve player's current Rebirth Level.
*
* @param player the player
*/
public static void loadRebirthInfo(Player player)
{
int playerId = player.getObjectId(), rebirthCount = 0;
try (Connection con = L2DatabaseFactory.getInstance().getConnection())
{
ResultSet rset;
PreparedStatement statement = con.prepareStatement("SELECT * FROM `character_rebirths` WHERE playerId = ?");
statement.setInt(1, playerId);
rset = statement.executeQuery();
while (rset.next())
{
rebirthCount = rset.getInt("rebirthCount");
}
/**
* Stores the player's information in the DB.
*
* @param player the player
*/
public static void storePlayerBirth(Player player)
{
try (Connection con = L2DatabaseFactory.getInstance().getConnection())
{
@SuppressWarnings("resource")
PreparedStatement statement = con.prepareStatement("INSERT INTO `character_rebirths` (playerId,rebirthCount) VALUES (?,1)");
statement.setInt(1, player.getObjectId());
statement.execute();
/**
* Updates the player's information in the DB.
*
* @param player the player
* @param newRebirthCount the new rebirth count
*/
public static void updatePlayerBirth(Player player, int newRebirthCount)
{
int playerId = player.getObjectId();
try (Connection con = L2DatabaseFactory.getInstance().getConnection())
{
@SuppressWarnings("resource")
PreparedStatement statement = con.prepareStatement("UPDATE `character_rebirths` SET rebirthCount = ? WHERE playerId = ?");
statement.setInt(1, newRebirthCount);
statement.setInt(2, playerId);
statement.execute();
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
🎁 BUY 2 GET 1 FOR FREE - CHRISTMAS DEAL! 🎁
Make your friends happy by gifting them the third free Interface!
User Interface Information:
https://somikpatch.com/interfaces/highfive-user
Event Ends on 05. 01. 2025 at 00:00 GMT+1.
Merry Christmas! ❤️
I'm just testing the extender) I couldn't find any critical issues.
I found my own error due to which the autoloot function was not active:
just a syntax error, case-sensitive. You can't use a capital letter in the Myext.ini settings.
AutoLootMobDrop = true. (parameter true must necessarily be with a lowercase letter)
DISCORD :
utchiha_market
telegram :
https://t.me/utchiha_market
SELLIX STORE :
https://utchihamkt.mysellix.io/
Join our server for more products :
https://discord.gg/hood-services
https://campsite.bio/utchihaamkt
Question
remigas
Hi, maybe someone have added trance rebirth system to acis 368? because i have some java error with getAllSkill command in L2RebirthInstance.java and SkillTreeTable.java. I try to change it to getSkill only but no help.
can anyone explain me how to fix it? or add code here. :) tnx i mark problem red.
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package net.sf.l2j.gameserver.model.actor.instance;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashMap;
import net.sf.l2j.Config;
import net.sf.l2j.L2DatabaseFactory;
import net.sf.l2j.gameserver.model.base.Experience;
import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.actor.instance.Player;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.network.serverpackets.StatusUpdate;
import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;
/**
Edited by remigas* Rebirth Manager
* @author Trance
* @skype chr.trance
*/
public final class L2RebirthInstance extends Folk
{
private static HashMap<Integer, Integer> _rebirthInfo = new HashMap<>();
public L2RebirthInstance(int objectId, NpcTemplate template)
{
super(objectId, template);
}
@Override
public void onBypassFeedback(Player player, String command)
{
if (command.startsWith("performRebirth"))
{
// Maximum rebirth count. Return the player's current Rebirth Level.
int currBirth = getRebirthLevel(player);
if (currBirth >= Config.REBIRTH_MAX)
{
NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
html.setFile("data/html/managers/rebirth-max.htm");
player.sendPacket(html);
return;
}
// Level requirement for a rebirth.
if (player.getLevel() < Config.REBIRTH_MIN_LEVEL)
{
NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
html.setFile("data/html/managers/rebirth-level.htm");
player.sendPacket(html);
return;
}
int itemId = 0, itemCount = 0, loopBirth = 0;
for (String readItems : Config.REBIRTH_ITEMS)
{
String[] currItem = readItems.split(",");
if (loopBirth == currBirth)
{
itemId = Integer.parseInt(currItem[0]);
itemCount = Integer.parseInt(currItem[1]);
break;
}
loopBirth++;
}
// Rewards the player with an item.
rebirthItemReward(player, itemId, itemCount);
// Check and see if its the player's first rebirth calling.
boolean firstBirth = currBirth == 0;
// Player meets requirements and starts Rebirth process.
grantRebirth(player, (currBirth + 1), firstBirth);
}
else
super.onBypassFeedback(player, command);
}
@Override
public void showChatWindow(Player player)
{
NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
html.setFile("data/html/managers/rebirth.htm");
html.replace("%objectId%", String.valueOf(getObjectId()));
html.replace("%level%", + Config.REBIRTH_RETURN_TO_LEVEL);
player.sendPacket(html);
}
/**
* Physically rewards player and resets status to nothing.
*
* @param player the player
* @param newBirthCount the new birth count
* @param firstBirth the first birth
*/
public void grantRebirth(Player player, int newBirthCount, boolean firstBirth)
{
try
{
// Delevel.
player.removeExpAndSp(player.getExp() - Experience.LEVEL[Config.REBIRTH_RETURN_TO_LEVEL], 0);
// Back to the first class.
player.setClassId(player.getClassId().getFirstClass().getId());
// Send the Server->Client packet StatusUpdate with current HP, MP and CP to this L2PcInstance
player.broadcastStatusUpdate();
// Broadcast informations from a user to himself and his knownlist.
player.broadcastUserInfo();
// Remove the player's current skills.
for (L2Skill skill : player.getAllSkills())
player.removeSkill(skill);
// Give all available skills to the player.
player.giveAvailableSkills();
// Update L2PcInstance stats in the characters table of the database.
player.store();
if (firstBirth)
// Stores the player's information in the DB.
storePlayerBirth(player);
else
// Updates the player's information in the DB.
updatePlayerBirth(player, newBirthCount);
// Displays a congratulation window to the player.
NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
html.setFile("data/html/managers/rebirth-successfully.htm");
html.replace("%level%", + Config.REBIRTH_RETURN_TO_LEVEL);
player.sendPacket(html);
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* Rewards the player with an item.
*
* @param player the player
* @param itemId : Identifier of the item.
* @param itemCount : Quantity of items to add.
*/
public static void rebirthItemReward(Player player, int itemId, int itemCount)
{
// Incorrect amount.
if (itemCount <= 0)
return;
final ItemInstance item = player.getInventory().addItem("Quest", itemId, itemCount, player, player);
if (item == null)
return;
// Send message to the client.
if (itemId == 57)
{
SystemMessage smsg = SystemMessage.getSystemMessage(SystemMessageId.EARNED_S1_ADENA);
smsg.addItemNumber(itemCount);
player.sendPacket(smsg);
}
else
{
if (itemCount > 1)
{
SystemMessage smsg = SystemMessage.getSystemMessage(SystemMessageId.EARNED_S2_S1_S);
smsg.addItemName(itemId);
smsg.addItemNumber(itemCount);
player.sendPacket(smsg);
}
else
{
SystemMessage smsg = SystemMessage.getSystemMessage(SystemMessageId.EARNED_ITEM_S1);
smsg.addItemName(itemId);
player.sendPacket(smsg);
}
}
// Send status update packet.
StatusUpdate su = new StatusUpdate(player);
su.addAttribute(StatusUpdate.CUR_LOAD, player.getCurrentLoad());
player.sendPacket(su);
}
/**
* Return the player's current Rebirth Level.
*
* @param player the player
* @return the rebirth level
*/
public static int getRebirthLevel(Player player)
{
int playerId = player.getObjectId();
if (_rebirthInfo.get(playerId) == null)
loadRebirthInfo(player);
return _rebirthInfo.get(playerId);
}
/**
* Database caller to retrieve player's current Rebirth Level.
*
* @param player the player
*/
public static void loadRebirthInfo(Player player)
{
int playerId = player.getObjectId(), rebirthCount = 0;
try (Connection con = L2DatabaseFactory.getInstance().getConnection())
{
ResultSet rset;
PreparedStatement statement = con.prepareStatement("SELECT * FROM `character_rebirths` WHERE playerId = ?");
statement.setInt(1, playerId);
rset = statement.executeQuery();
while (rset.next())
{
rebirthCount = rset.getInt("rebirthCount");
}
rset.close();
statement.close();
}
catch (Exception e)
{
e.printStackTrace();
}
_rebirthInfo.put(playerId, rebirthCount);
}
/**
* Stores the player's information in the DB.
*
* @param player the player
*/
public static void storePlayerBirth(Player player)
{
try (Connection con = L2DatabaseFactory.getInstance().getConnection())
{
@SuppressWarnings("resource")
PreparedStatement statement = con.prepareStatement("INSERT INTO `character_rebirths` (playerId,rebirthCount) VALUES (?,1)");
statement.setInt(1, player.getObjectId());
statement.execute();
_rebirthInfo.put(player.getObjectId(), 1);
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* Updates the player's information in the DB.
*
* @param player the player
* @param newRebirthCount the new rebirth count
*/
public static void updatePlayerBirth(Player player, int newRebirthCount)
{
int playerId = player.getObjectId();
try (Connection con = L2DatabaseFactory.getInstance().getConnection())
{
@SuppressWarnings("resource")
PreparedStatement statement = con.prepareStatement("UPDATE `character_rebirths` SET rebirthCount = ? WHERE playerId = ?");
statement.setInt(1, newRebirthCount);
statement.setInt(2, playerId);
statement.execute();
_rebirthInfo.put(playerId, newRebirthCount);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.