gameserver/network/clientpackets/EnterWorld.java
471~485 사이
입니다.
TvTEvent.onLogin(activeChar);
if
(Config.WELCOME_MESSAGE_ENABLED)
activeChar.sendPacket(new
ExShowScreenMessage(Config.WELCOME_MESSAGE_TEXT,
Config.WELCOME_MESSAGE_TIME));
L2ClassMasterInstance.showQuestionMark(activeChar);
activeChar.startPCCafePointTask();
int
birthday = activeChar.checkBirthDay();
if (birthday ==
0)
{
activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOUR_BIRTHDAY_GIFT_HAS_ARRIVED));
activeChar.sendPacket(new
ExBirthdayPopup());
}
여기까지 한줄만 추가하시면 enterworld는 끝!
--------------------------------------------------------------------------------------------------------------------
다음~ gameserver/model/actor/instance/L2PcInstance.java
191~
import
com.l2jserver.gameserver.network.serverpackets.ExOlympiadMode;
import
com.l2jserver.gameserver.network.serverpackets.ExPCCafePointInfo; // add -
PCCafePoint
import
com.l2jserver.gameserver.network.serverpackets.ExPrivateStoreSetWholeMsg;
289~
// Character Character SQL String
Definitions:
private static final String INSERT_CHARACTER = "INSERT INTO
characters
(account_name,charId,char_name,level,maxHp,curHp,maxCp,curCp,maxMp,curMp,face,hairStyle,
hairColor,sex,exp,sp,karma,fame,pvpkills,pkkills,clanid,race,classid,deletetime,cancraft,title,title_color,
accesslevel,online,isin7sdungeon,clan_privs,wantspeace,base_class,newbie,nobless,power_grade,createTime,pc_point) 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=?,fame=?,pvpkills=?,pkkills=?,clanid=?,race=?,
classid=?,deletetime=?,title=?,title_color=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,
base_class=?,onlinetime=?,punish_level=?,punish_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,
lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,
char_name=?,death_penalty_level=?,bookmarkslot=?,vitality_points=?,language=?,pc_point=? WHERE charId=?";
private static final String RESTORE_CHARACTER =
"SELECT account_name, charId, char_name, level, maxHp, curHp, maxCp, curCp,
maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp,
expBeforeDeath, sp, karma, fame, pvpkills, pkkills, clanid, race, classid,
deletetime, cancraft, title, title_color, accesslevel, online, char_slot,
lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon,
punish_level, punish_timer, newbie, nobless, power_grade, subpledge,
lvl_joined_academy, apprentice, sponsor,
varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level,bookmarkslot,vitality_points,createTime,
language,pc_point FROM
characters WHERE charId=?";
▲여기는 자신의 소스를 보고 세줄 중에 맨 끝에
pc_point <<<관련 부분만 추가 하시고
values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";요거를
values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";요렇게 ?<<<의 갯수를 하나 늘려주셔야 합니다.
5982~
stopVitalityTask();
stopPCCafePointTask(); // add
- PCCafePoint
stopRecoBonusTask();
stopRecoGiveTask();
7053~
여기서 부터 주의 할점은 36, 37, 38 등등... 기존에 숫자가 있는거에 pc포인트를 추가하는거니까 숫자를 비교해보시고 추가하시기 바랍니다.
statement.setInt(35, isNoble() ? 1 :0);
statement.setLong(36,
0);
statement.setLong(37,getCreateTime());
statement.setInt(38, getPCCafePoint()); // add -
PCCafePoint
7247~
// Set Teleport Bookmark
Slot
player.setBookMarkSlot(rset.getInt("BookmarkSlot"));
// Set
PcPoint
player.setPCCafePoint(rset.getInt("pc_point")); // add -
PCCafePoint
//character creation
Time
player.setCreateTime(rset.getLong("createTime"));
7698~
statement.setInt(51, getVitalityPoints());
statement.setString(52,
getLang());
statement.setInt(53, getPCCafePoint()); // add -
PCCafePoint
statement.setInt(54, getObjectId());
13421~
public void gatesAnswer(int answer, int type)
{
if
(_gatesRequest.getDoor() == null)
return;
if (answer == 1
&& getTarget() == _gatesRequest.getDoor() && type ==
1)
_gatesRequest.getDoor().openMe();
else if (answer == 1 &&
getTarget() == _gatesRequest.getDoor() && type ==
0)
_gatesRequest.getDoor().closeMe();
_gatesRequest.setTarget(null);
}
private int _PCCafePoint = 0; <-------------- 이 부분은 케릭 생성시 초기 지급되는
피방포인트임...
protected Future<?> _PCCafePointTask = null;
public int getPCCafePoint()
{
return _PCCafePoint;
}
public void setPCCafePoint(int point)
{
_PCCafePoint = point;
}
public void startPCCafePointTask()
{
if
(_PCCafePointTask == null)
_PCCafePointTask =
ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new
PCCafePointTask(this), 300000, 300000); <---- 여기는 피방포인트
습득 시간 수정입니다.
sendPacket(new ExPCCafePointInfo(getPCCafePoint(), 1,
1, 10000, 0));
}
private void stopPCCafePointTask()
{
if
(_PCCafePointTask != null)
{
_PCCafePointTask.cancel(false);
_PCCafePointTask = null;
}
}
class PCCafePointTask implements Runnable
{
private final L2PcInstance _player;
protected
PCCafePointTask(L2PcInstance player)
{
_player = player;
}
public void run()
{
if (Rnd.get(100) > 90)
{
setPCCafePoint(getPCCafePoint() +
200);
_player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ACQUIRED_S1_PCPOINT_DOUBLE).addItemNumber(200));
_player.sendPacket(new
ExPCCafePointInfo(getPCCafePoint(), 200, 1, 10000, 0));
}
else
{
setPCCafePoint(getPCCafePoint() +
100);
_player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ACQUIRED_S1_PCPOINT).addItemNumber(100));
_player.sendPacket(new
ExPCCafePointInfo(getPCCafePoint(), 100, 1, 10000, 0));
}
}
}
--------------------------------------------------------------------------------------------------------------
gameserver/datatables/MultiSell.java
40~
import
com.l2jserver.gameserver.network.serverpackets.ExBrExtraUserInfo;
import
com.l2jserver.gameserver.network.serverpackets.ExPCCafePointInfo;
import
com.l2jserver.gameserver.network.serverpackets.MultiSellList;
50~
public static final int PC_POINTS =
-100;
public static final int CLAN_REPUTATION = -200;
public
static final int FAME = -300;
139~
case FAME:
if (player.getFame() <
amount)
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.NOT_ENOUGH_FAME_POINTS));
break;
}
return
true;
case PC_POINTS:
if
(player.getPCCafePoint() <
amount)
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.SHORT_OF_ACCUMULATED_POINTS));
break;
}
return
true;
}
return false;
167
case FAME:
player.setFame(player.getFame() -
(int)amount);
player.sendPacket(new
UserInfo(player));
player.sendPacket(new
ExBrExtraUserInfo(player));
return true;
case
PC_POINTS:
player.setPCCafePoint(player.getPCCafePoint() -
(int)amount);
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.USING_S1_PCPOINT).addItemNumber(amount));
player.sendPacket(new
ExPCCafePointInfo(player.getPCCafePoint(), (int)amount*-1, 1, 10000,
0));
return true;
}
return false;
}
363~
case CLAN_REPUTATION:
case FAME:
case
PC_POINTS:
return true;
----------------------------------------------------------------------------------------------------------
gameserver\data\scr!pts\handlers\itemhandlers\
폴더 안에 PCCafePoint.java <<<라는 파일을 생성합니다. 저장은 반드시 인코딩 utf-8로 저장해 주시기
바랍니다
data\scr!pts\handlers\MasterHandler.java
179~
import handlers.itemhandlers.SpiritShot;
import
handlers.itemhandlers.SummonItems;
import
handlers.itemhandlers.TeleportBookmark;
import
handlers.itemhandlers.PCCafePoint;
431~
private static void loadItemHandlers()
{
ItemHandler.getInstance().registerItemHandler(new
PCCafePoint());
ItemHandler.getInstance().registerItemHandler(new
ScrollOfResurrection());
ItemHandler.getInstance().registerItemHandler(new
SoulShots());
--------------------------------------------------------------------------------------------------------------
이제 어려운건 다 끝났네용^^ 이제 디비쪽 수정만 남았습니다.
나비캣에서 본인 서버의 디비를 열으신 후에 질의들<<<이라고 써있는 걸 누릅니다. 그리고 새로운 질의<<<를 누릅니다.
창이 뜨면
디비에 미리 생성되어 있는 케릭터 정보가 없을 경우에는 다음 구문을
ALTER TABLE
characters ADD `pc_point` int(11) NOT NULL;
디비에 미리 생성되어 있는 케릭터 정보가 있을 경우에는 다음 구문을
ALTER TABLE
characters ADD `pc_point` int(11) DEFAULT NULL;
UPDATE characters SET
pc_point = '0';
써넣은 후에 동작하기<<<를 클릭 합니다.
저는 케릭 생성시 pc포인트가 0점이 지급되기 때문에 UPDATE characters SET
pc_point = '0';
여기를 0으로 한거구요... 여러분은 여러분 입맛대로 숫자만 바꾸시면 됩니다.
-----------------------------------------------------------------------------------------------------------------
이제 완전히 끝났네요...
html과 멀티셀은 이제 알아서 짜시면 될꺼구요...
단 멀티셀의 pc방 포인트 아이템코드는 -100으로 넣어주시면 됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<!-- 비타민 아이템 교환
-->
<!-- This list is best used in exc_multisel -->
<list
maintainEnchantment="false">
<item id="1">
<production
id="13239" count="1"/>
<ingredient id="-100" count="1000"/>
</item>
<item id="2">
<production id="13240"
count="1"/>
<ingredient id="-100" count="1000"/>
</item>
요런식으로
'Interesting > 취미생활' 카테고리의 다른 글
이태리식 홍합찜 (0) | 2011.06.24 |
---|---|
마르게리따피자 (0) | 2011.06.24 |
대한민국이 선택한 와인 Best 100 (2010) (0) | 2011.05.18 |
villa M (0) | 2011.05.18 |
서태지 이지아 이혼 소송 확인 (0) | 2011.04.21 |