|
You last visited: Today at 14:47
Advertisement
item Position help me in it! :(
Discussion on item Position help me in it! :( within the CO2 Private Server forum part of the Conquer Online 2 category.
12/24/2014, 22:06
|
#1
|
elite*gold: 0
Join Date: Oct 2012
Posts: 43
Received Thanks: 3
|
item Position help me in it! :(
|
|
|
12/24/2014, 22:11
|
#2
|
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,380
|
Likely you're populating the equipment packet wrong.
In newer patch clients the server sends a list of UIDs to the client to tell them which items are equipped in which slots. You're likely writing the wrong equipment to the wrong offset if your right wep is showing as left and vice versa.
|
|
|
12/24/2014, 22:16
|
#3
|
elite*gold: 0
Join Date: Oct 2012
Posts: 43
Received Thanks: 3
|
I do not know if I'm asking too much ... but you could put how to fix it? thank if you can do this
|
|
|
12/24/2014, 22:26
|
#4
|
elite*gold: 0
Join Date: Oct 2006
Posts: 273
Received Thanks: 86
|
Quote:
Originally Posted by perfect0
I do not know if I'm asking too much ... but you could put how to fix it? thank if you can do this
|
Emm ... he ... kinda already did ?
|
|
|
12/25/2014, 02:04
|
#5
|
elite*gold: 0
Join Date: Jul 2008
Posts: 874
Received Thanks: 238
|
this could help
PHP Code:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Conquer_Online_Server.Client; using Conquer_Online_Server.Interfaces;
namespace Conquer_Online_Server.Network.GamePackets { public class ClientEquip : Interfaces.IPacket { private Byte[] mData;
public ClientEquip() { this.mData = new Byte[88 + 8]; Writer.WriteUInt16((UInt16)(this.mData.Length - 8), 0, mData); Writer.WriteUInt16((UInt16)1009, 2, mData); Writer.WriteUInt32((uint)Time32.timeGetTime().GetHashCode(), 4, mData); Writer.WriteUInt16(46, 16, mData); }
public ClientEquip(GameState c) { this.mData = new Byte[88 + 8]; Writer.WriteUInt16((UInt16)(this.mData.Length - 8), 0, mData); Writer.WriteUInt16((UInt16)1009, 2, mData); Writer.WriteUInt32((uint)Time32.timeGetTime().GetHashCode(), 4, mData); Writer.WriteUInt16(46, 16, mData);
DoEquips(c); }
public void DoEquips(GameState client) {
if (client.Equipment == null) return; ConquerItem[] Items = client.Equipment.Objects; Writer.WriteUInt32((uint)Time32.timeGetTime().GetHashCode(), 4, mData); Writer.WriteUInt32(client.Entity.UID, 8, mData); AlternativeEquipment = client.AlternateEquipment; foreach (var Item in client.Equipment.Objects) { if (Item == null) continue; if (Item.IsWorn) { switch (Item.Position) { #region Equipment case ConquerItem.Head: this.Helm = Item.UID; break; case ConquerItem.Necklace: this.Necklace = Item.UID; break; case ConquerItem.Armor: this.Armor = Item.UID; break; case ConquerItem.RightWeapon: this.RHand = Item.UID; break; case ConquerItem.LeftWeapon: this.LHand = Item.UID; break; case ConquerItem.Ring: this.Ring = Item.UID; break; case ConquerItem.Boots: this.Boots = Item.UID; break; case ConquerItem.Garment: this.Garment = Item.UID; break; case ConquerItem.Bottle: this.Talisman = Item.UID; break; case ConquerItem.RightWeaponAccessory: AccessoryOne = Item.UID; break; case ConquerItem.LeftWeaponAccessory: AccessoryTwo = Item.UID; break; case ConquerItem.SteedArmor: SteedArmor = Item.UID; break; case ConquerItem.SteedCrop: SteedTalisman = Item.UID; break; #endregion #region AlternateEquipment case ConquerItem.AlternateArmor: Armor = Item.UID; break; case ConquerItem.AlternateHead: Helm = Item.UID; break; case ConquerItem.AlternateNecklace: Necklace = Item.UID; break; case ConquerItem.AlternateRing: Ring = Item.UID; break; case ConquerItem.AlternateBoots: Boots = Item.UID; break; case ConquerItem.AlternateBottle: Talisman = Item.UID; break; case ConquerItem.AlternateGarment: this.Garment = Item.UID; break; case ConquerItem.AlternateLeftWeapon: LHand = Item.UID; break; case ConquerItem.AlternateRightWeapon: RHand = Item.UID; break; #endregion } } } if (!client.Equipment.Free((byte)ConquerItem.Armor)) if (client.ArmorLook > 0) Garment = Armor = uint.MaxValue - 1; if (!client.Equipment.Free((byte)ConquerItem.Head)) if (client.HeadgearLook > 0) Helm = uint.MaxValue - 2; if (!client.Equipment.Free((byte)ConquerItem.RightWeapon)) if (client.WeaponLook > 0) RHand = uint.MaxValue - 3; if (!client.Equipment.Free((byte)ConquerItem.LeftWeapon)) if (client.WeaponLook2 > 0) LHand = uint.MaxValue - 4; }
public void Deserialize(byte[] buffer) { this.mData = buffer; } public byte[] ToArray() { return mData; } public void Send(Client.GameState client) { client.Send(mData); }
public bool AlternativeEquipment { get { return this.mData[12] == 1 ? true : false; } set { this.mData[12] = value ? (byte)1 : (byte)0; } }
public UInt32 Helm { get { return BitConverter.ToUInt32(this.mData, 36); } set { Writer.WriteUInt32(value, 36, mData); } }
public UInt32 Necklace { get { return BitConverter.ToUInt32(this.mData, 40); } set { Writer.WriteUInt32(value, 40, mData); } }
public UInt32 Armor { get { return BitConverter.ToUInt32(this.mData, 44); } set { Writer.WriteUInt32(value, 44, mData); } }
public UInt32 RHand { get { return BitConverter.ToUInt32(this.mData, 48); } set { Writer.WriteUInt32(value, 48, mData); } }
public UInt32 LHand { get { return BitConverter.ToUInt32(this.mData, 52); } set { Writer.WriteUInt32(value, 52, mData); } }
public UInt32 Ring { get { return BitConverter.ToUInt32(this.mData, 56); } set { Writer.WriteUInt32(value, 56, mData); } }
public UInt32 Talisman { get { return BitConverter.ToUInt32(this.mData, 60); } set { Writer.WriteUInt32(value, 60, mData); } }
public UInt32 Boots { get { return BitConverter.ToUInt32(this.mData, 64); } set { Writer.WriteUInt32(value, 64, mData); } }
public UInt32 Garment { get { return BitConverter.ToUInt32(this.mData, 68); } set { Writer.WriteUInt32(value, 68, mData); } }
public uint AccessoryOne { get { return BitConverter.ToUInt32(mData, 72); } set { Writer.WriteUInt32(value, 72, mData); } }
public uint AccessoryTwo { get { return BitConverter.ToUInt32(mData, 76); } set { Writer.WriteUInt32(value, 76, mData); } } public UInt32 SteedArmor { get { return BitConverter.ToUInt32(this.mData, 80); } set { Writer.WriteUInt32(value, 80, mData); } }
public UInt32 SteedTalisman { get { return BitConverter.ToUInt32(this.mData, 84); } set { Writer.WriteUInt32(value, 84, mData); } } } }
|
|
|
12/25/2014, 11:05
|
#6
|
elite*gold: 0
Join Date: Feb 2014
Posts: 397
Received Thanks: 205
|
Quote:
Originally Posted by abdoumatrix
this could help
PHP Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Conquer_Online_Server.Client;
using Conquer_Online_Server.Interfaces;
namespace Conquer_Online_Server.Network.GamePackets
{
public class ClientEquip : Interfaces.IPacket
{
private Byte[] mData;
public ClientEquip()
{
this.mData = new Byte[88 + 8];
Writer.WriteUInt16((UInt16)(this.mData.Length - 8), 0, mData);
Writer.WriteUInt16((UInt16)1009, 2, mData);
Writer.WriteUInt32((uint)Time32.timeGetTime().GetHashCode(), 4, mData);
Writer.WriteUInt16((UInt16)0x2E, 16, mData);
}
public ClientEquip(GameState c)
{
this.mData = new Byte[88 + 8];
Writer.WriteUInt16((UInt16)(this.mData.Length - 8), 0, mData);
Writer.WriteUInt16((UInt16)1009, 2, mData);
Writer.WriteUInt32((uint)Time32.timeGetTime().GetHashCode(), 4, mData);
Writer.WriteUInt16((UInt16)0x2E, 16, mData);
DoEquips(c);
}
public void DoEquips(GameState client)
{
if (client.Equipment == null) return;
ConquerItem[] Items = client.Equipment.Objects;
Writer.WriteUInt32((uint)Time32.timeGetTime().GetHashCode(), 4, mData);
Writer.WriteUInt32(client.Entity.UID, 8, mData);
AlternativeEquipment = client.AlternateEquipment;
foreach (var Item in client.Equipment.Objects)
{
if (Item == null)
continue;
if (Item.IsWorn)
{
switch (Item.Position)
{
#region Equipment
case ConquerItem.Head:
this.Helm = Item.UID; break;
case ConquerItem.Necklace:
this.Necklace = Item.UID;
break;
case ConquerItem.Armor:
this.Armor = Item.UID;
break;
case ConquerItem.RightWeapon:
this.RHand = Item.UID;
break;
case ConquerItem.LeftWeapon:
this.LHand = Item.UID;
break;
case ConquerItem.Ring:
this.Ring = Item.UID;
break;
case ConquerItem.Boots:
this.Boots = Item.UID;
break;
case ConquerItem.Garment:
this.Garment = Item.UID;
break;
case ConquerItem.Bottle:
this.Talisman = Item.UID; break;
case ConquerItem.RightWeaponAccessory:
AccessoryOne = Item.UID;
break;
case ConquerItem.LeftWeaponAccessory:
AccessoryTwo = Item.UID;
break;
case ConquerItem.SteedArmor:
SteedArmor = Item.UID;
break;
case ConquerItem.SteedCrop:
SteedTalisman = Item.UID;
break;
#endregion
#region AlternateEquipment
case ConquerItem.AlternateArmor:
Armor = Item.UID;
break;
case ConquerItem.AlternateHead:
Helm = Item.UID;
break;
case ConquerItem.AlternateNecklace:
Necklace = Item.UID;
break;
case ConquerItem.AlternateRing:
Ring = Item.UID;
break;
case ConquerItem.AlternateBoots:
Boots = Item.UID;
break;
case ConquerItem.AlternateBottle:
Talisman = Item.UID;
break;
case ConquerItem.AlternateGarment:
this.Garment = Item.UID;
break;
case ConquerItem.AlternateLeftWeapon:
LHand = Item.UID;
break;
case ConquerItem.AlternateRightWeapon:
RHand = Item.UID;
break;
#endregion
}
}
}
if (!client.Equipment.Free((byte)ConquerItem.Armor)) if (client.ArmorLook > 0) Garment = Armor = uint.MaxValue - 1;
if (!client.Equipment.Free((byte)ConquerItem.Head)) if (client.HeadgearLook > 0) Helm = uint.MaxValue - 2;
if (!client.Equipment.Free((byte)ConquerItem.RightWeapon)) if (client.WeaponLook > 0) RHand = uint.MaxValue - 3;
if (!client.Equipment.Free((byte)ConquerItem.LeftWeapon)) if (client.WeaponLook2 > 0) LHand = uint.MaxValue - 4;
}
public void Deserialize(byte[] buffer) { this.mData = buffer; }
public byte[] ToArray()
{ return mData; }
public void Send(Client.GameState client) { client.Send(mData); }
public bool AlternativeEquipment
{
get { return this.mData[12] == 1 ? true : false; }
set { this.mData[12] = value ? (byte)1 : (byte)0; }
}
public UInt32 Helm
{
get { return BitConverter.ToUInt32(this.mData, 36); }
set { Writer.WriteUInt32(value, 36, mData); }
}
public UInt32 Necklace
{
get { return BitConverter.ToUInt32(this.mData, 40); }
set { Writer.WriteUInt32(value, 40, mData); }
}
public UInt32 Armor
{
get { return BitConverter.ToUInt32(this.mData, 44); }
set { Writer.WriteUInt32(value, 44, mData); }
}
public UInt32 RHand
{
get { return BitConverter.ToUInt32(this.mData, 48); }
set { Writer.WriteUInt32(value, 48, mData); }
}
public UInt32 LHand
{
get { return BitConverter.ToUInt32(this.mData, 52); }
set { Writer.WriteUInt32(value, 52, mData); }
}
public UInt32 Ring
{
get { return BitConverter.ToUInt32(this.mData, 56); }
set { Writer.WriteUInt32(value, 56, mData); }
}
public UInt32 Talisman
{
get { return BitConverter.ToUInt32(this.mData, 60); }
set { Writer.WriteUInt32(value, 60, mData); }
}
public UInt32 Boots
{
get { return BitConverter.ToUInt32(this.mData, 64); }
set { Writer.WriteUInt32(value, 64, mData); }
}
public UInt32 Garment
{
get { return BitConverter.ToUInt32(this.mData, 68); }
set { Writer.WriteUInt32(value, 68, mData); }
}
public uint AccessoryOne
{
get { return BitConverter.ToUInt32(mData, 72); }
set { Writer.WriteUInt32(value, 72, mData); }
}
public uint AccessoryTwo
{
get { return BitConverter.ToUInt32(mData, 76); }
set { Writer.WriteUInt32(value, 76, mData); }
}
public UInt32 SteedArmor
{
get { return BitConverter.ToUInt32(this.mData, 80); }
set { Writer.WriteUInt32(value, 80, mData); }
}
public UInt32 SteedTalisman
{
get { return BitConverter.ToUInt32(this.mData, 84); }
set { Writer.WriteUInt32(value, 84, mData); }
}
}
}
|
I don't understand why some of your integers are written as hex and some are written as actual numerals. You're making typecasting stupid. And un needed.
|
|
|
12/25/2014, 14:48
|
#7
|
elite*gold: 0
Join Date: Jul 2008
Posts: 874
Received Thanks: 238
|
0x2e = 46
|
|
|
12/26/2014, 17:52
|
#8
|
elite*gold: 130
Join Date: Oct 2007
Posts: 1,655
Received Thanks: 706
|
Quote:
Originally Posted by abdoumatrix
0x2e = 46
|
He meant to say that it isn't consistent. (I just hope you know what consistent means at this point)
|
|
|
12/27/2014, 13:03
|
#9
|
elite*gold: 0
Join Date: Oct 2012
Posts: 43
Received Thanks: 3
|
Quote:
Originally Posted by abdoumatrix
this could help
PHP Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Conquer_Online_Server.Client;
using Conquer_Online_Server.Interfaces;
namespace Conquer_Online_Server.Network.GamePackets
{
public class ClientEquip : Interfaces.IPacket
{
private Byte[] mData;
public ClientEquip()
{
this.mData = new Byte[88 + 8];
Writer.WriteUInt16((UInt16)(this.mData.Length - 8), 0, mData);
Writer.WriteUInt16((UInt16)1009, 2, mData);
Writer.WriteUInt32((uint)Time32.timeGetTime().GetHashCode(), 4, mData);
Writer.WriteUInt16(46, 16, mData);
}
public ClientEquip(GameState c)
{
this.mData = new Byte[88 + 8];
Writer.WriteUInt16((UInt16)(this.mData.Length - 8), 0, mData);
Writer.WriteUInt16((UInt16)1009, 2, mData);
Writer.WriteUInt32((uint)Time32.timeGetTime().GetHashCode(), 4, mData);
Writer.WriteUInt16(46, 16, mData);
DoEquips(c);
}
public void DoEquips(GameState client)
{
if (client.Equipment == null) return;
ConquerItem[] Items = client.Equipment.Objects;
Writer.WriteUInt32((uint)Time32.timeGetTime().GetHashCode(), 4, mData);
Writer.WriteUInt32(client.Entity.UID, 8, mData);
AlternativeEquipment = client.AlternateEquipment;
foreach (var Item in client.Equipment.Objects)
{
if (Item == null)
continue;
if (Item.IsWorn)
{
switch (Item.Position)
{
#region Equipment
case ConquerItem.Head:
this.Helm = Item.UID; break;
case ConquerItem.Necklace:
this.Necklace = Item.UID;
break;
case ConquerItem.Armor:
this.Armor = Item.UID;
break;
case ConquerItem.RightWeapon:
this.RHand = Item.UID;
break;
case ConquerItem.LeftWeapon:
this.LHand = Item.UID;
break;
case ConquerItem.Ring:
this.Ring = Item.UID;
break;
case ConquerItem.Boots:
this.Boots = Item.UID;
break;
case ConquerItem.Garment:
this.Garment = Item.UID;
break;
case ConquerItem.Bottle:
this.Talisman = Item.UID; break;
case ConquerItem.RightWeaponAccessory:
AccessoryOne = Item.UID;
break;
case ConquerItem.LeftWeaponAccessory:
AccessoryTwo = Item.UID;
break;
case ConquerItem.SteedArmor:
SteedArmor = Item.UID;
break;
case ConquerItem.SteedCrop:
SteedTalisman = Item.UID;
break;
#endregion
#region AlternateEquipment
case ConquerItem.AlternateArmor:
Armor = Item.UID;
break;
case ConquerItem.AlternateHead:
Helm = Item.UID;
break;
case ConquerItem.AlternateNecklace:
Necklace = Item.UID;
break;
case ConquerItem.AlternateRing:
Ring = Item.UID;
break;
case ConquerItem.AlternateBoots:
Boots = Item.UID;
break;
case ConquerItem.AlternateBottle:
Talisman = Item.UID;
break;
case ConquerItem.AlternateGarment:
this.Garment = Item.UID;
break;
case ConquerItem.AlternateLeftWeapon:
LHand = Item.UID;
break;
case ConquerItem.AlternateRightWeapon:
RHand = Item.UID;
break;
#endregion
}
}
}
if (!client.Equipment.Free((byte)ConquerItem.Armor)) if (client.ArmorLook > 0) Garment = Armor = uint.MaxValue - 1;
if (!client.Equipment.Free((byte)ConquerItem.Head)) if (client.HeadgearLook > 0) Helm = uint.MaxValue - 2;
if (!client.Equipment.Free((byte)ConquerItem.RightWeapon)) if (client.WeaponLook > 0) RHand = uint.MaxValue - 3;
if (!client.Equipment.Free((byte)ConquerItem.LeftWeapon)) if (client.WeaponLook2 > 0) LHand = uint.MaxValue - 4;
}
public void Deserialize(byte[] buffer) { this.mData = buffer; }
public byte[] ToArray()
{ return mData; }
public void Send(Client.GameState client) { client.Send(mData); }
public bool AlternativeEquipment
{
get { return this.mData[12] == 1 ? true : false; }
set { this.mData[12] = value ? (byte)1 : (byte)0; }
}
public UInt32 Helm
{
get { return BitConverter.ToUInt32(this.mData, 36); }
set { Writer.WriteUInt32(value, 36, mData); }
}
public UInt32 Necklace
{
get { return BitConverter.ToUInt32(this.mData, 40); }
set { Writer.WriteUInt32(value, 40, mData); }
}
public UInt32 Armor
{
get { return BitConverter.ToUInt32(this.mData, 44); }
set { Writer.WriteUInt32(value, 44, mData); }
}
public UInt32 RHand
{
get { return BitConverter.ToUInt32(this.mData, 48); }
set { Writer.WriteUInt32(value, 48, mData); }
}
public UInt32 LHand
{
get { return BitConverter.ToUInt32(this.mData, 52); }
set { Writer.WriteUInt32(value, 52, mData); }
}
public UInt32 Ring
{
get { return BitConverter.ToUInt32(this.mData, 56); }
set { Writer.WriteUInt32(value, 56, mData); }
}
public UInt32 Talisman
{
get { return BitConverter.ToUInt32(this.mData, 60); }
set { Writer.WriteUInt32(value, 60, mData); }
}
public UInt32 Boots
{
get { return BitConverter.ToUInt32(this.mData, 64); }
set { Writer.WriteUInt32(value, 64, mData); }
}
public UInt32 Garment
{
get { return BitConverter.ToUInt32(this.mData, 68); }
set { Writer.WriteUInt32(value, 68, mData); }
}
public uint AccessoryOne
{
get { return BitConverter.ToUInt32(mData, 72); }
set { Writer.WriteUInt32(value, 72, mData); }
}
public uint AccessoryTwo
{
get { return BitConverter.ToUInt32(mData, 76); }
set { Writer.WriteUInt32(value, 76, mData); }
}
public UInt32 SteedArmor
{
get { return BitConverter.ToUInt32(this.mData, 80); }
set { Writer.WriteUInt32(value, 80, mData); }
}
public UInt32 SteedTalisman
{
get { return BitConverter.ToUInt32(this.mData, 84); }
set { Writer.WriteUInt32(value, 84, mData); }
}
}
}
|
Work fine thx
|
|
|
 |
Similar Threads
|
Item Position on Inventory
04/25/2013 - Flyff Private Server - 2 Replies
anyone can help me on how to fix the position of the item on Inventory
Here's the picture:
http://img7.imageshack.us/img7/94/kantot.png
Thanks in Advance :handsdown: :handsdown:
|
[Suche] Komplette item.eix/epk, icon.eix/epk, item proto und item list
12/25/2010 - Metin2 Private Server - 6 Replies
Hey =)
Wie die Überschrift schon sagt, suche ich eine komplette item.eix/epk, icon.eix/epk, item proto und item list am liebsten noch von den Waffen von .darki und den ganzen neuen Rüstungen/Schilden/Helmen, da ich überhaupt nicht weiß wie man dass zB mit der item proto macht und wenn ich sie einfach nur ersetze, wie zB durch die "Waffen" item proto von .darki sind die ganzen neuen Rüstungen weg ....
Ich hoffe irgendjemand könnte das machen, weil es bestimmt nicht nur für mich hilfreich ist...
|
[Request]Getting item info of an item on a position
06/02/2009 - CO2 Private Server - 0 Replies
I can`t figure this out. I`m using CoEmuV2, btw. I thought that it could be done with SQL but... I suck at SQL ^.^. Sooo... could anyone help me out?
I`m trying to get the item information (level, +, quality, etc.) on an Equipement position, like 4 (Right Hand).
|
item position tauschen
08/05/2008 - Kal Online - 27 Replies
wie kann ich die item slots untereinander tauwcne sprich slot 1 rev stones slot 6 meds wie kann ich die tauschen per uce???
|
All times are GMT +1. The time now is 14:48.
|
|