Протокол Cached
4 ответов343 просмотровСейчас просматривают: 1
· 14.09.2007, 15:12
Собственно ищется сабж, пытаюсь написать свою мааленькую админку под локальный сервер :) (готовую выкладывал вроде только Black, если не ошибаюсь, но ссылочка мертвая, а в фиксе полезной инфы не нашёл).
Нашёл функцию добавления итема в кеш-д - взято из l2auction.
Код
function AddItem($char_id,$item_id,$item_amount,$item_enchant){
global $ip;
$buf=pack("cVVVVVVVVV",55,$char_id,0,$item_id,$item_amount,$item_enchant,0,0,0,1).tounicode("admin");
$cachedsocket=@fsockopen($ip['cached'],$ip['cached_port'],$errno,$errstr,2);
fwrite($cachedsocket,pack("s",(strlen($buf)+2)).$buf);
$len=unpack("v",fread($cachedsocket,2));$rid=unpack("c",fread($cachedsocket,1));
for($i=0;$i<(($len[1]-4)/4);$i++){$read=unpack("i",fread($cachedsocket,4));$rs.=$read[1];}
fclose($cachedsocket);
return $rs;
}
global $ip;
$buf=pack("cVVVVVVVVV",55,$char_id,0,$item_id,$item_amount,$item_enchant,0,0,0,1).tounicode("admin");
$cachedsocket=@fsockopen($ip['cached'],$ip['cached_port'],$errno,$errstr,2);
fwrite($cachedsocket,pack("s",(strlen($buf)+2)).$buf);
$len=unpack("v",fread($cachedsocket,2));$rid=unpack("c",fread($cachedsocket,1));
for($i=0;$i<(($len[1]-4)/4);$i++){$read=unpack("i",fread($cachedsocket,4));$rs.=$read[1];}
fclose($cachedsocket);
return $rs;
}
Собственно вопрос, как заставить обновить КэшД например статус чара(забрать например Hair-style чара, т.к. если просто изменить его через EnterPrise manager в базе - изменения вступят в силу только после перезапуска сервера), естественно все должно происходить без рестарта. Ну и оочень не отказался бы от документациина эту тему.
Как я понял действие задаётся цифрами, в данном случае 55 - добавление итема, 13 - удаление. У кого есть описание и параметры остальных?:)
0
· 14.09.2007, 15:49
Код
<?php
###############################################
# id | Function Name(Function parms) #
###############################################
#d = int (4 bytes, little endian)
#S = unicode String ending with
#f = float
#1 CheckCharacterPacket("dS")
#2 SetCharacterLocationPacket("dddddS")
#3 SetBuilderCharacterPacket("ddS")
#4 ChangeCharacterNamePacket("dSS")
#5 KickCharacterPacket("dS")
#6 AddSkillPacket("dddS")
#7 DelSkillPacket("ddS")
#8 ModSkillPacket("dddS")
#9 SetOnetimeQuestPacket("dddS")
#10 SetQuestPacket("ddd")
#11 DelQuestPacket("ddS")
#12 AddItemPacket()
#13 DelItemPacket("ddddS")
#14 ModItemPacket("ddddddddddS")
#15 ModCharPacket("dddddddS")
#16 ModChar2Packet("dddddddS")
#17 ModCharPledgePacket("dSS")
#18 PunishCharPacket("ddd")
#19 SetBuilderAccountPacket("SdS")
#20 DisableCharacterPacket("ddS")
#21 EnableCharacterPacket("ddS")
#22 GetCharactersPacket()
#23 SetBookMarkPacket("dSddddS")
#24 DelBookMarkPacket("dSS")
#25 DelPledgeCrestPacket("dS")
#26 ModPledgeNamePacket("dSS")
#27 SetProhibitedPacket("dSS")
#28 SeizeItemPacket("ddddS")
#29 ModChar3Packet("dddddddS")
#30 MoveItemPacket("ddddd")
#31 MoveCharacterPacket("ddSS")
#32 CommentWritePacket("dSSS")
#33 CommentDeletePacket("ddS")
#34 DeleteCharPacket("dS")
#35 RestoreCharPacket("ddSS")
#36 PledgeOustPacket("dS")
#37 PledgeChangeOwnerPacket("ddS")
#38 PledgeDeletePacket()
#39 BanCharPacket("ddS")
#40 MoveItem2Packet("ddddS")
#41 PrintAllAccountData()
#42 PrintAllItemData()
#43 CopyCharPacket("dSdSS")
#44 CreatePetPacket("dddS")
#45 SendHomePacket("dS")
#46 ChangePledgeLevelPacket("ddS")
#47 CreatePledgePacket("SdS")
#48 SetSkillAllPacket("dS")
#49 RestoreChar2Packet("dSdSS")
#50 ManAnnouncePacket("ddSS")
#51 ManIntAnnouncePacket("dddSS")
#52 ModWeekPlayPacket("dddS")
#53 SeizeItem2Packet("ddS")
#54 DelItem2Packet("ddS")
#55 AddItem2Packet("dddddddddS")
#56 GetCharacters2Packet("dS")
#57 DelMacroPacket("ddS")
#58 DelMonRaceTicketPacket("dddS")
#59 DelRecipePacket("ddS")
#60 DelLottoPacket()
#61 ModifyPledgePowerPacket("ddSS")
#62 EventPointPacket("df")
#63 GetPledgePacket("dS")
#64 EventPointPacket("df")
#65 CreateCharacterPacket("SSddddddddffddddddddddS")
#66 AddItemsPacket("dSd")
#67 AddSkillsPacket("dSd")
#68 GetCharacters3Packet("dS")
#69 SetSociality("ddS")
#70 SetInstantAnnouncePacket("SS" or "cdS") (??)
#71 DelHennaPacket("ddS")
#72 AddHennaPacket("ddS")
#73 AddHennaPacket("dSddS")
#74 AddHennasPacket("dSd")
#75 GetCastleListPacket("ddSdSdSddd")
#76 ModifyCharPropertyPacket("ddddddddS")
#77 ModifyCharAbilityDeltaPacket("ddddddddS")
#78 ModifyCharAbilityDeltaPacket("ddddddddS")
#79 DelHenna2Packet("dddS")
#80 AddHenna2Packet("dddS")
#81 AddSkill2Packet("ddddS")
#82 DelSkill2Packet("dddS")
#83 ModifySkill2Packet("ddddS")
#84 AddMacroPacket("dSSSdS")
#85 GetSSQStatusPacket("cdddddddddddd")
#86 GetSSQMainEventRecordPacket("dddddddSd")
#87 ModifyDepositedSSQItemPacket("ddddS")
#88 ChangePetNamePacket("ddSS")
#89 ChangeSubJobPacket("ddS")
#90 StopCharPacket("dd")
#91 CancelPersonalShopPacket("dd")
#92 AddMacroInfoPacket("ddddddSS")
#93 CreateCharacter2Packet("SSddddddddffddddddddddddfS")
#94 AddSkills2Packet("dSd")
#95 AddHennas2Packet("dSd")
#96 AddSubjobsPacket("dSd")
#97 GetPledge2Packet("dS")
#98 DelPledgeEmblemPacket("dS")
#99 RegisterAccountPacket("SS")
#100 DelPledgeAnnouncePacket("dS")
#101 SendPrivateAnnouncePacket("dSS")
#102 GetAgitListPacket("dSdSdSdd")
#103 GetPledgeMemberPacket("dS")
#104 EternalBanPacket("dS")
#105 GetCharacters4Packet("dS")
#106 SetNoblessPacket("ddS")
#107 SetHeroPacket("ddS")
#108 SetPartyLocationPacket("ddddS")
#109 ModOlympiadPointPacket("ddddS")
#110 DummyPacket()
$char_id = 3;
$newname = "KciNicK";
printf("The character %s is %s\n", $char_id, CheckCharacterPacket($char_id) == "x1" ? "online" : "offline");
printf("rename character %s to '%s': %s\n", $char_id, $newname, ChangeCharacterNamePacket($char_id, $newname) == "x1" ? "ok" : "error");
function tounicode($string) {
$rs = ""; for($i = 0; $i < strlen($string); $i++) $rs .= $string[$i].chr(0);
return($rs.chr(0).chr(0));
}
function CheckCharacterPacket($p0) {
$fp = fsockopen("127.0.0.1", "2012", $errno, $errstr, 5); $rs = "x";
if (!$fp) die("<script>alert('Error connecting to cached: $errstr
[server down??]')</script>");
$buf = pack("c", 1); // 1 = CheckCharacterPacket();
$buf .= pack("i", $p0); //char_id
fwrite($fp, pack("s", (strlen($buf)+2)).$buf);
$len = unpack("v", fread($fp, 2)); $rid = unpack("c", fread($fp, 1));
for ($i = 0; $i < (($len[1]-4) / 4); $i++) { $read = unpack("i", fread($fp, 4)); $rs .= $read[1]; }
fclose($fp); return($rs);
}
function ChangeCharacterNamePacket($p0, $p1) {
$fp = fsockopen("127.0.0.1", "2012", $errno, $errstr, 5); $rs = "x";
if (!$fp) die("<script>alert('Error connecting to cached: $errstr
[server down??]')</script>");
$buf = pack("c", 4); // 4 = ChangeCharacterNamePacket();
$buf .= pack("i", $p0); //char_id
$buf .= tounicode($p1); //new char name
fwrite($fp, pack("s", (strlen($buf)+2)).$buf);
$len = unpack("v", fread($fp, 2)); $rid = unpack("c", fread($fp, 1));
for ($i = 0; $i < (($len[1]-4) / 4); $i++) { $read = unpack("i", fread($fp, 4)); $rs .= $read[1]; }
fclose($fp); return($rs);
}
?>
###############################################
# id | Function Name(Function parms) #
###############################################
#d = int (4 bytes, little endian)
#S = unicode String ending with
#f = float
#1 CheckCharacterPacket("dS")
#2 SetCharacterLocationPacket("dddddS")
#3 SetBuilderCharacterPacket("ddS")
#4 ChangeCharacterNamePacket("dSS")
#5 KickCharacterPacket("dS")
#6 AddSkillPacket("dddS")
#7 DelSkillPacket("ddS")
#8 ModSkillPacket("dddS")
#9 SetOnetimeQuestPacket("dddS")
#10 SetQuestPacket("ddd")
#11 DelQuestPacket("ddS")
#12 AddItemPacket()
#13 DelItemPacket("ddddS")
#14 ModItemPacket("ddddddddddS")
#15 ModCharPacket("dddddddS")
#16 ModChar2Packet("dddddddS")
#17 ModCharPledgePacket("dSS")
#18 PunishCharPacket("ddd")
#19 SetBuilderAccountPacket("SdS")
#20 DisableCharacterPacket("ddS")
#21 EnableCharacterPacket("ddS")
#22 GetCharactersPacket()
#23 SetBookMarkPacket("dSddddS")
#24 DelBookMarkPacket("dSS")
#25 DelPledgeCrestPacket("dS")
#26 ModPledgeNamePacket("dSS")
#27 SetProhibitedPacket("dSS")
#28 SeizeItemPacket("ddddS")
#29 ModChar3Packet("dddddddS")
#30 MoveItemPacket("ddddd")
#31 MoveCharacterPacket("ddSS")
#32 CommentWritePacket("dSSS")
#33 CommentDeletePacket("ddS")
#34 DeleteCharPacket("dS")
#35 RestoreCharPacket("ddSS")
#36 PledgeOustPacket("dS")
#37 PledgeChangeOwnerPacket("ddS")
#38 PledgeDeletePacket()
#39 BanCharPacket("ddS")
#40 MoveItem2Packet("ddddS")
#41 PrintAllAccountData()
#42 PrintAllItemData()
#43 CopyCharPacket("dSdSS")
#44 CreatePetPacket("dddS")
#45 SendHomePacket("dS")
#46 ChangePledgeLevelPacket("ddS")
#47 CreatePledgePacket("SdS")
#48 SetSkillAllPacket("dS")
#49 RestoreChar2Packet("dSdSS")
#50 ManAnnouncePacket("ddSS")
#51 ManIntAnnouncePacket("dddSS")
#52 ModWeekPlayPacket("dddS")
#53 SeizeItem2Packet("ddS")
#54 DelItem2Packet("ddS")
#55 AddItem2Packet("dddddddddS")
#56 GetCharacters2Packet("dS")
#57 DelMacroPacket("ddS")
#58 DelMonRaceTicketPacket("dddS")
#59 DelRecipePacket("ddS")
#60 DelLottoPacket()
#61 ModifyPledgePowerPacket("ddSS")
#62 EventPointPacket("df")
#63 GetPledgePacket("dS")
#64 EventPointPacket("df")
#65 CreateCharacterPacket("SSddddddddffddddddddddS")
#66 AddItemsPacket("dSd")
#67 AddSkillsPacket("dSd")
#68 GetCharacters3Packet("dS")
#69 SetSociality("ddS")
#70 SetInstantAnnouncePacket("SS" or "cdS") (??)
#71 DelHennaPacket("ddS")
#72 AddHennaPacket("ddS")
#73 AddHennaPacket("dSddS")
#74 AddHennasPacket("dSd")
#75 GetCastleListPacket("ddSdSdSddd")
#76 ModifyCharPropertyPacket("ddddddddS")
#77 ModifyCharAbilityDeltaPacket("ddddddddS")
#78 ModifyCharAbilityDeltaPacket("ddddddddS")
#79 DelHenna2Packet("dddS")
#80 AddHenna2Packet("dddS")
#81 AddSkill2Packet("ddddS")
#82 DelSkill2Packet("dddS")
#83 ModifySkill2Packet("ddddS")
#84 AddMacroPacket("dSSSdS")
#85 GetSSQStatusPacket("cdddddddddddd")
#86 GetSSQMainEventRecordPacket("dddddddSd")
#87 ModifyDepositedSSQItemPacket("ddddS")
#88 ChangePetNamePacket("ddSS")
#89 ChangeSubJobPacket("ddS")
#90 StopCharPacket("dd")
#91 CancelPersonalShopPacket("dd")
#92 AddMacroInfoPacket("ddddddSS")
#93 CreateCharacter2Packet("SSddddddddffddddddddddddfS")
#94 AddSkills2Packet("dSd")
#95 AddHennas2Packet("dSd")
#96 AddSubjobsPacket("dSd")
#97 GetPledge2Packet("dS")
#98 DelPledgeEmblemPacket("dS")
#99 RegisterAccountPacket("SS")
#100 DelPledgeAnnouncePacket("dS")
#101 SendPrivateAnnouncePacket("dSS")
#102 GetAgitListPacket("dSdSdSdd")
#103 GetPledgeMemberPacket("dS")
#104 EternalBanPacket("dS")
#105 GetCharacters4Packet("dS")
#106 SetNoblessPacket("ddS")
#107 SetHeroPacket("ddS")
#108 SetPartyLocationPacket("ddddS")
#109 ModOlympiadPointPacket("ddddS")
#110 DummyPacket()
$char_id = 3;
$newname = "KciNicK";
printf("The character %s is %s\n", $char_id, CheckCharacterPacket($char_id) == "x1" ? "online" : "offline");
printf("rename character %s to '%s': %s\n", $char_id, $newname, ChangeCharacterNamePacket($char_id, $newname) == "x1" ? "ok" : "error");
function tounicode($string) {
$rs = ""; for($i = 0; $i < strlen($string); $i++) $rs .= $string[$i].chr(0);
return($rs.chr(0).chr(0));
}
function CheckCharacterPacket($p0) {
$fp = fsockopen("127.0.0.1", "2012", $errno, $errstr, 5); $rs = "x";
if (!$fp) die("<script>alert('Error connecting to cached: $errstr
[server down??]')</script>");
$buf = pack("c", 1); // 1 = CheckCharacterPacket();
$buf .= pack("i", $p0); //char_id
fwrite($fp, pack("s", (strlen($buf)+2)).$buf);
$len = unpack("v", fread($fp, 2)); $rid = unpack("c", fread($fp, 1));
for ($i = 0; $i < (($len[1]-4) / 4); $i++) { $read = unpack("i", fread($fp, 4)); $rs .= $read[1]; }
fclose($fp); return($rs);
}
function ChangeCharacterNamePacket($p0, $p1) {
$fp = fsockopen("127.0.0.1", "2012", $errno, $errstr, 5); $rs = "x";
if (!$fp) die("<script>alert('Error connecting to cached: $errstr
[server down??]')</script>");
$buf = pack("c", 4); // 4 = ChangeCharacterNamePacket();
$buf .= pack("i", $p0); //char_id
$buf .= tounicode($p1); //new char name
fwrite($fp, pack("s", (strlen($buf)+2)).$buf);
$len = unpack("v", fread($fp, 2)); $rid = unpack("c", fread($fp, 1));
for ($i = 0; $i < (($len[1]-4) / 4); $i++) { $read = unpack("i", fread($fp, 4)); $rs .= $read[1]; }
fclose($fp); return($rs);
}
?>
Порт вроде 2012
Сколько времени прошло....
— Administrator
0
· 14.09.2007, 16:22
огромное спасибо! то что нужно! :)
Мож кому понадобится, нарыл коды ошибок
Код
01=SOCKET_INT_ERROR
2=SOCKET_INT_ARGS_NEED
3=SOCKET_INT_ARGS_INVALID
4=SOCKET_INT_CHAR_NOT_FOUNT
5=SOCKET_INT_WAREHOUSE_NOT_FOUNT
6=SOCKET_INT_ACCOUNT_NOT_FOUND
7=SOCKET_INT_CHAR_LOGIN
8=SOCKET_INT_TOO_MANY_CHARS
9=SOCKET_INT_CHAR_INPLEDGE
010=SOCKET_INT_CHAR_PLEDGEOWNER
011=SOCKET_INT_CANNOT_BAN
012=SOCKET_INT_NAME_EXISTS
013=SOCKET_INT_OBSOLETE
014=SOCKET_INT_INVALID_CHARNAME
015=SOCKET_INT_CHAR_NOT_LOGIN
016=SOCKET_INT_SAME_CHAR
017=SOCKET_INT_CHAR_NOTPLEDGE
018=SOCKET_INT_CHAR_PLEDGEMASTER
019=SOCKET_INT_SVR_NOTCONNECTED
020=SOCKET_INT_CREATE_PET_FAIL
021=SOCKET_INT_PLEDGE_EXISTS
022=SOCKET_INT_NO_CHARS
023=SOCKET_INT_INVALID_ANNOUNCEID
024=SOCKET_INT_PLEDGE_NOT_FOUND
025=SOCKET_INT_CASTLE_NOT_FOUND
026=SOCKET_INT_PET_NOT_FOUND
2=SOCKET_INT_ARGS_NEED
3=SOCKET_INT_ARGS_INVALID
4=SOCKET_INT_CHAR_NOT_FOUNT
5=SOCKET_INT_WAREHOUSE_NOT_FOUNT
6=SOCKET_INT_ACCOUNT_NOT_FOUND
7=SOCKET_INT_CHAR_LOGIN
8=SOCKET_INT_TOO_MANY_CHARS
9=SOCKET_INT_CHAR_INPLEDGE
010=SOCKET_INT_CHAR_PLEDGEOWNER
011=SOCKET_INT_CANNOT_BAN
012=SOCKET_INT_NAME_EXISTS
013=SOCKET_INT_OBSOLETE
014=SOCKET_INT_INVALID_CHARNAME
015=SOCKET_INT_CHAR_NOT_LOGIN
016=SOCKET_INT_SAME_CHAR
017=SOCKET_INT_CHAR_NOTPLEDGE
018=SOCKET_INT_CHAR_PLEDGEMASTER
019=SOCKET_INT_SVR_NOTCONNECTED
020=SOCKET_INT_CREATE_PET_FAIL
021=SOCKET_INT_PLEDGE_EXISTS
022=SOCKET_INT_NO_CHARS
023=SOCKET_INT_INVALID_ANNOUNCEID
024=SOCKET_INT_PLEDGE_NOT_FOUND
025=SOCKET_INT_CASTLE_NOT_FOUND
026=SOCKET_INT_PET_NOT_FOUND
0
Тема закрыта для ответов

