아래는 웹 게임 연동에 대한 여러 예제입니다.
Perl: 베네치아, 배틀로얄, EBS, 건담 택틱스
PHP: HOF
해당하는 웹게임 소스 코드는 모두 http://www.gagax.com 자료실에서 무료로 제공중입니다.
가가라이브 보안 채팅방(무료) 이용한 프레임 방식(http://www.gagax.com 방식) 펄 웹 게임 연동 소스 예제입니다.
이 예제는 베네치아 소스를 예제로 삼았고 다른 소스 코드에 적용하려면
########## 아래 펄 소스에 맞게 수정 시작 ###################
부분 아래의 변수를 게임 아이디와 게임 닉네임으로 알맞게 수정하면 됩니다.
(베네치아는 아이디가 $mid, 겜 이름이 $mname 입니다.)
채팅방이 들어갈 프레임에 (원하는 방이름이 여러개 있으니까 다 변경하시길 바랍니다)
<script src="http://www.gagalive.kr/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','title','가가라이브 채팅','src','http://www.gagalive.kr/livechat1?chatroom=원하는방이름','quality','high','pluginspage','http://www.macromedia.com/go/getflashplayer','movie','http://www.gagalive.kr/livechat1?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" title="가가라이브 채팅">
<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>';
를 추가하시길 바랍니다.
배틀로얄 연동:
########## 아래 펄 소스에 맞게 수정 시작 ###################
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{'pname'};
#$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{'id'};
my $chatnick = $kname;
$chatnick=Encode::encode("utf-8", Encode::decode("euc-kr",$chatnick));
########## 아래 펄 소스에 맞게 수정 끝 ###################
위에 CGI 예제에서 frame은 똑같이 생성한 뒤에
HOF(class\class.main.php 수정):
<?
global $user;
if($GLOBALS['userKeyDefined'] != 1) {
$GLOBALS['userKeyDefined'] = 1;
function userKey($user, $roomKey) {
return md5(md5($user . $roomKey) . $roomKey);
}
}
$chatroom = "여기에 보안 채팅방 이름 입력";
$roomkey = "여기에 채팅방 보안 키 입력";
$gagaadmin = "여기에 채팅방 관리자 아이디 입력. 여러명인 경우 , 로 구분.";
$gagaadmin = preg_replace('/\s*,\s*/', ',', $gagaadmin);
$gagaadmins = split(',', $gagaadmin);
$userz = $this->id;
$usernickz= $this->name;
$usernickz = iconv("EUC-KR", "UTF-8", $usernickz);
$usernickz= $userz;
$userkey = userKey($usernickz, $roomkey);
foreach($gagaadmins as $value) {
if($userz == $value) {
$userkey = userKey(userKey($usernickz, $roomkey), $roomkey);
}
}
$usernickz = urlencode($usernickz);
?>
<embed height="0" width="0" src="http://www.gagalive.kr/livechat1_login.swf?chatroom=<?echo $chatroom ?>&user=<?echo $usernickz?>&encrypt=<?echo $userkey?>"></embed>