←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

socket - PHP + AMXX

  • +
  • -
dram - zdjęcie dram 08.10.2011

Witam, chciałbym prosić was o przykład funkcji w PHP oraz amxx

TJ. W php wywołuje zdarzenie które wykonuje się na serwerze.

Np.

skrypt.php>-
<?php
sprawdz_betoniarke();
>?

skrypt.amxx>
"jezeli wywolany zostal event sprawdz betoniarke wykonaj":
jakas funkcja.

takie pseudo kody :P
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 08.10.2011

socketami możesz przesłać cokolwiek, więc takie połączenie może zostać zrobione na nieskończenie wiele sposobów

na pewno optymalniej byłoby użyć socketów nasłuchującyh, czyli moduł sockets_hz
wyślij hash + kod identyfikacyjny funkcji, a w pluginie do tego sprawdzenie hasha i switch()
Odpowiedz

  • +
  • -
MarWit - zdjęcie MarWit 09.10.2011

Hmm.. A nie szybciej wysyłać polecenia rcon'em ?
Użytkownik MarWit edytował ten post 09.10.2011 14:55
Odpowiedz

  • +
  • -
dram - zdjęcie dram 09.10.2011

Hmm może jakieś przykłady jeszcze bym prosił?
Odpowiedz

  • +
  • -
speedkill - zdjęcie speedkill 09.10.2011

Chcesz Kod php z poleceniem przez rcon ?
Odpowiedz

  • +
  • -
Muzzi - zdjęcie Muzzi 09.10.2011

Koledze wyżej chodziło chyba o cron.
Odpowiedz

  • +
  • -
dram - zdjęcie dram 09.10.2011

Rcon oraz ten pomysł r3x(bardziej na nim mi zależy)
Odpowiedz

  • +
  • -
Muzzi - zdjęcie Muzzi 09.10.2011

To teraz proś R3X'a aby Ci to napisał, mała garstka ludzi potrafi zarządzać dobrze Socketami.
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 09.10.2011

mała garstka ludzi potrafi zarządzać dobrze Socketami.

bez przesady jest to podstawa w programowaniu sieciowym wiec nie taka "mała" garstka
Odpowiedz

  • +
  • -
Muzzi - zdjęcie Muzzi 09.10.2011

No to widzisz, jednak się myliłem.
Czekamy na "Nie taką 'małą' garstkę ludzi", którzy to napiszą.
Odpowiedz

  • +
  • -
MarWit - zdjęcie MarWit 09.10.2011

No to mój sposób z rconem:

Kod SMA:


#include <amxmodx>

#define PLUGIN "PluginName"
#define VERSION "1.0"
#define AUTHOR "MarWit"

#define COMMANDS_LEN 256

new g_szCommandsCodes[][COMMANDS_LEN] =
{
"sprawdzbetoniarke"
}

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd("php_command", "PHPCommand", ADMIN_IMMUNITY, "<md5code>")

new szBuffer[34]
for(new i=0; i<sizeof(g_szCommandsCodes)-1; i++)
{
md5(g_szCommandsCodes[i], szBuffer)
format(g_szCommandsCodes[i], COMMANDS_LEN-1, "%s", szBuffer)
}

}

public PHPCommand(id)
{
new szBuffer[128]
read_argv(1, szBuffer, 127)

new iCommand = get_commandid(szBuffer)

switch(iCommand)
{
case 0: { log_amx("Do serwera doszla komenda o md5: %s i id: %i", szBuffer, iCommand); }
default: { return PLUGIN_HANDLED; }
}
return PLUGIN_HANDLED
}

stock get_commandid(szText[])
{
for(new i=0; i<sizeof(g_szCommandsCodes)-1; i++)
{
if(equal(g_szCommandsCodes[i], szText))
return i;

}

return -1
}


Kod PHP:


<?php
include_once('include/socketclient.php');
include_once('include/hldsrcon.php');

$rcon_ip = "127.0.0.1";
$rcon_port = "27015";
$rcon_password = "123";

$cmd = "php_command " . md5("sprawdzbetoniarke");

$rcon = new HLDSRcon($rcon_ip, $rcon_port, $rcon_password);
$result = $rcon ->cmd($cmd);
?>


Wymagane includy w załączniku.

Działa to na zasadzie wysłania komendy do serwera, przy wczesniejszym wygenerowaniu md5. Gdy plugin znajdzie taki kod w tablicy, zostanie wykonana przypisana do niego funkcja ( w tym przypadku w konsoli serwera wyskoczy komunikat o md5 komendy oraz jej id )

Załączone pliki

Odpowiedz

  • +
  • -
dram - zdjęcie dram 09.10.2011

To jeszcze proszę o pomysł r3x z "nasłuchiwaniem"
Odpowiedz