누구 할때 킬수 죽은수 승률 표기하는 시스템
MySqlCharacterStorage.java
일단 여기다 킬&데스를 저장시킬 필터를 잡아주고.
pc.setSealingPW(rs.getString("sealingPW")); //검색
/* Kill & Death 시스템? -by 천국- */
pc.setKills(rs.getInt("PC_Kill")); //추가
pc.setDeaths(rs.getInt("PC_Death"));
/* Kill & Death 시스템? -by 천국- */
public void storeCharacter(L1PcInstance pc) { // 검색
Connection con = null;
PreparedStatement pstm = null;
try {
int i = 0;
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con
.prepareStatement("UPDATE characters SET level=?,HighLevel=?,Exp=?,MaxHp=?,CurHp=?,MaxMp=?,CurMp=?,Ac=?,Str=?,Con=?,Dex=?,Cha=?,Intel=?,Wis=?,Status=?,
Class=?,Sex=?,Type=?,Heading=?,LocX=?,LocY=?,MapID=?,Food=?,Lawful=?,Title=?,ClanID=?,Clanname=?,ClanRank=?,
BonusStatus=?,ElixirStatus=?,ElfAttr=?,PKcount=?,ExpRes=?,PartnerID=?,AccessLevel=?,onlineStatus=?,HomeTownID=?,
Contribution=?,HellTime=?,Banned=?,Karma=?,LastPk=?,DeleteTime=?,sealingPW=?,lastactive=?,ain_zone=?,ain_point=?,
PC_Kill=?,PC_Death=? WHERE objid=?"); //빨간부분만 추가 /* Kill & Death 시스템? -by 천국- */
pstm.setString(++i, pc.getSealingPW()); //검색
/* Kill & Death 시스템? -by 천국- */
pstm.setInt(++i, pc.getKills());
pstm.setInt(++i, pc.getDeaths());
/* Kill & Death 시스템? -by 천국- */
pstm.setInt(++i, pc.getId());
이제 필터를 잡아줬으니 나비켓에다가도 케릭터 테이블에 필터 설계를 해주시면 됩니다.
인트값에 길이는 10 디폴트 0 넣어주면 됩니다. 혹시 모르시는 분을위해 필터명은
PC_Kill , PC_Death 입니다.
L1Character.java
이제 kill&Death 의 필터를 만들었으니 케릭터에 저장할수 있게 메소드를 만들어
줍니다.
메소드이니 적당한 위치에 잘 넣어주시면 됩니다.
/* Kill & Death 시스템? -by 천국- */
private int _Kills;
public int getKills() {
return _Kills;
}
public void setKills(int Kills) {
_Kills = Kills;
}
private int _Deaths;
public int getDeaths() {
return _Deaths;
}
public void setDeaths(int Deaths) {
_Deaths = Deaths;
}
public void setDeaths(int Deaths) {
_Deaths = Deaths;
}
/* Kill & Death 시스템? -by 천국- */
L1Pcinstance.java
이제 필터도 만들었고 메소드도 만들었으니 피씨가 죽었을때 죽였을때 필터에
1씩 증가할수있게 명령어를 넣어주기만 하면끝.
위치는 옛날에 pc끼리 싸워서 이기는 맨트 그부분입니다.
if (newHp <= 0) { //검색
if (isGm() && getInventory().checkEquipped(300000)) {
setCurrentHp(getMaxHp());
} else {
death(attacker);
/* Kill & Death 시스템? -by 천국- */(이부분 교체 해주거나 아니면 필요한 부분만 빼다 넣으시면 됩니다.
if (getZoneType() == 0) { //만약 노멀존이 라면 (컴벳존에서 승작업 할것같에서.. 방지차원으로..)
if (attacker instanceof L1PcInstance) { //pvp시에만..
if (getLevel() >= 65) { //65랩 이상이라면..(저랩으로 승작업 할것같아서.. 방지차원으로..)
attacker.setKills(attacker.getKills()+1); //이긴넘 킬수 +1
setDeaths(getDeaths()+1); //진넘 데스수 +1
attacker.getInventory().storeItem(43012, 1); //이건 저희섭 pk승리의 조각 지급..다른분들 상금넣으셔도됨..
L1World.getInstance().broadcastPacketToAll(
new S_SystemMessage(attacker.getName() + "\\fW닝이 살인을 저질렀습니다. " + getName() + "\\fH님의 명복을 빕니다."));
} else { //65이하의 케릭을 죽였을시에는 멘트만 나가도록..
L1World.getInstance().broadcastPacketToAll(
new S_SystemMessage(attacker.getName() + "\\fW닝이 살인을 저질렀습니다. " + getName() + "\\fH님의 명복을 빕니다."));
}
}
}
}
}
/* Kill & Death 시스템? -by 천국- */
S_WhoCharinfo.java
이제 킬 & 데스 를 /누구 쳤을때 나오게 해야됩니다.
보너스로 승률까지.....
/* Kill & Death 시스템? -by 천국- */
int win = pc.getKills(); //승률 넣기위한 변수
int total = pc.getKills() + pc.getDeaths();
int winner = (win*100)/(total); //승률 계산한 변수
/* Kill & Death 시스템? -by 천국- */
writeS(title + pc.getName() + " " + lawfulness + " " + clan + "\n\r"+"랩:"+pc.getLevel()+" /Kill:"+pc.getKills()+" /Death:"+pc.getDeaths()+" /승률:" + winner + "%입니다.");//Kill & Death 시스템 천국
(여기서 + "\n\r"+" 이부분은 한칸밑으로 내려서 표시되게 하기위해 넣었습니다. 출력되는것이 길다보니
깔끔하게 정리 됩니다. 밑에 스샷처럼 ^^)
위 소스를 모두 적용시키시면 밑의스샷처럼 /누구 케릭명 쳤을시 랩, 킬, 데스, 승률 모두 나오게 됩니다.
출처: 구글링 타 카페

인게임 님의 최근 댓글
클라도 아르카나져 그럼? 2024 04.19 구매하려고 하는데 뭐가 좋나요 2024 04.16 ㄳ 2024 04.15 친구추가 하려하니 사용자명을 올바르게 입력하래요 2024 04.13 포트가 문제였어요 감사합니다 2024 04.10