웹게임 연동 예제

웹 게임 연동에 대한 여러 예제입니다.
Perl: 베네치아, 배틀로얄, EBS, 건담 택틱스
PHP: HOF

예제

가가라이브 보안 채팅방(무료) 이용한 프레임 방식 - 펄 웹 게임 연동 소스 예제입니다.
이 예제는 베네치아 소스를 예제로 삼았고 다른 소스 코드에 적용하려면 ########## 아래 펄 소스에 맞게 수정 시작 ################### 부분 아래의 변수를 게임 아이디와 게임 닉네임으로 알맞게 수정하면 됩니다.
(베네치아는 아이디가 $mid, 겜 이름이 $mname 입니다.)

<script src="http://www.gagalive.com/Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
<script type="text/javascript">
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0','width','90%','height','150','src','http://www.gagalive.kr/livechat1.swf?chatroom=원하는방이름','quality','high','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','http://www.gagalive.kr/livechat1.swf?chatroom=원하는방이름' ); //end AC code
</script><noscript><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="90%" height="150" >
<param name="movie" value="http://www.gagalive.kr/livechat1.swf?chatroom=원하는방이름">
<param name="quality" value="high">
<embed src="http://www.gagalive.kr/livechat1.swf?chatroom=원하는방이름" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="90%" height="150"></embed>
</object></noscript>

(참고) chatroom=원하는방이름chatroom=원하는방이름&position=2 으로 변경하면 세로형 채팅방으로 출력됩니다.

베네치아 top.cgi 의 거의 맨 마지막 줄에 있는 &footer 앞에 다음 코드를 추가하시길 바랍니다.

use Digest::MD5 'md5_hex';
#만약 Digest::MD5 가 펄 모듈로 설치 안되어 있다면, 위에 Digest::MD5 앞에 # 로 코맨트 추가하고 아래 use Digest::Perl::MD5 앞에 # 코맨트를 삭제하시길 바랍니다. 그리고 http://search.cpan.org/src/DELTA/Digest-Perl-MD5-1.8/lib/Digest/Perl/ 에 있는 MD5.pm 을 다운 받아서 대화방 사용하는 펄 소스가 있는 디렉토리 밑에 Digest\Perl 폴더를 만들어서 넣으시길 바랍니다.
#use Digest::Perl::MD5 'md5_hex';

use Encode;

sub userKey  {
 my ($user, $roomKey) = @_;
  return md5_hex(md5_hex($user . $roomKey) . $roomKey);
}

my $chatroom = '여기에 보안 채팅방 이름 입력';
my $roomkey = '여기에 채팅방 보안 키 입력';
#채팅방 option 주고 싶으면 아래 코맨트 제거 (예로 글씨 크게, 대화방 세로형)
#$chatroom = $chatroom . "&fontlarge=true&position=2";
my $gagaadmin =  "여기에 채팅방 관리자 아이디 입력. 여러명인 경우 , 로 구분.";
$gagaadmin =~ s/\s*,\s*/,/;
my @gagaadmins = split(/,/, $gagaadmin);
########## 아래 펄 소스에 맞게 수정 시작 ###################
my $userz = $mid;
#$usernickz= 유저 별명/닉네임 변수; 없으면 그냥 my $usernickz = $userz; 해보세요.
my $usernickz = $mname;
$usernickz=Encode::encode("utf-8", Encode::decode("euc-kr",$usernickz));
########## 아래 펄 소스에 맞게 수정 끝 ###################
$userkey = userKey($usernickz, $roomkey);
foreach(@gagaadmins)  {
  if($userz eq $_)  {
    $userkey = userKey(userKey($usernickz, $roomkey),$roomkey);
  }
}
$usernickz =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;

print '<embed  height="0" width="0" src="http://www.gagalive.kr/livechat1_login.swf?chatroom='.$chatroom.'&user='.$usernickz.'&encrypt='.$userkey.'"></embed>';

배틀로얄 연동

ebs_sub3.cgi 수정, timerID = setTimeout(\"HERepair()\",5000); } </script> 부분 아래에 전 삽입

########## 아래 펄 소스에 맞게 수정 시작 ###################
my $userz = $id2;
#$usernickz= 유저 별명/닉네임 변수; 없으면 그냥 my $usernickz = $userz; 해보세요.
my $usernickz = $l_name;
$usernickz=Encode::encode("utf-8", Encode::decode("euc-kr",$usernickz));
########## 아래 펄 소스에 맞게 수정 끝 ###################

EBS 연동

ebs_sub3.cgi 수정, timerID = setTimeout(\"HERepair()\",5000); } </script> 부분 아래에 전 삽입

########## 아래 펄 소스에 맞게 수정 시작 ###################
my $userz = $FORM;
#$usernickz= 유저 별명/닉네임 변수; 없으면 그냥 my $usernickz = $userz; 해보세요.
my $usernickz = $PL_VALUES[3];
$usernickz=Encode::encode("utf-8", Encode::decode("euc-kr",$usernickz));
########## 아래 펄 소스에 맞게 수정 끝 ###################

건담 택틱스

sysmenu.cgi 수정, 맨 뒤 </body> 앞에 삽입

########## 아래 펄 소스에 맞게 수정 시작 ###################
my $userz = $in;
my $chatnick = $kname;
$chatnick=Encode::encode("utf-8", Encode::decode("euc-kr",$chatnick));
########## 아래 펄 소스에 맞게 수정 끝 ###################