📄 c_itemuse.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 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 l1j.server.server.clientpackets;
import java.lang.reflect.Constructor;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Random;
import java.util.TimeZone;
import java.util.logging.Level;
import java.util.logging.Logger;
import l1j.server.Config;
import l1j.server.server.ActionCodes;
import l1j.server.server.ClientThread;
import l1j.server.server.FishingTimeController;
import l1j.server.server.GMCommands;
import l1j.server.server.IdFactory;
import l1j.server.server.datatables.CharacterTable;
import l1j.server.server.datatables.FurnitureSpawnTable;
import l1j.server.server.datatables.ItemTable;
import l1j.server.server.datatables.LetterTable;
import l1j.server.server.datatables.LogEnchantTable;
import l1j.server.server.datatables.NpcTable;
import l1j.server.server.datatables.PetTable;
import l1j.server.server.datatables.PolyTable;
import l1j.server.server.datatables.ResolventTable;
import l1j.server.server.datatables.SkillsTable;
import l1j.server.server.model.Getback;
import l1j.server.server.model.L1CastleLocation;
import l1j.server.server.model.L1Character;
import l1j.server.server.model.L1Clan;
import l1j.server.server.model.L1Cooking;
import l1j.server.server.model.L1EffectSpawn;
import l1j.server.server.model.L1HouseLocation;
import l1j.server.server.model.L1Inventory;
import l1j.server.server.model.L1ItemDelay;
import l1j.server.server.model.L1Location;
import l1j.server.server.model.L1Object;
import l1j.server.server.model.L1PcInventory;
import l1j.server.server.model.L1PolyMorph;
import l1j.server.server.model.L1Quest;
import l1j.server.server.model.L1Teleport;
import l1j.server.server.model.L1TownLocation;
import l1j.server.server.model.L1World;
import l1j.server.server.model.Instance.L1DollInstance;
import l1j.server.server.model.Instance.L1EffectInstance;
import l1j.server.server.model.Instance.L1FurnitureInstance;
import l1j.server.server.model.Instance.L1GuardianInstance;
import l1j.server.server.model.Instance.L1ItemInstance;
import l1j.server.server.model.Instance.L1MonsterInstance;
import l1j.server.server.model.Instance.L1NpcInstance;
import l1j.server.server.model.Instance.L1PcInstance;
import l1j.server.server.model.Instance.L1PetInstance;
import l1j.server.server.model.Instance.L1TowerInstance;
import l1j.server.server.model.item.L1ItemId;
import l1j.server.server.model.item.L1TreasureBox;
import l1j.server.server.model.poison.L1DamagePoison;
import l1j.server.server.model.skill.L1SkillUse;
import l1j.server.server.serverpackets.S_AddSkill;
import l1j.server.server.serverpackets.S_AttackPacket;
import l1j.server.server.serverpackets.S_AttackStatus;
import l1j.server.server.serverpackets.S_CurseBlind;
import l1j.server.server.serverpackets.S_DoActionGFX;
import l1j.server.server.serverpackets.S_Fishing;
import l1j.server.server.serverpackets.S_IdentifyDesc;
import l1j.server.server.serverpackets.S_ItemName;
import l1j.server.server.serverpackets.S_ItemStatus;
import l1j.server.server.serverpackets.S_Letter;
import l1j.server.server.serverpackets.S_Liquor;
import l1j.server.server.serverpackets.S_Message_YN;
import l1j.server.server.serverpackets.S_NPCTalkReturn;
import l1j.server.server.serverpackets.S_OwnCharAttrDef;
import l1j.server.server.serverpackets.S_OwnCharStatus;
import l1j.server.server.serverpackets.S_OwnCharStatus2;
import l1j.server.server.serverpackets.S_PacketBox;
import l1j.server.server.serverpackets.S_Paralysis;
import l1j.server.server.serverpackets.S_SPMR;
import l1j.server.server.serverpackets.S_ScrollShopSellList;
import l1j.server.server.serverpackets.S_ServerMessage;
import l1j.server.server.serverpackets.S_ShopBuyList;
import l1j.server.server.serverpackets.S_ShopSellList;
import l1j.server.server.serverpackets.S_ShowPolyList;
import l1j.server.server.serverpackets.S_SkillBrave;
import l1j.server.server.serverpackets.S_SkillHaste;
import l1j.server.server.serverpackets.S_SkillIconBlessOfEva;
import l1j.server.server.serverpackets.S_SkillIconGFX;
import l1j.server.server.serverpackets.S_SkillIconWisdomPotion;
import l1j.server.server.serverpackets.S_SkillSound;
import l1j.server.server.serverpackets.S_Sound;
import l1j.server.server.serverpackets.S_SystemMessage;
import l1j.server.server.serverpackets.S_UseMap;
import l1j.server.server.storage.CharactersItemStorage;
import l1j.server.server.templates.L1Armor;
import l1j.server.server.templates.L1BookMark;
import l1j.server.server.templates.L1EtcItem;
import l1j.server.server.templates.L1Item;
import l1j.server.server.templates.L1Npc;
import l1j.server.server.templates.L1Pet;
import l1j.server.server.templates.L1Skills;
import l1j.server.server.types.Point;
import l1j.server.server.utils.L1SpawnUtil;
import static l1j.server.server.model.skill.L1SkillId.*;
//伊川
import java.sql.Connection;
import java.sql.PreparedStatement;
import l1j.server.L1DatabaseFactory;
// Referenced classes of package l1j.server.server.clientpackets:
// ClientBasePacket
//
public class C_ItemUSe extends ClientBasePacket {
private static final String C_ITEM_USE = "[C] C_ItemUSe";
private static l1j.eric.EricLogger _log = l1j.eric.EricLogger.getLogger2(C_ItemUSe.class.getName());
private static Random _random = new Random();
public C_ItemUSe(byte abyte0[], ClientThread client) throws Exception {
super(abyte0);
int itemObjid = readD();
L1PcInstance pc = client.getActiveChar();
if (pc.isGhost()) {
return;
}
L1ItemInstance l1iteminstance = pc.getInventory().getItem(itemObjid);
if (l1iteminstance.getItem().getUseType() == -1) { // none:使用できないアイテム
pc
.sendPackets(new S_ServerMessage(74, l1iteminstance
.getLogName())); // \f1%0は使用できません。
return;
}
int pcObjid = pc.getId();
if (pc.isTeleport()) { // テレポート処理中
return;
}
if (l1iteminstance == null && pc.isDead() == true) {
return;
}
if (!pc.getMap().isUsableItem()) {
pc.sendPackets(new S_ServerMessage(563)); // \f1ここでは使えません。
return;
}
int itemId;
try {
itemId = l1iteminstance.getItem().getItemId();
} catch (Exception e) {
return;
}
int l = 0;
String s = "";
int bmapid = 0;
int btele = 0;
int blanksc_skillid = 0;
int spellsc_objid = 0;
int spellsc_x = 0;
int spellsc_y = 0;
int resid = 0;
int letterCode = 0;
String letterReceiver = "";
byte[] letterText = null;
int cookStatus = 0;
int cookNo = 0;
int fishX = 0;
int fishY = 0;
int use_type = l1iteminstance.getItem().getUseType();
//新增商店捲軸 by eric1300460
try{
if(l1iteminstance.getItem().getType()==17 && use_type==0){//17:scrollshop
int npcId = Integer.parseInt(l1iteminstance.getItem().getName());
pc.sendPackets(new S_ScrollShopSellList(NpcTable.getInstance().getTemplate(npcId)));
return;
}
}catch(NumberFormatException e){
l1j.eric.gui.J_Main.getInstance().addConsolPost("商店捲軸DB有誤 物品ID:"+l1iteminstance.getItem().getItemId());
e.printStackTrace();
}
//~新增商店捲軸 by eric1300460
if (itemId == 40088 || itemId == 40096 || itemId == 140088) {
s = readS();
} else if (itemId == L1ItemId.SCROLL_OF_ENCHANT_ARMOR
|| itemId == L1ItemId.SCROLL_OF_ENCHANT_WEAPON
|| itemId == L1ItemId.SCROLL_OF_ENCHANT_QUEST_WEAPON
|| itemId == 40077
|| itemId == 40078
|| itemId == 40126
|| itemId == 40098
|| itemId == 40129
|| itemId == 40130
|| itemId == 140129
|| itemId == 140130
|| itemId == L1ItemId.B_SCROLL_OF_ENCHANT_ARMOR
|| itemId == L1ItemId.B_SCROLL_OF_ENCHANT_WEAPON
|| itemId == L1ItemId.C_SCROLL_OF_ENCHANT_ARMOR
|| itemId == L1ItemId.C_SCROLL_OF_ENCHANT_WEAPON
|| itemId == 41029 // 召喚球の欠片
|| itemId == 40317
|| itemId == 41036
|| itemId == 41245
|| itemId == 40127
|| itemId == 40128
|| itemId == 41048
|| itemId == 41049
|| itemId == 41050 // 糊付けされた航海日誌ページ
|| itemId == 41051
|| itemId == 41052
|| itemId == 41053 // 糊付けされた航海日誌ページ
|| itemId == 41054
|| itemId == 41055
|| itemId == 41056 // 糊付けされた航海日誌ページ
|| itemId == 41057 // 糊付けされた航海日誌ページ
|| itemId == 40925
|| itemId == 40926
|| itemId == 40927 // 浄化ミステリアスポーション
|| itemId == 40928
|| itemId == 40929
|| itemId == 40931
|| itemId == 40932
|| itemId == 40933 // 加工されたサファイア
|| itemId == 40934
|| itemId == 40935
|| itemId == 40936
|| itemId == 40937 // 加工されたエメラルド
|| itemId == 40938
|| itemId == 40939
|| itemId == 40940
|| itemId == 40941 // 加工されたルビー
|| itemId == 40942
|| itemId == 40943
|| itemId == 40944
|| itemId == 40945 // 加工された地ダイア
|| itemId == 40946
|| itemId == 40947
|| itemId == 40948
|| itemId == 40949 // 加工された水ダイア
|| itemId == 40950 || itemId == 40951
|| itemId == 40952
|| itemId == 40953 // 加工された風ダイア
|| itemId == 40954 || itemId == 40955 || itemId == 40956
|| itemId == 40957 // 加工された火ダイア
|| itemId == 40958 || itemId == 40964 // ダークマジックパウダー
|| itemId == 49092
|| itemId == 300039 //裝備保護卷軸 by missu0524
|| itemId == 999991 //飾品強化卷軸
//屬性強化捲軸
|| use_type == 26) { // 歪みのコア
//~屬性強化捲軸
l = readD();
} else if (itemId == 140100 || itemId == 40100 || itemId == 40099
|| itemId == 40086 || itemId == 40863) {
bmapid = readH();
btele = readD();
pc.sendPackets(new S_Paralysis(S_Paralysis.TYPE_TELEPORT_UNLOCK,
false));
} else if (itemId == 40090 || itemId == 40091 || itemId == 40092
|| itemId == 40093 || itemId == 40094) { // ブランクスクロール(Lv1)~(Lv5)
blanksc_skillid = readC();
} else if (use_type == 30 || itemId == 40870 || itemId == 40879) { // spell_buff
spellsc_objid = readD();
} else if (use_type == 5 || use_type == 17) { // spell_long、spell_short
spellsc_objid = readD();
spellsc_x = readH();
spellsc_y = readH();
} else if (itemId == 40089 || itemId == 140089) { // 復活スクロール、祝福された復活スクロール
resid = readD();
} else if (itemId == 40310 || itemId == 40311 || itemId == 40730
|| itemId == 40731 || itemId == 40732) { // 便箋
letterCode = readH();
letterReceiver = readS();
letterText = readByte();
} else if (itemId >= 41255 && itemId <= 41259) { // 料理の本
cookStatus = readC();
cookNo = readC();
} else if (itemId == 41293 || itemId == 41294) { // 釣り竿
fishX = readH();
fishY = readH();
} else {
l = readC();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -