Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][LUA] PHP_SDK
Forum PHP.pl > Forum > Przedszkole
playdewu
Cześć.
Planuję stawiać serwer gry Multi Theft Auto. Potrzebowałem skryptu do połączenia serwera www z serwerem gry w celu dodawania pieniędzy na konto w grze z poziomu strony www.
Dostałem taki kod na forum MTA:
  1. -- Your PHP Code
  2. <?php
  3. if ( isset ( $_GET['m'] ) && isset ( $_GET['a'] ) ) {
  4.  
  5. $money = $_GET['m'];
  6. $account = $_GET['a'];
  7.  
  8. include "mta/mta_sdk.php";
  9.  
  10. $mta = new mta ( "server ip", port, username, password );
  11. $mta->getResource("PHP_Callback")->call("giveTheMoneyToAccount", $account, $money );
  12. }
  13. ?>

LUA:
  1. -- for PHP_Callback resource
  2. -- make sure to export "giveTheMoneyToAccount" on http also
  3. -- <export function="giveTheMoneyToAccount" http="true" />
  4. function giveTheMoneyToAccount ( account, money )
  5. for i, v in pairs ( getElementsByType ( "player" ) ) do
  6. local a = getPlayerAccount ( v )
  7. if ( not isGuestAccount ( a ) and getAccountName ( a ) == acount ) then
  8. givePlayerMoney ( v, money )
  9. return true
  10. end
  11. end
  12. return false
  13. end


Potrzebuję dodatkowego pola w które wprowadzałbym login (AccountName) i dopiero wysyłał przyciskiem "Wyślij".
Próbowałem samemu ale średnio znam się na PHP:
  1. <?php if(!isset($_POST['submit'])) { ?>
  2.  
  3. <form action="" method="post">
  4. Login: <input type="text" name="a"><br>
  5. <input type="submit" name="submit">
  6. </form>
  7.  
  8. <?php
  9. if ( isset ( $_GET['m'] ) && isset ( $_GET['a'] ) ) {
  10.  
  11. $login = $_POST['a'];
  12.  
  13. $money = $_GET['m'];
  14. $account = $_GET['a'];
  15.  
  16. include "mta/mta_sdk.php";
  17.  
  18. $mta = new mta ( "server ip", port, username, password );
  19. $mta->getResource("PHP_Callback")->call("giveTheMoneyToAccount", $account, $money );
  20. }
  21. ?>


Wywala błąd w przeglądarce:
Kod
Parse error: syntax error, unexpected $end in /home/dewu/domains/ddesign.webt.pl/public_html/mta/addmoney.php on line 21


Mógłby ktoś mi ten skrypcik poprawić? wink.gif
Będę bardzo, bardzo wdzięczny!
Beniooo
Masz niezamkniętego ifa.
  1. <?php if(!isset($_POST['submit'])) { ?>
playdewu
Faktoza biggrin.gif Dziękóweczka! Ale pojawia się kolejny błąd:
Kod
Fatal error: Uncaught exception 'Exception' with message 'Not Found' in D:\WebServ\httpd\mm\sdk\mta_sdk.php:203 Stack trace: #0 D:\WebServ\httpd\mm\sdk\mta_sdk.php(79): mta->do_post_request('192.168.137.2', 22005, '/PHP_Callback/c...', '["dewu","1000"]') #1 D:\WebServ\httpd\mm\sdk\mta_sdk.php(257): mta->callFunction('PHP_Callback', 'giveTheMoneyToA...', Array) #2 D:\WebServ\httpd\mm\addmoney.php(19): Resource->call('giveTheMoneyToA...', 'dewu', '1000') #3 {main} thrown in D:\WebServ\httpd\mm\sdk\mta_sdk.php on line 203


Proszę, niech ktoś się przyjrzy temu skryptowi, może ja coś skopałem w nim ;/
Beniooo
Na początek sprawdź, czy masz w ogóle połączenie, zmień:
  1. $mta = new mta ( "server ip", port, username, password );
na
  1. $mta = new mta ( "server ip", port, username, password ) or die("Polaczenie");
playdewu
Połączenie jest, zapomniałem dodać.
Serwer WWW postawiłem na Webservie, serwer MTA lokalnie odpaliłem, w okienku wyświetla:
Kod
[2014-08-16 13:51:55] HTTP: 'dewu' entered correct password from 192.168.137.2

co oznacza jest jest połączenie (chyba) tongue.gif

Mi się zdaje, że skopałem coś ze składnią tego skryptu.
Pierwotnie (taki jaki otrzymałem) działał on na zasadzie ręcznej edycji wartości danego linku tzn.: http://yourwebsite/money.php?a=accountName&m=1000
ja chcąc dodać to "pole" do wprowadzania loginu dodałem:
  1. <?php if(!isset($_POST['submit'])) { ?>
  2.  
  3. <form action="" method="post">
  4. Login: <input type="text" name="a"><br>
  5. <input type="submit" name="submit">
  6. </form>

oraz
  1. $login = $_POST['a'];


I znając życie coś skopałem. Już się gubię, od rana nad tym siedzę ^^
Beniooo
var_dump($_GET) i co tam masz?
playdewu
Cytat(Beniooo @ 16.08.2014, 17:53:29 ) *
var_dump($_GET) i co tam masz?

Czy wspominałem, że jestem zielony? biggrin.gif
Beniooo
Czekaj czekaj, jak Ty w ogóle ten skrypt wywołujesz? Bo widzę, że rozpierdziel, najpierw formularz z postem a później używasz geta do zapytania.
playdewu
To znaczy.. przy użyciu http://localhost/mm/addmoney.php pojawia mi się formularz, po wpisaniu czegokolwiek znika i pojawia się białe tło.
Natomiast przy użyciu:http://localhost/mm/addmoney.php?a=dewu&m=1000 formularz też się pojawia, tyle że z błędem:
Kod
Fatal error: Uncaught exception 'Exception' with message 'Not Found' in D:\WebServ\httpd\mm\sdk\mta_sdk.php:203 Stack trace: #0 D:\WebServ\httpd\mm\sdk\mta_sdk.php(79): mta->do_post_request('192.168.137.2', 22005, '/PHP_Callback/c...', '["dewu","1000"]') #1 D:\WebServ\httpd\mm\sdk\mta_sdk.php(257): mta->callFunction('PHP_Callback', 'giveTheMoneyToA...', Array) #2 D:\WebServ\httpd\mm\addmoney.php(16): Resource->call('giveTheMoneyToA...', 'dewu', '1000') #3 {main} thrown in D:\WebServ\httpd\mm\sdk\mta_sdk.php on line 203


Że rozpierdziel wiem, mógłbyś jakoś to ułożyć? wink.gif
Beniooo
  1. <?php if(!isset($_POST['submit'])) { ?>
  2.  
  3. <form action="" method="post">
  4. Login: <input type="text" name="a"><br>
  5. Coś jeszcze: <input type="text" name="m"><br>
  6.  
  7. <input type="submit" name="submit">
  8. </form>
  9.  
  10. <?php
  11. if ( isset ( $_POST['m'] ) || isset ( $_POST['a'] ) ) {
  12.  
  13. $login = $_POST['a']; // Po co to?
  14.  
  15. $money = $_POST['m'];
  16. $account = $_POST['a'];
  17.  
  18. include "mta/mta_sdk.php";
  19.  
  20. $mta = new mta ( "server ip", port, username, password ) or die("Err1");
  21. $mta->getResource("PHP_Callback")->call("giveTheMoneyToAccount", $account, $money ) or die("Err2");
  22. }
  23. ?>

No, pisane tak z palca. Spróbuj. Wejdź po prostu na stronę, uzupełnij formularz i powiedz co rzuciło.
playdewu
Kod
Parse error: syntax error, unexpected $end in D:\WebServ\httpd\mm\addmoney.php on line 23

Ale to już wiem, że chodzi o niezamkniętego ifa tongue.gif
Zamknąłem, w obu linkach pojawiają się tylko dwa pola, po wpisaniu białe tło. Zauważyłem też, że po tym jak zamieniłeś GETy na POSTy nie ma połączenia z serwerem.

Cytat("Beniooo")
$login = $_POST['a']; // Po co to?

Nie wiem, nie myślę.

Napiszę o co mi chodzi raz jeszcze, bo może źle się wyraziłem.
Chcę aby ten skrypt po wpisaniu w pole loginu dodawał jakąś tam sumę pieniędzy na dane konto gracza.
Sumę tą (z tego co mi wiadomo) można zmienić w pliku LUA:
  1. givePlayerMoney ( v, money )

zamieniając na:
  1. givePlayerMoney ( v, 9999999999)

Próbowałem obie wersje, bez skutku.

Ręcę mi już opadają, mózg mi się wyłączył, pomóżcie ;/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.