Skip to content
봇관련다크 모드

d2jsp - 치킨 등으로 최소게임시간이 무시되는 상황의 대처

조회 수
2,252
추천 수
1
등록일

d2jsp 수동의 경우입니다.
캐릭별 설정에서 최소게임시간을 잡아주더라도, 치킨이나 에러로 인해 최소시간을 채우지 못하고 게임 나가기가 발생할 수 있습니다.
이런 상황으로 게임생성 사이의 시간이 짧아지면 방따, 렐따에 걸릴 가능성이 높아 집니다. 이를 방지하기 위한 패치 입니다.
최소게임시간을 채우지 못한 경우 로비에서 남은 시간 만큼 대기한 후 다음 게임을 생성합니다.

starter.d2j 에서,

var CreateGameTimeout = 30000; 
var GameCreateDelay = 15000;
var LoginWaitTimeout = 10000;
 
var MinGameLength = 190000; // <-- 추가. 최소게임시간(ms) ex. 적어도 190초 간격으로 게임생성

......


function main() {
....<중략>...
 if(!game_failed) { // 이 부분을 다음과 같이 수정
 while(me.ingame) { // we're in game now, wait till we leave the game.
 delay(500);
 }

 now = getTickCount();
 var LastGameLength = now - LastGameAttempt;

 dprint("Game End Detected! Elapsed time: " + (LastGameLength/1000) + " seconds");
 
 if ( LastGameLength < MinGameLength ) {
 var TotalGameCreateDelay = MinGameLength - LastGameLength + GameCreateDelay;
 } else {
 var TotalGameCreateDelay = GameCreateDelay;
 }
 
 dprint("Waiting " + ( TotalGameCreateDelay/1000 ) + " seconds before starting next game.");
 
 delay(TotalGameCreateDelay);
 }
 } else {

....<중략>...





댓글 8
  • 댓글 #153097

    이런 경우가 생길 수 있군요. 아직 이런 문제가 발생하지 않아 생각하지 못했던 부분이네요. <중략>과 <중략> 부분의 함수를 수정하면 된다는 내용인것 같아요. 그런데 무한루프문 안의 변수 선언은 바람직하지 않은것 같네요. var LastGameLength 와 var TotalGameCreateDelay 는 위쪽의 변수선언부에 따로 선언하는게 좋을것 같다고 생각해요.
  • 댓글 #153100

    이런거 어디서 배우나요?.. ㅎ 아주 흥미로버...-_- 어떻게 이렇게들 잘아시는지
  • 댓글 #153103

    프로그래밍쪽에 관련된 일이나 공부 또는 관심이 있는 분들이 아닐런지요. ㅎㅎ
  • 댓글 #153106

    var CreateGameTimeout = 30000; var GameCreateDelay = 15000; var LoginWaitTimeout = 10000; var MinGameLength = 190000; // <-- 추가. 최소게임시간(ms) var LastGameLength = 0; var TotalGameCreateDelay = 0; ...... function main() { ....<중략>... if(!game_failed) { // 이 부분을 다음과 같이 수정 while(me.ingame) { // we're in game now, wait till we leave the game. delay(500); } now = getTickCount(); LastGameLength = now - LastGameAttempt; dprint("Game End Detected! Elapsed time: " + (LastGameLength/1000) + " seconds"); if ( LastGameLength < MinGameLength ) { TotalGameCreateDelay = MinGameLength - LastGameLength + GameCreateDelay; } else { TotalGameCreateDelay = GameCreateDelay; } dprint("Waiting " + ( TotalGameCreateDelay/1000 ) + " Seconds."); delay(TotalGameCreateDelay); } } else {
  • 댓글 #153109

    게임 참가 실패 메시지가 나왔을 때도 기다리나 확인해 봤는데.. 게임 참가 실패시 기다리지 않고 새로 만드는 군요.
권한이 없습니다.
다크 모드