Automatické VIP - MobilníPlatby.cz

Technická podpora k herním serverům Minecraft a Tekkit
Message
Autor
Mysti
Příspěvky: 96
Registrován: 29 led 2014, 22:38
Reputation: 0

Automatické VIP - MobilníPlatby.cz

#1 Příspěvekod Mysti » 03 říj 2014, 21:12

IP: 93.91.250.114:27209

Ahoj mám problém s tím že když na mobilních platbch přes emulátor vyšlu sms zapíše se to na web ale na server to nevyšle příkaz ale v konzoli napíše že se to připójilo přes rcon.

Viz scripty:

Script na odeslání a zapsání:
Spoiler: zobrazit

Kód: Vybrat vše

Dekujeme za SMS Vase VIP bylo aktivovano.
<?php
             #################################
             #  Tento script vytvořil Mysti (m0bY)!  #
             #           Nastavení           #
             #################################
 
$keyword2 = "CRAZYSECTOR";
$keyword = "crazysector";
$server  = "93.91.250.103";
$port    = "262**";
$heslo   = "*******";
 
#################################
#          Nezasahovat!         #
#################################
$price_explode = $_GET['shortcode'];
$price_explode = explode("9033350", $price_explode);
$price = $price_explode['1'];
$player_explode = $_GET['sms'];
if(strpos($_GET['sms'], "pm $keyword") !== false){
$player_explode = explode("pm $keyword ", $player_explode);
} elseif(strpos($_GET['sms'], "PM $keyword2") !== false){
$player_explode = explode("PM $keyword2 ", $player_explode);
} elseif(strpos($_GET['sms'], "Pm $keyword") !== false){
$player_explode = explode("Pm $keyword ", $player_explode);
}
$player = $player_explode['1'];
$commands = array();

#################################
#         Cenové hladiny        #
#################################
switch($price) {
 
  case 50: 
    $commands[] = "broadcast Zkouska VIP ";
  break;
 
 
}
 
include_once("rcon.php");
$r = new rcon($server,$port,$heslo);
if($r->Auth())
{
   foreach($commands as $command)
    $r->rconCommand($command);
}

//---------------------------------------//

$cislo    = $_GET['shortcode'];
$cela_sms = $_GET['sms'];
$zeme     = $_GET['country'];
$operator = $_GET['operator'];
$id       = $_GET['id'];
$stav     = $_GET['status'];

$serverXw = "mysql.fakaheda.eu"; // jméno serveru
$loginXw = "30**_web"; // přihlašovací jméno
$hesloXw = "************"; // heslo
$databazeXw = "30**_web"; // název databáze
$mysqlXw = new mysqli("$serverXw", "$loginXw", "$hesloXw", "$databazeXw"); // Připojení k databázi
 if ($mysqlXw->connect_errno) {echo "Vyskytla se chyba pri zapisu o Databaze";}
  else{
   $query = "INSERT INTO `mp_vypis` (`cislo` ,`tvar_sms` ,`zeme` ,`operator` ,`id_mp` ,`stav`) VALUES ('$cislo',  '$cela_sms', '$zeme', '$operator', '$id', '$stav');";
   $res = mysqli_query($mysqlXw, $query);
   $mysqlXw->close();}


                   #################################
# Zápis sms do databáze a následný výpis na webu vytvořil Mysti (m0bY)!#
                   #################################
?>


A rcon.php
Spoiler: zobrazit

Kód: Vybrat vše

<?php
/*
RCON remote console class, modified for minecraft compability by Tehbeard.

!!!YOU MUST CONFIGURE RCON ON YOUR MINECRAFT SERVER FOR THIS TO WORK
AT TIME OF WRITING ONLY 1.9pr4+ HAVE BUILTIN RCON SUPPORT!!!

Example Code:
============
include_once("rcon.class.php"); //Include this file
$r = new rcon("127.0.0.1",25575,"foobar"); //create rcon object for server on the rcon port with a specific password
if($r->Auth()){ //Connect and attempt to authenticate
{
  $r->rconCommand("say Saving in 10 seconds!"); //send a command
  sleep(10);
  $r->rconCommand("save-all"); //send a command
  $r->rconCommand("say Save complete!");//send a command
  echo $r->rconCommand("list");//send a command, echo returned value
}
============



Based upon the following work:
[<<<
   Basic CS:S Rcon class by Freman.  (V1.00)
   ----------------------------------------------
   Ok, it's a completely working class now with with multi-packet responses

   Contact: printf("%s%s%s%s%s%s%s%s%s%d%s%s%s","rc","on",chr(46),"cl","ass",chr(64),"pri","ya",chr(46),2,"y",chr(46),"net")

   Behaviour I've noticed:
      rcon is not returning the packet id.
>>>]
*/

define("SERVERDATA_EXECCOMMAND",2);
define("SERVERDATA_AUTH",3);

class RCon {
   var $Password;
   var $Host;
   var $Port = 26066;
   var $_Sock = null;
   var $_Id = 0;

   function RCon ($Host,$Port,$Password) {
      $this->Password = $Password;
      $this->Host = $Host;
      $this->Port = $Port;
      $this->_Sock = @fsockopen($this->Host,$this->Port, $errno, $errstr, 30) or
             die("Unable to open socket: $errstr ($errno)\n");
      $this->_Set_Timeout($this->_Sock,2,500);
       }

   function Auth () {
      $PackID = $this->_Write(SERVERDATA_AUTH,$this->Password);

      // Real response (id: -1 = failure)
      $ret = $this->_PacketRead();
      //var_dump($ret);
      if ($ret[0]['ID'] == -1) {
         return false;
      }
      return true;
   }

   function _Set_Timeout(&$res,$s,$m=0) {
      if (version_compare(phpversion(),'4.3.0','<')) {
         return socket_set_timeout($res,$s,$m);
      }
      return stream_set_timeout($res,$s,$m);
   }

   function _Write($cmd, $s1='', $s2='') {
      // Get and increment the packet id
      $id = ++$this->_Id;

      // Put our packet together
      $data = pack("VV",$id,$cmd).$s1.chr(0).$s2.chr(0);

      // Prefix the packet size
      $data = pack("V",strlen($data)).$data;

      // Send packet
      fwrite($this->_Sock,$data,strlen($data));

      // In case we want it later we'll return the packet id
      return $id;
   }

   function _PacketRead() {
      //Declare the return array
      $retarray = array();
      //Fetch the packet size
      while ($size = @fread($this->_Sock,4)) {
         $size = unpack('V1Size',$size);
         //Work around valve breaking the protocol
         if ($size["Size"] > 4096) {
            //pad with 8 nulls
            $packet = "\x00\x00\x00\x00\x00\x00\x00\x00".fread($this->_Sock,4096);
         } else {
            //Read the packet back
            $packet = fread($this->_Sock,$size["Size"]);
         }
         array_push($retarray,unpack("V1ID/V1Response/a*S1/a*S2",$packet));
      }
      return $retarray;
   }

   function Read() {
      $Packets = $this->_PacketRead();

      foreach($Packets as $pack) {
         if (isset($ret[$pack['ID']])) {
            $ret[$pack['ID']]['S1'] .= $pack['S1'];
            $ret[$pack['ID']]['S2'] .= $pack['S1'];
         } else {
            $ret[$pack['ID']] = array(
               'Response' => $pack['Response'],
               'S1' => $pack['S1'],
               'S2' =>   $pack['S2'],
            );
         }
      }
      return $ret;
   }

   function sendCommand($Command) {
      //$Command = '"'.trim(str_replace(' ','" "', $Command)).'"';
      //$Command="stop";
      $this->_Write(SERVERDATA_EXECCOMMAND,$Command,'');
   }

   function rconCommand($Command) {
      $this->sendcommand($Command);

      $ret = $this->Read();

      //ATM: Source servers don't return the request id, but if they fix this the code below should read as
      // return $ret[$this->_Id]['S1'];
      return $ret[$this->_Id]['S1'];
   }
}
?>


Předem dík. Za radu dávám karmu!
Pomohl jsem? Jestli jo budu rád když mi dáš Karmu
IP Serveru: 93.91.250.111:26076
Skype: m0bY_czE
Ptejte se mně bud v PM nebo na Skype
Díky Mysti (m0bY)

Uživatelský avatar
Rupynator
Příspěvky: 185
Registrován: 29 srp 2014, 19:54
Reputation: 0

Re: Automatické VIP - MobilníPlatby.cz

#2 Příspěvekod Rupynator » 03 říj 2014, 21:32

Zkus toto

Kód: Vybrat vše

$serverXw = "mysql.fakaheda.eu"; // jméno serveru

změnit na adresu tvého webu, já třeba mám predator.fakaheda.eu
Nezapomeň odměnit karmou ty, kteří ti pomohli vyřešit problém.

Mysti
Příspěvky: 96
Registrován: 29 led 2014, 22:38
Reputation: 0

Re: Automatické VIP - MobilníPlatby.cz

#3 Příspěvekod Mysti » 03 říj 2014, 21:37

Nechápu to je zapisování do databáze a to je funkční ale rcon příkazy nejdou ={
Pomohl jsem? Jestli jo budu rád když mi dáš Karmu
IP Serveru: 93.91.250.111:26076
Skype: m0bY_czE
Ptejte se mně bud v PM nebo na Skype
Díky Mysti (m0bY)

OneTime97
Příspěvky: 1552
Věk: 23
Registrován: 03 kvě 2014, 12:20
Reputation: 1
Kontaktovat uživatele:

Re: Automatické VIP - MobilníPlatby.cz

#4 Příspěvekod OneTime97 » 03 říj 2014, 22:49

ach.. co na tom nechápeš?
Rupynator píše:Zkus toto

Kód: Vybrat vše

$serverXw = "mysql.fakaheda.eu"; // jméno serveru

změnit na adresu tvého webu, já třeba mám predator.fakaheda.eu


mysql.fakaheda.eu změn za URL tvého webu..
Každodenní stream od 19:00
https://www.twitch.tv/thief97
Sledujte mě na FB
https://www.twitch.tv/thief97

Mike8748
Příspěvky: 823
Registrován: 30 bře 2014, 10:05
Reputation: 28

Re: Automatické VIP - MobilníPlatby.cz

#5 Příspěvekod Mike8748 » 04 říj 2014, 08:08

zkus

Kód: Vybrat vše

$price = $price_explode['1'];
změnit na

Kód: Vybrat vše

$price = $price_explode[1];


a opravdu to zkoušíš s SMSkou s cenou 50? protože jinou variantu v kódu nemáš

také můžeš přídat před switch u cenových hladin

Kód: Vybrat vše

$commands[] = "broadcast Prisla VIP sms";

tím si zajistíš že minimálně jeden příkaz se vykoná po připojení k RCON

kód jako takový je správně, jen nedojde k rozhodnutí u cenové hladiny, proto ti konzole napíše že se RCON připojil ale nic neprovede, protože proměnná $commands je prázdná

Mysti
Příspěvky: 96
Registrován: 29 led 2014, 22:38
Reputation: 0

Re: Automatické VIP - MobilníPlatby.cz

#6 Příspěvekod Mysti » 04 říj 2014, 08:16

Price když jsem změnil tak se to chovalo jako vždy.

Nechápu ale to co si mě psal s tím vykonáním příkazu.
Tenhle script je celkově jenom na 50 Kč. A všechno ve scriptu i v emulátoru by mělo být správně.
Zkus mě naspat jak jsi to myslel s tím switch

Viz zde.

Kód: Vybrat vše

switch($price) {
 
  case 50: 
    $commands[] = "broadcast cus zmrde";
  break;
 
 
}

Ukaž jako změnu jsi tam provedl.
Pomohl jsem? Jestli jo budu rád když mi dáš Karmu
IP Serveru: 93.91.250.111:26076
Skype: m0bY_czE
Ptejte se mně bud v PM nebo na Skype
Díky Mysti (m0bY)

Mike8748
Příspěvky: 823
Registrován: 30 bře 2014, 10:05
Reputation: 28

Re: Automatické VIP - MobilníPlatby.cz

#7 Příspěvekod Mike8748 » 04 říj 2014, 08:31

Kód: Vybrat vše

$commands[] = "broadcast Oslavujme nekdo nam poslal SMS s cenou $price";  // <--- tohle
switch($price) {
 
  case 50:
    $commands[] = "broadcast cus zmrde";
  break;
 
 
}

tím že v $commands bude vždy nějaký příkaz si ověříš že RCON funguje opravdu správně, protože to vždy něco udělá (a vypíše ti to obsah $price a třeba přijdeš na to že v té proměnné je neco jiného než si myslíš že tam je)

OneTime97
Příspěvky: 1552
Věk: 23
Registrován: 03 kvě 2014, 12:20
Reputation: 1
Kontaktovat uživatele:

Re: Automatické VIP - MobilníPlatby.cz

#8 Příspěvekod OneTime97 » 04 říj 2014, 10:11

Mike8748 píše:zkus

Kód: Vybrat vše

$price = $price_explode['1'];
změnit na

Kód: Vybrat vše

$price = $price_explode[1];


[code=php file=Untitled.php] $price = $price_explode['1']; [/code] takto to má dobře. Nemůže tak být bez těch ''
Každodenní stream od 19:00
https://www.twitch.tv/thief97
Sledujte mě na FB
https://www.twitch.tv/thief97

Uživatelský avatar
Mysteria
Příspěvky: 9122
Registrován: 26 pro 2009, 15:40
Reputation: 7
Bydliště: Česká republika
Kontaktovat uživatele:

Re: Automatické VIP - MobilníPlatby.cz

#9 Příspěvekod Mysteria » 04 říj 2014, 10:45

Ne, právě že v případě číselnýho označení by to mělo být bez uvozovek. Samozřejmě PHP si to zvládne přeložit ze stringu 1 na integer 1.

OneTime97
Příspěvky: 1552
Věk: 23
Registrován: 03 kvě 2014, 12:20
Reputation: 1
Kontaktovat uživatele:

Re: Automatické VIP - MobilníPlatby.cz

#10 Příspěvekod OneTime97 » 04 říj 2014, 11:46

Já tam píši '' vždy, a vždy to jde. Taky mě to tak všichni učily.
Každodenní stream od 19:00
https://www.twitch.tv/thief97
Sledujte mě na FB
https://www.twitch.tv/thief97


Zpět na „Minecraft, Tekkit“

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 108 hostů