통합 쓰레드(Thread) 소스!! 알고리즘?
스레드통합은 그리어렵지않답니다.
여러분들이 팩을 뒤져보시다보면 pc인스턴스.java npc인스턴스.java 와 같이
인스턴스 폴더안에있는 인스턴스파일들이 보이실겁니다.
이 인스턴스파일들은 각각의 pc.npc.monster의 속성? 이라고보시면됩니다.
pc 5명이접속해있다면 pc인스턴스.java의 내용을 고대로 복사해서 5명이쓰고있다고생각하면됩니다.
그러면 pc인스턴스에서 private int AABBCC = 1; 이렇게 선언하시면
5명은 AABBCC라는 정수형변수와 그변수에 1이라는 결과를 가지고있는거나다름없답니다.
그러면 이걸이용해서 멀티방식이라고해야돼나?
타이머같은걸 쟤시면됩니다.
AABBCC를 다른걸로 선언해서
private int _MPTime = 60;
public int getMPTime(){
return _MPTime;
}
public void setMPTime(int Time){
_MPTime = Time;
}
이렇게선언해서 MP는 60초마다 찬다고 선언을 해두고
이걸 스레드를 이용해서
public class MpRegenTimer implement Runnable {
public void run(){
try{
while(true){ // 계속 true이기때문에 무한으로 돌리기위해
thread.sleep(1000); // 1초마다
for(L1PcInstance pc : L1World.getInstance().AllPlayers()){
if(앱솔이아닐떄같은 조건들넣고 엠피가안차는현상일때는 안에내용실행안되게 조건짜세요){
if(pc.getMPTime > 0){
pc.setMPTime(pc.getMPTime()-1):
}else{
pc.setMPTime(60);
pc.currentMP(pc.getMP()+15); //메소드를 정확히모르지만 하여간 엠피 15채워준다고생각해주셈
}
}
}
}
}catch(Excetion e){
System.out.println("엠틱스레드 에러발생 End");
}
}
이렇게 짜서 자바파일하나로 만든후
서버가 켜질때 이스레드를 돌려줘야되니까
Gameserver.java에서
제너럴 스레드로 넣어서 돌려주면된답니다. 그럼 무한으로 안죽고 계속돌겟죠?
뭐 이런겁니다 그러면
저60이 1씩깍이면서 0이되면 엠피가 차는거죠
여기선 단순하게 15만 차게했지만 저기에 따로 계산하는 메소드를 짜서 엠틱계산시킨후 하면된답니다. ㅇㅅㅇ
스레드통합은 이처럼 간단하게가능합니다만 계산을 어떻게짜야되고 서로연결해야될메소드들도많기때문에 어려워들하시는것같습니다.
구조만이해한다면 상당히 쉽답니다 ㅇㅅㅇ

김닉넴 님의 최근 댓글
클라는 있나요? 2023 04.29 클라 있나요? 2023 03.23 감사합니다 2016 06.06 ㄳ합니다 2016 06.05 ㄳ합니다 2016 06.05