Данный код для хроник Интерлюд заточенный под сборку L2j aCis rev 354 Код: Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 9) +++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy) @@ -164,6 +164,7 @@ import net.sf.l2j.gameserver.network.serverpackets.ExFishingEnd; import net.sf.l2j.gameserver.network.serverpackets.ExFishingStart; import net.sf.l2j.gameserver.network.serverpackets.ExOlympiadMode; +import net.sf.l2j.gameserver.network.serverpackets.ExPCCafePointInfo; import net.sf.l2j.gameserver.network.serverpackets.ExSetCompassZoneCode; import net.sf.l2j.gameserver.network.serverpackets.ExStorageMaxCount; import net.sf.l2j.gameserver.network.serverpackets.FriendList; @@ -311,8 +312,8 @@ private static final String DELETE_SKILL_SAVE = "DELETE FROM character_skills_save WHERE char_obj_id=? AND class_index=?"; private static final String INSERT_CHARACTER = "INSERT INTO characters (account_name,obj_Id,char_name,level,maxHp,curHp,maxCp,curCp,maxMp,curMp,face,hairStyle,hairColor,sex,exp,sp,karma,pvpkills,pkkills,clanid,race,classid,deletetime,cancraft,title,accesslevel,online,isin7sdungeon,clan_privs,wantspeace,base_class,nobless,power_grade,last_recom_date) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; - private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,face=?,hairStyle=?,hairColor=?,sex=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,pvpkills=?,pkkills=?,rec_have=?,rec_left=?,clanid=?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,punish_level=?,punish_timer=?,nobless=?,power_grade=?,subpledge=?,last_recom_date=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=? WHERE obj_id=?"; - private static final String RESTORE_CHARACTER = "SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp, expBeforeDeath, sp, karma, pvpkills, pkkills, clanid, race, classid, deletetime, cancraft, title, rec_have, rec_left, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, punish_level, punish_timer, nobless, power_grade, subpledge, last_recom_date, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level FROM characters WHERE obj_id=?"; + private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,face=?,hairStyle=?,hairColor=?,sex=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,pvpkills=?,pkkills=?,rec_have=?,rec_left=?,clanid=?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,punish_level=?,punish_timer=?,nobless=?,power_grade=?,subpledge=?,last_recom_date=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,pc_point=? WHERE obj_id=?"; + private static final String RESTORE_CHARACTER = "SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp, expBeforeDeath, sp, karma, pvpkills, pkkills, clanid, race, classid, deletetime, cancraft, title, rec_have, rec_left, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, punish_level, punish_timer, nobless, power_grade, subpledge, last_recom_date, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level,pc_point FROM characters WHERE obj_id=?"; private static final String RESTORE_CHAR_SUBCLASSES = "SELECT class_id,exp,sp,level,class_index FROM character_subclasses WHERE char_obj_id=? ORDER BY class_index ASC"; private static final String ADD_CHAR_SUBCLASS = "INSERT INTO character_subclasses (char_obj_id,class_id,exp,sp,level,class_index) VALUES (?,?,?,?,?,?)"; @@ -376,6 +377,8 @@ private PcAppearance _appearance; + private int pcBangPoint = 0; + private long _expBeforeDeath; private int _karma; private int _pvpKills; @@ -5324,6 +5327,8 @@ player.setOnlineTime(rset.getLong("onlinetime")); player.setNoble(rset.getInt("nobless") == 1, false); + player.pcBangPoint = rset.getInt("pc_point"); + player.setClanJoinExpiryTime(rset.getLong("clan_join_expiry_time")); if (player.getClanJoinExpiryTime() < System.currentTimeMillis()) player.setClanJoinExpiryTime(0); @@ -5747,7 +5752,8 @@ statement.setLong(47, getClanCreateExpiryTime()); statement.setString(48, getName()); statement.setLong(49, getDeathPenaltyBuffLevel()); - statement.setInt(50, getObjectId()); + statement.setInt(50, getPcBangScore()); + statement.setInt(51, getObjectId()); statement.execute(); statement.close(); @@ -10564,4 +10570,33 @@ teleToLocation(0, 0, 0, 0); sendMessage("Error with your coords, Please ask a GM for help!"); } + + public int getPcBangScore() + { + return pcBangPoint; + } + + public void reducePcBangScore(int to) + { + pcBangPoint -= to; + updatePcBangWnd(to, false, false); + } + + public void addPcBangScore(int to) + { + pcBangPoint += to; + } + + public void updatePcBangWnd(int score, boolean add, boolean duble) + { + ExPCCafePointInfo wnd = new ExPCCafePointInfo(this, score, add, 24, duble); + sendPacket(wnd); + } + + public void showPcBangWindow() + { + ExPCCafePointInfo wnd = new ExPCCafePointInfo(this, 0, false, 24, false); + sendPacket(wnd); + } + } \ No newline at end of file Index: java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java =================================================================== --- java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java (revision 9) +++ java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java (working copy) @@ -227,6 +227,8 @@ activeChar.onPlayerEnter(); + activeChar.showPcBangWindow(); + sendPacket(new SkillCoolTime(activeChar)); // If player logs back in a stadium, port him in nearest town. Index: java/net/sf/l2j/gameserver/network/serverpackets/ExPCCafePointInfo.java =================================================================== --- java/net/sf/l2j/gameserver/network/serverpackets/ExPCCafePointInfo.java (revision 9) +++ java/net/sf/l2j/gameserver/network/serverpackets/ExPCCafePointInfo.java (working copy) @@ -1,46 +1,75 @@ -/* - * 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/>. +/* 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 2, 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + * + * http://www.gnu.org/copyleft/gpl.html */ package net.sf.l2j.gameserver.network.serverpackets; -/** - * Format: ch ddcdc - * @author KenM - */ +import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; + public class ExPCCafePointInfo extends L2GameServerPacket { - private final int _score, _modify, _periodType, _remainingTime; - private int _pointType = 0; + private static final String _S__FE_31_EXPCCAFEPOINTINFO = "[S] FE:31 ExPCCafePointInfo"; + private L2PcInstance _character; + private int m_AddPoint; + private int m_PeriodType; + private int RemainTime; + private int PointType; - public ExPCCafePointInfo(int score, int modify, boolean addPoint, boolean pointType, int remainingTime) + public ExPCCafePointInfo(L2PcInstance user, int modify, boolean add, int hour, boolean _double) { - _score = score; - _modify = addPoint ? modify : modify * -1; - _remainingTime = remainingTime; - _pointType = addPoint ? (pointType ? 0 : 1) : 2; - _periodType = 1; // get point time + _character = user; + m_AddPoint = modify; + + if (add) + { + m_PeriodType = 1; + PointType = 1; + } + else + { + if (add && _double) + { + m_PeriodType = 1; + PointType = 0; + } + else + { + m_PeriodType = 2; + PointType = 2; + } + } + + RemainTime = hour; } - + @Override protected void writeImpl() { writeC(0xFE); writeH(0x31); - writeD(_score); - writeD(_modify); - writeC(_periodType); - writeD(_remainingTime); - writeC(_pointType); + writeD(_character.getPcBangScore()); + writeD(m_AddPoint); + writeC(m_PeriodType); + writeD(RemainTime); + writeC(PointType); + } + + @Override + public String getType() + { + return _S__FE_31_EXPCCAFEPOINTINFO; } } \ No newline at end of file Index: java/net/sf/l2j/gameserver/scripting/scripts/custom/PcPoint.java =================================================================== --- java/net/sf/l2j/gameserver/scripting/scripts/custom/PcPoint.java (revision 0) +++ java/net/sf/l2j/gameserver/scripting/scripts/custom/PcPoint.java (revision 0) @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2004-2014 L2J DataPack + * + * This file is part of L2J DataPack. + * + * L2J DataPack 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. + * + * L2J DataPack 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.scripting.scripts.custom; + +import net.sf.l2j.commons.random.Rnd; +import net.sf.l2j.gameserver.datatables.NpcTable; +import net.sf.l2j.gameserver.model.actor.L2Npc; +import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; +import net.sf.l2j.gameserver.model.actor.template.NpcTemplate; +import net.sf.l2j.gameserver.scripting.Quest; + +public class PcPoint extends Quest +{ + public PcPoint() + { + super(-1, "custom"); + for (NpcTemplate t : NpcTable.getInstance().getTemplates(t -> t.isType("L2Monster"))) + { + addKillId(t.getIdTemplate()); + } + } + + @Override + public String onKill(L2Npc npc, L2PcInstance killer, boolean isPet) + { + if ((killer.getLevel() >= 75) && (npc.getLevel() < 60)) + { + return ""; + } + int score = 0; + score = Rnd.get(100, 250); + killer.addPcBangScore(score); + killer.updatePcBangWnd(score, true, false); + return super.onKill(npc, killer, isPet); + } + + public static void main(String[] arg) + { + new PcPoint(); + } + +} \ No newline at end of file Код: Index: data/xml/scripts.xml =================================================================== --- data/xml/scripts.xml (revision 9) +++ data/xml/scripts.xml (working copy) @@ -361,7 +361,8 @@ <script path="scripts.custom.NpcLocationInfo"/> <script path="scripts.custom.HeroCirclet"/> <script path="scripts.custom.HeroWeapon"/> - + <script path="scripts.custom.PcPoint"/> + <!-- Events --> <!-- <script path="scripts.events.GiftOfVitality"/> --> Код: Index: sql/characters.sql =================================================================== --- sql/characters.sql (revision 9) +++ sql/characters.sql (working copy) @@ -54,6 +54,7 @@ `clan_join_expiry_time` BIGINT UNSIGNED NOT NULL DEFAULT 0, `clan_create_expiry_time` BIGINT UNSIGNED NOT NULL DEFAULT 0, `death_penalty_level` SMALLINT UNSIGNED NOT NULL DEFAULT 0, + `pc_point` int (1) NOT NULL DEFAULT 0, PRIMARY KEY (obj_Id), KEY `clanid` (`clanid`) ); \ No newline at end of file Автор: Hi_Profile