|
 Читать всем.
Правила общения в данном разделе.
Данный раздел является "свободным" для общения, но данные правила поведения предупреждают о некоторых пунктах, которые запрещено упоминать / создавать темы касательно запрещенных пунктов. 1.) Запрещено создавать темы любого рекламного характера
2.) Запрещено также создавать темы оскорбительного характера направленного, как в сторону администрации, так и в сторону рядовых пользователей. 3.) Администрация не приемлет призывов на взлом сайтов/аккаунтов/серверов пользователей или других членов интернет сообщества. 4.) Запрещены темы которые касаются создания сервера Lineage2, для этого существуют другие форумы или разделы.
Правила могут изменятся любым Главным Администратором без предварительного уведомления сообщества.
Блокировка происходит любым свободным членом Администрации сообщества La2base.ru по общим правилам форума и соответственным пунктам.
[core][question] Несколько вопросов, L2jOfficial |
|
|
|
|
27.8.2009, 11:08
|
|

Умелец
Группа: Advanced Members
Сообщений: 244
Регистрация: 7.3.2009
Поблагодарили: 84 *

|
Всем доброго времени суток! Есть несколько вопросов по редактированию ядра сервера. Сборка L2jOfficial ~1000 ривизия. Меня интересуют следующие вопросы: 1. Как сделать команды “.mbuff” “.fbuff” (mbuff – для мага, fbuff- для воина) чтобы когда игрок писал эти команды на него сразу же бесплатно накладывались определённые заклинания которые я напишу. 2. Можно ли это (см. ниже) переделать под сборку L2jOfficial? Тк у меня не получается в некоторых местах.
Цитата(Wh1tePower @ 23.1.2009, 15:49)  Геройское свечение за 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 @ 23.1.2009, 4:20)  Вещь для получения геройства после рестарта
По адресу 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 @ 12.3.2009, 12:29)  для начала 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 и ура! сэт светится
|
|
|
|
|
|
|
 |
Ответов
|
|
30.8.2009, 9:43
|
|

Умелец
Группа: Advanced Members
Сообщений: 244
Регистрация: 7.3.2009
Поблагодарили: 84 *

|
Я кидаю исходный код своего файла 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); } } И прошу тебя его изминить так чтобы я вставил его в этот файл запустил и всё заработало, надеюсь понятно разьяснил)
|
|
|
|
|
|
Сообщений в этой теме
Nice42ru [core][question] Несколько вопросов 27.8.2009, 11:08 AtomoS Что в спойлере можно сделать, было бы желание...
... 27.8.2009, 11:13 Nice42ru А куда это чудо вписывать то? 27.8.2009, 11:37 Nice42ru АП 27.8.2009, 17:20 Nice42ru АП 27.8.2009, 21:23 Nice42ru Ап, незнаю куда это вставить!!! Помоги... 29.8.2009, 12:57 AtomoS В исходники)) 29.8.2009, 13:13 Nice42ru ну это ясно что в исходниках а в какой именно файл... 29.8.2009, 16:12 xNEROSx Цитата(Nice42ru @ 29.8.2009, 14:17) ну эт... 29.8.2009, 16:18 Nice42ru Раскрывающийся текстКод/*
* This program is free ... 29.8.2009, 16:51 xNEROSx Цитата(Nice42ru @ 29.8.2009, 14:56) Раскр... 29.8.2009, 16:58 Nice42ru Нужно тем который мне дали кодом заменить исходный... 29.8.2009, 16:59 xNEROSx приготовь и съешь называется...
если не знаете jav... 30.8.2009, 10:20 Nice42ru Ну если элементарно, то помоги пожалусйто, я спаси... 30.8.2009, 12:28 AtomoS Nice42ru, лучше посиди и сам разберись... 30.8.2009, 12:52 Nice42ru я сдесь чтобы получить ващей помощи, думаю для это... 30.8.2009, 12:56 Nice42ru Подскажите куда это чудо вставить как подключить и... 30.8.2009, 18:06 Nice42ru Пробывал вставить в VoicedCommandHandler.java ошиб... 30.8.2009, 18:23 Nice42ru Подскажите пожалуйсто как подключить этот Buff.jav... 31.8.2009, 5:12 Nice42ru Пробывал воткнуть код бафера в код Банкинг вот что... 31.8.2009, 6:04
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|