[core][question] Несколько вопросов
Есть несколько вопросов по редактированию ядра сервера.
Сборка L2jOfficial ~1000 ривизия.
Меня интересуют следующие вопросы:
1. Как сделать команды “.mbuff” “.fbuff” (mbuff – для мага, fbuff- для воина) чтобы когда игрок писал эти команды на него сразу же бесплатно накладывались определённые заклинания которые я напишу.
2. Можно ли это (см. ниже) переделать под сборку L2jOfficial? Тк у меня не получается в некоторых местах.
Wh1tePower: Геройское свечение за PVP
Примечание: Это не будет давать геройские скиллы или давать возможность покупать геройское оружие,только ауру(свечение).КодIndex: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 1901)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -488,6 +488,11 @@
private boolean _noble = false;
private boolean _hero = false;
+
+ /** Special hero aura values */
+ private int heroConsecutiveKillCount = 0;
+ private boolean isPermaHero = false;
+ private boolean isPVPHero = false;
/** The L2FolkInstance corresponding to the last Folk wich one the player talked. */
private L2FolkInstance _lastFolkNpc = null;
@@ -1971,6 +1976,13 @@
public void setPvpKills(int pvpKills)
{
_pvpKills = pvpKills;
+
+ // Set hero aura if pvp kills > 100
+ if (pvpKills > 100)
+ {
+ isPermaHero = true;
+ setHeroAura(true);
+ }
}
/**
@@ -4678,6 +4690,14 @@
stopRentPet();
stopWaterTask();
+
+ // Remove kill count for special hero aura if total pvp < 100
+ heroConsecutiveKillCount = 0;
+ if (!isPermaHero)
+ {
+ setHeroAura(false);
+ sendPacket(new UserInfo(this));
+ }
return true;
}
@@ -4897,6 +4917,13 @@
{
// Add karma to attacker and increase its PK counter
setPvpKills(getPvpKills() + 1);
+
+ // Increase the kill count for a special hero aura
+ heroConsecutiveKillCount++;
+
+ // If heroConsecutiveKillCount > 4 (5+ kills) give hero aura
+ if(heroConsecutiveKillCount > 4)
+ setHeroAura(true);
// Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter
sendPacket(new UserInfo(this));
@@ -8715,6 +8742,22 @@
{
return _blockList;
}
+
+ public void reloadPVPHeroAura()
+ {
+ sendPacket(new UserInfo(this));
+ }
+
+ public void setHeroAura (boolean heroAura)
+ {
+ isPVPHero = heroAura;
+ return;
+ }
+
+ public boolean getIsPVPHero()
+ {
+ return isPVPHero;
+ }
public void setHero(boolean hero)
{
Index: java/net/sf/l2j/gameserver/serverpackets/UserInfo.java
===================================================================
--- java/net/sf/l2j/gameserver/serverpackets/UserInfo.java (revision 1901)
+++ java/net/sf/l2j/gameserver/serverpackets/UserInfo.java (working copy)
@@ -337,7 +337,7 @@
writeD(_activeChar.getClanCrestLargeId());
writeC(_activeChar.isNoble() ? 1 : 0); //0x01: symbol on char menu ctrl+I
- writeC((_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA)) ? 1 : 0); //0x01: Hero Aura
+ writeC((_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) || _activeChar.getIsPVPHero()) ? 1 : 0); //0x01: Hero Aura
writeC(_activeChar.isFishing() ? 1 : 0); //Fishing Mode
writeD(_activeChar.getFishx()); //fishing x
© BrainFucker - Взято с АЧ
Wh1tePower: Вещь для получения геройства после рестарта
По адресу net.sf.l2j.gameserver.handler.itemhandlers создаем новый файл под названием HeroItem.javaКод/*
* 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.handler.itemhandlers;
import net.sf.l2j.gameserver.handler.IItemHandler;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance;
/**
*
* @author HanWik
*/
public class HeroItem implements IItemHandler
{
private static final int[] ITEM_IDS = { YOUR ITEM ID - replace here };
public void useItem(L2PlayableInstance playable, L2ItemInstance item)
{
if (!(playable instanceof L2PcInstance))
return;
L2PcInstance activeChar = (L2PcInstance)playable;
int itemId = item.getItemId();
if (itemId = Айди вашей вещи здесь!) // Вещь что бы стать героем
{
activeChar.setHero(true);
activeChar.broadcastUserInfo();
}
}
/**
* @see net.sf.l2j.gameserver.handler.IItemHandler#getItemIds()
*/
public int[] getItemIds()
{
return ITEM_IDS;
}
}
Открываем GameServer.java и добавляем это :Кодimport net.sf.l2j.gameserver.handler.itemhandlers.Harvester;
на
import net.sf.l2j.gameserver.handler.itemhandlers.HeroItem;
import net.sf.l2j.gameserver.handler.itemhandlers.Maps;Код_itemHandler.registerItemHandler(new BeastSpice());
на _itemHandler.registerItemHandler(new HeroItem());
© BrainFucker - Взято с АЧ
XOXOJI: для начала sql
у кого л2жфри меняйте com\l2jarchid на net\sf\l2j\
в com\l2jarchid\gameserver\datatables\ArmorSetsTable.java
Кодprivate void loadData()
{
Connection con;
try
{
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement statement = con.prepareStatement("SELECT chest, legs, head, gloves, feet, skill_id, shield, shield_skill_id, enchant6skill, aurahero FROM armorsets");
ResultSet rset = statement.executeQuery();
while(rset.next())
{
int chest = rset.getInt("chest");
int legs = rset.getInt("legs");
int head = rset.getInt("head");
int gloves = rset.getInt("gloves");
int feet = rset.getInt("feet");
int skill_id = rset.getInt("skill_id");
int shield = rset.getInt("shield");
int shield_skill_id = rset.getInt("shield_skill_id");
int enchant6skill = rset.getInt("enchant6skill");
_armorSets.put(chest, new L2ArmorSet(chest, legs, head, gloves, feet,skill_id, shield, shield_skill_id, enchant6skill));
}
_log.config("ArmorSetsTable: Loaded "+_armorSets.size()+" armor sets.");
меняем
Кодprivate void loadData()
{
Connection con;
try
{
con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement statement = con.prepareStatement("SELECT chest, legs, head, gloves, feet, skill_id, shield, shield_skill_id, enchant6skill, aurahero FROM armorsets");
ResultSet rset = statement.executeQuery();
while(rset.next())
{
int chest = rset.getInt("chest");
int legs = rset.getInt("legs");
int head = rset.getInt("head");
int gloves = rset.getInt("gloves");
int feet = rset.getInt("feet");
int skill_id = rset.getInt("skill_id");
int shield = rset.getInt("shield");
int shield_skill_id = rset.getInt("shield_skill_id");
int enchant6skill = rset.getInt("enchant6skill");
[b] int aurahero = rset.getInt("aurahero");[/b]
_armorSets.put(chest, new L2ArmorSet(chest, legs, head, gloves, feet,skill_id, shield, shield_skill_id, enchant6skill, [b]aurahero[/b]));
}
_log.config("ArmorSetsTable: Loaded "+_armorSets.size()+" armor sets.");
далее файл com\l2jarchid\gameserver\model\L2ArmoSet.javaКодpublic final class L2ArmorSet
{
private final int _chest;
private final int _legs;
private final int _head;
private final int _gloves;
private final int _feet;
private final int _skillId;
private final int _shield;
private final int _shieldSkillId;
private final int _enchant6Skill;
public L2ArmorSet(int chest, int legs, int head, int gloves, int feet, int skill_id, int shield, int shield_skill_id, int enchant6skill)
{
_chest = chest;
_legs = legs;
_head = head;
_gloves = gloves;
_feet = feet;
_skillId = skill_id;
_shield = shield;
_shieldSkillId = shield_skill_id;
_enchant6Skill = enchant6skill;
}
Добавляем
после
Кодpublic int getEnchant6skillId()
{
return _enchant6Skill;
}
добавляем
public int getauraHero()
{
return _auraHero;
}
следующий файл com\l2jarchid\gameserver\model\L2ArmoSet.java
Кодif(armorSet.containAll(player))
if(armorSet.containAll(player))
{
L2Skill skill = SkillTable.getInstance().getInfo(armorSet.getSkillId(),1);
if(skill != null)
{
player.addSkill(skill, false);
player.sendSkillList();
}
else
меняем
далее
Кодif(slot == PAPERDOLL_CHEST)
{
L2ArmorSet armorSet = ArmorSetsTable.getInstance().getSet(item.getItemId());
if(armorSet == null)
return;
remove = true;
removeSkillId1 = armorSet.getSkillId();
removeSkillId2 = armorSet.getShieldSkillId();
removeSkillId3 = armorSet.getEnchant6skillId();
}
else
{
L2ItemInstance chestItem = getPaperdollItem(PAPERDOLL_CHEST);
if(chestItem == null)
return;
L2ArmorSet armorSet = ArmorSetsTable.getInstance().getSet(chestItem.getItemId());
if(armorSet == null)
return;
if(armorSet.containItem(slot, item.getItemId())) // removed part of set
{
remove = true;
removeSkillId1 = armorSet.getSkillId();
removeSkillId2 = armorSet.getShieldSkillId();
removeSkillId3 = armorSet.getEnchant6skillId();
}
else if(armorSet.containShield(item.getItemId())) // removed shield
{
remove = true;
removeSkillId2 = armorSet.getShieldSkillId();
}
}
if(remove)
добавляем
далее файл com\l2jarchid\gameserver\model\actor\instance\L2PcInstance.java
ищем
Кодprivate boolean _noble = false;
private boolean _hero = false;
добавляем
Кодprivate boolean _epic = false;
далее ищем
Кодpublic void setHero(boolean hero)
{
if (hero && _baseClass == _activeClass)
{
for (L2Skill s : HeroSkillTable.GetHeroSkills())
addSkill(s, false); //Dont Save Hero skills to database
}
else
{
for (L2Skill s : HeroSkillTable.GetHeroSkills())
super.removeSkill(s); //Just Remove skills from nonHero characters
}
_hero = hero;
sendSkillList();
}
после него добавляем
Кодpublic void setEpic(boolean epic)
{
if (epic)
{
sendMessage("Вы одели эпический сэт");
sendPacket(new UserInfo(this));
broadcastUserInfo();
}
else
{
sendPacket(new UserInfo(this));
broadcastUserInfo();
}
_epic = epic;
}
далее ищем
Кодpublic boolean isHero()
{
return _hero;
}
добавляем
Кодpublic boolean isEpic()
{
return _epic;
}
далее 2 файла пакетов
com\l2jarchid\gameserver\network\serverpackets\UserInfo.java
com\l2jarchid\gameserver\network\serverpackets\CharInfo.java
у обладателей других сборок файлы находятся
net\sf\l2j\gameserver\serverpackets\UserInfo.java
net\sf\l2j\gameserver\serverpackets\CharInfo.java
в обоих файлах ищем строкуКодwriteC((_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA)) ? 1 : 0); // Hero Aura
и заменяем на
КодwriteC((_activeChar.isHero() || (_activeChar.isEpic()) || (_activeChar.isGM() && Config.GM_HERO_AURA)) ? 1 : 0); //0x01: Hero Aura
в теории хватает записи только в юзеринфо, но иногда при одевании сэта аура появляется после любого последующего действия
в базе в таблице арморсетс в поле аурахеро ставьте 1 вместо 0 и ура! сэт светится
Что в спойлере можно сделать, было бы желание...
По поводу бафера переделывай этот:
* 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 javolution.text.TextBuilder;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.templates.L2NpcTemplate;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.serverpackets.MagicSkillUse;
/**
*
* @author Z0mbie!
*/
public class L2NpcbuffInstance extends L2FolkInstance
{
public L2NpcbuffInstance(int objectId, L2NpcTemplate template)
{
super(objectId, template);
}
public void onAction(L2PcInstance player)
{
player.setTarget(player);
htmls("glange",player);
}
public void onBypassFeedback(L2PcInstance player, String command)
{
if (command.startsWith("mage_buff"))
{
htmls("mage",player);
}
else if (command.startsWith("voene_buff"))
{
htmls("voene",player);
}
else if (command.startsWith("shar_buff"))
{
htmls("shar",player);
}
else if (command.startsWith("glange"))
{
htmls("glange",player);
}
//warriors buffs-start
else if (command.startsWith("mig_buff")) { buffer(4345,3,player,"voene");}
else if (command.startsWith("hast_buff")){ buffer(4357,2,player,"voene");}
else if (command.startsWith("vmr_buff")){ buffer(4354,4,player,"voene");}
else if (command.startsWith("gue_buff")){ buffer(4358,3,player,"voene");}
else if (command.startsWith("focus_buff")){ buffer(4359,3,player,"voene");}
else if (command.startsWith("dw_buff")){ buffer(4360,3,player,"voene");}
//warriors buffs-end
//mages buffs-start
else if (command.startsWith("emp_buff")) { buffer(4356,2,player,"mage");}
else if (command.startsWith("acum_buff")) { buffer(4355,2,player,"mage");}
else if (command.startsWith("conc_buff")) { buffer(4351,6,player,"mage");}
else if (command.startsWith("wm_buff")) { buffer(1303,2,player,"mage");}
//mages buffs-end
//Общие баффы начало
else if (command.startsWith("ww_buff")) { buffer(4342,2,player,"shar");}
else if (command.startsWith("dwe_buff")) { buffer(4343,3,player,"shar");}
else if (command.startsWith("sh_buff")) { buffer(4344,3,player,"shar");}
else if (command.startsWith("ms_buff")) { buffer(4346,4,player,"shar");}
else if (command.startsWith("bb_buff")) { buffer(4347,6,player,"shar");}
else if (command.startsWith("bs_buff")) { buffer(4348,6,player,"shar");}
else if (command.startsWith("mb_buff")) { buffer(4349,2,player,"shar");}
else if (command.startsWith("rs_buff")) { buffer(4350,4,player,"shar");}
else if (command.startsWith("bers_buff")) { buffer(4352,2,player,"shar");}
else if (command.startsWith("blss_buff")) { buffer(4353,6,player,"shar");}
//Общие баффы канец
else {super.onBypassFeedback(player, command);}
}
public void buffer(int skillid, int lvl, L2PcInstance player,String last)
{
L2Skill skill;
skill = SkillTable.getInstance().getInfo(skillid,lvl);
skill.getEffects(player, player);
player.broadcastPacket(new MagicSkillUse(player, player, skillid, lvl, 1, 0));
htmls(last,player);
}
/**
*Return HTML chat to player<BR><BR>
* @param type : Type of HTML. voene,mage,dance and songe
*/
public void htmls(String type, L2PcInstance player)
{
if (type==("voene"))
{
NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
TextBuilder sb = new TextBuilder();
sb.append("<html><title>Core Buffer:</title><body>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_mig_buff\">Might</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_hast_buff\">Haste</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_vmr_buff\">Vampiric Rage</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_gue_buff\">Guidance</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_focus_buff\">Focus</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_dw_buff\">Death Whisper</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_glange\">Главное меню</a>");
sb.append("</body></html>");
html.setHtml(sb.toString());
player.sendPacket(html);
html=null;
sb=null;
return;
}
else if (type==("mage"))
{
NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
TextBuilder sb = new TextBuilder();
sb.append("<html><title>Core Buffer:</title><body>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_emp_buff\">Empower</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_acum_buff\">Acumen</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_conc_buff\">Concentration</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_wm_buff\">Wild Magic</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_glange\">Главное меню</a>");
sb.append("</body></html>");
html.setHtml(sb.toString());
player.sendPacket(html);
html=null;
sb=null;
return;
}
else if (type==("shar"))
{
NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
TextBuilder sb = new TextBuilder();
sb.append("<html><title>Core Buffer:</title><body>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_ww_buff\">Wind Walk</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_dwe_buff\">Decrease Weight</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_sh_buff\">Shield</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_ms_buff\">Mental Shield</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_bb_buff\">Bless the Body</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_bs_buff\">Bless the Soul</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_mb_buff\">Magic Barrier</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_rs_buff\">Resist Shock</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_bers_buff\">Berserker Spirit</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_blss_buff\">Bless Shield</a>");
sb.append("<br><a action=\"bypass -h npc_"+getObjectId()+"_glange\">Главное меню</a>");
sb.append("</body></html>");
html.setHtml(sb.toString());
player.sendPacket(html);
html=null;
sb=null;
return;
}
else if (type=="glange")
{
NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
TextBuilder sb = new TextBuilder();
sb.append("<html><title>Core Buffer:</title><body>");
sb.append("<br><td><a action=\"bypass -h npc_"+getObjectId()+"_mage_buff\">Баффы для мага</a></td>");
sb.append("<br><font color=\"LEVEL\">Acumen,Empower,Wild Magic,Concentration</font>");
sb.append("<br>");
sb.append("<br><td><a action=\"bypass -h npc_"+getObjectId()+"_voene_buff\">Баффы для война</a></td>");
sb.append("<br><font color=\"LEVEL\">Migth,Vampiric Rage,Haste,Guidance,Focus,Death Whisper</font>");
sb.append("<br>");
sb.append("<br><td><a action=\"bypass -h npc_"+getObjectId()+"_shar_buff\">Общие баффы</a></td>");
sb.append("<br><font color=\"LEVEL\">Wind Walk,Decrease Weight,Shield,Mental Shield,Bless the Body,</font>");
sb.append("<br><font color=\"LEVEL\">Bless the Soul,Magic Barrier,Resist Shock,Berserker Spirit,Bless Shield</font>");
sb.append("<br>");
sb.append("</body></html>");
html.setHtml(sb.toString());
player.sendPacket(html);
html=null;
sb=null;
}
}
}
ну это ясно что в исходниках а в какой именно файл то
Если я неошибаюсь нужно кидать это в файл L2PcInstance.java
подскажите куда что вставить
сам код сюда вставить немогу тк слишком большой, могу файл залить на дамп например
Nice42ru: ну это ясно что в исходниках а в какой именно файл то
Если я неошибаюсь нужно кидать это в файл L2PcInstance.java
подскажите куда что вставить
сам код сюда вставить немогу тк слишком большой, могу файл залить на дамп например
L2NpcbuffInstance.java
путь: net/sf/l2j/gameserver/model/actor/instance/
у людей логика отсутствует напрочь )
— Жадный...
* 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 net.sf.l2j.gameserver.cache.HtmCache;
import net.sf.l2j.gameserver.datatables.NpcBufferTable;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.actor.L2Npc;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
import net.sf.l2j.gameserver.taskmanager.AttackStanceTaskManager;
import net.sf.l2j.gameserver.templates.chars.L2NpcTemplate;
public class L2NpcBufferInstance extends L2Npc
{
public L2NpcBufferInstance (int objectId, L2NpcTemplate template)
{
super(objectId, template);
}
@Override
public void showChatWindow(L2PcInstance playerInstance, int val)
{
if (playerInstance == null)
return;
String htmContent = HtmCache.getInstance().getHtm("data/html/mods/NpcBuffer.htm");
if (val > 0)
htmContent = HtmCache.getInstance().getHtm("data/html/mods/NpcBuffer-" + val + ".htm");
if (htmContent != null)
{
NpcHtmlMessage npcHtmlMessage = new NpcHtmlMessage(getObjectId());
npcHtmlMessage.setHtml(htmContent);
npcHtmlMessage.replace("%objectId%", String.valueOf(getObjectId()));
playerInstance.sendPacket(npcHtmlMessage);
}
playerInstance.sendPacket(ActionFailed.STATIC_PACKET);
}
int pageVal = 0;
@Override
public void onBypassFeedback(L2PcInstance playerInstance, String command)
{
if (playerInstance == null)
return;
int npcId = getNpcId();
if (command.startsWith("Chat"))
{
int val = Integer.parseInt(command.substring(5));
pageVal = val;
showChatWindow(playerInstance, val);
}
else if (command.startsWith("Buff"))
{
String[] buffGroupArray = command.substring(5).split(" ");
for (String buffGroupList : buffGroupArray)
{
if (buffGroupList == null)
{
_log.warning("NPC Buffer Warning: npcId = " + npcId + " has no buffGroup set in the bypass for the buff selected.");
return;
}
int buffGroup = Integer.parseInt(buffGroupList);
int[] npcBuffGroupInfo = NpcBufferTable.getInstance().getSkillInfo(npcId, buffGroup);
if (npcBuffGroupInfo == null)
{
_log.warning("NPC Buffer Warning: npcId = " + npcId + " Location: " + getX() + ", " + getY() + ", " + getZ() + " Player: " + playerInstance.getName() + " has tried to use skill group (" + buffGroup + ") not assigned to the NPC Buffer!");
return;
}
int skillId = npcBuffGroupInfo[0];
int skillLevel = npcBuffGroupInfo[1];
int skillFeeId = npcBuffGroupInfo[2];
int skillFeeAmount = npcBuffGroupInfo[3];
if (skillFeeId != 0)
{
L2ItemInstance itemInstance = playerInstance.getInventory().getItemByItemId(skillFeeId);
if (itemInstance == null || (!itemInstance.isStackable() && playerInstance.getInventory().getInventoryItemCount(skillFeeId, -1) < skillFeeAmount))
{
SystemMessage sm = new SystemMessage(SystemMessageId.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL);
playerInstance.sendPacket(sm);
continue;
}
if (itemInstance.isStackable())
{
if (!playerInstance.destroyItemByItemId("Npc Buffer", skillFeeId, skillFeeAmount, playerInstance.getTarget(), true))
{
SystemMessage sm = new SystemMessage(SystemMessageId.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL);
playerInstance.sendPacket(sm);
continue;
}
}
else
{
for (int i = 0;i < skillFeeAmount;++ i)
playerInstance.destroyItemByItemId("Npc Buffer", skillFeeId, 1, playerInstance.getTarget(), true);
}
}
L2Skill skill = SkillTable.getInstance().getInfo(skillId,skillLevel);
if (skill != null)
skill.getEffects(playerInstance, playerInstance);
}
showChatWindow(playerInstance, pageVal);
}
else if (command.startsWith("Heal"))
{
if (!playerInstance.isInCombat() && !AttackStanceTaskManager.getInstance().getAttackStanceTask(playerInstance))
{
playerInstance.setCurrentCp(playerInstance.getMaxCp());
playerInstance.setCurrentHpMp(playerInstance.getMaxHp(), playerInstance.getMaxMp());
}
showChatWindow(playerInstance, 0); // 0 = main window
}
else if (command.startsWith("removeBuffs"))
{
playerInstance.stopAllEffects();
playerInstance.clearSouls();
playerInstance.clearCharges();
}
else
super.onBypassFeedback(playerInstance, command);
}
}
Подскажи куда вставить именно, заранее спасибо!
Nice42ru:Раскрывающийся текстКод/*
* 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 net.sf.l2j.gameserver.cache.HtmCache;
import net.sf.l2j.gameserver.datatables.NpcBufferTable;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.actor.L2Npc;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
import net.sf.l2j.gameserver.taskmanager.AttackStanceTaskManager;
import net.sf.l2j.gameserver.templates.chars.L2NpcTemplate;
public class L2NpcBufferInstance extends L2Npc
{
public L2NpcBufferInstance (int objectId, L2NpcTemplate template)
{
super(objectId, template);
}
@Override
public void showChatWindow(L2PcInstance playerInstance, int val)
{
if (playerInstance == null)
return;
String htmContent = HtmCache.getInstance().getHtm("data/html/mods/NpcBuffer.htm");
if (val > 0)
htmContent = HtmCache.getInstance().getHtm("data/html/mods/NpcBuffer-" + val + ".htm");
if (htmContent != null)
{
NpcHtmlMessage npcHtmlMessage = new NpcHtmlMessage(getObjectId());
npcHtmlMessage.setHtml(htmContent);
npcHtmlMessage.replace("%objectId%", String.valueOf(getObjectId()));
playerInstance.sendPacket(npcHtmlMessage);
}
playerInstance.sendPacket(ActionFailed.STATIC_PACKET);
}
int pageVal = 0;
@Override
public void onBypassFeedback(L2PcInstance playerInstance, String command)
{
if (playerInstance == null)
return;
int npcId = getNpcId();
if (command.startsWith("Chat"))
{
int val = Integer.parseInt(command.substring(5));
pageVal = val;
showChatWindow(playerInstance, val);
}
else if (command.startsWith("Buff"))
{
String[] buffGroupArray = command.substring(5).split(" ");
for (String buffGroupList : buffGroupArray)
{
if (buffGroupList == null)
{
_log.warning("NPC Buffer Warning: npcId = " + npcId + " has no buffGroup set in the bypass for the buff selected.");
return;
}
int buffGroup = Integer.parseInt(buffGroupList);
int[] npcBuffGroupInfo = NpcBufferTable.getInstance().getSkillInfo(npcId, buffGroup);
if (npcBuffGroupInfo == null)
{
_log.warning("NPC Buffer Warning: npcId = " + npcId + " Location: " + getX() + ", " + getY() + ", " + getZ() + " Player: " + playerInstance.getName() + " has tried to use skill group (" + buffGroup + ") not assigned to the NPC Buffer!");
return;
}
int skillId = npcBuffGroupInfo[0];
int skillLevel = npcBuffGroupInfo[1];
int skillFeeId = npcBuffGroupInfo[2];
int skillFeeAmount = npcBuffGroupInfo[3];
if (skillFeeId != 0)
{
L2ItemInstance itemInstance = playerInstance.getInventory().getItemByItemId(skillFeeId);
if (itemInstance == null || (!itemInstance.isStackable() && playerInstance.getInventory().getInventoryItemCount(skillFeeId, -1) < skillFeeAmount))
{
SystemMessage sm = new SystemMessage(SystemMessageId.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL);
playerInstance.sendPacket(sm);
continue;
}
if (itemInstance.isStackable())
{
if (!playerInstance.destroyItemByItemId("Npc Buffer", skillFeeId, skillFeeAmount, playerInstance.getTarget(), true))
{
SystemMessage sm = new SystemMessage(SystemMessageId.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL);
playerInstance.sendPacket(sm);
continue;
}
}
else
{
for (int i = 0;i < skillFeeAmount;++ i)
playerInstance.destroyItemByItemId("Npc Buffer", skillFeeId, 1, playerInstance.getTarget(), true);
}
}
L2Skill skill = SkillTable.getInstance().getInfo(skillId,skillLevel);
if (skill != null)
skill.getEffects(playerInstance, playerInstance);
}
showChatWindow(playerInstance, pageVal);
}
else if (command.startsWith("Heal"))
{
if (!playerInstance.isInCombat() && !AttackStanceTaskManager.getInstance().getAttackStanceTask(playerInstance))
{
playerInstance.setCurrentCp(playerInstance.getMaxCp());
playerInstance.setCurrentHpMp(playerInstance.getMaxHp(), playerInstance.getMaxMp());
}
showChatWindow(playerInstance, 0); // 0 = main window
}
else if (command.startsWith("removeBuffs"))
{
playerInstance.stopAllEffects();
playerInstance.clearSouls();
playerInstance.clearCharges();
}
else
super.onBypassFeedback(playerInstance, command);
}
}
Подскажи куда вставить именно, заранее спасибо!
а мой пост ты не видишь? ^_^
Люди еще и слепые (((
— Жадный...
DARKDOG: И еще говорят что админы странные...
а я че? ^_^ я ничего )))
моя твоя не понимать :(
— Жадный...
Я кидаю исходный код своего файла L2NpcBuffInstance.java
а именно
* 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 net.sf.l2j.gameserver.cache.HtmCache;
import net.sf.l2j.gameserver.datatables.NpcBufferTable;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.actor.L2Npc;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
import net.sf.l2j.gameserver.taskmanager.AttackStanceTaskManager;
import net.sf.l2j.gameserver.templates.chars.L2NpcTemplate;
public class L2NpcBufferInstance extends L2Npc
{
public L2NpcBufferInstance (int objectId, L2NpcTemplate template)
{
super(objectId, template);
}
@Override
public void showChatWindow(L2PcInstance playerInstance, int val)
{
if (playerInstance == null)
return;
String htmContent = HtmCache.getInstance().getHtm("data/html/mods/NpcBuffer.htm");
if (val > 0)
htmContent = HtmCache.getInstance().getHtm("data/html/mods/NpcBuffer-" + val + ".htm");
if (htmContent != null)
{
NpcHtmlMessage npcHtmlMessage = new NpcHtmlMessage(getObjectId());
npcHtmlMessage.setHtml(htmContent);
npcHtmlMessage.replace("%objectId%", String.valueOf(getObjectId()));
playerInstance.sendPacket(npcHtmlMessage);
}
playerInstance.sendPacket(ActionFailed.STATIC_PACKET);
}
int pageVal = 0;
@Override
public void onBypassFeedback(L2PcInstance playerInstance, String command)
{
if (playerInstance == null)
return;
int npcId = getNpcId();
if (command.startsWith("Chat"))
{
int val = Integer.parseInt(command.substring(5));
pageVal = val;
showChatWindow(playerInstance, val);
}
else if (command.startsWith("Buff"))
{
String[] buffGroupArray = command.substring(5).split(" ");
for (String buffGroupList : buffGroupArray)
{
if (buffGroupList == null)
{
_log.warning("NPC Buffer Warning: npcId = " + npcId + " has no buffGroup set in the bypass for the buff selected.");
return;
}
int buffGroup = Integer.parseInt(buffGroupList);
int[] npcBuffGroupInfo = NpcBufferTable.getInstance().getSkillInfo(npcId, buffGroup);
if (npcBuffGroupInfo == null)
{
_log.warning("NPC Buffer Warning: npcId = " + npcId + " Location: " + getX() + ", " + getY() + ", " + getZ() + " Player: " + playerInstance.getName() + " has tried to use skill group (" + buffGroup + ") not assigned to the NPC Buffer!");
return;
}
int skillId = npcBuffGroupInfo[0];
int skillLevel = npcBuffGroupInfo[1];
int skillFeeId = npcBuffGroupInfo[2];
int skillFeeAmount = npcBuffGroupInfo[3];
if (skillFeeId != 0)
{
L2ItemInstance itemInstance = playerInstance.getInventory().getItemByItemId(skillFeeId);
if (itemInstance == null || (!itemInstance.isStackable() && playerInstance.getInventory().getInventoryItemCount(skillFeeId, -1) < skillFeeAmount))
{
SystemMessage sm = new SystemMessage(SystemMessageId.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL);
playerInstance.sendPacket(sm);
continue;
}
if (itemInstance.isStackable())
{
if (!playerInstance.destroyItemByItemId("Npc Buffer", skillFeeId, skillFeeAmount, playerInstance.getTarget(), true))
{
SystemMessage sm = new SystemMessage(SystemMessageId.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL);
playerInstance.sendPacket(sm);
continue;
}
}
else
{
for (int i = 0;i < skillFeeAmount;++ i)
playerInstance.destroyItemByItemId("Npc Buffer", skillFeeId, 1, playerInstance.getTarget(), true);
}
}
L2Skill skill = SkillTable.getInstance().getInfo(skillId,skillLevel);
if (skill != null)
skill.getEffects(playerInstance, playerInstance);
}
showChatWindow(playerInstance, pageVal);
}
else if (command.startsWith("Heal"))
{
if (!playerInstance.isInCombat() && !AttackStanceTaskManager.getInstance().getAttackStanceTask(playerInstance))
{
playerInstance.setCurrentCp(playerInstance.getMaxCp());
playerInstance.setCurrentHpMp(playerInstance.getMaxHp(), playerInstance.getMaxMp());
}
showChatWindow(playerInstance, 0); // 0 = main window
}
else if (command.startsWith("removeBuffs"))
{
playerInstance.stopAllEffects();
playerInstance.clearSouls();
playerInstance.clearCharges();
}
else
super.onBypassFeedback(playerInstance, command);
}
}
И прошу тебя его изминить так чтобы я вставил его в этот файл запустил и всё заработало, надеюсь понятно разьяснил)
приготовь и съешь называется...
если не знаете java... не лезьте вы в ядро...
хотите? учите основы Java хотя бы... и включайте логику
никто за вас это делать не будет
хотя тут элементарно
— Жадный...
я сдесь чтобы получить ващей помощи, думаю для этого и есть этот форум а не для того чтобы каждый мне говорил Юзай поиск, иди сам учи и тп
Подскажите куда это чудо вставить как подключить и тп
Очень прошу!
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.handler.IVoicedCommandHandler;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
public class Buffs
implements IVoicedCommandHandler
{
public Buffs()
{
}
public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
{
if(command.equalsIgnoreCase("fbuff"))
{
activeChar.sendMessage("Koszunjuk hogy nalunk buffoltal. (Fighter)");
L2Skill fbuff01 = SkillTable.getInstance().getInfo(275, 1);
fbuff01.getEffects(activeChar, activeChar);
L2Skill fbuff02 = SkillTable.getInstance().getInfo(271, 1);
fbuff02.getEffects(activeChar, activeChar);
L2Skill fbuff03 = SkillTable.getInstance().getInfo(274, 1);
fbuff03.getEffects(activeChar, activeChar);
L2Skill fbuff04 = SkillTable.getInstance().getInfo(264, 1);
fbuff04.getEffects(activeChar, activeChar);
L2Skill fbuff05 = SkillTable.getInstance().getInfo(304, 1);
fbuff05.getEffects(activeChar, activeChar);
L2Skill fbuff06 = SkillTable.getInstance().getInfo(267, 1);
fbuff06.getEffects(activeChar, activeChar);
L2Skill fbuff07 = SkillTable.getInstance().getInfo(1240, 3);
fbuff07.getEffects(activeChar, activeChar);
L2Skill fbuff08 = SkillTable.getInstance().getInfo(1035, 4);
fbuff08.getEffects(activeChar, activeChar);
L2Skill fbuff09 = SkillTable.getInstance().getInfo(1068, 3);
fbuff09.getEffects(activeChar, activeChar);
L2Skill fbuff10 = SkillTable.getInstance().getInfo(1045, 6);
fbuff10.getEffects(activeChar, activeChar);
L2Skill fbuff11 = SkillTable.getInstance().getInfo(1048, 6);
fbuff11.getEffects(activeChar, activeChar);
L2Skill fbuff12 = SkillTable.getInstance().getInfo(1077, 3);
fbuff12.getEffects(activeChar, activeChar);
L2Skill fbuff13 = SkillTable.getInstance().getInfo(1086, 2);
fbuff13.getEffects(activeChar, activeChar);
L2Skill fbuff14 = SkillTable.getInstance().getInfo(1036, 2);
fbuff14.getEffects(activeChar, activeChar);
L2Skill fbuff15 = SkillTable.getInstance().getInfo(1040, 3);
fbuff15.getEffects(activeChar, activeChar);
L2Skill fbuff16 = SkillTable.getInstance().getInfo(1242, 3);
fbuff16.getEffects(activeChar, activeChar);
L2Skill fbuff17 = SkillTable.getInstance().getInfo(1062, 2);
fbuff17.getEffects(activeChar, activeChar);
L2Skill fbuff18 = SkillTable.getInstance().getInfo(1388, 3);
fbuff18.getEffects(activeChar, activeChar);
L2Skill fbuff19 = SkillTable.getInstance().getInfo(1268, 4);
fbuff19.getEffects(activeChar, activeChar);
L2Skill fbuff20 = SkillTable.getInstance().getInfo(1259, 4);
fbuff20.getEffects(activeChar, activeChar);
L2Skill fbuff21 = SkillTable.getInstance().getInfo(1243, 6);
fbuff21.getEffects(activeChar, activeChar);
L2Skill fbuff22 = SkillTable.getInstance().getInfo(1087, 3);
fbuff22.getEffects(activeChar, activeChar);
L2Skill fbuff23 = SkillTable.getInstance().getInfo(1204, 2);
fbuff23.getEffects(activeChar, activeChar);
L2Skill fbuff24 = SkillTable.getInstance().getInfo(349, 1);
fbuff24.getEffects(activeChar, activeChar);
L2Skill fbuff25 = SkillTable.getInstance().getInfo(364, 1);
fbuff25.getEffects(activeChar, activeChar);
} else
if(command.equalsIgnoreCase("mbuff"))
{
activeChar.sendMessage("Koszunjuk hogy nalunk buffoltal. (Wizard)");
L2Skill mbuff01 = SkillTable.getInstance().getInfo(276, 1);
mbuff01.getEffects(activeChar, activeChar);
L2Skill mbuff02 = SkillTable.getInstance().getInfo(273, 1);
mbuff02.getEffects(activeChar, activeChar);
L2Skill mbuff03 = SkillTable.getInstance().getInfo(264, 1);
mbuff03.getEffects(activeChar, activeChar);
L2Skill mbuff04 = SkillTable.getInstance().getInfo(304, 1);
mbuff04.getEffects(activeChar, activeChar);
L2Skill mbuff05 = SkillTable.getInstance().getInfo(267, 1);
mbuff05.getEffects(activeChar, activeChar);
L2Skill mbuff06 = SkillTable.getInstance().getInfo(1085, 3);
mbuff06.getEffects(activeChar, activeChar);
L2Skill mbuff07 = SkillTable.getInstance().getInfo(1062, 2);
mbuff07.getEffects(activeChar, activeChar);
L2Skill mbuff08 = SkillTable.getInstance().getInfo(1078, 6);
mbuff08.getEffects(activeChar, activeChar);
L2Skill mbuff09 = SkillTable.getInstance().getInfo(1059, 3);
mbuff09.getEffects(activeChar, activeChar);
L2Skill mbuff10 = SkillTable.getInstance().getInfo(1303, 2);
mbuff10.getEffects(activeChar, activeChar);
L2Skill mbuff11 = SkillTable.getInstance().getInfo(1204, 2);
mbuff11.getEffects(activeChar, activeChar);
L2Skill mbuff12 = SkillTable.getInstance().getInfo(1036, 2);
mbuff12.getEffects(activeChar, activeChar);
L2Skill mbuff13 = SkillTable.getInstance().getInfo(1040, 3);
mbuff13.getEffects(activeChar, activeChar);
L2Skill mbuff14 = SkillTable.getInstance().getInfo(1389, 3);
mbuff14.getEffects(activeChar, activeChar);
L2Skill mbuff15 = SkillTable.getInstance().getInfo(1045, 6);
mbuff15.getEffects(activeChar, activeChar);
L2Skill mbuff16 = SkillTable.getInstance().getInfo(1048, 6);
mbuff16.getEffects(activeChar, activeChar);
L2Skill mbuff17 = SkillTable.getInstance().getInfo(1397, 3);
mbuff17.getEffects(activeChar, activeChar);
L2Skill mbuff18 = SkillTable.getInstance().getInfo(349, 1);
mbuff18.getEffects(activeChar, activeChar);
L2Skill mbuff19 = SkillTable.getInstance().getInfo(363, 1);
mbuff19.getEffects(activeChar, activeChar);
}
return true;
}
public String[] getVoicedCommandList()
{
return _voicedCommands;
}
private static final String _voicedCommands[] = {
"fbuff", "mbuff"
};
}
Что делать если такой папки у мя нету а именно
net.sf.l2j.gameserver.handler.voicedcommandhandlers
а есть только net.sf.l2j.gameserver.handler
но есть просто файл VoicedCommandHandler.java


