사이트 로그인
2016.07.28 22:43
일단 이자료를 먼저.. 공유하는이유는.. 오래전에 중국서버관리하게되었을때. 아이디어가 괜찬길래.만들었지만
이제와서 생각하니.. 부끄럽네요.. 일단 내용을 대충설명하면.. 특정아이템을 5개로 구별하였을때 1은 해골궁수 2는 오크
345~쭈욱 본인이 소유를 하고있어야합니다 그다음 게임을 시작하게되면 좀비가 쓰윽나오면서 처음에는 골렘,슬라임.젤리?
좀비로드 등등 무작위로 나오게됩니다 그럼 제가 가지고잇던 5개의 아이템들을 200개는 300개는 살수있는대 그것을 무한으로 이용하여 좀비들과싸움에 이기면됩니다. 물론 보상같은거는 빵빵히주시면되고 응용같은거 하셔도 도움될것같습니다.
현 중국서버 팩기반은 네트워크 기반을 주로하기때문에 java nio 를쓰고있지만..구린듯..?회선이구려서그런가..흠흠..
이제말년이라.. 좀있으면 민간인이된다능!!!! 잘쓰세용 좋은자료가 되었으면 좋겟네요.소스정리가 조금귀찬네요..
C_ItemUse.java
if (!pc.getMap().isUsableItem() && !(l1iteminstance.getItem().getItemId() >= 62601 &&
l1iteminstance.getItem().getItemId() <= 62700)) {
pc.sendPackets(new S_ServerMessage(563));
return;
}
if (target != null) {
pc.sendPackets(new S_SystemMessage("중복중복중복!"));
} else if (!(spellsc_x >= ra.getFzAreaX1() && spellsc_x <= ra.getFzAreaX2()) || !(spellsc_y >= ra.getFzAreaY1() && spellsc_y <= ra.getFzAreaY2())) {
pc.sendPackets(new S_SystemMessage("배치할수없습니다!"));
} else if ((spellsc_x >= ra.getFzAreaX1() && spellsc_x <= ra.getFzAreaX2()) && (spellsc_y >= ra.getFzAreaY1() && spellsc_y <= ra.getFzAreaY2())) {
L1DropSet dropItem = DropSetTable.getInstance().getDropSets(itemId);
if (dropItem != null) {
L1ItemInstance item1 = pc.getInventory().findItemId(itemId);
if (pc.getInventory().checkItem(dropItem.getConsumeItem(), dropItem.getConsumeCount())) {
pc.getInventory().consumeItem(dropItem.getConsumeItem(), dropItem.getConsumeCount());
L1SpawnUtil.spawnXY(spellsc_x, spellsc_y, pc.getMapId(), 2, dropItem.getNpcId(), 0);
pc.getInventory().removeItem(l1iteminstance, 1);
} else {
pc.sendPackets(new S_ServerMessage(337, (new StringBuilder()).append(dropItem.getConsumeName()).toString()));
}
}
}
몬스터ai부분
L1NpcInstance.java
public void setDirectionMove(int dir) {
if (getNpcTemplate().get_npcId() >= 95201 //좀비는 무조건6시방향
&& getNpcTemplate().get_npcId() <= 95300) {
dir = 6;
}
승리여부결정
private boolean _isFzWinner = false;
public boolean isFzWinner() {
return _isFzWinner;
}
public void setFzWinner(boolean flag) {
_isFzWinner = flag;
}
public void setDirectionMove(int dir) {
setX(nnx);
setX(nny);
if ((getNpcTemplate().get_npcId() >= 95201 && getNpcTemplate().get_npcId() <= 95300)
&& getX() < 32749) {
setFzWinner(true);//殭屍 獲勝
try {
Thread.sleep(1500);
} catch(Exception e) {}
deleteMe();
} else {
setX(nnx);
setX(nny);
}
L1MonsterInstance.java
if (getNpcId() >= 95101 && getNpcId() <= 95200)
for (L1Object object : L1World.getInstance().getObject()) {
if (object instanceof L1NpcInstance) {
L1NpcInstance tgnpc = (L1NpcInstance) object;
if (tgnpc.getY() == getY() && tgnpc.getX() >= getX() && tgnpc.getNpcTemplate().get_family() == thisNpcFamily
&& tgnpc.getCurrentHp() > 0 && !tgnpc.isDead()) {
targetNpc = tgnpc;
break;
}
}
}
} else if (getNpcId() >= 95201 && getNpcId() <= 95300) {
for (L1Object object : L1World.getInstance().getObject()) {
if (object instanceof L1NpcInstance) {
L1NpcInstance tgnpc = (L1NpcInstance) object;
if (tgnpc.getY() == getY() && tgnpc.getX() <= getX() && getX() - tgnpc.getX() < 2 && tgnpc.getNpcTemplate().get_family() == thisNpcFamily
&& tgnpc.getCurrentHp() > 0 && !tgnpc.isDead()) {
targetNpc = tgnpc;
break;
}
}
}
}
ps. 카베 자료 다시올리겠습니다. 일단 글 삭제했습니다 죄송합니다.ㅜㅜ 술먹고올리다보니..ㅠㅠ
[출처] [말년기념] 막장 게임.? 좀비와의전쟁. (비공개 카페) |