Automatické VIP

Message
Autor
Uživatelský avatar
Sejsel
Příspěvky: 4131
Registrován: 19 čer 2011, 09:43
Reputation: 0
Bydliště: /home/sejsel/
Kontaktovat uživatele:

Automatické VIP

#1 Příspěvekod Sejsel » 12 led 2012, 21:01

AUTOMATICKÉ VIP

Autor scriptu: m_pro_m, WebMaster www.mineforlife.eu
Autor návodu: Sejsel


Tento návod je zastaralý, přesto stále funkční.
V Návodech najdete novější způsob, jak udělat to samé mnohem jednodušeji, již přímo v Control Panelu http://forum.fakaheda.eu/viewtopic.php?f=85&t=10093


Hned jako první bych chtěl napsat, že pokud něco nechápete, tak se ptejte.

Poté jako druhou věc, že tento script funguje a vždy bude fungovat jen pro Fakaheda VIP SMS.

Jako třetí věc, že aby toto fungovalo, tak musíte mít plugin na Permissions, nastavenou skupinu VIP a musí být možnost, jak hráčovi upravit skupinu příkazem. To umí např. GroupManager nebo PermissionsEX

Čtvrtou věc, že pokud se nevyznáte v PHP, tak se řiďte přesně návodem a nezkoušejte něco dělat jinak.

A.. pátou, která bude poslední.. Toto VIP je navždy, nebo dokud to ručně neodstraníte. Pokud budete potřebovat časově omezené, bohužel to budete muset sami upravit. Možná sem někdy dám i rozšířenější verzi, která toto bude umět..

.. A šestá, která je teď poslední. Dole najdete (neotestovanou) úpravu na časově omezené, ale prodloužení vám s tím fungovat nebude!

Jako první věc musíme na serveru zapnout rcon. To se dělá v server.properties, které se nachází vedle minecraft_server.jar a složky plugins v FTP.

1)
Přepište

Kód: Vybrat vše

enable-rcon=false

na

Kód: Vybrat vše

enable-rcon=true


2)
Na konec souboru připište

Kód: Vybrat vše

rcon.password=HESLO


HESLO samozřejmě nahraďte nějakým heslem, je to důležité, protože pokud to neuděláte, kdokoliv bude moci jakkoliv ovládat váš server. Doporučujeme použít naprostou směsici písmen, normálně toto heslo používat NEbudete!

Příklad:

Kód: Vybrat vše

rcon.password=adfg&&EE22fagfg8899

Samozřejmě použijte jiné heslo!

3)
Nyní budete muset nastavit speciální port pro RCON. Normálně jsou otevřené porty 26XXX, 29XXX a 30XXX.
Číslo XXX jsou poslední tři čísla vašeho normálního portu. Například, když máte 27690, tak XXX je 690.
Řekněme, že na portu 29690 máme dynmapu, nebo něco, tak to dáme na port 26690.

Na konec server.properties, pod heslo rconu (rcon.password) vložte:

Kód: Vybrat vše

rcon.port=26XXX

(Samozřejmě XXX nahraďte posledními třetími čísly vašeho portu)

Příklad:

Kód: Vybrat vše

rcon.port=26690


Tím máme hotové nastavení rconu. Nyní můžete restartovat server, již na něj nebudete šahat.

Nyní k PHP souborům:
1)
Nejprve si stáhněte skripty, které najdete na konci tohoto prvního příspěvku. První soubor pojmenujte vlastním názvem (prejmenovat.php) a druhý pojmenujte jako rcon.php

Pokud nemůžete rozbalit .rar, ve kterém se soubory nachází, tak zkuste plugin WinRAR nebo např. 7zip

2)
Nyní otevřete soubor prejmenovat.php a upravte následující část:

Kód: Vybrat vše

$server = "IP vaseho serveru bez portu";
$port = "port, nejedna se o port serveru! Jedna se o rcon port v server.properties";
$heslo = "heslo od rconu, podle server.properties";
$cena = "Cena v kreditech, tj. 99 kc SMS je 49 kreditu, zadejte pouze cislovku";

Pozor! Upravujte pouze text v uvozovkách a uvozovky tam nechte!

server je jednoduše vaše IP bez portu - Z 93.91.240.148:27690 je server 93.91.240.148

port je to, co jsme nastavovali jako rcon.port v server.properties, ne port vašeho serveru. Například v mé ukázce to je 26690

heslo jsme také nastavovali v server.properties, stejně jako port. V mém příkladu to je adfg&&EE22fagfg8899.

cena je cena v kreditech, ne v ceně sms.

    99 kč - 49 kreditu
    79 kč - 39 kreditu
    50 kč - 23 kreditu
    30 kč - 13 kreditu
    20 kč - 8 kreditu
    10 kč - 3,5 kreditu (to nevím, jak nastavit v tom.. musíte vyzkoušet sami, ale pochybuji, že to využijete)

Nyní, jak by to mohlo vypadat v mém případě, pokud má být cena VIP 99 kč.

Kód: Vybrat vše

$server = "93.91.240.148";
$port = "26690";
$heslo = "adfg&&EE22fagfg8899";
$cena = "49";


3)
Jak jsem již nahoře psal, tak plugin musí podporovat příkaz na přidání do skupiny pomocí příkazu.
Pokud máte PermissionsEX, tak můžete být v klidu. Již je to tam nastaveno.
Pokud máte GroupManager, tak musíte nahradit:

Kód: Vybrat vše

  $r->rconCommand("pex user ".$player." group set vip");

tímto:

Kód: Vybrat vše

  $r->rconCommand("manuadd ".$player." vip");


Pokud chcete použít jiný příkaz, tak můžete cokoliv upravit, zase musí být kolem toho celého uvozovky a ".player." je jméno hráče

Také můžete udělat časově omezené VIP, např. na měsíc upravíte část, která je výše na toto:

Kód: Vybrat vše

  $r->rconCommand("pex user ".$player." timed group set vip 2592000");

2592000 je měsíc, který má 30 dnů. (Je to v sekundách)
Také pozor, pokud použijete příkaz znova, tak se to nejspíše nepřičte, ale přepíše..
4)
Na WEB, OPAKUJI, NA WEB (např. na hostingu Endora) umístěte soubory, které jste nyní upravovali. Soubor prejmenovat.php přejmenujte na nějaké náhodné jméno, které se nedá uhádnout, pokud to neuděláte, kdokoliv bude moci získat VIP. Soubor rcon.php nahrajte se stejným jménem, vedle přejmenovaného druhého souboru.
Vypadat to může např. takto:
Obrázek
(Program Total Commander)

To složité máte za sebou. Teď už jen poslední část a ta se nastavuje v Control Panelu...

Nastavení VIP SMS v Control Panelu
Pod GameServer -> SMS Platby -> Nastavení
Musíte zaškrtnout Zavolat při příchodu SMS platby URL a do URL: Vyplnit adresu vašeho scriptu.
Např.:
Obrázek

Je velká šance, že červený text nepřečtete.. stojí tam, že v tom poli je napsáno:
http://mineforlife.eu/peszerekocku.php


------

Jakmile toto nastavení máme hotovo, tak by vše mělo fungovat. Hráč pošle SMS, Fakaheda váš script upozorní, ten zkontroluje, jestli je cena v pořádku, pokusí se připojit podle vašeho nastavení na server a provede příkazy, které hráči nastaví skupinu a poté napíšou do chatu "Hráč BLABLABLA si aktivoval VIP!"

Pokud něco nefunguje, tak mě upozorněte, fungovat by to mělo, ale.. člověk nikdy neví.
Pokud hodláte testovat pomocí "Poslat testovací SMS," tak upravte cenu na 1 kredit.
Pokud máte nápad, jak návod vylepšit, určitě mi napište :)
A pokud se rozhodnete vrtat v rcon.php, tak si nevšímejte portů atp., ani já nevím k čemu tam jsou...

Ke stažení:
Skript definující příkazy podle cenových hladin
Soubor pojmenujte dle zvážení. Např. tajnaautoplatba.php
Code: [Vybrat vše] [Expand/Collapse] [Download] (automatickeplatby.php)
  1. <!DOCTYPE html>
  2. <html lang='cs'>
  3. <head>
  4. <title>Aktivace VIP</title>
  5. </head>
  6. <body>
  7. <?php
  8. // Důležité je, abyste přejmenovali soubor, jinak bude možné, že si kdokoliv aktivuje VIP bez zaplacení
  9. // Také je důležité, abyste měli ve stejném umístění jako tento soubor, soubor rcon.php!!!
  10.  
  11. // V následující části nahraďte text v uvozovkách, UVOZOVKY TAM NECHTE, STŘEDNÍK NA KONCI TAKÉ!
  12. $server = "IP vašeho serveru bez portu";
  13. $port = "port, nejedná se o port serveru! Jedná se o rcon port v server.properties";
  14. $heslo = "heslo od rconu, podle server.properties";
  15.  
  16. /////////////////////////////////////////
  17. //PŘEBRÁNÍ DAT Z HOSTINGU, NEUPRAVOVAT!//
  18. /////////////////////////////////////////
  19. $sms = $_GET['sms'];
  20. $time = $_GET['time'];
  21. $credit = $_GET['credit'];
  22. $player = $_GET['customer_text'];
  23.  
  24. if(empty($sms) || empty($time) || empty($credit)) { die('Error'); }
  25.  
  26. ///////////////////////////////////////////////////////////////////////
  27. //NASTAVENI PŘÍKAZU PRO PŘÍSLUŠNÉ CENOVÉ HLADINY, UPRAVTE DLE POTŘEBY//
  28. ///////////////////////////////////////////////////////////////////////
  29.  
  30. $commands = array();
  31.  
  32. switch($credit) {
  33.  
  34.   // SMS PLATBA 499 CZK / 20 EUR
  35.   case 335:
  36.     $commands[] = "pex user ".$player." group set super-vip";
  37.     $commands[] = "say Hráč ".$player." si aktivoval SUPER VIP!";
  38.     // POD SEBE MŮŽETE VLOŽIT LIBOVOLNÝ POČET ŘÁDKŮ S PŘÍKAZY
  39.   break;
  40.  
  41.   // SMS PLATBA 249 CZK / 10 EUR
  42.   case 165:
  43.     $commands[] = ""; // DOPLŇTE PŘÍKAZY DLE POTŘEBY
  44.   break;
  45.  
  46.   // SMS PLATBA 199 CZK / 8 EUR
  47.   case 130:
  48.     $commands[] = ""; // DOPLŇTE PŘÍKAZY DLE POTŘEBY
  49.   break;
  50.  
  51.   // SMS PLATBA 149 CZK / 6 EUR
  52.   case 95:
  53.     $commands[] = ""; // DOPLŇTE PŘÍKAZY DLE POTŘEBY
  54.   break;
  55.  
  56.   // SMS vip 99 CZK / 4 EUR
  57.   case 49:
  58.     $commands[] = ""; // DOPLŇTE PŘÍKAZY DLE POTŘEBY
  59.   break;
  60.  
  61.   // SMS vip 79 CZK / 3.2 EUR
  62.   case 39:
  63.     $commands[] = ""; // DOPLŇTE PŘÍKAZY DLE POTŘEBY
  64.   break;
  65.  
  66.   // SMS vip 50 CZK / 2 EUR
  67.   case 23:
  68.     $commands[] = ""; // DOPLŇTE PŘÍKAZY DLE POTŘEBY
  69.   break;
  70.  
  71.   // SMS vip 30 CZK / 1.2 EUR
  72.   case 13:
  73.     $commands[] = ""; // DOPLŇTE PŘÍKAZY DLE POTŘEBY
  74.   break;
  75.  
  76.   // SMS vip 20 CZK / 0.8 EUR
  77.   case 8:
  78.     $commands[] = ""; // DOPLŇTE PŘÍKAZY DLE POTŘEBY
  79.   break;
  80.  
  81.   // SMS vip 10 CZK / 0.4 EUR
  82.   case 3.5:
  83.     $commands[] = ""; // DOPLŇTE PŘÍKAZY DLE POTŘEBY
  84.   break;
  85.  
  86. }
  87.  
  88. //////////////////////////////
  89. //RCON ČÁST, NEUPRAVOVAT!!!!//
  90. //////////////////////////////
  91.    
  92. include_once("rcon.php");
  93. $r = new rcon($server,$port,$heslo);
  94. if($r->Auth())
  95. {
  96.   // Spusti prikaz / sekvenci prikazu
  97.    foreach($commands as $command)
  98.     $r->rconCommand($command);            
  99. }
  100.  
  101. ?>
  102. </body>
  103. </html>


Skript komunikující se serverem (hlavní rcon část)
Soubor neupravujte! Uložte jej jako rcon.php
  1. <?php
  2. /*
  3. RCON remote console class, modified for minecraft compability by Tehbeard.
  4.  
  5. !!!YOU MUST CONFIGURE RCON ON YOUR MINECRAFT SERVER FOR THIS TO WORK
  6. AT TIME OF WRITING ONLY 1.9pr4+ HAVE BUILTIN RCON SUPPORT!!!
  7.  
  8. Example Code:
  9. ============
  10. include_once("rcon.class.php"); //Include this file
  11. $r = new rcon("127.0.0.1",25575,"foobar"); //create rcon object for server on the rcon port with a specific password
  12. if($r->Auth()){ //Connect and attempt to authenticate
  13. {
  14.   $r->rconCommand("say Saving in 10 seconds!"); //send a command
  15.   sleep(10);
  16.   $r->rconCommand("save-all"); //send a command
  17.   $r->rconCommand("say Save complete!");//send a command
  18.   echo $r->rconCommand("list");//send a command, echo returned value
  19. }
  20. ============
  21.  
  22.  
  23.  
  24. Based upon the following work:
  25. [<<<
  26.     Basic CS:S Rcon class by Freman.  (V1.00)
  27.     ----------------------------------------------
  28.     Ok, it's a completely working class now with with multi-packet responses
  29.  
  30.     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")
  31.  
  32.     Behaviour I've noticed:
  33.         rcon is not returning the packet id.
  34. >>>]
  35. */
  36.  
  37. define("SERVERDATA_EXECCOMMAND",2);
  38. define("SERVERDATA_AUTH",3);
  39.  
  40. class RCon {
  41.     var $Password;
  42.     var $Host;
  43.     var $Port = 27015;
  44.     var $_Sock = null;
  45.     var $_Id = 0;
  46.  
  47.     function RCon ($Host,$Port,$Password) {
  48.         $this->Password = $Password;
  49.         $this->Host = $Host;
  50.         $this->Port = $Port;
  51.         $this->_Sock = @fsockopen($this->Host,$this->Port, $errno, $errstr, 30) or
  52.                 die("Unable to open socket: $errstr ($errno)\n");
  53.         $this->_Set_Timeout($this->_Sock,2,500);
  54.         }
  55.  
  56.     function Auth () {
  57.         $PackID = $this->_Write(SERVERDATA_AUTH,$this->Password);
  58.  
  59.         // Real response (id: -1 = failure)
  60.         $ret = $this->_PacketRead();
  61.         //var_dump($ret);
  62.         if ($ret[0]['ID'] == -1) {
  63.             return false;
  64.         }
  65.         return true;
  66.     }
  67.  
  68.     function _Set_Timeout(&$res,$s,$m=0) {
  69.         if (version_compare(phpversion(),'4.3.0','<')) {
  70.             return socket_set_timeout($res,$s,$m);
  71.         }
  72.         return stream_set_timeout($res,$s,$m);
  73.     }
  74.  
  75.     function _Write($cmd, $s1='', $s2='') {
  76.         // Get and increment the packet id
  77.         $id = ++$this->_Id;
  78.  
  79.         // Put our packet together
  80.         $data = pack("VV",$id,$cmd).$s1.chr(0).$s2.chr(0);
  81.  
  82.         // Prefix the packet size
  83.         $data = pack("V",strlen($data)).$data;
  84.  
  85.         // Send packet
  86.         fwrite($this->_Sock,$data,strlen($data));
  87.  
  88.         // In case we want it later we'll return the packet id
  89.         return $id;
  90.     }
  91.  
  92.     function _PacketRead() {
  93.         //Declare the return array
  94.         $retarray = array();
  95.         //Fetch the packet size
  96.         while ($size = @fread($this->_Sock,4)) {
  97.             $size = unpack('V1Size',$size);
  98.             //Work around valve breaking the protocol
  99.             if ($size["Size"] > 4096) {
  100.                 //pad with 8 nulls
  101.                 $packet = "\x00\x00\x00\x00\x00\x00\x00\x00".fread($this->_Sock,4096);
  102.             } else {
  103.                 //Read the packet back
  104.                 $packet = fread($this->_Sock,$size["Size"]);
  105.             }
  106.             array_push($retarray,unpack("V1ID/V1Response/a*S1/a*S2",$packet));
  107.         }
  108.         return $retarray;
  109.     }
  110.  
  111.     function Read() {
  112.         $Packets = $this->_PacketRead();
  113.  
  114.         foreach($Packets as $pack) {
  115.             if (isset($ret[$pack['ID']])) {
  116.                 $ret[$pack['ID']]['S1'] .= $pack['S1'];
  117.                 $ret[$pack['ID']]['S2'] .= $pack['S1'];
  118.             } else {
  119.                 $ret[$pack['ID']] = array(
  120.                     'Response' => $pack['Response'],
  121.                     'S1' => $pack['S1'],
  122.                     'S2' => $pack['S2'],
  123.                 );
  124.             }
  125.         }
  126.         return $ret;
  127.     }
  128.  
  129.     function sendCommand($Command) {
  130.         //$Command = '"'.trim(str_replace(' ','" "', $Command)).'"';
  131.         //$Command="stop";
  132.         $this->_Write(SERVERDATA_EXECCOMMAND,$Command,'');
  133.     }
  134.  
  135.     function rconCommand($Command) {
  136.         $this->sendcommand($Command);
  137.  
  138.         $ret = $this->Read();
  139.  
  140.         //ATM: Source servers don't return the request id, but if they fix this the code below should read as
  141.         // return $ret[$this->_Id]['S1'];
  142.         return $ret[$this->_Id]['S1'];
  143.     }
  144. }
  145. ?>


Mirror
Soubory je možné stáhnout jako balík. Pokud nebude dostupný, kontaktujte podporu
Stáhnout
Naposledy upravil(a) nejento dne 22 bře 2020, 03:41, celkem upraveno 1 x.
01101110011101010110001001110111

Uživatelský avatar
Shaggy84675
Příspěvky: 1239
Věk: 27
Registrován: 23 srp 2011, 12:53
Reputation: 0
Kontaktovat uživatele:

Re: Automatické VIP

#2 Příspěvekod Shaggy84675 » 12 led 2012, 21:05

Děkuji Sejseli :)
Omluvte prosím moji nefunkčnost podpisu. Momentálně přesouvám podpis na svůj webserver.

BatlleGame
Příspěvky: 108
Registrován: 03 led 2012, 00:29
Reputation: 0

Re: Automatické VIP

#3 Příspěvekod BatlleGame » 13 led 2012, 00:26

Ahoj, s 50 kreditu mam dojem, že je 23kreditu pro nás, né 29, a kdyz pouzivam Permissions a ne PermissionsEx tak je to jedno? Dík
Obrázek

Uživatelský avatar
siOnzee
Příspěvky: 810
Věk: 27
Registrován: 30 lis 2011, 21:40
Reputation: 4
Bydliště: siOnzee.cz
Kontaktovat uživatele:

Re: Automatické VIP

#4 Příspěvekod siOnzee » 13 led 2012, 02:08

Ahoj,Ta cena: v kreditech
můj VIP se dělí na 2 SMS
(celkově 179,-)
takže tam mam napsat v kreditech normalně ?
jako
Pošlou 2 sms
které přičtou
50 + 100
tak tam mam napsat 150 kreditů ? :)

Uživatelský avatar
Sejsel
Příspěvky: 4131
Registrován: 19 čer 2011, 09:43
Reputation: 0
Bydliště: /home/sejsel/
Kontaktovat uživatele:

Re: Automatické VIP

#5 Příspěvekod Sejsel » 13 led 2012, 08:48

Bohužel, pokud to máš na 2 SMS, tak to tak jednoduché není. Muselo by to zapisovat do databáze, kdo kolik zaplatil a až pak by se to přiřadilo.
Je mi líto, ale funguje to pouze s jednou SMS

BatlleGame píše:Ahoj, s 50 kreditu mam dojem, že je 23kreditu pro nás, né 29, a kdyz pouzivam Permissions a ne PermissionsEx tak je to jedno? Dík


No, Pokud Permissions mají příkaz na přidání do skupiny, tak by to mělo být jedno, jenom to tam musíš přepsat.
z 50kč sms je 23 kreditů, máš pravdu, opraveno
01101110011101010110001001110111

Uživatelský avatar
LavorekCZ
Příspěvky: 1805
Registrován: 20 lis 2011, 13:58
Reputation: 0
Kontaktovat uživatele:

Re: Automatické VIP

#6 Příspěvekod LavorekCZ » 13 led 2012, 15:13

Když tam nastavím cenu "1", tak to aktivuje VIP i za SMSku za 10, 20 KČ ? Prostě jakákoliv SMS aktivuje?
Pomohl ti někdo? Pak určitě bude rád, když mu zvedneš karmu!
not sure

Uživatelský avatar
Sejsel
Příspěvky: 4131
Registrován: 19 čer 2011, 09:43
Reputation: 0
Bydliště: /home/sejsel/
Kontaktovat uživatele:

Re: Automatické VIP

#7 Příspěvekod Sejsel » 13 led 2012, 16:04

Ne. Testovací SMS má 1 kredit. Pokud chcete, aby to aktivovalo při každé, tak tam dejte * (mělo by to snad fungovat)
01101110011101010110001001110111

Uživatelský avatar
Naxmars
Příspěvky: 186
Registrován: 27 pro 2011, 21:45
Reputation: 0

Re: Automatické VIP

#8 Příspěvekod Naxmars » 14 led 2012, 18:52

Mám problém, muj freehosting má zakázané přípony php. Existuje nějákej web kam uložim soubor a tam bude napsané jeho URL?
Majitel Minecraft serveru PapriCraft: 93.91.250.144:27842.
Přijďte si zahrát na Economy server...
Skype: ondramastik

BatlleGame
Příspěvky: 108
Registrován: 03 led 2012, 00:29
Reputation: 0

Re: Automatické VIP

#9 Příspěvekod BatlleGame » 14 led 2012, 19:17

Obrázek

Uživatelský avatar
Vojko
Příspěvky: 3247
Věk: 27
Registrován: 24 dub 2011, 11:47
Reputation: 1
Bydliště: Slovensko, Bratislava

Re: Automatické VIP

#10 Příspěvekod Vojko » 17 led 2012, 09:49

A nešlo by to dať aj na 149 Kč ? :)
Aj keď tu na fóre nie som aktívny, môžete mi písať na Skype, E-Mail, ...


Zpět na „Návody“

Kdo je online

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