Скрипт отправки сообщений в чат.

Статус
В этой теме нельзя размещать новые ответы.

Vieraw

Администратор
Команда форума
Администратор
12 Май 2012
273
145
43
27
Выкладываю скрипт для отправки сообщения в разные каналы чата.
Сам скрипт:
PHP:
<?php
    $host = "127.0.0.1";
    $port = 29300;
    function socketsend($data, $ip,$port)
    {
        if(!@$sock=socket_create(AF_INET, SOCK_STREAM, SOL_TCP))
    {throw new Exception("Не удалось связать сокет"); exit();}
        socket_connect($sock,$ip,$port);
        socket_set_block($sock);
        socket_send($sock, $data, 8192, 0);
        socket_recv($sock, $buf, 8192, 0);
        socket_set_nonblock($sock);
        socket_close($sock);
        return $buf;
    }
    function cuint($data)
    {
        if($data < 128)
            return strrev(pack("C", $data));
        else if($data < 16384)
            return strrev(pack("S", ($data | 0x8000)));
        else if($data < 536870912)
            return strrev(pack("I", ($data | 0xC0000000)));
        return strrev(pack("c", -32) . pack("i", $data));
    }
    function PackString($data)
    {
        $data = iconv("UTF-8", "UTF-16LE", $data);
        return cuint(strlen($data)).$data;
    }
    function PackOctet($data)
    {
        $data = pack("H*", $data);
        return cuint(strlen($data)).$data;
    }
    function gameChat($user,$msg,$chan,$host,$port)
    {
        $System = pack("C*",$chan);
        $Emotion = pack("C*",0);
        $Char = pack("N*",$user);
        $Message = PackString($msg);
        $data = PackOctet('');
        $Packet = $System.$Emotion.$Char.$Message.$data;
        $Data = cuint(120).cuint(strlen($Packet)).$Packet;
        socketsend($Data, $host,$port);
    }
    $page = <<<HTML
    <FORM METHOD=POST>
    <select name=chanel>
    <option value=0>Общий</option>
    <option value=2>Группа</option>
    <option value=3>Клан</option>
    <option value=4>Личные сообщения</option>
    <option value=7>Торг</option>
    <option value=1>Мир</option>
    <option value=12>Горн</option>
    <option value=9>Системный</option>
    </select>
    <input name="user" type="text" placeholder="Id персонажа с которого будет отправлено сообщение">
    <input name="msg" type="text" placeholder="Текст сообщения">
    <input name="submit" type=submit value="Отправить">
    </FORM>
HTML;
    echo $page;
    if (isset($_POST['submit']))
    {
        gameChat($_POST['user'],$_POST['msg'],$_POST['chanel'],$host,$port);
    }
?>
Дополнение:
PHP:
<?php
set_time_limit(0);
ignore_user_abort(true);
$host = "127.0.0.1";
    $port = 29300;
    function socketsend($data, $ip,$port)
    {
        if(!@$sock=socket_create(AF_INET, SOCK_STREAM, SOL_TCP))
    {throw new Exception("Не удалось связать сокет"); exit();}
        socket_connect($sock,$ip,$port);
        socket_set_block($sock);
        socket_send($sock, $data, 8192, 0);
        socket_recv($sock, $buf, 8192, 0);
        socket_set_nonblock($sock);
        socket_close($sock);
        return $buf;
    }
    function cuint($data)
    {
        if($data < 128)
            return strrev(pack("C", $data));
        else if($data < 16384)
            return strrev(pack("S", ($data | 0x8000)));
        else if($data < 536870912)
            return strrev(pack("I", ($data | 0xC0000000)));
        return strrev(pack("c", -32) . pack("i", $data));
    }
    function PackString($data)
    {
        $data = iconv("UTF-8", "UTF-16LE", $data);
        return cuint(strlen($data)).$data;
    }
    function PackOctet($data)
    {
        $data = pack("H*", $data);
        return cuint(strlen($data)).$data;
    }
    function gameChat($user,$msg,$chan,$host,$port)
    {
        $System = pack("C*",$chan);
        $Emotion = pack("C*",0);
        $Char = pack("N*",$user);
        $Message = PackString($msg);
        $data = PackOctet('');
        $Packet = $System.$Emotion.$Char.$Message.$data;
        $Data = cuint(120).cuint(strlen($Packet)).$Packet;
        socketsend($Data, $host,$port);
    }
    $page = <<<HTML
    <FORM METHOD=POST>
    <select name=chanel>
    <option value=0>Общий</option>
    <option value=2>Группа</option>
    <option value=3>Клан</option>
    <option value=4>Личные сообщения</option>
    <option value=7>Торг</option>
    <option value=1>Мир</option>
    <option value=12>Горн</option>
    <option value=9>Системный</option>
    </select>
    <input name="user" type="text" placeholder="Id персонажа с которого будет отправлено сообщение">
    <input name="msg" type="text" placeholder="Текст сообщения">
    <input name="time" type="text" placeholder="Интервал между сообщениями(в секундах)">
    <input name="count" type="text" placeholder="Сколько раз отправить">
    <input name="submit" type=submit value="Отправить">
    </FORM>
HTML;
    echo $page;
    if (isset($_POST['submit']))
    {
$i = 0;
while(true)
{
gameChat($_POST['user'],$_POST['msg'],$_POST['chanel'],$host,$port);
sleep($_POST['time']);
if($_POST['count'] != 0 and $_POST['count']-1 == $i)
{
exit();
}
$i++;
}
    }
Чтобы писать с определенного персонажа он должен быть в сети. Для отправки без ника id ставьте 0.
Пример работы:
2013-01-05 17-33-55.jpg

20_17_53_05_01_2013.png
 

Вложения

  • chat.rar
    1 KB · Просмотры: 197
Статус
В этой теме нельзя размещать новые ответы.

Пользователи онлайн

Сейчас на форуме нет ни одного пользователя.

Последние ресурсы

Статистика форума

Темы
3.838
Сообщения
21.199
Пользователи
7.614
Новый пользователь
Sharplist