That's the whole interface to the party system. It's a textcmd.. I guess you know how that stuff was supposed to work;-)
Code: Select all
use os;
use uo;
include "include/SendPacket";
function AddPartyMember(ch, pmserial)
var pm := CheckPartyMember(ch, pmserial, 0);
if (pm != 0)
var pinvitation := InvitePartyMember(ch, pm);
if (pinvitation = "declined")
SendSysMessage(ch, pm.name +" has declined your offer.");
SendSysMessage(pm, "You have declined "+ ch.name +"'s offer.");
elseif (pinvitation = "accepted")
SendSysMessage(ch, pm.name +" has accepted your offer.");
SendSysMessage(pm, "You have accepted "+ ch.name +"'s offer.");
var parray := GetObjProperty(ch, "parray");
var parray2 := parray[2];
if (!parray)
SetObjProperty(ch, "parray", {ch.serial, {pm.serial}});
SetObjProperty(ch, "pcanloot", 1);
SendSysMessage(ch, "Your party can loot your corpse.");
SetObjProperty(pm, "pcanloot", 1);
SendSysMessage(pm, "Your party can loot your corpse.");
UpdateParty(ch, pm, 0);
SendSysMessage(pm, "You have joined the party.");
elseif (parray)
parray2.append(pm.serial);
parray := {parray[1], parray2};
SetObjProperty(ch, "parray", parray);
SetObjProperty(pm, "pcanloot", 1);
SendSysMessage(pm, "Your party can loot your corpse.");
UpdateParty(ch, pm, 0);
SendSysMessage(pm, "You have joined the party.");
endif
endif
endif
endfunction
function RemovePartyMember(ch, pmserial)
var pm := CheckPartyMember(ch, pmserial, 1);
if (pm != 0)
if (pm.serial != ch.serial)
var pmparray := GetObjProperty(pm, "parray");
var parray := ErasePartyMemberFromPartyArray(pm);
SetObjProperty(ch, "parray", parray);
UpdateParty(ch, pm, 1);
SendSysMessage(pm, "You have been removed from the party.");
parray := GetObjProperty(ch, "parray");
if (parray[2] = {})
DisbandParty(ch, pmparray);
endif
elseif (pm.serial = ch.serial)
var parray := GetObjProperty(ch, "parray");
if (parray[1] != ch.serial)
var pmparray := GetObjProperty(ch, "parray");
LeaveParty(ch);
parray := GetObjProperty(pmparray[1], "parray");
if (parray[2] = {})
DisbandParty(SystemFindObjectBySerial(parray[1], SYSFIND_SEARCH_OFFLINE_MOBILES), pmparray);
endif
elseif (parray[1] = ch.serial)
DisbandParty(ch, parray);
endif
endif
endif
endfunction
function LeaveParty(ch)
var parray := ErasePartyMemberFromPartyArray(ch);
SetObjProperty(parray[1], "parray", parray);
UpdateParty(SystemFindObjectBySerial(parray[1], SYSFIND_SEARCH_OFFLINE_MOBILES), ch, 1);
SendSysMessage(ch, "You have left the party.");
endfunction
function DisbandParty(ch, parray)
var parray2 := parray[2];
var PacketHexStringPart1 := "BF"+ ConvertIntToHex(15 + len(parray[2]) * 4, 2);
PacketHexStringPart1 := PacketHexStringPart1 + ConvertIntToHex(6, 2);
PacketHexStringPart1 := PacketHexStringPart1 + ConvertIntToHex(2, 1);
PacketHexStringPart1 := PacketHexStringPart1 + ConvertIntToHex(len(parray[2]) + 1, 1);
var PacketHexStringPart2 := ConvertIntToHex(ch.serial, 4);
foreach pmserial in parray2
PacketHexStringPart2 := PacketHexStringPart2 + ConvertIntToHex(pmserial, 4);
endforeach
var FullPacketHexString := PacketHexStringPart1 + ConvertIntToHex(ch.serial, 4) + PacketHexStringPart2;
EraseObjProperty(ch, "parray");
EraseObjProperty(ch, "pcanloot");
SendPacket(ch, FullPacketHexString);
SendSysMessage(ch, "Your party has disbanded.");
var pm;
foreach pmserial in parray2
pm := SystemFindObjectBySerial(pmserial, SYSFIND_SEARCH_OFFLINE_MOBILES);
FullPacketHexString := PacketHexStringPart1 + ConvertIntToHex(pmserial, 4) + PacketHexStringPart2;
EraseObjProperty(pm, "parray");
EraseObjProperty(pm, "pcanloot");
SendPacket(pm, FullPacketHexString);
SendSysMessage(pm, "Your party has disbanded.");
endforeach
endfunction
function ErasePartyMemberFromPartyArray(pm)
var parray := GetObjProperty(pm, "parray");
var parray2 := parray[2];
var parray2pmindex := 1;
while (parray2[parray2pmindex] != pm.serial)
parray2pmindex := parray2pmindex + 1;
endwhile
parray2.erase(parray2pmindex);
parray := {parray[1], parray2};
return parray;
endfunction
function UpdateParty(ch, pm, type)
var parray := GetObjProperty(ch, "parray");
var parray2 := parray[2];
if (type = 0)
var PacketHexString := "BF"+ ConvertIntToHex(11 + len(parray[2]) * 4, 2);
PacketHexString := PacketHexString + ConvertIntToHex(6, 2);
PacketHexString := PacketHexString + ConvertIntToHex(1, 1);
PacketHexString := PacketHexString + ConvertIntToHex(len(parray[2]) + 1, 1);
PacketHexString := PacketHexString + ConvertIntToHex(ch.serial, 4);
foreach pmserial in parray2
PacketHexString := PacketHexString + ConvertIntToHex(pmserial, 4);
endforeach
SendPacket(ch, PacketHexString);
SendSysMessage(ch, pm.name +" has joined the party.");
var pmname := pm.name;
var pmexcludeserial := pm.serial;
foreach pmserial in parray2
pm := SystemFindObjectBySerial(pmserial, SYSFIND_SEARCH_OFFLINE_MOBILES);
SetObjProperty(pm, "parray", parray);
SendPacket(pm, PacketHexString);
if (pmserial != pmexcludeserial)
SendSysMessage(pm, pmname +" has joined the party.");
endif
endforeach
elseif (type = 1)
var PacketHexString := "BF"+ ConvertIntToHex(15 + len(parray[2]) * 4, 2);
PacketHexString := PacketHexString + ConvertIntToHex(6, 2);
PacketHexString := PacketHexString + ConvertIntToHex(2, 1);
PacketHexString := PacketHexString + ConvertIntToHex(len(parray[2]) + 1, 1);
PacketHexString := PacketHexString + ConvertIntToHex(pm.serial, 4);
PacketHexString := PacketHexString + ConvertIntToHex(ch.serial, 4);
foreach pmserial in parray2
PacketHexString := PacketHexString + ConvertIntToHex(pmserial, 4);
endforeach
SendPacket(ch, PacketHexString);
SendSysMessage(ch, pm.name +" has left the party.");
var pmname := pm.name;
foreach pmserial in parray2
pm := SystemFindObjectBySerial(pmserial, SYSFIND_SEARCH_OFFLINE_MOBILES);
SetObjProperty(pm, "parray", parray);
SendPacket(pm, PacketHexString);
SendSysMessage(pm, pmname +" has left the party.");
endforeach
parray := GetObjProperty(pm, "parray");
parray2 := parray[2];
PacketHexString := "BF"+ ConvertIntToHex(15 + len(parray[2]) * 4, 2);
PacketHexString := PacketHexString + ConvertIntToHex(6, 2);
PacketHexString := PacketHexString + ConvertIntToHex(2, 1);
PacketHexString := PacketHexString + ConvertIntToHex(len(parray[2]) + 1, 1);
PacketHexString := PacketHexString + ConvertIntToHex(pm.serial, 4);
PacketHexString := PacketHexString + ConvertIntToHex(ch.serial, 4);
foreach pmserial in parray2
PacketHexString := PacketHexString + ConvertIntToHex(pmserial, 4);
endforeach
EraseObjProperty(pm, "parray");
EraseObjProperty(pm, "pcanloot");
SendPacket(pm, PacketHexString);
endif
endfunction
function InvitePartyMember(ch, pm)
SendSysMessage(ch, "You have invited "+ pm.name +" to join your party.");
SendSysMessage(pm, "You have been invited to join "+ ch.name +"'s party. Type \"/accept\" to join or \"/decline\" to decline the offer.");
var PacketHexString := "BF"+ ConvertIntToHex(14, 2);
PacketHexString := PacketHexString + ConvertIntToHex(6, 2);
PacketHexString := PacketHexString + ConvertIntToHex(7, 1);
PacketHexString := PacketHexString + ConvertIntToHex(ch.serial, 4);
PacketHexString := PacketHexString +"00000000";
EraseObjProperty(pm, "pinvitation");
SendPacket(pm, PacketHexString);
var pinvitationcounter := 0;
while ((!GetObjProperty(pm, "pinvitation")) and (pinvitationcounter < 10))
sleep(1);
pinvitationcounter := pinvitationcounter + 1;
endwhile
var pinvitation := GetObjProperty(pm, "pinvitation");
EraseObjProperty(pm, "pinvitation");
if (!pinvitation)
return "declined";
elseif (pinvitation)
if (pinvitation[1] = ch.serial)
return pinvitation[2];
else
return "declined";
endif
endif
endfunction
function CheckPartyMember(ch, pmserial, type)
if (type = 0)
if (pmserial != 0)
var parray := GetObjProperty(ch, "parray");
if (!parray)
var pm := SystemFindObjectBySerial(pmserial, SYSFIND_SEARCH_OFFLINE_MOBILES);
var pmparray := GetObjProperty(pm, "parray");
if (pm.serial != ch.serial)
if (!pmparray)
if ((!pm.npctemplate) and (pm.ip))
return pm;
elseif ((pm.npctemplate) or (!pm.ip))
SendSysMessage(ch, "You can only add online players to your party.");
return 0;
endif
elseif (pmparray)
SendSysMessage(ch, "This player has already joined a party.");
return 0;
endif
elseif (pm.serial = ch.serial)
SendSysMessage(ch, "Please choose another player.");
return 0;
endif
elseif (parray)
if (parray[1] != ch.serial)
SendSysMessage(ch, "Only the party leader can do this.");
return 0;
elseif (parray[1] = ch.serial)
if (len(parray[2]) < 9)
var pm := SystemFindObjectBySerial(pmserial, SYSFIND_SEARCH_OFFLINE_MOBILES);
var pmparray := GetObjProperty(pm, "parray");
if (pm.serial != ch.serial)
if (!pmparray)
if ((!pm.npctemplate) and (pm.ip))
return pm;
elseif ((pm.npctemplate) or (!pm.ip))
SendSysMessage(ch, "You can only add online players to your party.");
return 0;
endif
elseif (pmparray)
SendSysMessage(ch, "This player has already joined a party.");
return 0;
endif
elseif (pm.serial = ch.serial)
SendSysMessage(ch, "Please choose another player.");
return 0;
endif
elseif (len(parray[2]) = 9)
SendSysMessage(ch, "You can't add any more members to your party.");
return 0;
endif
endif
endif
elseif (pmserial = 0)
var parray := GetObjProperty(ch, "parray");
if (!parray)
SendSysMessage(ch, "Who would you like to add to your party?");
var pm := Target(ch);
if (!pm)
SendSysMessage(ch, "Targetting cancelled.");
return 0;
endif
var pmparray := GetObjProperty(pm, "parray");
if (pm.serial != ch.serial)
if (!pmparray)
if ((!pm.npctemplate) and (pm.ip))
return pm;
elseif ((pm.npctemplate) or (!pm.ip))
SendSysMessage(ch, "You can only add online players to your party.");
return 0;
endif
elseif (pmparray)
SendSysMessage(ch, "This player has already joined a party.");
return 0;
endif
elseif (pm.serial = ch.serial)
SendSysMessage(ch, "Please choose another player.");
return 0;
endif
elseif (parray)
if (parray[1] != ch.serial)
SendSysMessage(ch, "Only the party leader can do this.");
return 0;
elseif (parray[1] = ch.serial)
if (len(parray[2]) < 9)
SendSysMessage(ch, "Who would you like to add to your party?");
var pm := Target(ch);
if (!pm)
SendSysMessage(ch, "Targetting cancelled.");
return 0;
endif
var pmparray := GetObjProperty(pm, "parray");
if (pm.serial != ch.serial)
if (!pmparray)
if ((!pm.npctemplate) and (pm.ip))
return pm;
elseif ((pm.npctemplate) or (!pm.ip))
SendSysMessage(ch, "You can only add online players to your party.");
return 0;
endif
elseif (pmparray)
SendSysMessage(ch, "This player has already joined a party.");
return 0;
endif
elseif (pm.serial = ch.serial)
SendSysMessage(ch, "Please choose another player.");
return 0;
endif
elseif (len(parray[2]) = 9)
SendSysMessage(ch, "You can't add any more members to your party.");
return 0;
endif
endif
endif
endif
elseif (type = 1)
if (pmserial != 0)
var parray := GetObjProperty(ch, "parray");
if (!parray)
SendSysMessage(ch, "You are not a member of a party.");
return 0;
elseif (parray)
if (parray[1] != ch.serial)
if (pmserial != ch.serial)
SendSysMessage(ch, "Only the party leader can do this.");
return 0;
elseif (pmserial = ch.serial)
var pm := SystemFindObjectBySerial(pmserial, SYSFIND_SEARCH_OFFLINE_MOBILES);
return pm;
endif
elseif (parray[1] = ch.serial)
var pm := SystemFindObjectBySerial(pmserial, SYSFIND_SEARCH_OFFLINE_MOBILES);
var pmparray := GetObjProperty(pm, "parray");
if (!pmparray)
SendSysMessage(ch, "This player is not a member of a party.");
return 0;
elseif (pmparray)
if (pmparray[1] != parray[1])
SendSysMessage(ch, "This player is not a member of your party.");
return 0;
elseif (pmparray[1] = parray[1])
return pm;
endif
endif
endif
endif
elseif(pmserial = 0)
var parray := GetObjProperty(ch, "parray");
if (!parray)
SendSysMessage(ch, "You are not a member of a party.");
return 0;
elseif (parray)
if (parray[1] != ch.serial)
SendSysMessage(ch, "Who would you like to remove from your party?");
var pm := Target(ch);
if (!pm)
SendSysMessage(ch, "Targetting cancelled.");
return 0;
endif
var pmparray := GetObjProperty(pm, "parray");
if (!pmparray)
SendSysMessage(ch, "This player is not a member of a party.");
return 0;
elseif (pmparray)
if (pm.serial != ch.serial)
SendSysMessage(ch, "Only the party leader can do this.");
return 0;
elseif (pm.serial = ch.serial)
return ch;
endif
endif
elseif (parray[1] = ch.serial)
SendSysMessage(ch, "Who would you like to remove from your party?");
var pm := Target(ch);
if (!pm)
SendSysMessage(ch, "Targetting cancelled.");
return 0;
endif
var pmparray := GetObjProperty(pm, "parray");
if (!pmparray)
SendSysMessage(ch, "This player is not a member of a party.");
return 0;
elseif (pmparray)
if (pmparray[1] != parray[1])
SendSysMessage(ch, "This player is not a member of your party.");
return 0;
elseif (pmparray[1] = parray[1])
return pm;
endif
endif
endif
endif
endif
endif
endfunction
function SendMessageToPartyMember(ch, pmserial, pmmessage)
var PacketHexString := "BF"+ ConvertIntToHex(10 + len(ConvertStrToHex(pmmessage, 1)) / 2, 2);
PacketHexString := PacketHexString + ConvertIntToHex(6, 2);
PacketHexString := PacketHexString + ConvertIntToHex(3, 1);
PacketHexString := PacketHexString + ConvertIntToHex(ch.serial, 4);
PacketHexString := PacketHexString + ConvertStrToHex(pmmessage, 1);
var pm := SystemFindObjectBySerial(pmserial, SYSFIND_SEARCH_OFFLINE_MOBILES);
SendPacket(pm, PacketHexString);
endfunction
function SendMessageToParty(ch, pmmessage)
var parray := GetObjProperty(ch, "parray");
if (parray)
var parray2 := parray[2];
var PacketHexString := "BF"+ ConvertIntToHex(10 + len(ConvertStrToHex(pmmessage, 1)) / 2, 2);
PacketHexString := PacketHexString + ConvertIntToHex(6, 2);
PacketHexString := PacketHexString + ConvertIntToHex(4, 1);
PacketHexString := PacketHexString + ConvertIntToHex(ch.serial, 4);
PacketHexString := PacketHexString + ConvertStrToHex(pmmessage, 1);
if (parray[1] != ch.serial)
var pl := SystemFindObjectBySerial(parray[1], SYSFIND_SEARCH_OFFLINE_MOBILES);
SendPacket(pl, PacketHexString);
var pm;
foreach pmserial in parray2
pm := SystemFindObjectBySerial(pmserial, SYSFIND_SEARCH_OFFLINE_MOBILES);
SendPacket(pm, PacketHexString);
endforeach
elseif (parray[1] = ch.serial)
SendPacket(ch, PacketHexString);
var pm;
foreach pmserial in parray2
pm := SystemFindObjectBySerial(pmserial, SYSFIND_SEARCH_OFFLINE_MOBILES);
SendPacket(pm, PacketHexString);
endforeach
endif
endif
endfunction
Code: Select all
use uo;
use util;
function ConvertIntToHex(astring, alength)
astring := Hex(astring);
astring := CStr(astring);
if (astring["0x"])
astring := astring[3, len(astring)];
endif
if (len(astring) > alength * 2)
return;
endif
while (len(astring) < alength * 2)
astring := "0"+ astring;
endwhile
return astring;
endfunction
function ConvertLetterToHex(bletter)
bletter := CStr(bletter);
case (bletter)
"A": return "41";
"Ä": return "C4";
"B": return "42";
"C": return "43";
"D": return "44";
"E": return "45";
"F": return "46";
"G": return "47";
"H": return "48";
"I": return "49";
"J": return "4A";
"K": return "4B";
"L": return "4C";
"M": return "4D";
"N": return "4E";
"O": return "4F";
"Ö": return "D6";
"P": return "50";
"Q": return "51";
"R": return "52";
"S": return "53";
"T": return "54";
"U": return "55";
"Ü": return "DC";
"V": return "56";
"W": return "57";
"X": return "58";
"Y": return "59";
"Z": return "5A";
"a": return "61";
"ä": return "E4";
"b": return "62";
"c": return "63";
"d": return "64";
"e": return "65";
"f": return "66";
"g": return "67";
"h": return "68";
"i": return "69";
"j": return "6A";
"k": return "6B";
"l": return "6C";
"m": return "6D";
"n": return "6E";
"o": return "6F";
"ö": return "F6";
"p": return "70";
"q": return "71";
"r": return "72";
"s": return "73";
"t": return "74";
"u": return "75";
"ü": return "FC";
"v": return "76";
"w": return "77";
"x": return "78";
"y": return "79";
"z": return "7A";
"!": return "21";
"/": return "2F";
"[": return "5B";
"]": return "5D";
"@": return "40";
"=": return "3D";
"#": return "23";
"'": return "27";
"´": return "B4";
"`": return "60";
"{": return "7B";
"}": return "7D";
"_": return "5F";
",": return "2C";
".": return "2E";
"<": return "3C";
">": return "3E";
"|": return "7C";
"^": return "5E";
"ß": return "DF";
"?": return "3F";
":": return "3A";
";": return "3B";
"-": return "2D";
"+": return "2B";
"*": return "2A";
"(": return "28";
")": return "29";
"1": return "31";
"2": return "32";
"3": return "33";
"4": return "34";
"5": return "35";
"6": return "36";
"7": return "37";
"8": return "38";
"9": return "39";
"0": return "30";
" ": return "20";
default: return "20";
endcase
endfunction
function ConvertStrToHex(cstring, ctype := 0, clength := 0)
if (ctype = 0)
cstring := CStr(cstring);
var convertedstring := "";
var letter := 1;
repeat
convertedstring := convertedstring + ConvertLetterToHex(cstring[letter, 1]);
letter := letter + 1;
until (len(cstring) = len(convertedstring) / 2);
return convertedstring;
elseif (ctype = 1)
cstring := CStr(cstring);
var convertedstring := "";
var letter := 1;
repeat
convertedstring := convertedstring + ConvertLetterToHex(cstring[letter, 1]) +"00";
letter := letter + 1;
until (len(cstring) = len(convertedstring) / 4);
convertedstring := "00"+ convertedstring +"00";
return convertedstring;
elseif (ctype = 2)
cstring := CStr(cstring);
var convertedstring := "";
var letter := 1;
repeat
convertedstring := convertedstring + ConvertLetterToHex(cstring[letter, 1]);
letter := letter + 1;
until (len(cstring) = len(convertedstring) / 2);
if (len(convertedstring) > clength * 2)
return;
endif
while (len(convertedstring) < clength * 2)
convertedstring := convertedstring +"00";
endwhile
return convertedstring;
endif
endfunction
function SetPlayerWarMode(who, dvalue)
var PacketHexString;
PacketHexString := "72"+ ConvertIntToHex(dvalue, 1);
PacketHexString := PacketHexString +"003200";
SendPacket(who, PacketHexString);
endfunction
function EnableChatButton(who)
var PacketHexString;
PacketHexString := "B90001";
SendPacket(who, PacketHexString);
endfunction
function SendIdleWarning(who)
var PacketHexString;
PacketHexString := "5307";
SendPacket(who, PacketHexString);
endfunction
function UpdatePlayer(etowhom, who, egraphic, ex, ey, ez, efacing)
var PacketHexString;
PacketHexString := "77"+ ConvertIntToHex(who.serial, 4);
PacketHexString := PacketHexString + ConvertIntToHex(egraphic, 2);
PacketHexString := PacketHexString + ConvertIntToHex(ex, 2);
PacketHexString := PacketHexString + ConvertIntToHex(ey, 2);
PacketHexString := PacketHexString + ConvertIntToHex(ez, 1);
PacketHexString := PacketHexString + ConvertIntToHex(efacing, 1);
PacketHexString := PacketHexString +"00000000";
SendPacket(etowhom, PacketHexString);
endfunction
function PlayCharacterAnimation(ftowhom, who, fanimation, ffacing, frepeat, fdirection, frepeatflag, fframedelay)
var PacketHexString;
PacketHexString := "6E"+ ConvertIntToHex(who.serial, 4);
PacketHexString := PacketHexString + ConvertIntToHex(fanimation, 2);
PacketHexString := PacketHexString +"00";
PacketHexString := PacketHexString + ConvertIntToHex(ffacing, 1);
PacketHexString := PacketHexString + ConvertIntToHex(frepeat, 2);
PacketHexString := PacketHexString + ConvertIntToHex(fdirection, 1);
PacketHexString := PacketHexString + ConvertIntToHex(frepeatflag, 1);
PacketHexString := PacketHexString + ConvertIntToHex(fframedelay, 1);
SendPacket(ftowhom, PacketHexString);
endfunction
function SetQuestArrow(who, gvalue, gx, gy)
var PacketHexString;
PacketHexString := "BA"+ ConvertIntToHex(gvalue, 1);
PacketHexString := PacketHexString + ConvertIntToHex(gx, 2);
PacketHexString := PacketHexString + ConvertIntToHex(gy, 2);
SendPacket(who, PacketHexString);
endfunction
function SetCursorHue(who, hvalue)
var PacketHexString;
PacketHexString := "BF"+ ConvertIntToHex(6, 2);
PacketHexString := PacketHexString + ConvertIntToHex(8, 2);
PacketHexString := PacketHexString + ConvertIntToHex(hvalue, 1);
SendPacket(who, PacketHexString);
endfunction
function OpenWebBrowser(who, iaddress)
var PacketHexStringPart1 := "A5";
var PacketHexStringPart2 := ConvertStrToHex(iaddress);
var FullPacketHexStringLength := (len(PacketHexStringPart1) + len(PacketHexStringPart2)) / 2 + 2;
var FullPacketHexString := PacketHexStringPart1 + ConvertIntToHex(FullPacketHexStringLength, 2) + PacketHexStringPart2;
SendPacket(who, FullPacketHexString);
endfunction
function Play3DLightningBoltEffect(who)
var PacketHexString := "C703"+ ConvertIntToHex(who.serial, 4);
PacketHexString := PacketHexString +"0000000000000E260A15000E260A1500000000000000000000000000000013A700000000";
PacketHexString := PacketHexString + ConvertIntToHex(who.serial, 4);
PacketHexString := PacketHexString +"030000";
foreach mobile in ListMobilesNearLocationEx(who.x, who.y, who.z, 20, LISTEX_FLAG_NORMAL + LISTEX_FLAG_HIDDEN + LISTEX_FLAG_GHOST)
if ((mobile.ip) and (GetObjProperty(mobile, "3dclientversion")))
SendPacket(mobile, PacketHexString);
endif
endforeach
endfunction
function DrawGamePlayer(who, jgraphic, jcolor)
var PacketHexString := "20"+ ConvertIntToHex(who.serial, 4);
PacketHexString := PacketHexString + ConvertIntToHex(jgraphic, 2);
PacketHexString := PacketHexString +"00";
PacketHexString := PacketHexString + ConvertIntToHex(jcolor, 2);
PacketHexString := PacketHexString +"00";
PacketHexString := PacketHexString + ConvertIntToHex(who.x, 2);
PacketHexString := PacketHexString + ConvertIntToHex(who.y, 2);
PacketHexString := PacketHexString +"0000";
PacketHexString := PacketHexString + ConvertIntToHex(who.facing, 1);
PacketHexString := PacketHexString + ConvertIntToHex(who.z, 1);
SendPacket(who, PacketHexString);
endfunction
function DrawObject(ktowhom, kobj, kgraphic, kcolor, keqitrandcolor := 0)
var PacketHexStringPart1 := "78";
var PacketHexStringPart2 := ConvertIntToHex(kobj.serial, 4) + ConvertIntToHex(kgraphic, 2);
PacketHexStringPart2 := PacketHexStringPart2 + ConvertIntToHex(kobj.x, 2);
PacketHexStringPart2 := PacketHexStringPart2 + ConvertIntToHex(kobj.y, 2);
PacketHexStringPart2 := PacketHexStringPart2 + ConvertIntToHex(kobj.z, 1);
PacketHexStringPart2 := PacketHexStringPart2 + ConvertIntToHex(kobj.facing, 1);
PacketHexStringPart2 := PacketHexStringPart2 + ConvertIntToHex(kcolor, 2);
PacketHexStringPart2 := PacketHexStringPart2 +"0000";
if ((kobj.isa(POLCLASS_MOBILE)) and ((kobj.graphic = 400) or (kobj.graphic = 401)))
var color;
var graphic;
foreach item in ListEquippedItems(kobj)
PacketHexStringPart2 := PacketHexStringPart2 + ConvertIntToHex(item.serial, 4);
if (keqitrandcolor = 1)
color := RandomInt(99) + 2;
else
color := item.color;
endif
if (color = 0)
graphic := item.graphic;
else
graphic := item.graphic + 32768;
endif
PacketHexStringPart2 := PacketHexStringPart2 + ConvertIntToHex(graphic, 2);
PacketHexStringPart2 := PacketHexStringPart2 + ConvertIntToHex(item.layer, 1);
if (color != 0)
PacketHexStringPart2 := PacketHexStringPart2 + ConvertIntToHex(color, 2);
endif
endforeach
endif
PacketHexStringPart2 := PacketHexStringPart2 +"00000000";
var FullPacketHexStringLength := (len(PacketHexStringPart1) + len(PacketHexStringPart2)) / 2 + 2;
var FullPacketHexString := PacketHexStringPart1 + ConvertIntToHex(FullPacketHexStringLength, 2) + PacketHexStringPart2;
SendPacket(ktowhom, FullPacketHexString);
endfunction
function DeleteObject(who, lobj)
var PacketHexString := "1D"+ ConvertIntToHex(lobj.serial, 4);
SendPacket(who, PacketHexString);
endfunction
function RequestClientVersionInformation(who)
var PacketHexString := "BD0003";
SendPacket(who, PacketHexString);
endfunction
I think that's all.