Всем доброго времени суток. Подскажите. Кто пользовался почтовым скриптом. serverIP:8080/iweb/role/sendmail.jsp Отправляю предмет на почту. Он приходит. Хочу его забрать в рюкзак, выскакивает ошибка "исчезает из-за истечения срока действия" Что делать с этим? Кто знает или сталкивался, отзовитесь плиз...
Пользуйся php скриптом: PHP: <?# PHP код - Kapaмel, html - pworldfunction CUINT($Data){ if($Data < 64) 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 SysSendMail($Receiver, $Title, $Message, $ItemID, $Count, $Count_Max, $Octets, $Proctype, $Expire_date, $Guid1, $Guid2, $Mask, $Money){ $tID = "\x00\x00\x01\x58"; $SysID = "\x00\x00\x00\x20"; $SysType = "\x03"; $Receiver = PACK("N*", $Receiver); $Title = iCONV("UTF-8", "UTF-16LE", $Title); $TitleLengh = StrLen($Title); if($TitleLengh < 128) { $TitleLengh = PACK("C*", $TitleLengh); } else { $TitleLengh = PACK("n*", $TitleLengh + 32768); } $Message = iconv("UTF-8", "UTF-16LE", $Message); $MessageLengh = strlen($Message); if($MessageLengh < 128) { $MessageLengh = PACK("C*", $MessageLengh); } else { $MessageLengh = PACK("n*", $MessageLengh + 32768); } $ItemID = PACK("N*", $ItemID); $Pos = "\x00\x00\x00\x00"; $Count = PACK("N*", $Count); $Count_Max = PACK("N*", $Count_Max); $Octets = PACK("H*", $Octets); $OctetsLenght = PACK("n*", strlen($Octets) + 32768); $Proctype = PACK("N*", $Proctype); $Expire_date = PACK("N*", $Expire_date); $Guid1 = PACK("N*", $Guid1); $Guid2 = PACK("N*", $Guid2); $Mask = PACK("N*", $Mask); $Money = PACK("N*", $Money); $Packet = $tID.$SysID.$SysType.$Receiver.$TitleLengh.$Title.$MessageLengh.$Message.$ItemID.$Pos.$Count.$Count_Max.$OctetsLenght.$Octets.$Proctype.$Expire_date.$Guid1.$Guid2.$Mask.$Money; $PacketLenght = strlen($Packet); if($PacketLenght < 128) { $PacketLenght = PACK("C*", $PacketLenght); } else { $PacketLenght = PACK("n*",$PacketLenght + 32768); } $Packet = "\x90\x76".$PacketLenght.$Packet; $Socket = SOCKET_CREATE(AF_INET, SOCK_STREAM, SOL_TCP); if(!$Socket) { die(SOCKET_STRERROR(SOCKET_LAST_ERROR())); } if(SOCKET_CONNECT($Socket,'127.0.0.1',29100)) { SOCKET_SET_BLOCK($Socket); if (false !== ($sBytes = SOCKET_SEND($Socket,$Packet,8192,0))) { } else { $ERR = 1; } if (false !== ($rBytes = SOCKET_RECV($Socket,$BUF,8192,0))) { } else { $ERR = 2; } SOCKET_SET_NONBLOCK($Socket); SOCKET_CLOSE($Socket); } else { $ERR = 3; } return $ERR;} if(isset($_POST['send'])) { if(empty($_POST['receiver'])) { echo "<script>alert('Укажите получателя.')</script>"; } elseif(SysSendMail($_POST['receiver'], "Почта", "Предмет получен.", $_POST['itemid'], $_POST['count'], $_POST['maxcount'], $_POST['octets'], $_POST['proctype'], $_POST['date'], 0, 0, $_POST['mask'], $_POST['money']) == 0) { echo "<script>alert('Предмет отправлен.')</script>"; } } echo <<<HTML<style type="text/css"> #layer1 { background: #A1A1A1; padding: 160px; padding-bottom: 280px; border: 4px solid #5D5D5D; color: red; } p { color: rgb(12, 12, 12); } </style> <form method='post'> <div align="center" id="layer1"><table><tr><td><p>Получатель</p> </td> <td><input type='text' size='12' name='receiver'></td></tr> <tr><td><p>Id предмета</p></td> <td><input type='text' size='12' name='itemid'>Выбрать ID предмета на <a href='http://pwdatabase.com/ru' target='blank'>PW Database<p></a></td></tr><tr><td><p>Количество</p></td> <td><input type='text' size='12' name='count'></td></tr><tr><td><p>Max. количество</p></td> <td><input type='text' size='12' name='maxcount'></td></tr><tr><td><p>Привязка</p></td> <td><input type='text' size='12' name='proctype' value='0'></td></tr><tr><td><p>Время</p></td> <td><input type='text' size='12' name='date' value='0'></td></tr><tr><td><p>Деньги</p></td> <td><input type='text' size='12' name='money' value='0'></td></tr><tr><td><p>Маска</p></td> <td><select name="mask" style='width:120px;'><option value="0" selected="selected">Разное</option><option value="1">Оружие</option><option value="2">Голова</option><option value="8">Накидка</option><option value="16">Корпус</option><option value="64">Штаны</option><option value="128">Обувь</option><option value="256">Наручи</option><option value="4096">Полет</option><option value="1536">Кольца</option><option value="8192">Стиль: Верх</option><option value="16384">Стиль: Низ</option><option value="32768">Стиль: Сапоги</option><option value="65536">Стиль: Наручи</option><option value="8388608">Джин</option><option value="1048576">Хирка хп</option><option value="2097152">Хирка мп</option><option value="262144">Книга(Трактат)</option><option value="524288">Смайлы</option><option value="33554432">Прически</option></select></td></tr><tr><td valign='top'><p>Октет</p></td> <td><textarea rows='5' cols='25' name='octets'></textarea></td></tr><tr><td rowspan='2'><input style='height:30px;' type='submit' name='send' value='Отправить'></td></tr></table> </div></form></div>HTML;?>
Всё, я больше не могу. Спирит, не к тебе претензия, не волнуйся 代码: function CUINT($Data) { if($Data < 64) 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)); } Я где-то с 2011 года наблюдаю в ходу данный код распаковки Compact UInt. В свободном доступе очень много информации по пакетам и за всё время ниразу не видел, чтобы этот код правили. Ну неужели не видно, что заголовок 64 != заголовку 0x80, расположенному ниже по условию? 0x80 == 128, и, соответственно, при формировании пакета с заголовком больше 64, но меньше 128, на выходе будет word, а не byte. То есть на распаковке получим сдвиг чтения на 1 байт.