socket - PHP + AMXX
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
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
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()
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()
MarWit
09.10.2011
Hmm.. A nie szybciej wysyłać polecenia rcon'em ?
Użytkownik MarWit edytował ten post 09.10.2011 14:55
Użytkownik MarWit edytował ten post 09.10.2011 14:55
Muzzi
09.10.2011
To teraz proś R3X'a aby Ci to napisał, mała garstka ludzi potrafi zarządzać dobrze Socketami.
DarkGL
09.10.2011
bez przesady jest to podstawa w programowaniu sieciowym wiec nie taka "mała" garstkamała garstka ludzi potrafi zarządzać dobrze Socketami.
Muzzi
09.10.2011
No to widzisz, jednak się myliłem.
Czekamy na "Nie taką 'małą' garstkę ludzi", którzy to napiszą.
Czekamy na "Nie taką 'małą' garstkę ludzi", którzy to napiszą.
MarWit
09.10.2011
No to mój sposób z rconem:
Kod SMA:
Kod PHP:
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 )
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 )