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

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 pack('C', $data);
  else if($data < 16384)
  return pack('n', ($data | 0x8000));
  else if($data < 536870912)
  return pack('N', ($data | 0xC0000000));
  return pack('C', 224) . pack('N', $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 PackLong($data)
{
 $left = 0xffffffff00000000;
  $right = 0x00000000ffffffff;
  $l = ($data & $left) >> 32;
  $r = $data & $right;
  $res = pack('N*', $l, $r);
  return $res;
}
function gameChat($user, $msg, $chan, $host, $port)
{
 $System = pack('C*',$chan);
  $Emotion = pack('C*',0);
  $show_param = pack('C*',0);
  $Char = PackLong($user);
  $Message = PackString($msg);
  $data = PackOctet('');
  $Packet = $System.$Emotion.$show_param.$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=1>Мир</option>
  <option value=2>Отряд</option>
  <option value=3>Гильдия</option>
  <option value=4>Личные сообщения</option>
  <option value=5>Урон</option>
  <option value=6>Поход</option>
  <option value=7>Задание</option>
  <option value=8>Оповещения</option>
  <option value=9>Системный</option>
  <option value=11>Легион</option>
  <option value=12>Поход</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);
}
Чтобы писать с определенного персонажа он должен быть в сети. Для отправки без ника id ставьте 0.
Пример работы:
2014-06-26 13-46-12.jpg
 
  • Like
Реакции: Juzilkree

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

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

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

Темы
3.838
Сообщения
21.197
Пользователи
7.601
Новый пользователь
hkuno