Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

PhP based pwAdmin

Junior Spellweaver
Joined
Oct 16, 2012
Messages
136
Reaction score
46
Its not trickable with disconnect disconnect from ISP and reconnect and automatically you have new IP?
This is the reason why normal "IP v4" ban is not possible. Teemo how u made the ban script lmao ( only ip4) ?

Could always use the logfiles to get the MAC-address from a user connection (yes, that gets saved) or log connections on port 29000 (or whatever you use for glink)

(Yes, IPTables supports banning MAC-addresses)
iptables -A INPUT -p ALL -m mac --mac-source <insert MAC of offending computer here> -j DROP

so like
iptables -A INPUT -p ALL -m mac --mac-source 64:20:0c:ac:f4:49 -j DROP


Ofc then you have the chance that people start spoofing their network card's MAC address. (although this goes way past rebooting a modem and getting a new IP) But it is safer as no matter how many times they change their IP it will stay blocked. Ofc this only blocks a single computer instead of a whole household or internet cafe. but it works nonetheless.
 
Joined
Jul 17, 2007
Messages
665
Reaction score
104
btw about mac address i also searched a bit:

[h=2]Server IP[/h]You can get the server IP address from $_SERVER['SERVER_ADDR'].
[h=2]Server MAC address[/h]For the MAC address, you could parse the output of netstat -ie in Linux, or ipconfig /all in Windows.
[h=2]Client IP address[/h]You can get the client IP from $_SERVER['REMOTE_ADDR']
[h=2]Client MAC address[/h]The client MAC address will not be available to you except in one special circumstance: if the client is on the same ethernet segment as the server.
So, if you are building some kind of LAN based system and your clients are on the same ethernet segment, then you could get the MAC address by parsing the output of arp -n (linux) or arp -a(windows).
Edit: you ask in comments how to get the output of an external command - one way is to use backticks, e.g.
$ipAddress=$_SERVER['REMOTE_ADDR'];
$macAddr
=false;

#run the external command, break output into lines
$arp
=`arp -a $ipAddress`;
$lines
=explode("\n", $arp);

#look for the output line describing our IP address
foreach($lines as $line)
{
$cols
=preg_split('/\s+/', trim($line));
if ($cols[0]==$ipAddress)
{
$macAddr
=$cols[1];
}
}[h=2]But what if the client isn't on a LAN?[/h]Well, you're out of luck unless you can have the client volunteer that information and transmit via other means.



so only ip address, browser/user agent info, seassion and cookie left (all trickable without too much effort).
 
Joined
Jul 17, 2007
Messages
665
Reaction score
104
i want make php based weapon/armor/ornament/tome/ flyer etc editor (with javascript what create octets), anyone have a very detailed guide for armor/tome/ornament like Drakaer for weapon?
Or where is difference compared with weapon.

Another thing anyone know the refine formula for orn. Weapon and for armor?

(i can't use exe's coz have no windows atm for octeteditors also working for older version mainly so around 1.4.2 or 1.4.4 before slayer level was added)
 
Last edited:
Elite Diviner
Joined
Mar 12, 2009
Messages
472
Reaction score
59
i want make php based weapon/armor/ornament/tome/ flyer etc editor (with javascript what create octets), anyone have a very detailed guide for armor/tome/ornament like Drakaer for weapon?
Or where is difference compared with weapon.

Another thing anyone know the refine formula for orn. Weapon and for armor?

(i can't use exe's coz have no windows atm for octeteditors also working for older version mainly so around 1.4.2 or 1.4.4 before slayer level was added)

hmm its easy the same method i mentioned before... you have to send the "hexed code" of an item... yes i use php to generate all the stuff and send it to iweb/pwadmin service, and sorry i cann't give you the detail how to do it...
 
Joined
Jul 17, 2007
Messages
665
Reaction score
104
hmm its easy the same method i mentioned before... you have to send the "hexed code" of an item... yes i use php to generate all the stuff and send it to iweb/pwadmin service, and sorry i cann't give you the detail how to do it...

I dont interested how to send, just structure ex lv req 4byte, class mask 4byte, ornament type? 2byte, Def 4byte etc so structure

What about refine formula? I am sure it's related with damage, item grade, refine lv but idk how (ornament and armor I guess more interesting)
 
Elite Diviner
Joined
Mar 12, 2009
Messages
472
Reaction score
59
I dont interested how to send, just structure ex lv req 4byte, class mask 4byte, ornament type? 2byte, Def 4byte etc so structure

What about refine formula? I am sure it's related with damage, item grade, refine lv but idk how (ornament and armor I guess more interesting)
I guess, you have to explore the hexed code, its easy, isn't it?

 
Joined
Jul 17, 2007
Messages
665
Reaction score
104
my Web Shop, soon i will upload the web but still want thinking about fix the put role function coz only atm can get the data about roles but cant save, (and need fix a minor issue with fashion gender, coz save invers male=>female,female=>male)


Buying Function inside of iframe (atm you can buy only with points)
if (isset($_GET['BuyFromShop'])){ if ((isset($_GET['Amount']))&&(isset($_GET['buyWith']))&&(isset($_GET['transWith']))&&(isset($_GET['IData']))&&(isset($_GET['roleid']))){ $idata = trim($_GET['IData']); $idata = str_replace('|', '#', trim($_GET['IData'])); //check server if running if (strpos($idata, "#") !== false){ $iArr = explode("#", $idata); if (count($iArr) == 19){ $handle = fopen($ShopItemD, 'r'); $valid = false; // init as false $iArr[3] = str_replace(' ', ' +', $iArr[3]); $idata = implode("#", $iArr); while (($line = fgets($handle)) !== false) { if (strpos($line, $idata) !== false) { $valid = TRUE; break; } } fclose($handle); if ($valid !== false){ $buyWith = intval($_GET['buyWith']); $transWith = intval($_GET['transWith']); $Amount = intval($_GET['Amount']); $roleId = intval($_GET['roleid']); if (($buyWith > 0) && ($transWith > 0) && ($Amount > 0) && ($roleId > 0) && ($iArr[11] >= $Amount)){ $sockres = @FSockOpen($DB_Host, $ServerPort, $errno, $errstr, 10); if (!$sockres){ echo"<script>parent.alert('Server is offline');</script>"; }else{ @FClose($sockres); //on $conn = new mysqli($DB_Host, $DB_User, $DB_Password, $DB_Name); if (($conn->connect_error)||(mysqli_connect_error())) { echo"<script>parent.alert('Cannot connect to mysql database');</script>"; }else{ include("./packet_class.php"); if ($buyWith == 1){ if (UserOnlineCheck($conn, $userid) == 0){ $GRoleData=GetRoleData($roleId); $gold=$GRoleData['pocket']['money']; echo"<script> parent.RMoney = parseInt('".$gold."', 10); parent.document.getElementById('Role_Gold').innerHTML = parent.RMoney; </script>"; $price = $iArr[0]*$Amount; if ($gold >= $price){ $GRoleData['pocket']['money']=$gold-$price; if ($transWith == 1){ //echo"<script>parent.MReady = false;</script>"; $expir = $iArr[14]; if ($expir>0){$expir=$expir+time();} $sent=false; echo"<script>alert('".PutRoleData($roleId, $GRoleData)."');</script>"; //PutRoleData($roleId, $GRoleData); /* if (SysSendMail($roleId, ("[SHOP]: ".$iArr[2]), ("Thank you for bought this item from web!"), $iArr[7], $Amount, $iArr[11], $iArr[15], $iArr[9], $expir, $iArr[12], $iArr[13], $iArr[8], 0) == 0){ echo"<script> parent.RMoney = parseInt('".$GRoleData['pocket']['money']."', 10); parent.document.getElementById('Role_Gold').innerHTML = parent.RMoney; parent.document.getElementById('BuyWindow').style.display='none'; parent.alert('Mail sent with your item!'); parent.MReady = true; parent.SelectIcon(0); </script>"; $sent=true; PutRoleData($roleId, $GRoleData); }else{ echo"<script> parent.alert('Error, cannot send mail!'); parent.document.getElementById('BuyWindow').style.display='none'; parent.MReady = true; parent.SelectIcon(0); </script>"; } */ } }else{ echo"<script>parent.alert('Insufficient point (".($price-$WPoint)." missing)!');</script>"; } }else{ echo"<script>parent.alert('Try again after you log out from game!');</script>"; } }else if ($buyWith == 2){ //check user point & gold $query = "SELECT VotePoint FROM users WHERE ID=?"; $statement = $conn->prepare($query); $statement->bind_param('i', $userid); $statement->execute(); $statement->bind_result($LWebPoint); $statement->store_result(); $result = $statement->num_rows; if (!$result) { exit; }else{ while($statement->fetch()) { $WPoint=$LWebPoint; } $price = $iArr[1]*$Amount; if ($WPoint >= $price){ $NPoint = $WPoint - $price; if ($transWith == 1){ echo"<script>parent.MReady = false;</script>"; $expir = $iArr[14]; if ($expir>0){$expir=$expir+time();} if (SysSendMail($roleId, ("[SHOP]: ".$iArr[2]), ("Thank you for bought this item from web!"), $iArr[7], $Amount, $iArr[11], $iArr[15], $iArr[9], $expir, $iArr[12], $iArr[13], $iArr[8], 0) == 0){ $query = "UPDATE users SET VotePoint = $NPoint WHERE ID=?"; $stmt = $conn->prepare($query); $stmt->bind_param('i', $userid); $stmt->execute(); $stmt->close(); echo"<script> parent.UPoint = parseInt('".$NPoint."', 10); parent.document.getElementById('User_Point').innerHTML = parent.UPoint; parent.document.getElementById('BuyWindow').style.display='none'; parent.alert('Mail sent with your item!'); parent.MReady = true; parent.SelectIcon(0); </script>"; }else{ echo"<script> parent.alert('Error, cannot send mail!'); parent.document.getElementById('BuyWindow').style.display='none'; parent.SelectIcon(0); parent.MReady = true; </script>"; } } }else{ echo"<script>parent.alert('Insufficient point (".($price-$WPoint)." missing)!');</script>"; } } } } $conn->close(); } } }else{ echo"<script>parent.alert('Item not found!');</script>"; } } } }}

Get Role Function
function GetRoleData($id){ $GetRoleBase = new WritePacket(); $GetRoleBase -> WriteUInt32(-1); // always $GetRoleBase -> WriteUInt32($id); // roleid $GetRoleBase -> Pack(0x1F43); // opcode 0xBC5 0x1F43 if (!$GetRoleBase -> Send("localhost", 29400)) // send to gamedbd return; $GetRoleBase_Re = new ReadPacket($GetRoleBase); // reading packet from stream $packetinfo = $GetRoleBase_Re -> ReadPacketInfo(); // read opcode and length $GetRoleBase_Re -> ReadUInt32(); // always $GetRoleBase_Re -> ReadUInt32(); // retcode $GRoleData['base']['version'] = $GetRoleBase_Re -> ReadUByte(); $GRoleData['base']['id'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['base']['name'] = $GetRoleBase_Re -> ReadUString(); $GRoleData['base']['race'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['base']['cls'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['base']['gender'] = $GetRoleBase_Re -> ReadUByte(); $GRoleData['base']['custom_data'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['base']['config_data'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['base']['custom_stamp'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['base']['status'] = $GetRoleBase_Re -> ReadUByte(); $GRoleData['base']['delete_time'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['base']['create_time'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['base']['lastlogin_time'] = $GetRoleBase_Re -> ReadUInt32(); $forbidcount = $GetRoleBase_Re -> ReadCUInt32(); for ($i = 0; $i < $forbidcount; $i++){ $GRoleForbid['type'] = $GetRoleBase_Re -> ReadUByte(); $GRoleForbid['time'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleForbid['createtime'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleForbid['reason'] = $GetRoleBase_Re -> ReadUString(); $GRoleData['base']['forbid'][] = $GRoleForbid; } $GRoleData['base']['help_states'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['base']['spouse'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['base']['userid'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['base']['cross_data'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['base']['reserved2'] = $GetRoleBase_Re -> ReadUByte(); $GRoleData['base']['reserved3'] = $GetRoleBase_Re -> ReadUByte(); $GRoleData['base']['reserved4'] = $GetRoleBase_Re -> ReadUByte(); $GRoleData['status']['version'] = $GetRoleBase_Re -> ReadUByte();//ReadCUInt32(); $GRoleData['status']['level'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['status']['level2'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['status']['exp'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['status']['sp'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['status']['pp'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['status']['hp'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['status']['mp'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['status']['posx'] = $GetRoleBase_Re -> ReadFloat(); $GRoleData['status']['posy'] = $GetRoleBase_Re -> ReadFloat(); $GRoleData['status']['posz'] = $GetRoleBase_Re -> ReadFloat(); $GRoleData['status']['worldtag'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['status']['invader_state'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['status']['invader_time'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['status']['pariah_time'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['status']['reputation'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['status']['custom_status'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['filter_data'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['charactermode'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['instancekeylist'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['dbltime_expire'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['status']['dbltime_mode'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['status']['dbltime_begin'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['status']['dbltime_used'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['status']['dbltime_max'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['status']['time_used'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['status']['dbltime_data'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['storesize'] = $GetRoleBase_Re -> ReadUInt16(); $GRoleData['status']['petcorral'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['property'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['var_data'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['skills'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['storehousepasswd'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['waypointlist'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['coolingtime'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['npc_relation'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['multi_exp_ctrl'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['storage_task'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['faction_contrib'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['force_data'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['online_award'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['profit_time_data'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['country_data'] = $GetRoleBase_Re -> ReadOctets(); //ignored line if v1.5.1 //$GRoleData['status']['king_data'] = $GetRoleBase_Re -> ReadOctets(); //$GRoleData['status']['meridian_data'] = $GetRoleBase_Re -> ReadOctets(); //$GRoleData['status']['extraprop'] = $GetRoleBase_Re -> ReadOctets(); //$GRoleData['status']['title_data'] = $GetRoleBase_Re -> ReadOctets(); //$GRoleData['status']['reincarnation_data'] = $GetRoleBase_Re -> ReadOctets(); //$GRoleData['status']['realm_data'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['status']['reserved4'] = $GetRoleBase_Re -> ReadUInt32(); //ReadUByte(); if 1.5.1 not sure $GRoleData['status']['reserved5'] = $GetRoleBase_Re -> ReadUInt32(); //ReadUByte(); if 1.5.1 not sure $GRoleData['pocket']['capacity'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['pocket']['timestamp'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['pocket']['money'] = $GetRoleBase_Re -> ReadUInt32(); $inventorycount = $GetRoleBase_Re -> ReadCUInt32(); for ($i = 0; $i < $inventorycount; $i++){ $GRoleInventory['id'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['pos'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['count'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['maxcount'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['data'] = $GetRoleBase_Re -> ReadOctets(); $GRoleInventory['proctype'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['expire_date'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['guid1'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['guid2'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['mask'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['pocket']['items'][] = $GRoleInventory; } $GRoleData['pocket']['reserved1'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['pocket']['reserved2'] = $GetRoleBase_Re -> ReadUInt32(); $inventorycount1 = $GetRoleBase_Re -> ReadCUInt32(); for ($i = 0; $i < $inventorycount1; $i++){ $GRoleInventory['id'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['pos'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['count'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['maxcount'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['data'] = $GetRoleBase_Re -> ReadOctets(); $GRoleInventory['proctype'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['expire_date'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['guid1'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['guid2'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['mask'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['equipment']['inv'][] = $GRoleInventory; } $GRoleData['storehouse']['capacity'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['storehouse']['money'] = $GetRoleBase_Re -> ReadUInt32(); $storehousecount = $GetRoleBase_Re -> ReadUInt16();//ReadCUInt32(); for 1.5.1 need 32 for ($i = 0; $i < $storehousecount; $i++){ $GRoleInventory['id'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['pos'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['count'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['maxcount'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['data'] = $GetRoleBase_Re -> ReadOctets(); $GRoleInventory['proctype'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['expire_date'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['guid1'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['guid2'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['mask'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['storehouse']['items'][] = $GRoleInventory; } $GRoleData['storehouse']['size1'] = $GetRoleBase_Re -> ReadUByte(); $GRoleData['storehouse']['size2'] = $GetRoleBase_Re -> ReadUByte(); $GRoleData['storehouse']['reserved'] = $GetRoleBase_Re -> ReadCUInt32(); //this line i added for 1.4.2, for 1.5.1 u can remove it $dresscount = $GetRoleBase_Re ->ReadUInt16();// ReadCUInt32(); for 1.5.1 need 32 for ($i = 0; $i < $dresscount; $i++){ $GRoleInventory['id'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['pos'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['count'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['maxcount'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['data'] = $GetRoleBase_Re -> ReadOctets(); $GRoleInventory['proctype'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['expire_date'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['guid1'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['guid2'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['mask'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['storehouse']['dress'][] = $GRoleInventory; } $materialcount = $GetRoleBase_Re -> ReadUInt16();//ReadCUInt32(); for 1.5.1 need 32 for ($i = 0; $i < $materialcount; $i++){ $GRoleInventory['id'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['pos'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['count'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['maxcount'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['data'] = $GetRoleBase_Re -> ReadOctets(); $GRoleInventory['proctype'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['expire_date'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['guid1'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['guid2'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['mask'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['storehouse']['material'][] = $GRoleInventory; } //$GRoleData['storehouse']['reserved'] = $GetRoleBase_Re -> ReadUByte(); //these for v1.5.1 //$generalcardcount = $GetRoleBase_Re -> ReadCUInt32(); //for ($i = 0; $i < $generalcardcount; $i++){ //$GRoleInventory['id'] = $GetRoleBase_Re -> ReadUInt32(); //$GRoleInventory['pos'] = $GetRoleBase_Re -> ReadUInt32(); //$GRoleInventory['count'] = $GetRoleBase_Re -> ReadUInt32(); //$GRoleInventory['maxcount'] = $GetRoleBase_Re -> ReadUInt32(); //$GRoleInventory['data'] = $GetRoleBase_Re -> ReadOctets(); //$GRoleInventory['proctype'] = $GetRoleBase_Re -> ReadUInt32(); //$GRoleInventory['expire_date'] = $GetRoleBase_Re -> ReadUInt32(); //$GRoleInventory['guid1'] = $GetRoleBase_Re -> ReadUInt32(); //$GRoleInventory['guid2'] = $GetRoleBase_Re -> ReadUInt32(); //$GRoleInventory['mask'] = $GetRoleBase_Re -> ReadUInt32(); //$GRoleData['storehouse']['generalcard'][] = $GRoleInventory; //} $GRoleData['task']['task_data'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['task']['task_complete'] = $GetRoleBase_Re -> ReadOctets(); $GRoleData['task']['task_finishtime'] = $GetRoleBase_Re -> ReadOctets(); $taskinventorycount = $GetRoleBase_Re -> ReadCUInt32(); for ($i = 0; $i < $taskinventorycount; $i++){ $GRoleInventory['id'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['pos'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['count'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['maxcount'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['data'] = $GetRoleBase_Re -> ReadOctets(); $GRoleInventory['proctype'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['expire_date'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['guid1'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['guid2'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleInventory['mask'] = $GetRoleBase_Re -> ReadUInt32(); $GRoleData['task']['task_inventory'][] = $GRoleInventory; } return $GRoleData;}

Put Role Function
function PutRoleData($roleid, $GRoleData){ $PutRoleData = new WritePacket(); $PutRoleData -> WriteUInt32(-1); $PutRoleData -> WriteUInt32($roleid); $PutRoleData -> WriteUByte(1); // overwrite $PutRoleData -> WriteUByte($GRoleData['base']['version']); $PutRoleData -> WriteUInt32($GRoleData['base']['id']); $PutRoleData -> WriteUString($GRoleData['base']['name']); $PutRoleData -> WriteUInt32($GRoleData['base']['race']); $PutRoleData -> WriteUInt32($GRoleData['base']['cls']); $PutRoleData -> WriteUByte($GRoleData['base']['gender']); $PutRoleData -> WriteOctets($GRoleData['base']['custom_data']); $PutRoleData -> WriteOctets($GRoleData['base']['config_data']); $PutRoleData -> WriteUInt32($GRoleData['base']['custom_stamp']); $PutRoleData -> WriteUByte($GRoleData['base']['status']); $PutRoleData -> WriteUInt32($GRoleData['base']['delete_time']); $PutRoleData -> WriteUInt32($GRoleData['base']['create_time']); $PutRoleData -> WriteUInt32($GRoleData['base']['lastlogin_time']); $PutRoleData -> WriteCUInt32(count($GRoleData['base']['forbid'])); foreach ($data['base']['forbid'] as $value){ $PutRoleData -> WriteUByte($value['type']); $PutRoleData -> WriteUInt32($value['time']); $PutRoleData -> WriteUInt32($value['createtime']); $PutRoleData -> WriteUString($value['reason']); } $PutRoleData -> WriteOctets($GRoleData['base']['help_states']); $PutRoleData -> WriteUInt32($GRoleData['base']['spouse']); $PutRoleData -> WriteUInt32($GRoleData['base']['userid']); $PutRoleData -> WriteOctets($GRoleData['base']['cross_data']); $PutRoleData -> WriteUByte($GRoleData['base']['reserved2']); $PutRoleData -> WriteUByte($GRoleData['base']['reserved3']); $PutRoleData -> WriteUByte($GRoleData['base']['reserved4']); $PutRoleData -> WriteUByte($GRoleData['status']['version']); $PutRoleData -> WriteUInt32($GRoleData['status']['level']); $PutRoleData -> WriteUInt32($GRoleData['status']['level2']); $PutRoleData -> WriteUInt32($GRoleData['status']['exp']); $PutRoleData -> WriteUInt32($GRoleData['status']['sp']); $PutRoleData -> WriteUInt32($GRoleData['status']['pp']); $PutRoleData -> WriteUInt32($GRoleData['status']['hp']); $PutRoleData -> WriteUInt32($GRoleData['status']['mp']); $PutRoleData -> WriteFloat($GRoleData['status']['posx']); $PutRoleData -> WriteFloat($GRoleData['status']['posy']); $PutRoleData -> WriteFloat($GRoleData['status']['posz']); $PutRoleData -> WriteUInt32($GRoleData['status']['worldtag']); $PutRoleData -> WriteUInt32($GRoleData['status']['invader_state']); $PutRoleData -> WriteUInt32($GRoleData['status']['invader_time']); $PutRoleData -> WriteUInt32($GRoleData['status']['pariah_time']); $PutRoleData -> WriteUInt32($GRoleData['status']['reputation']); $PutRoleData -> WriteOctets($GRoleData['status']['custom_status']); $PutRoleData -> WriteOctets($GRoleData['status']['filter_data']); $PutRoleData -> WriteOctets($GRoleData['status']['charactermode']); $PutRoleData -> WriteOctets($GRoleData['status']['instancekeylist']); $PutRoleData -> WriteUInt32($GRoleData['status']['dbltime_expire']); $PutRoleData -> WriteUInt32($GRoleData['status']['dbltime_mode']); $PutRoleData -> WriteUInt32($GRoleData['status']['dbltime_begin']); $PutRoleData -> WriteUInt32($GRoleData['status']['dbltime_used']); $PutRoleData -> WriteUInt32($GRoleData['status']['dbltime_max']); $PutRoleData -> WriteUInt32($GRoleData['status']['time_used']); $PutRoleData -> WriteOctets($GRoleData['status']['dbltime_data']); $PutRoleData -> WriteUInt16($GRoleData['status']['storesize']); $PutRoleData -> WriteOctets($GRoleData['status']['petcorral']); $PutRoleData -> WriteOctets($GRoleData['status']['property']); $PutRoleData -> WriteOctets($GRoleData['status']['var_data']); $PutRoleData -> WriteOctets($GRoleData['status']['skills']); $PutRoleData -> WriteOctets($GRoleData['status']['storehousepasswd']); $PutRoleData -> WriteOctets($GRoleData['status']['waypointlist']); $PutRoleData -> WriteOctets($GRoleData['status']['coolingtime']); $PutRoleData -> WriteOctets($GRoleData['status']['npc_relation']); $PutRoleData -> WriteOctets($GRoleData['status']['multi_exp_ctrl']); $PutRoleData -> WriteOctets($GRoleData['status']['storage_task']); $PutRoleData -> WriteOctets($GRoleData['status']['faction_contrib']); $PutRoleData -> WriteOctets($GRoleData['status']['force_data']); $PutRoleData -> WriteOctets($GRoleData['status']['online_award']); $PutRoleData -> WriteOctets($GRoleData['status']['profit_time_data']); $PutRoleData -> WriteOctets($GRoleData['status']['country_data']); //$PutRoleData -> WriteOctets($GRoleData['status']['king_data']); //$PutRoleData -> WriteOctets($GRoleData['status']['meridian_data']); //$PutRoleData -> WriteOctets($GRoleData['status']['extraprop']); //$PutRoleData -> WriteOctets($GRoleData['status']['title_data']); //$PutRoleData -> WriteOctets($GRoleData['status']['reincarnation_data']); //$PutRoleData -> WriteOctets($GRoleData['status']['realm_data']); $PutRoleData -> WriteUInt32($GRoleData['status']['reserved4']); //WriteUByte(); if 1.5.1 not sure $PutRoleData -> WriteUInt32($GRoleData['status']['reserved5']); //WriteUByte(); if 1.5.1 not sure $PutRoleData -> WriteUInt32($GRoleData['pocket']['capacity']); $PutRoleData -> WriteUInt32($GRoleData['pocket']['timestamp']); $PutRoleData -> WriteUInt32($GRoleData['pocket']['money']); $PutRoleData -> WriteCUInt32(count($GRoleData['pocket']['items'])); foreach ($data['pocket']['items'] as $value){ $PutRoleData -> WriteUInt32($value['id']); $PutRoleData -> WriteUInt32($value['pos']); $PutRoleData -> WriteUInt32($value['count']); $PutRoleData -> WriteUInt32($value['maxcount']); $PutRoleData -> WriteOctets($value['data']); $PutRoleData -> WriteUInt32($value['proctype']); $PutRoleData -> WriteUInt32($value['expire_date']); $PutRoleData -> WriteUInt32($value['guid1']); $PutRoleData -> WriteUInt32($value['guid2']); $PutRoleData -> WriteUInt32($value['mask']); } $PutRoleData -> WriteUInt32($GRoleData['pocket']['reserved1']); $PutRoleData -> WriteUInt32($GRoleData['pocket']['reserved2']); $PutRoleData -> WriteCUInt32(count($GRoleData['equipment']['inv'])); foreach ($data['equipment']['inv'] as $value){ $PutRoleData -> WriteUInt32($value['id']); $PutRoleData -> WriteUInt32($value['pos']); $PutRoleData -> WriteUInt32($value['count']); $PutRoleData -> WriteUInt32($value['maxcount']); $PutRoleData -> WriteOctets($value['data']); $PutRoleData -> WriteUInt32($value['proctype']); $PutRoleData -> WriteUInt32($value['expire_date']); $PutRoleData -> WriteUInt32($value['guid1']); $PutRoleData -> WriteUInt32($value['guid2']); $PutRoleData -> WriteUInt32($value['mask']); } $PutRoleData -> WriteUInt32($GRoleData['storehouse']['capacity']); $PutRoleData -> WriteUInt32($GRoleData['storehouse']['money']); $PutRoleData -> WriteCUInt16(count($GRoleData['storehouse']['items'])); //WriteCUInt32(); for 1.5.1 need 32 foreach ($data['storehouse']['items'] as $value){ $PutRoleData -> WriteUInt32($value['id']); $PutRoleData -> WriteUInt32($value['pos']); $PutRoleData -> WriteUInt32($value['count']); $PutRoleData -> WriteUInt32($value['maxcount']); $PutRoleData -> WriteOctets($value['data']); $PutRoleData -> WriteUInt32($value['proctype']); $PutRoleData -> WriteUInt32($value['expire_date']); $PutRoleData -> WriteUInt32($value['guid1']); $PutRoleData -> WriteUInt32($value['guid2']); $PutRoleData -> WriteUInt32($value['mask']); } $PutRoleData -> WriteUByte($GRoleData['storehouse']['size1']); $PutRoleData -> WriteUByte($GRoleData['storehouse']['size2']); $PutRoleData -> WriteCUInt32($GRoleData['storehouse']['reserved']); //this line i added for 1.4.2, for 1.5.1 u can remove it $PutRoleData -> WriteCUInt16(count($GRoleData['storehouse']['dress'])); // ReadCUInt32(); for 1.5.1 need 32 foreach ($data['storehouse']['dress'] as $value){ $PutRoleData -> WriteUInt32($value['id']); $PutRoleData -> WriteUInt32($value['pos']); $PutRoleData -> WriteUInt32($value['count']); $PutRoleData -> WriteUInt32($value['maxcount']); $PutRoleData -> WriteOctets($value['data']); $PutRoleData -> WriteUInt32($value['proctype']); $PutRoleData -> WriteUInt32($value['expire_date']); $PutRoleData -> WriteUInt32($value['guid1']); $PutRoleData -> WriteUInt32($value['guid2']); $PutRoleData -> WriteUInt32($value['mask']); } $PutRoleData -> WriteCUInt16(count($GRoleData['storehouse']['material']));//ReadCUInt32(); for 1.5.1 need 32 foreach ($data['storehouse']['material'] as $value) { $PutRoleData -> WriteUInt32($value['id']); $PutRoleData -> WriteUInt32($value['pos']); $PutRoleData -> WriteUInt32($value['count']); $PutRoleData -> WriteUInt32($value['maxcount']); $PutRoleData -> WriteOctets($value['data']); $PutRoleData -> WriteUInt32($value['proctype']); $PutRoleData -> WriteUInt32($value['expire_date']); $PutRoleData -> WriteUInt32($value['guid1']); $PutRoleData -> WriteUInt32($value['guid2']); $PutRoleData -> WriteUInt32($value['mask']); } /* $PutRoleData -> WriteUByte($GRoleData['storehouse']['size3']); $PutRoleData -> WriteCUInt32(count($GRoleData['storehouse']['generalcard'])); foreach ($data['storehouse']['generalcard'] as $value) { $PutRoleData -> WriteUInt32($value['id']); $PutRoleData -> WriteUInt32($value['pos']); $PutRoleData -> WriteUInt32($value['count']); $PutRoleData -> WriteUInt32($value['maxcount']); $PutRoleData -> WriteOctets($value['data']); $PutRoleData -> WriteUInt32($value['proctype']); $PutRoleData -> WriteUInt32($value['expire_date']); $PutRoleData -> WriteUInt32($value['guid1']); $PutRoleData -> WriteUInt32($value['guid2']); $PutRoleData -> WriteUInt32($value['mask']); } */ //$PutRoleData -> WriteUInt16($GRoleData['storehouse']['reserved']); $PutRoleData -> WriteOctets($GRoleData['task']['task_data']); $PutRoleData -> WriteOctets($GRoleData['task']['task_complete']); $PutRoleData -> WriteOctets($GRoleData['task']['task_finishtime']); $PutRoleData -> WriteCUInt32(count($GRoleData['task']['task_inventory'])); foreach ($data['task']['task_inventory'] as $value) { $PutRoleData -> WriteUInt32($value['id']); $PutRoleData -> WriteUInt32($value['pos']); $PutRoleData -> WriteUInt32($value['count']); $PutRoleData -> WriteUInt32($value['maxcount']); $PutRoleData -> WriteOctets($value['data']); $PutRoleData -> WriteUInt32($value['proctype']); $PutRoleData -> WriteUInt32($value['expire_date']); $PutRoleData -> WriteUInt32($value['guid1']); $PutRoleData -> WriteUInt32($value['guid2']); $PutRoleData -> WriteUInt32($value['mask']); } $PutRoleData -> Pack(0x1F43); //0x1F42 return $PutRoleData -> Send("localhost", "29400");}
 
Banned
Banned
Joined
Jul 5, 2014
Messages
88
Reaction score
75
very nice addition, can't wait for this. ( gonna use it for my server )
 
Joined
Jul 17, 2007
Messages
665
Reaction score
104
well female/male fashion was ok but for test i changed the version but at mask i not changed, so its work with normal settings well

download link (atm only webpoint+mail sending need for buying items)


Screenshots
shadowvzs - PhP based pwAdmin - RaGEZONE Forums


shadowvzs - PhP based pwAdmin - RaGEZONE Forums

shadowvzs - PhP based pwAdmin - RaGEZONE Forums

shadowvzs - PhP based pwAdmin - RaGEZONE Forums
 
Last edited:
Joined
Jul 17, 2007
Messages
665
Reaction score
104
well i got no help but still continueing slowly the webshop/item builder in my pwadmin, here few screeny, ty to Astrelle card calculator i was able to implentant octet creator for cards with real like preview.

shadowvzs - PhP based pwAdmin - RaGEZONE Forums

shadowvzs - PhP based pwAdmin - RaGEZONE Forums
 
Back
Top