[The Pirates] 개인무기 



레벨 15를 달성하면 개인 무기를 지급해 드립니다.


무기의 이름과 설명을 원하는대로 알려주면


그대로 만들어 드립니다.


오픈톡방


https://open.kakao.com/o/gXRrXiy


에 들어와서 말씀하시거나


dlscltn@nate.com


으로 메일을 보내주시면 됩니다.




상점에서 판매하는 무기 외에는


개인무기가 사용할수 있는 유일한 무기 이며


캐릭터의 성장과 함께 무기를 강화하며 게임을 진행 할 수 있습니다.


상점에서 판매하는 무기는


강화,옵션부여,소켓 확장을 할 수 없습니다.




1. 강화


개인무기는 몬스터에게서 낮은 확률로 떨어지는


'달의 눈물' 이라는 아이템으로 강화를 할 수 있습니다.



마을(항구)의 무기강화 상인에게 가서


무기를 강화 하면 됩니다.




2만골드와 달의눈물 1개를 사용하여 무기 강화를 할 수 있으며


강화 1번당


1~5의 강화를 할수 있습니다


상승된 무기 공격력은 영구적으로 적용되며 


실패확률은 없습니다.




2. 옵션부여




무기강화 상인에게 욕망의돌을 사용해 무기에 옵션 부여를 할 수 있습니다.



옵션부여는 욕망의돌이 소모되며


욕망의돌은 낮은 확률로 몬스터에게 얻을 수 있습니다.



욕망의돌 1개로 사용하는 옵션 부여는



랜덤하게 각 스탯을 10씩 올려주는 옵션이 부여가 됩니다.



욕망의돌 5개를 사용해서 하는 옵션부여는


랜덤하게 각 스탯을 30씩 올려주며


낮은 확률로 50 상승시켜주는 옵션이 나타나기도 합니다.



옵션은 1가지만 적용되며 새로 옵션을 적용하는 경우는 기존에 있던 옵션은


삭제됩니다.




3. 소켓석 장착



유저의 레벨이 50 100 101이 될때마다


무기에 소켓석을 장착할 수 있도록 개조가 가능합니다.



소켓석확장은 무기강화 상인에게서 가능하며



소켓석은


스크롤로 이동할수 있는

'루비파이선' 3층의 밀수꾼에게서 장착 할 수 있습니다.






무기상인에게 소켓석 확장후


일반상점에서 


루비파이선 승선표 스크롤을 구매하여 사용하면


루비파이선으로 이동할 수 있으며


3층의 밀수꾼에게 가면


소켓석을 세공 할 수 있습니다.



소켓석 확장엔


골드,욕망의돌,보석류 아이템이 단계별로 필요하며



루비,에메랄드,사파이어,루벨라이트 와 같은


보석류 아이템은


보스몬스터를 사냥시에만 얻을 수 있습니다.



소켓석 확장후 밀수꾼에게 가면


소켓세공을 할 수 있는데


각 소켓별 재료 아이템이 필요 합니다.



예를들어 바실리스크 마력석을 세공하기 위해선


사막지대의 


바실리스크, 거대바실리스크, 바실리크스 킹을 잡아


각종 재료를 모아야 합니다.



동일 레벨의 소켓은 중복장착되지 않으며



새로운 소켓석 장착시 기존에 있던 소켓석은 사라지게 됩니다.



상위레벨의 소켓석은 동시에 장착이 가능합니다.





소켓석마다 고유의 특수능력이 있으며


공통적으로 무기공격력을 상승시켜 줍니다.



이렇게 개인무기를 강화시키며


더 강한 데미지와 특수능력을 사용 할 수 있게 됩니다.

Socket.IO 자기 브라우저 에서만 emit 되는 현상 해결 방법


남는시간에 react를 공부해 보고자 튜토리얼들을 보고 난 후


실시간 채팅기능을 만들어 보고자


socket.io를 사용 하게 되었다.


여러가지 React Socket.io 라든지  Socket.io React 라던지 여러가지 많았는데 이것 저것 삽질 하다가


그냥 원래 node.js에서 잠깐 만들었던 방법으로 socket.io만 사용해서 구현 하기로 했다.


그런데 분명히 코딩도 제대로 했고


브라우저에서 emit 날려주면 날린 브라우저에서는 값을 다시 제대로 받아 오는데


다른 브라우저에서 날려준 값을 받아오지 못하는게 아닌가


반나절을 삽질을 하다가


socket.io 레퍼런스 사이트를 들어가 하나씩 들춰 보기 시작했다.


.

.

.

.


세상에....


한달사이에 또 무언가 바뀌어 있었다 ㅋㅋㅋㅋㅋㅋ



view단에서가 아니라 server단에서 바뀐게 있었다


기존에 서버에 작성했던 코드는


1
2
3
4
5
6
7
8
9
// 소켓 통신 관련
var io = require('socket.io').listen(3303);
console.log("socket server run!!");
 
io.sockets.on("connection"function(socket){
  socket.on('private'function(msg){ // 응답
    socket.emit('private',msg); // 요청
  });
});
cs



이런식이었다. 그런데 이게 업데이트 되면서


위와 같이 작성한 소켓통신은 통신을 요청한 브라우저 에서만 다시 서버에서 요청을 날려주는 것 이었다.


응답은 받지만 다시 클라이언트로 요청을 날려주는건 요청한 브라우저에게만 날려 주는 것.



접속한 모두가 서버로 부터 요청을 받기 위한 방법


1
2
3
4
5
6
7
8
9
10
// 소켓 통신 관련
var io = require('socket.io').listen(3303);
console.log("socket server run!!");
 
// 커넥션된 모드에게 날려주는 것
io.on('connection'function(socket){
  socket.on('chat'function(msg){
    io.emit('chat', msg);
  });
});
cs


서버에서 이렇게 작성을 해 주어야 한다.



뭐가 다른지 햇갈린다면 두개를 동시에 비교 해 보도록 하자



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 소켓 통신 관련
var io = require('socket.io').listen(3303);
console.log("socket server run!!");
 
// 소켓 통신 날린 사람만 받을 수 있는 것.
io.sockets.on("connection"function(socket){
  socket.on('private'function(msg){ // 응답
    socket.emit('private',msg); // 요청
  });
});
 
 
// 커넥션된 모드에게 날려주는 것
io.on('connection'function(socket){
  socket.on('chat'function(msg){
    io.emit('chat', msg);
  });
});
cs



위는 날린 사람에게만 날려주는 것


아래는 모두에게 날려주는 것


커넥션을 할때 io.sockets.on 과 io.on의 차이 였다.


물론 이렇게 한다면 개인적인 소켓통신을 하도록 하는 것이 더 편해지는 것 같다.






+ Recent posts