마인크래프트 연동

마인크래프트 연동

QA

마인크래프트 연동

답변 1

본문

마인크래프트 서버와 연동을 해서 페이지 이동시 명령어가 입력되는것 까지 확인했습니다.

근데 문제는 홈페이지 포인트를 마인크래프트 서버 포인트로 변환하는데, 오류가 걸려서요

변수를 어떻게 써야할지 모르겠어요..

 

point_inco_update (출금 완료시 페이지)


<?php
include_once('./_common.php');
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
require_once("WebsenderAPI.php"); // Load Library
if ($is_guest)
    alert("로그인 후 이용해 주세요.", "/bbs/login.php");
if (!chk_captcha()) {
    alert('자동등록방지 숫자가 틀렸습니다.');
}
$mb = get_member($me_recv_mb_id);
$max_point = 999999999;
$wsr = new WebsenderAPI("서버아이피","비밀번호","포트"); // HOST , PASSWORD , PORT
if ($point > $max_point)
    alert('최대 출금 한도는 '.number_format($max_point).'P 입니다.');
if ($member['mb_point'] < $point)
    alert('포인트가 부족합니다.');
insert_point($member['mb_id'], "-".$point, "서버내 포인트로 ".number_format($point)."P 를 출금했습니다.", '@passive', $member['mb_id'], $member['mb_id'].'-'.uniqid(''));
$wsr->sendCommand("eco give" $member['mb_id'] $point);
$wsr->sendCommand("say" $member['mb_id'] "으로" $point "포인트");
    
alert('정상적으로 출금이 완료되었습니다.', "https://sybank.pw");
?>

 

여기서 API는


<?php
class WebsenderAPI{
    
    public $timeout = 30;
    var $host;
    var $password;
    var $port;
    var $socket;
    
    public function __construct($host, $password, $port){
        $this->host = gethostbyname($host);
        $this->password = $password;
        $this->port = $port;
    }
    public function __destruct(){
        if($this->socket)
            $this->disconnect();
    }
    public function connect(){
        @$this->socket = fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout);
        if(!$this->socket) return false;
        @$this->writeRawByte(1);
        @$this->writeString(hash("SHA512", $this->readRawInt().$this->password));
        return $this->readRawInt() == 1 ? true: false;
    }
    
    /*
    *   -> event is cancelled or command not entered this method msut be return false.
    */
    public function sendCommand($command){
        $this->writeRawByte(2);
        $this->writeString(base64_encode($command));
        return $this->readRawInt() == 1 ? true: false;
    }
    
    /*
    *   -> event is cancelled this method must be return false.
    */
    public function sendMessage($message){
        $this->writeRawByte(4);
        $this->writeString(base64_encode($message));
        return $this->readRawInt() == 1 ? true: false;
    }
    
    public function disconnect(){
        if(!$this->socket) return false;
        return $this->writeRawByte(3) ? true: false;
    }
    
    private function writeRawInt($i){
        @fwrite($this->socket, pack("N", $i), 4);
    }
    private function writeRawByte($b){
        @fwrite($this->socket, strrev(pack("C", $b)));
    }
    private function writeString($string){
        $array = str_split($string);
        $this->writeRawInt(count($array));
        foreach($array as &$cur){
            $v = ord($cur);
            $this->writeRawByte((0xff & ($v >> 8)));
            $this->writeRawByte((0xff & $v));
        }
    }
    private function readRawInt(){
        $a = $this->readRawByte();
        $b = $this->readRawByte();
        $c = $this->readRawByte();
        $d = $this->readRawByte();
        $i = ((($a & 0xff) << 24) | (($b & 0xff) << 16) | (($c & 0xff) << 8) | ($d & 0xff));
        if($i > 2147483648)
             $i -= 4294967296;
        return $i;
    }
        
    private function readRawByte(){
        $up = unpack("Ci", fread($this->socket, 1));
        $b = $up["i"];
        if($b > 127)
            $b -= 256;
        return $b;
    }
    
}
?>

입니다. 이걸 어떻게 써야지 함께 작동할까요..?

 

포인트 출금 페이지는

https://sybank.pw/bbs/point_inco.php

입니다.

 

로그인 하라고 뜨면

ttest

test1234

하시면 돼요!

$wsr->sendCommand("eco give" $member['mb_id'] $point);
$wsr->sendCommand("say" $member['mb_id'] "으로" $point "포인트");

이부분을 수정하면 될듯한데.. 이부분을 빼고 하면 작동이 돼요.. (포인트 빠져나가는것 까진)

이 질문에 댓글 쓰기 :

답변 1

헉 가입했네요 테스트 아이디 있었군요

 

bbs/memo.php 파일 쪽지보낼시 포인트차감 확인해서 그대로 쿼리 날려도 될듯한데요 

포인트 차감까지는 확인했는데..
$wsr->sendCommand("eco give" $member['mb_id'] $point);
$wsr->sendCommand("say" $member['mb_id'] "으로" $point "포인트");
이 부분이 안돼요.. 마인크래프트 라는 서버와 연동해서 포인트 차감되면서 함께 명령어도 입력되게끔 하는건데.. 이거를 다른식으로 작성해야 할것 같아서요..

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
  • 질문이 없습니다.
전체 0
© SIRSOFT
현재 페이지 제일 처음으로