인첸트 실패로 증발 할 경우 무게게이지 업데이트 하기
위치 : psjump.server.items.ItemUse.java
아이템을 인첸트하다가 증발하면 증발한 아이템의 무게가 감소해야하는데 아이템만 삭제되도록하고 캐릭터의 상태에 대한 업데이트가 빠져 있기 때문에 증발후에도 무게게이지가 감소하지 않아서 리스타트를 하거나 다른 아이템을 사용해야 현재의 무게를 확인 할 수 있던것을 증발 후 바로 캐릭터의 상태를 업데이트 시켜서 확인하고 리스타트를 하지 않아도 되도록 하는 작업입니다.
코드의 길이가 너무 길기 때문에 수정해야하는 부분만 올리겠습니다.
case 37 의 데이 부분에서 "인첸 실패시" 를 찾아서 아래쪽의 녹색 부분을 추가하시면 됩니다.
}else{ // 인첸 실패시
if(temp2.isEquipped()){ // 해당 아이템 착용 중이라면
if((temp2.getItem().getType1() == temp2.getItem().WEAPON_TOHANDSWORD) ||
(temp2.getItem().getType1() == temp2.getItem().WEAPON_BOW) ||
(temp2.getItem().getType1() == temp2.getItem().WEAPON_BLUNT) ||
(temp2.getItem().getType1() == temp2.getItem().WEAPON_SPEER) ||
(temp2.getItem().getType1() == temp2.getItem().WEAPON_EDORYU) ||
(temp2.getItem().getType1() == temp2.getItem().WEAPON_CLAW)){
cha.set_TwoSword(false);
cha.set_무기(false);
}
ItemHandler.getInstance().op(cha, temp2, false);
cha.set_currentWeapon(0);
cha.setDmg_small(0);
cha.setDmg_large(0);
cha.setEnchantlvl(0);
cha.sendPackets(cha.get_netConnection().bph().S_CharMode(cha, cha.get_currentWeapon()), false);
}
cha.sendPackets(cha.get_netConnection().bph().get_Message().S_ServerMessage(164, "+"+temp2.getEnchantLevel()+" "+temp2.getItem().get_name(), "붉게"), false);
cha.sendPackets(cha.get_netConnection().bph().get_Item().S_ItemDelete(temp2), false);
cha.get_cil().removeItems(temp2);
cha.set_weight(cha.get_weight() - (temp2.getItem().getWeight()));
cha.sendPackets(cha.get_netConnection().bph().S_Status(cha, 0), true);
}
}else{ // 저주 데이 라면
cha.sendPackets(cha.get_netConnection().bph().get_Message().S_ServerMessage(161, "+"+temp2.getEnchantLevel()+" "+temp2.getItem().get_name(), "붉게", "한순간"), false);
temp2.setEnchantLevel(temp2.getEnchantLevel() - BressLv);
cha.sendPackets(cha.get_netConnection().bph().get_Item().ItemStatus(temp2), false);
}
}
}
}
}
break;
case 39 의 젤 부분에서 "인첸 실패시" 를 찾아서 아래쪽의 녹색 부분을 추가하시면 됩니다.
}else{ // 인첸 실패시
if(temp2.isEquipped()){ // 해당 아이템 착용 중이라면
cha.set_ac(cha.get_ac() + (temp2.getItem().get_ac() + temp2.getEnchantLevel()));
cha.sendPackets(cha.get_netConnection().bph().S_Status(cha, 2), false);
ItemHandler.getInstance().op(cha, temp2, false);
switch(temp2.getItem().getType1()){
case 2:
cha.set_갑옷(false);
break;
case 10:
cha.set_망토(false);
if(cha.is_gmInvis()){ // 투망 상태중이라면
switch(cha.get_Setting()){ // 상태에따른 값 설정
case 6:
cha.set_Setting(4);
break;
case 22:
cha.set_Setting(20);
break;
}
cha.set_gmInvis(false);
cha.sendPackets(cha.get_netConnection().bph().S_Invisa(cha.get_objectId(), false), false);
for(int i=0 ; i L1Object visible = (L1Object) cha.getKnownPlayers().get(i);
if(visible instanceof L1PcInstance){
L1PcInstance user = (L1PcInstance) visible;
user.sendPackets(user.get_netConnection().bph().S_Invisa(cha.get_objectId(), false), true);
}
}
}
break;
case 18:
cha.set_티셔츠(false);
break;
case 20:
cha.set_장갑(false);
break;
case 21:
cha.set_부츠(false);
break;
case 22:
cha.set_투구(false);
break;
case 25:
cha.set_방패(false);
break;
}
}
cha.sendPackets(cha.get_netConnection().bph().get_Message().S_ServerMessage(164, "+"+temp2.getEnchantLevel()+" "+temp2.getItem().get_name(), "붉게"), false);
cha.sendPackets(cha.get_netConnection().bph().get_Item().S_ItemDelete(temp2), false);
cha.get_cil().removeItems(temp2);
cha.set_weight(cha.get_weight() - (temp2.getItem().getWeight()));
cha.sendPackets(cha.get_netConnection().bph().S_Status(cha, 0), true);
}
}else{ // 저주 젤 이라면
cha.sendPackets(cha.get_netConnection().bph().get_Message().S_ServerMessage(161, "+"+temp2.getEnchantLevel()+" "+temp2.getItem().get_name(), "붉게", "한순간"), false);
temp2.setEnchantLevel(temp2.getEnchantLevel() - BressLv);
cha.sendPackets(cha.get_netConnection().bph().get_Item().ItemStatus(temp2), false);
}
}
}
}
}
break; ().size()>
if(temp2.isEquipped()){ // 해당 아이템 착용 중이라면
cha.set_ac(cha.get_ac() + (temp2.getItem().get_ac() + temp2.getEnchantLevel()));
cha.sendPackets(cha.get_netConnection().bph().S_Status(cha, 2), false);
ItemHandler.getInstance().op(cha, temp2, false);
switch(temp2.getItem().getType1()){
case 2:
cha.set_갑옷(false);
break;
case 10:
cha.set_망토(false);
if(cha.is_gmInvis()){ // 투망 상태중이라면
switch(cha.get_Setting()){ // 상태에따른 값 설정
case 6:
cha.set_Setting(4);
break;
case 22:
cha.set_Setting(20);
break;
}
cha.set_gmInvis(false);
cha.sendPackets(cha.get_netConnection().bph().S_Invisa(cha.get_objectId(), false), false);
for(int i=0 ; i L1Object visible = (L1Object) cha.getKnownPlayers().get(i);
if(visible instanceof L1PcInstance){
L1PcInstance user = (L1PcInstance) visible;
user.sendPackets(user.get_netConnection().bph().S_Invisa(cha.get_objectId(), false), true);
}
}
}
break;
case 18:
cha.set_티셔츠(false);
break;
case 20:
cha.set_장갑(false);
break;
case 21:
cha.set_부츠(false);
break;
case 22:
cha.set_투구(false);
break;
case 25:
cha.set_방패(false);
break;
}
}
cha.sendPackets(cha.get_netConnection().bph().get_Message().S_ServerMessage(164, "+"+temp2.getEnchantLevel()+" "+temp2.getItem().get_name(), "붉게"), false);
cha.sendPackets(cha.get_netConnection().bph().get_Item().S_ItemDelete(temp2), false);
cha.get_cil().removeItems(temp2);
cha.set_weight(cha.get_weight() - (temp2.getItem().getWeight()));
cha.sendPackets(cha.get_netConnection().bph().S_Status(cha, 0), true);
}
}else{ // 저주 젤 이라면
cha.sendPackets(cha.get_netConnection().bph().get_Message().S_ServerMessage(161, "+"+temp2.getEnchantLevel()+" "+temp2.getItem().get_name(), "붉게", "한순간"), false);
temp2.setEnchantLevel(temp2.getEnchantLevel() - BressLv);
cha.sendPackets(cha.get_netConnection().bph().get_Item().ItemStatus(temp2), false);
}
}
}
}
}
break; ().size()>
이렇게 수정하시면 아이템이 removeItems 명령어로 사라지면서 해당 아이템의 무게값을 계산하고 캐릭터의 상태를 업데이트하면서 무게게이지가 값 만큼 실시간으로 변하게 됩니다.
[출처]강재학님
[출처] 인첸트 실패로 증발 할 경우 무게게이지 업데이트 하기 (비공개 카페)

준희미니 님의 최근 댓글
rt 2021 05.25 ㄳ 2021 05.11 ㄳ 2021 05.11 rt 2021 05.09 rt 2021 04.25