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!

5.0 Araz Titem.tcd editor

Newbie Spellweaver
Joined
Jun 16, 2021
Messages
27
Reaction score
18
Hello i made Titem.tcd editor for Araz file according to this guide https://forum.ragezone.com/threads/how-to-create-a-tcd-editor-step-by-step-tutorial.1152412/. And i compiled it without any errors. But i have problem with loading data. When i load data, the program stop work. Can someone help me? I share my source code here:
Took a quick look at the provided source and there are a few errors I could spot.
1.You didn't override the ReadString() function in your "FSBinaryReader.cs"
2.You're not loading the whole structure of 5.0 TItem.tcd (you missed a few "filler" bytes named "bla1" and DWORD "dwNIU")
3.The way you load floats is unnecessary just use "ReadSingle()" instead
 
Upvote 0
Newbie Spellweaver
Joined
Feb 9, 2019
Messages
16
Reaction score
0
Took a quick look at the provided source and there are a few errors I could spot.
1.You didn't override the ReadString() function in your "FSBinaryReader.cs"
2.You're not loading the whole structure of 5.0 TItem.tcd (you missed a few "filler" bytes named "bla1" and DWORD "dwNIU")
3.The way you load floats is unnecessary just use "ReadSingle()" instead
Hello thank you for your answer. This is my first TCD editor and i dont have any experience with coding. So i make some mistakes.
ok....So i repair FSBinaryReader.cs like this:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Reflection.Metadata.Ecma335;

namespace WinFormsApp1
{
    class FourStoryBinaryReader : BinaryReader
    {

        public FourStoryBinaryReader(Stream input) : base(input)
        {
        }
        public override string ReadString()
        {
            Byte[] StringB = new byte[base.ReadUInt16()];
            for (int i = 0; i < StringB.Length; i++)
            {
                StringB[i] = base.ReadByte();
            }
            return System.Text.Encoding.Default.GetString(StringB);
        }
    }
}
In second part... do you mean this code?:
Code:
        private void safe(Stream s)
        {
            FourStoryBinaryWriter bw = new FourStoryBinaryWriter(s);
            bw.Write(Convert.ToUInt16(l.Count));
            for (int i = 0; i < l.Count; i++)
            {
                bw.Write(l[i].ItemID);
                bw.Write("String");
            }
        }
bcs i trully forgot complete this side of code, so next thank you xD
And the third part what do you mean? this?:
Code:
private void load(Stream s)
{
    FourStoryBinaryReader br = new FourStoryBinaryReader(s);
    UInt16 count = br.ReadUInt16();
    for (int i = 0; i < count; i++)
    {
        l.Add(new Item());
        l[i].ItemID = br.ReadUInt16();
        l[i].Type = br.ReadByte();
        l[i].Kind = br.ReadByte();
        l[i].AttrID = br.ReadUInt16();
        l[i].Name = br.ReadString();
        l[i].UseValue = br.ReadUInt16();
        l[i].SlotID = br.ReadUInt32();
        l[i].ClassID = br.ReadUInt32();
        l[i].PrmSlotID = br.ReadByte();
        l[i].SubSlotID = br.ReadByte();
        l[i].Level = br.ReadByte();
        l[i].CanRepair = br.ReadByte();
        l[i].DuraMax = br.ReadUInt32();
        l[i].RefineMax = br.ReadByte();
        l[i].PriceRate = br.ReadSingle();
        l[i].Price = br.ReadUInt32();
        l[i].MinRange = br.ReadByte();
        l[i].MaxRange = br.ReadByte();
        l[i].Stack = br.ReadByte();
        l[i].SlotCount = br.ReadByte();
        l[i].CanGamble = br.ReadByte();
        l[i].GambleProb = br.ReadByte();
        l[i].DestroyProb = br.ReadByte();
        l[i].CanGrade = br.ReadByte();
        l[i].CanMagic = br.ReadByte();
        l[i].CanRare = br.ReadByte();
        l[i].DelayGroupID = br.ReadUInt16();
        l[i].Delay = br.ReadUInt32();
        l[i].CanTrade = br.ReadByte();
        l[i].IsSpecial = br.ReadByte();
        l[i].UseTime = br.ReadUInt16();
        l[i].UseType = br.ReadByte();
        l[i].WeaponID = br.ReadByte();
        l[i].ShotSpeed = br.ReadSingle();
        l[i].Gravity = br.ReadSingle();
        l[i].InfoID = br.ReadUInt32();
        l[i].SkillItemType = br.ReadByte();
        l[i].Visual0 = br.ReadUInt16();
        l[i].Visual1 = br.ReadUInt16();
        l[i].Visual2 = br.ReadUInt16();
        l[i].Visual3 = br.ReadUInt16();
        l[i].Visual4 = br.ReadUInt16();
        l[i].GradeSFX = br.ReadUInt16();
        l[i].OptionSFX0 = br.ReadUInt16();
        l[i].OptionSFX1 = br.ReadUInt16();
        l[i].OptionSFX2 = br.ReadUInt16();
        l[i].CanWrap = br.ReadByte();
        l[i].AuctionCode = br.ReadUInt32();
        l[i].CanColor = br.ReadByte();
        l[i].UseBP = br.ReadUInt16();
        br.ReadString();


    }
bcs here i have ReadSingle().
Thank you for help. Edited files:
 
Last edited:
Upvote 0
Newbie Spellweaver
Joined
Jun 16, 2021
Messages
27
Reaction score
18
Hello thank you for your answer. This is my first TCD editor and i dont have any experience with coding. So i make some mistakes.
ok....So i repair FSBinaryReader.cs like this:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Reflection.Metadata.Ecma335;

namespace WinFormsApp1
{
    class FourStoryBinaryReader : BinaryReader
    {

        public FourStoryBinaryReader(Stream input) : base(input)
        {
        }
        public override string ReadString()
        {
            Byte[] StringB = new byte[base.ReadUInt16()];
            for (int i = 0; i < StringB.Length; i++)
            {
                StringB[i] = base.ReadByte();
            }
            return System.Text.Encoding.Default.GetString(StringB);
        }
    }
}
In second part... do you mean this code?:
Code:
        private void safe(Stream s)
        {
            FourStoryBinaryWriter bw = new FourStoryBinaryWriter(s);
            bw.Write(Convert.ToUInt16(l.Count));
            for (int i = 0; i < l.Count; i++)
            {
                bw.Write(l[i].ItemID);
                bw.Write("String");
            }
        }
bcs i trully forgot complete this side of code, so next thank you xD
And the third part what do you mean? this?:
Code:
private void load(Stream s)
{
    FourStoryBinaryReader br = new FourStoryBinaryReader(s);
    UInt16 count = br.ReadUInt16();
    for (int i = 0; i < count; i++)
    {
        l.Add(new Item());
        l[i].ItemID = br.ReadUInt16();
        l[i].Type = br.ReadByte();
        l[i].Kind = br.ReadByte();
        l[i].AttrID = br.ReadUInt16();
        l[i].Name = br.ReadString();
        l[i].UseValue = br.ReadUInt16();
        l[i].SlotID = br.ReadUInt32();
        l[i].ClassID = br.ReadUInt32();
        l[i].PrmSlotID = br.ReadByte();
        l[i].SubSlotID = br.ReadByte();
        l[i].Level = br.ReadByte();
        l[i].CanRepair = br.ReadByte();
        l[i].DuraMax = br.ReadUInt32();
        l[i].RefineMax = br.ReadByte();
        l[i].PriceRate = br.ReadSingle();
        l[i].Price = br.ReadUInt32();
        l[i].MinRange = br.ReadByte();
        l[i].MaxRange = br.ReadByte();
        l[i].Stack = br.ReadByte();
        l[i].SlotCount = br.ReadByte();
        l[i].CanGamble = br.ReadByte();
        l[i].GambleProb = br.ReadByte();
        l[i].DestroyProb = br.ReadByte();
        l[i].CanGrade = br.ReadByte();
        l[i].CanMagic = br.ReadByte();
        l[i].CanRare = br.ReadByte();
        l[i].DelayGroupID = br.ReadUInt16();
        l[i].Delay = br.ReadUInt32();
        l[i].CanTrade = br.ReadByte();
        l[i].IsSpecial = br.ReadByte();
        l[i].UseTime = br.ReadUInt16();
        l[i].UseType = br.ReadByte();
        l[i].WeaponID = br.ReadByte();
        l[i].ShotSpeed = br.ReadSingle();
        l[i].Gravity = br.ReadSingle();
        l[i].InfoID = br.ReadUInt32();
        l[i].SkillItemType = br.ReadByte();
        l[i].Visual0 = br.ReadUInt16();
        l[i].Visual1 = br.ReadUInt16();
        l[i].Visual2 = br.ReadUInt16();
        l[i].Visual3 = br.ReadUInt16();
        l[i].Visual4 = br.ReadUInt16();
        l[i].GradeSFX = br.ReadUInt16();
        l[i].OptionSFX0 = br.ReadUInt16();
        l[i].OptionSFX1 = br.ReadUInt16();
        l[i].OptionSFX2 = br.ReadUInt16();
        l[i].CanWrap = br.ReadByte();
        l[i].AuctionCode = br.ReadUInt32();
        l[i].CanColor = br.ReadByte();
        l[i].UseBP = br.ReadUInt16();
        br.ReadString();


    }
bcs here i have ReadSingle().
Thank you for help. Edited files:

Hello thank you for your answer. This is my first TCD editor and i dont have any experience with coding. So i make some mistakes.
ok....So i repair FSBinaryReader.cs like this:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Reflection.Metadata.Ecma335;

namespace WinFormsApp1
{
    class FourStoryBinaryReader : BinaryReader
    {

        public FourStoryBinaryReader(Stream input) : base(input)
        {
        }
        public override string ReadString()
        {
            Byte[] StringB = new byte[base.ReadUInt16()];
            for (int i = 0; i < StringB.Length; i++)
            {
                StringB[i] = base.ReadByte();
            }
            return System.Text.Encoding.Default.GetString(StringB);
        }
    }
}
In second part... do you mean this code?:
Code:
        private void safe(Stream s)
        {
            FourStoryBinaryWriter bw = new FourStoryBinaryWriter(s);
            bw.Write(Convert.ToUInt16(l.Count));
            for (int i = 0; i < l.Count; i++)
            {
                bw.Write(l[i].ItemID);
                bw.Write("String");
            }
        }
bcs i trully forgot complete this side of code, so next thank you xD
And the third part what do you mean? this?:
Code:
private void load(Stream s)
{
    FourStoryBinaryReader br = new FourStoryBinaryReader(s);
    UInt16 count = br.ReadUInt16();
    for (int i = 0; i < count; i++)
    {
        l.Add(new Item());
        l[i].ItemID = br.ReadUInt16();
        l[i].Type = br.ReadByte();
        l[i].Kind = br.ReadByte();
        l[i].AttrID = br.ReadUInt16();
        l[i].Name = br.ReadString();
        l[i].UseValue = br.ReadUInt16();
        l[i].SlotID = br.ReadUInt32();
        l[i].ClassID = br.ReadUInt32();
        l[i].PrmSlotID = br.ReadByte();
        l[i].SubSlotID = br.ReadByte();
        l[i].Level = br.ReadByte();
        l[i].CanRepair = br.ReadByte();
        l[i].DuraMax = br.ReadUInt32();
        l[i].RefineMax = br.ReadByte();
        l[i].PriceRate = br.ReadSingle();
        l[i].Price = br.ReadUInt32();
        l[i].MinRange = br.ReadByte();
        l[i].MaxRange = br.ReadByte();
        l[i].Stack = br.ReadByte();
        l[i].SlotCount = br.ReadByte();
        l[i].CanGamble = br.ReadByte();
        l[i].GambleProb = br.ReadByte();
        l[i].DestroyProb = br.ReadByte();
        l[i].CanGrade = br.ReadByte();
        l[i].CanMagic = br.ReadByte();
        l[i].CanRare = br.ReadByte();
        l[i].DelayGroupID = br.ReadUInt16();
        l[i].Delay = br.ReadUInt32();
        l[i].CanTrade = br.ReadByte();
        l[i].IsSpecial = br.ReadByte();
        l[i].UseTime = br.ReadUInt16();
        l[i].UseType = br.ReadByte();
        l[i].WeaponID = br.ReadByte();
        l[i].ShotSpeed = br.ReadSingle();
        l[i].Gravity = br.ReadSingle();
        l[i].InfoID = br.ReadUInt32();
        l[i].SkillItemType = br.ReadByte();
        l[i].Visual0 = br.ReadUInt16();
        l[i].Visual1 = br.ReadUInt16();
        l[i].Visual2 = br.ReadUInt16();
        l[i].Visual3 = br.ReadUInt16();
        l[i].Visual4 = br.ReadUInt16();
        l[i].GradeSFX = br.ReadUInt16();
        l[i].OptionSFX0 = br.ReadUInt16();
        l[i].OptionSFX1 = br.ReadUInt16();
        l[i].OptionSFX2 = br.ReadUInt16();
        l[i].CanWrap = br.ReadByte();
        l[i].AuctionCode = br.ReadUInt32();
        l[i].CanColor = br.ReadByte();
        l[i].UseBP = br.ReadUInt16();
        br.ReadString();


    }
bcs here i have ReadSingle().
Thank you for help. Edited files:
In your Item.cs you defined floats as "float" not "Single" and in the load function you're missing some parts of the structure, like i said "bla1" "dwNIU" etc. Check the structure in TChart.cpp and add the missing values
 
Upvote 0
Newbie Spellweaver
Joined
Feb 9, 2019
Messages
16
Reaction score
0
In your Item.cs you defined floats as "float" not "Single" and in the load function you're missing some parts of the structure, like i said "bla1" "dwNIU" etc. Check the structure in TChart.cpp and add the missing values
My TChart.cpp
Code:
void CTChart::InitTITEMTEMP( CString strPath )
{
    ReleaseTITEMTEMP();

    CFile file( LPCSTR(strPath), CFile::modeRead|CFile::typeBinary);
    CArchive ar( &file, CArchive::load);
    BYTE bla1 = 0;
    DWORD dwNIU;

    WORD wCount;
    ar >> wCount;




    for( WORD i=0; i<wCount; i++)
    {
        LPTITEM pTITEM = new TITEM();

        ar    >> pTITEM->m_wItemID                ///ŔĎ·ĂąřČŁ
            >> pTITEM->m_bType                    ///Áľ·ů
            >> pTITEM->m_bKind                    ///±¸şĐ
            >> pTITEM->m_wAttrID                ///Ľş´ÉŔĎ·ĂąřČŁ
            >> pTITEM->m_strNAME                ///Ŕ̸§
            >> pTITEM->m_wUseValue                ///»çżëČż°ú°Ş
            >> pTITEM->m_dwSlotID                ///ŔĺÂřŔ§Äˇ
            >> pTITEM->m_dwClassID                ///»çżëÁ÷ľ÷
            >> pTITEM->m_bPrmSlotID                ///ÁÖą«±âŔĺÂřŔ§Äˇ
            >> pTITEM->m_bSubSlotID                ///ş¸Á¶ą«±âŔĺÂřŔ§Äˇ
            >> pTITEM->m_bLevel                    ///ÇĘżä·ąş§
            >> pTITEM->m_bCanRepair                ///Ľö¸®ż©şÎ(Ăß°ˇ)
            >> pTITEM->m_dwDuraMax                ///ĂÖ´ëł»±¸(Ăß°ˇ)
            >> pTITEM->m_bRefineMax                ///Á¦·ĂČ˝Ľö(Ăß°ˇ)
            >> pTITEM->m_fPriceRate                ///°ˇ°ÝşńŔ˛
            >> pTITEM->m_dwPrice                ///±âÁŘ°ˇ°Ý
            >> pTITEM->m_bMinRange                ///ĂÖĽŇ»çÁ¤°Ĺ¸®
            >> pTITEM->m_bMaxRange                ///ĂÖ´ë»çÁ¤°Ĺ¸®
            >> pTITEM->m_bStack                            ///ĂÖ´ëĽö·®
            >> pTITEM->m_bSlotCount                ///˝˝·Ô°ąĽö
            >> pTITEM->m_bCanGamble                ///şŔŔÎ »ýĽşż©şÎ
            >> pTITEM->m_bGambleProb            ///ġȯż©şÎ(Ăß°ˇ)
            >> pTITEM->m_bDestoryProb
            >> bla1
            >> bla1                                ///ĽŇ¸ęż©şÎ(Ăß°ˇ)

            >> pTITEM->m_bCanGrade                ///µî±Ţ °ˇ´Éż©şÎ
            >> pTITEM->m_bCanMagic                ///¸¶ąý »ýĽşż©şÎ
            >> pTITEM->m_bCanRare                ///Čń±Í »ýĽşż©şÎ
            >> pTITEM->m_wDelayGroupID            ///Ŕç»çżë´ë±â±×·ě
            >> pTITEM->m_dwDelay                ///Ŕç»çżë´ë±â˝Ă°Ł
            >> pTITEM->m_bCanTrade                ///°Ĺ·ˇ,ĆǸŠ°ˇ´É ż©şÎ
            >> bla1
            >> pTITEM->m_bIsSpecial                ///Äł˝¬ ľĆŔĚĹŰ ż©şÎ
            >> pTITEM->m_wUseTime                ///»çżë ±â°Ł(ŔĎ/˝Ă°Ł)
            >> pTITEM->m_bUseType

            //>> bla1                                ///»çżë ŸŔÔ

            >> pTITEM->m_bWeaponID                ///WEAPON ID
            >> pTITEM->m_fShotSpeed                ///SHOT SPEED
            >> pTITEM->m_fGravity                ///GRAVITY
            >> pTITEM->m_dwInfoID                ///INFO ID
            >> pTITEM->m_bSkillItemType            ///ąß»çŸŔÔ
            >> pTITEM->m_wVisual[0]                ///0´Ü°č şńÁÖľó(Ăß°ˇ)
            >> pTITEM->m_wVisual[1]                ///1´Ü°č şńÁÖľó(Ăß°ˇ)
            >> pTITEM->m_wVisual[2]                ///2´Ü°č şńÁÖľó(Ăß°ˇ)
            >> pTITEM->m_wVisual[3]                ///3´Ü°č şńÁÖľó(Ăß°ˇ)
            >> pTITEM->m_wVisual[4]                ///4´Ü°č şńÁÖľó(Ăß°ˇ)
            >> pTITEM->m_wGradeSFX                ///µî±Ţ ŔĚĆĺĆ®(Ăß°ˇ)
            >> pTITEM->m_wOptionSFX[0]            ///0´Ü°č żÉĽÇ ŔĚĆĺĆ®(Ăß°ˇ)
            >> pTITEM->m_wOptionSFX[1]            ///1´Ü°č żÉĽÇ ŔĚĆĺĆ®(Ăß°ˇ)
            >> pTITEM->m_wOptionSFX[2]            ///2´Ü°č żÉĽÇ ŔĚĆĺĆ®(Ăß°ˇ)
            >> pTITEM->m_bCanWrap                /// ąĐ¶ř °ˇ´É
            >> pTITEM->m_dwAuctionCode
            >> pTITEM->m_bCanColor
            >> dwNIU

            >> bla1
            >> pTITEM->m_wUseBP
            >> bla1
            >> bla1
            >> dwNIU
            >> bla1;
So i must define every bla1 Byte bla1; and dwNIU UInt32 dwNIU;? and do the same thing with these like with others?
 
Upvote 0
Newbie Spellweaver
Joined
Jun 16, 2021
Messages
27
Reaction score
18
My TChart.cpp
Code:
void CTChart::InitTITEMTEMP( CString strPath )
{
    ReleaseTITEMTEMP();

    CFile file( LPCSTR(strPath), CFile::modeRead|CFile::typeBinary);
    CArchive ar( &file, CArchive::load);
    BYTE bla1 = 0;
    DWORD dwNIU;

    WORD wCount;
    ar >> wCount;




    for( WORD i=0; i<wCount; i++)
    {
        LPTITEM pTITEM = new TITEM();

        ar    >> pTITEM->m_wItemID                ///ŔĎ·ĂąřČŁ
            >> pTITEM->m_bType                    ///Áľ·ů
            >> pTITEM->m_bKind                    ///±¸şĐ
            >> pTITEM->m_wAttrID                ///Ľş´ÉŔĎ·ĂąřČŁ
            >> pTITEM->m_strNAME                ///Ŕ̸§
            >> pTITEM->m_wUseValue                ///»çżëČż°ú°Ş
            >> pTITEM->m_dwSlotID                ///ŔĺÂřŔ§Äˇ
            >> pTITEM->m_dwClassID                ///»çżëÁ÷ľ÷
            >> pTITEM->m_bPrmSlotID                ///ÁÖą«±âŔĺÂřŔ§Äˇ
            >> pTITEM->m_bSubSlotID                ///ş¸Á¶ą«±âŔĺÂřŔ§Äˇ
            >> pTITEM->m_bLevel                    ///ÇĘżä·ąş§
            >> pTITEM->m_bCanRepair                ///Ľö¸®ż©şÎ(Ăß°ˇ)
            >> pTITEM->m_dwDuraMax                ///ĂÖ´ëł»±¸(Ăß°ˇ)
            >> pTITEM->m_bRefineMax                ///Á¦·ĂČ˝Ľö(Ăß°ˇ)
            >> pTITEM->m_fPriceRate                ///°ˇ°ÝşńŔ˛
            >> pTITEM->m_dwPrice                ///±âÁŘ°ˇ°Ý
            >> pTITEM->m_bMinRange                ///ĂÖĽŇ»çÁ¤°Ĺ¸®
            >> pTITEM->m_bMaxRange                ///ĂÖ´ë»çÁ¤°Ĺ¸®
            >> pTITEM->m_bStack                            ///ĂÖ´ëĽö·®
            >> pTITEM->m_bSlotCount                ///˝˝·Ô°ąĽö
            >> pTITEM->m_bCanGamble                ///şŔŔÎ »ýĽşż©şÎ
            >> pTITEM->m_bGambleProb            ///ġȯż©şÎ(Ăß°ˇ)
            >> pTITEM->m_bDestoryProb
            >> bla1
            >> bla1                                ///ĽŇ¸ęż©şÎ(Ăß°ˇ)

            >> pTITEM->m_bCanGrade                ///µî±Ţ °ˇ´Éż©şÎ
            >> pTITEM->m_bCanMagic                ///¸¶ąý »ýĽşż©şÎ
            >> pTITEM->m_bCanRare                ///Čń±Í »ýĽşż©şÎ
            >> pTITEM->m_wDelayGroupID            ///Ŕç»çżë´ë±â±×·ě
            >> pTITEM->m_dwDelay                ///Ŕç»çżë´ë±â˝Ă°Ł
            >> pTITEM->m_bCanTrade                ///°Ĺ·ˇ,ĆǸŠ°ˇ´É ż©şÎ
            >> bla1
            >> pTITEM->m_bIsSpecial                ///Äł˝¬ ľĆŔĚĹŰ ż©şÎ
            >> pTITEM->m_wUseTime                ///»çżë ±â°Ł(ŔĎ/˝Ă°Ł)
            >> pTITEM->m_bUseType

            //>> bla1                                ///»çżë ŸŔÔ

            >> pTITEM->m_bWeaponID                ///WEAPON ID
            >> pTITEM->m_fShotSpeed                ///SHOT SPEED
            >> pTITEM->m_fGravity                ///GRAVITY
            >> pTITEM->m_dwInfoID                ///INFO ID
            >> pTITEM->m_bSkillItemType            ///ąß»çŸŔÔ
            >> pTITEM->m_wVisual[0]                ///0´Ü°č şńÁÖľó(Ăß°ˇ)
            >> pTITEM->m_wVisual[1]                ///1´Ü°č şńÁÖľó(Ăß°ˇ)
            >> pTITEM->m_wVisual[2]                ///2´Ü°č şńÁÖľó(Ăß°ˇ)
            >> pTITEM->m_wVisual[3]                ///3´Ü°č şńÁÖľó(Ăß°ˇ)
            >> pTITEM->m_wVisual[4]                ///4´Ü°č şńÁÖľó(Ăß°ˇ)
            >> pTITEM->m_wGradeSFX                ///µî±Ţ ŔĚĆĺĆ®(Ăß°ˇ)
            >> pTITEM->m_wOptionSFX[0]            ///0´Ü°č żÉĽÇ ŔĚĆĺĆ®(Ăß°ˇ)
            >> pTITEM->m_wOptionSFX[1]            ///1´Ü°č żÉĽÇ ŔĚĆĺĆ®(Ăß°ˇ)
            >> pTITEM->m_wOptionSFX[2]            ///2´Ü°č żÉĽÇ ŔĚĆĺĆ®(Ăß°ˇ)
            >> pTITEM->m_bCanWrap                /// ąĐ¶ř °ˇ´É
            >> pTITEM->m_dwAuctionCode
            >> pTITEM->m_bCanColor
            >> dwNIU

            >> bla1
            >> pTITEM->m_wUseBP
            >> bla1
            >> bla1
            >> dwNIU
            >> bla1;
So i must define every bla1 Byte bla1; and dwNIU UInt32 dwNIU;? and do the same thing with these like with others?
exactly, because they are apart of the tcd structure.
 
Upvote 0
Back
Top