PDA

View Full Version : [JX] [Source] Hướng dẫn làm hiện tên Obj và phân biệt màu giống VNG



lzlsky301
30-09-12, 04:42 AM
Hôm nay mình sẽ hướng dẫn các bạn làm hiện tên Obj dưới đất mà ko cần rà chuột + phân biệt màu chuẩn VNG :D.
Đầu tiên các bạn vào S3Client:
Tại ShortcutKey.cpp:
các bạn tìm showplayernumber, thêm vào sau nó "showobjname",

char* l_StatusList[] =
{
"run", //0 Åܲ½
"sit", //1 ´ò×ø
"trade", //2 ½»Ò×
"pk", //3 PK
"horse", //4 Âí
"showplayername", //5 ÏÔʾÍæ¼ÒÃû×Ö
"showplayerlife", //6 ÏÔʾÍæ¼ÒÉúÃü
"showplayermana", //7 ÏÔʾÍæ¼ÒÄÚÁ¦
"showplayernumber", //8 ½çÃæÏÔʾÍæ¼ÒÊý×Ö
"showobjname", //9 hien ten obj duoi dat
};
Sau đó tại

int LuaSwitchStatus(Lua_State * L)
{
if (Lua_GetTopIndex(L) != 1)
return 0;

char * strStatus = (char *)Lua_ValueToString(L, 1);

if (strStatus)
{
switch(FindStatus(strStatus))
{
case 0: //Åܲ½
if (g_pCoreShell)
g_pCoreShell->OperationRequest(GOI_PLAYER_ACTION, PA_RUN, 0);
break;
case 1: //´ò×ø
if (g_pCoreShell)
g_pCoreShell->OperationRequest(GOI_PLAYER_ACTION, PA_SIT, 0);
break;
case 2: //½»Ò×
if (g_pCoreShell)
g_pCoreShell->OperationRequest(GOI_TRADE_WILLING, 0, true);
break;
case 3: //PK
if (g_pCoreShell)
{
g_pCoreShell->OperationRequest(GOI_PK_SETTING, 0,
!g_pCoreShell->GetGameData(GDI_PK_SETTING, 0, 0));
}
break;
case 4: //Âí
//if (g_pCoreShell)
// g_pCoreShell->OperationRequest(GOI_PK_SETTING, 0, Player_PK::ms_bPK);
break;
case 5: //ÏÔʾÍæ¼ÒÃû×Ö
if (g_pCoreShell)
{
g_pCoreShell->OperationRequest(GOI_SHOW_PLAYERS_NAME, 0,
!g_pCoreShell->GetGameData(GDI_SHOW_PLAYERS_NAME, 0, 0));
}
break;
case 6: //ÏÔʾÍæ¼ÒÉúÃü
if (g_pCoreShell)
{
g_pCoreShell->OperationRequest(GOI_SHOW_PLAYERS_LIFE, 0,
!g_pCoreShell->GetGameData(GDI_SHOW_PLAYERS_LIFE, 0, 0));
}
break;
case 7: //ÏÔʾÍæ¼ÒÄÚÁ¦
if (g_pCoreShell)
{
g_pCoreShell->OperationRequest(GOI_SHOW_PLAYERS_MANA, 0,
!g_pCoreShell->GetGameData(GDI_SHOW_PLAYERS_MANA, 0, 0));
}
break;
case 8: //½çÃæÏÔʾÍæ¼ÒÊý×Ö
Player_Life::m_bText = !Player_Life::m_bText;
Player_Mana::m_bText = !Player_Mana::m_bText;
Player_Stamina::m_bText = !Player_Stamina::m_bText;
Player_Exp::m_bText = !Player_Exp::m_bText;
break;
case 9:
KUiPlayerBar::SwitchChannel();
break;
}
}

return 0;
}
Sửa thành:

int LuaSwitchStatus(Lua_State * L)
{
if (Lua_GetTopIndex(L) != 1)
return 0;

char * strStatus = (char *)Lua_ValueToString(L, 1);

if (strStatus)
{
switch(FindStatus(strStatus))
{
case 0: //Åܲ½
if (g_pCoreShell)
g_pCoreShell->OperationRequest(GOI_PLAYER_ACTION, PA_RUN, 0);
break;
case 1: //´ò×ø
if (g_pCoreShell)
g_pCoreShell->OperationRequest(GOI_PLAYER_ACTION, PA_SIT, 0);
break;
case 2: //½»Ò×
if (g_pCoreShell)
g_pCoreShell->OperationRequest(GOI_TRADE_WILLING, 0, true);
break;
case 3: //PK
if (g_pCoreShell)
{
g_pCoreShell->OperationRequest(GOI_PK_SETTING, 0,
!g_pCoreShell->GetGameData(GDI_PK_SETTING, 0, 0));
}
break;
case 4: //Âí
//if (g_pCoreShell)
// g_pCoreShell->OperationRequest(GOI_PK_SETTING, 0, Player_PK::ms_bPK);
break;
case 5: //ÏÔʾÍæ¼ÒÃû×Ö
if (g_pCoreShell)
{
g_pCoreShell->OperationRequest(GOI_SHOW_PLAYERS_NAME, 0,
!g_pCoreShell->GetGameData(GDI_SHOW_PLAYERS_NAME, 0, 0));
}
break;
case 6: //ÏÔʾÍæ¼ÒÉúÃü
if (g_pCoreShell)
{
g_pCoreShell->OperationRequest(GOI_SHOW_PLAYERS_LIFE, 0,
!g_pCoreShell->GetGameData(GDI_SHOW_PLAYERS_LIFE, 0, 0));
}
break;
case 7: //ÏÔʾÍæ¼ÒÄÚÁ¦
if (g_pCoreShell)
{
g_pCoreShell->OperationRequest(GOI_SHOW_PLAYERS_MANA, 0,
!g_pCoreShell->GetGameData(GDI_SHOW_PLAYERS_MANA, 0, 0));
}
break;
case 8: //½çÃæÏÔʾÍæ¼ÒÊý×Ö
Player_Life::m_bText = !Player_Life::m_bText;
Player_Mana::m_bText = !Player_Mana::m_bText;
Player_Stamina::m_bText = !Player_Stamina::m_bText;
Player_Exp::m_bText = !Player_Exp::m_bText;
break;
case 9: //ÏÔʾÍæ¼ÒÉúÃü
if (g_pCoreShell)
{
g_pCoreShell->OperationRequest(GOI_SHOW_OBJ_NAME, 0,
!g_pCoreShell->GetGameData(GDI_SHOW_OBJ_NAME, 0, 0));// hien ten obj duoi dat
}
break;
case 10:
KUiPlayerBar::SwitchChannel();
break;
}
}

return 0;
}
Tại ShortcutKey.h các bạn tìm:
#define SCK_SHORTCUT_SHOWPLAYERNUMBER "Switch([[showplayernumber]])"
Khai báo tiếp sau nó là:
#define SCK_SHORTCUT_SHOWOBJNAME "Switch([[showobjname]])"
Hì thế là xong phần S3Client.

Tiếp theo ta qua Core:
Tại CoreShell.cpp
Các bạn khai báo thêm thư viện cho nó là #include "KObjSet.h"
Ta Tìm:

case GDI_SHOW_PLAYERS_MANA: //»ñÈ¡ÏÔʾ¸÷Íæ¼ÒÄÚÁ¦
nRet = NpcSet.CheckShowMana();
break;
Thêm vào sau nó

case GDI_SHOW_OBJ_NAME: //hien tên obj
nRet = ObjSet.CheckShowName();
break;
Tiếp theo tìm đến

case GOI_SHOW_PLAYERS_MANA:
NpcSet.SetShowManaFlag(nParam);
break;
Thêm vào sau nó:


case GOI_SHOW_OBJ_NAME:
ObjSet.SetShowNameFlag(nParam); // hien ten obj duoi dat
break;
Sau đó ta vào CoreShell.h
Tìm đến GOI_QUERY_RANK_INFORMATION,
Thêm vào tiếp sau nó là GOI_SHOW_OBJ_NAME, // hien ten obj duoi dat
Tìm đến GDI_IMMEDIATEITEM_NUM,
Thêm vào tiếp sau nó là GDI_SHOW_OBJ_NAME, // HIEN TEN OBJ DUOI DAT
Thế là xong phần Core:

Tiếp theo ta vào KObjSet.cpp
Tìm Đến

int KObjSet::Add(int nDataID, KMapPos MapPos, KObjItemInfo sItemInfo)
{
if (sItemInfo.m_nItemID > 0)
{
g_DebugLog("[ITEM]Object ItemIndex:%d, ID:%d", sItemInfo.m_nItemID, Item[sItemInfo.m_nItemID].GetID());
}
int nAddNo;

nAddNo = AddData(nDataID, MapPos, sItemInfo.m_nMoneyNum, sItemInfo.m_nItemID, sItemInfo.m_nItemWidth, sItemInfo.m_nItemHeight);
if (nAddNo < 0)
return -1;

Object[nAddNo].SetWorldID(GetID());
Object[nAddNo].m_nColorID = sItemInfo.m_nColorID;
if (sItemInfo.m_szName[0] && strlen(sItemInfo.m_szName) < 32)
strcpy(Object[nAddNo].m_szName, sItemInfo.m_szName);

OBJ_ADD_SYNC cObjAdd;
int i, nTempX, nTempY;
cObjAdd.ProtocolType = (BYTE)s2c_objadd;
cObjAdd.m_nID = Object[nAddNo].m_nID;
cObjAdd.m_nDataID = Object[nAddNo].m_nDataID;
cObjAdd.m_btDir = Object[nAddNo].m_nDir;
cObjAdd.m_wCurFrame = Object[nAddNo].m_cImage.m_nCurFrame;
cObjAdd.m_btState = Object[nAddNo].m_nState;
SubWorld[MapPos.nSubWorld].Map2Mps(MapPos.nRegion, MapPos.nMapX, MapPos.nMapY, MapPos.nOffX, MapPos.nOffY, &nTempX, &nTempY);
cObjAdd.m_nXpos = nTempX;
cObjAdd.m_nYpos = nTempY;
cObjAdd.m_nMoneyNum = sItemInfo.m_nMoneyNum;
cObjAdd.m_nItemID = sItemInfo.m_nItemID;
cObjAdd.m_btItemWidth = sItemInfo.m_nItemWidth;
cObjAdd.m_btItemHeight = sItemInfo.m_nItemHeight;
cObjAdd.m_btColorID = sItemInfo.m_nColorID;
cObjAdd.m_btFlag = 0;
if (sItemInfo.m_nSoundFlag)
cObjAdd.m_btFlag |= 0x01;
if (sItemInfo.m_nMovieFlag)
cObjAdd.m_btFlag |= 0x02;
strcpy(cObjAdd.m_szName, Object[nAddNo].m_szName);
cObjAdd.m_wLength = sizeof(OBJ_ADD_SYNC) - 1 - sizeof(cObjAdd.m_szName) + strlen(cObjAdd.m_szName);

POINT POff[8] =
{
{0, 32},
{-16, 32},
{-16, 0},
{-16, -32},
{0, -32},
{16, -32},
{16, 0},
{16, 32},
};
int nMaxCount = MAX_BROADCAST_COUNT;
SubWorld[MapPos.nSubWorld].m_Region[MapPos.nRegion].BroadCast((BYTE*)&cObjAdd, cObjAdd.m_wLength + 1, nMaxCount, Object[nAddNo].m_nMapX, Object[nAddNo].m_nMapY);
int nConRegion;
for (i = 0; i < 8; i++)
{
nConRegion = SubWorld[MapPos.nSubWorld].m_Region[MapPos.nRegion].m_nConnectRegion[i];
if (nConRegion == -1)
continue;
SubWorld[MapPos.nSubWorld].m_Region[nConRegion].BroadCast((BYTE*)&cObjAdd, cObjAdd.m_wLength + 1, nMaxCount, Object[nAddNo].m_nMapX - POff[i].x, Object[nAddNo].m_nMapY - POff[i].y);
}

SubWorld[MapPos.nSubWorld].m_Region[MapPos.nRegion].AddObj(nAddNo);// m_WorldMessage.Send(GWM_OBJ_ADD, MapPos.nRegion, nAddNo);

return nAddNo;
}
Sửa thành, với biến màu đỏ là biến phân loại item hoàng kim hoặc tím, các bạn edit cho phù hợp vs source của các bạn:

int KObjSet::Add(int nDataID, KMapPos MapPos, KObjItemInfo sItemInfo)
{
if (sItemInfo.m_nItemID > 0)
{
g_DebugLog("[ITEM]Object ItemIndex:%d, ID:%d", sItemInfo.m_nItemID, Item[sItemInfo.m_nItemID].GetID());
}
int nAddNo;

nAddNo = AddData(nDataID, MapPos, sItemInfo.m_nMoneyNum, sItemInfo.m_nItemID, sItemInfo.m_nItemWidth, sItemInfo.m_nItemHeight);
if (nAddNo < 0)
return -1;

Object[nAddNo].SetWorldID(GetID());
if(Object[nAddNo].m_nKind == Obj_Kind_Item) // This is an item
{
if (Item[sItemInfo.m_nItemID].GetGenre() == 0) // this is equip item
if (Item[sItemInfo.m_nItemID].m_CommonAttrib.nTypeItem == 1) // hien thi mau item tim
sItemInfo.m_nColorID = 3;
else if (Item[sItemInfo.m_nItemID].m_CommonAttrib.nTypeItem > 1) // hien thi mau item hk
sItemInfo.m_nColorID = 2;
else if (Item[sItemInfo.m_nItemID].m_aryMagicAttrib[0].nAttribType) // hien thi mau item xanh
sItemInfo.m_nColorID = 1;
else
sItemInfo.m_nColorID = 0; // mau item trang
else
sItemInfo.m_nColorID = 0;
Object[nAddNo].m_nColorID = sItemInfo.m_nColorID;
}
else // Not in item - White name
sItemInfo.m_nColorID = 0;
if (sItemInfo.m_szName[0] && strlen(sItemInfo.m_szName) < 32)
strcpy(Object[nAddNo].m_szName, sItemInfo.m_szName);

OBJ_ADD_SYNC cObjAdd;
int i, nTempX, nTempY;
cObjAdd.ProtocolType = (BYTE)s2c_objadd;
cObjAdd.m_nID = Object[nAddNo].m_nID;
cObjAdd.m_nDataID = Object[nAddNo].m_nDataID;
cObjAdd.m_btDir = Object[nAddNo].m_nDir;
cObjAdd.m_wCurFrame = Object[nAddNo].m_cImage.m_nCurFrame;
cObjAdd.m_btState = Object[nAddNo].m_nState;
SubWorld[MapPos.nSubWorld].Map2Mps(MapPos.nRegion, MapPos.nMapX, MapPos.nMapY, MapPos.nOffX, MapPos.nOffY, &nTempX, &nTempY);
cObjAdd.m_nXpos = nTempX;
cObjAdd.m_nYpos = nTempY;
cObjAdd.m_nMoneyNum = sItemInfo.m_nMoneyNum;
cObjAdd.m_nItemID = sItemInfo.m_nItemID;
cObjAdd.m_btItemWidth = sItemInfo.m_nItemWidth;
cObjAdd.m_btItemHeight = sItemInfo.m_nItemHeight;
cObjAdd.m_btColorID = sItemInfo.m_nColorID;
cObjAdd.m_btFlag = 0;
if (sItemInfo.m_nSoundFlag)
cObjAdd.m_btFlag |= 0x01;
if (sItemInfo.m_nMovieFlag)
cObjAdd.m_btFlag |= 0x02;
strcpy(cObjAdd.m_szName, Object[nAddNo].m_szName);
cObjAdd.m_wLength = sizeof(OBJ_ADD_SYNC) - 1 - sizeof(cObjAdd.m_szName) + strlen(cObjAdd.m_szName);

POINT POff[8] =
{
{0, 32},
{-16, 32},
{-16, 0},
{-16, -32},
{0, -32},
{16, -32},
{16, 0},
{16, 32},
};
int nMaxCount = MAX_BROADCAST_COUNT;
SubWorld[MapPos.nSubWorld].m_Region[MapPos.nRegion].BroadCast((BYTE*)&cObjAdd, cObjAdd.m_wLength + 1, nMaxCount, Object[nAddNo].m_nMapX, Object[nAddNo].m_nMapY);
int nConRegion;
for (i = 0; i < 8; i++)
{
nConRegion = SubWorld[MapPos.nSubWorld].m_Region[MapPos.nRegion].m_nConnectRegion[i];
if (nConRegion == -1)
continue;
SubWorld[MapPos.nSubWorld].m_Region[nConRegion].BroadCast((BYTE*)&cObjAdd, cObjAdd.m_wLength + 1, nMaxCount, Object[nAddNo].m_nMapX - POff[i].x, Object[nAddNo].m_nMapY - POff[i].y);
}

SubWorld[MapPos.nSubWorld].m_Region[MapPos.nRegion].AddObj(nAddNo);// m_WorldMessage.Send(GWM_OBJ_ADD, MapPos.nRegion, nAddNo);

return nAddNo;
}
Vào KItem.h tìm KItemCommonAttrib m_CommonAttrib; trên nó có dòng private các bạn sửa thành public ^^
Build và đưa vào server và client. Thế là xong phần build ^^

Cuối cùng các bạn vào client, vào folder Ui tìm đến 2 file có đuôi mở rộng là .lua
Thêm
AddCommand("Alt+Space", "","Switch([[showobjname]])")
sau một hàm AddCommand bất kỳ.
Sau đó chạy server, chạy game và vào phần tùy chọn, chỉnh qua lại giữa chế độ bàn phím mặc định và kết hợp để client load các file lua. vào game vứt vật phẩm ra và ấn Alt+Space.
VỚI ĐIỀU KIỆN LÀ CÁC BẠN CHƯA LÀM HIỆN TÊN OBJ NHƯ CBT HƯỚNG DẪN ^^

Bổ sung phần hiện tiền vạn lượng ^^
Tại KObj.cpp
Các bạn tìm

void KObj::DrawInfo()
{
// return;

if (m_nKind != Obj_Kind_Item)// && m_nKind != Obj_Kind_Money)
return;

int nMpsX, nMpsY, nHeightOff;
DWORD dwColor;

GetMpsPos(&nMpsX, &nMpsY);
nHeightOff = OBJ_SHOW_NAME_Y_OFF;
dwColor = this->m_dwNameColor;
g_pRepresent->OutputText(12, m_szName, KRF_ZERO_END, nMpsX - 12 * g_StrLen(m_szName) / 4, nMpsY, dwColor, 0, nHeightOff);
}
Sửa thành

void KObj::DrawInfo()
{
// return;

if (m_nKind != Obj_Kind_Item && m_nKind != Obj_Kind_Money)
return;
int nMpsX, nMpsY, nHeightOff;
DWORD dwColor;
if (m_nKind == Obj_Kind_Money)
{

char szMoney[64];
char szvMoney[128];
char szlMoney[128];
int m_nvMoneyNum = m_nMoneyNum / 10000;
int m_nlMoneyNum = m_nMoneyNum % 10000;
sprintf(szMoney,"%d l*îng",m_nMoneyNum);
sprintf(szvMoney,"%d v¹n l*îng",m_nvMoneyNum);
sprintf(szlMoney,"%d v¹n %d l*îng",m_nvMoneyNum, m_nlMoneyNum);
GetMpsPos(&nMpsX, &nMpsY);
nHeightOff = OBJ_SHOW_NAME_Y_OFF;
dwColor = 255 << 16 | 217 << 8 | 78;
if (m_nMoneyNum < 10000)
g_pRepresent->OutputText(12, szMoney, KRF_ZERO_END, nMpsX - 12 * g_StrLen(szMoney) / 4, nMpsY, dwColor, 0, nHeightOff);
else if (m_nlMoneyNum == 0)
g_pRepresent->OutputText(12, szvMoney, KRF_ZERO_END, nMpsX - 12 * g_StrLen(szvMoney) / 4, nMpsY, dwColor, 0, nHeightOff);
else
g_pRepresent->OutputText(12, szlMoney, KRF_ZERO_END, nMpsX - 12 * g_StrLen(szlMoney) / 4, nMpsY, dwColor, 0, nHeightOff);

}
else
{
GetMpsPos(&nMpsX, &nMpsY);
nHeightOff = OBJ_SHOW_NAME_Y_OFF;
dwColor = this->m_dwNameColor;
g_pRepresent->OutputText(12, m_szName, KRF_ZERO_END, nMpsX - 12 * g_StrLen(m_szName) / 4, nMpsY, dwColor, 0, nHeightOff);
}}

duykhang
02-10-12, 03:06 PM
tks cho chú 1 phát lun nè

rất hay :-"

borntolead
23-01-13, 08:08 PM
tớ làm bị báo lỗi

error C2039: 'nTypeItem' : is not a member of 'KItemCommonAttrib'

chẳng biết thế nào :(

màk tớ coi lại struct thì cũng không có thuộc tính

typedef struct
{
int nItemGenre; // µÀ¾ßÖÖÀà (ÎäÆ÷? Ò©Æ·? ¿óʯ?)
int nDetailType; // ÔÚ¸ÃÖÖÀàÖеľßÌåÀà±ð
int nParticularType; // ÏêϸÀà±ð
int nObjIdx; // µØͼÉÏ°Ú·Åʱ¶ÔÓ¦µÄÎï¼þÊý¾ ݱàºÅ
BOOL bStack; // ÊÇ·ñ¿Éµþ·Å
int nWidth; // µÀ¾ßÀ¸ÖÐËùÕ¼¿í¶È
int nHeight; // µÀ¾ßÀ¸ÖÐËùÕ¼¸ß¶È
int nPrice; // ¼Û¸ñ
int nLevel; // µÈ¼¶
int nSeries; // ÎåÐÐÊôÐÔ
char szItemName[80]; // Ãû³Æ
#ifndef _SERVER
char szImageName[80]; // ½çÃæÖеĶ¯»­ÎļþÃû
char szIntro[256]; // ˵Ã÷ÎÄ×Ö
#endif
int nNpcImage; // NPCͼÏóÓ°Ïì
} KItemCommonAttrib;

jackylong911
06-03-13, 02:09 AM
hjc hjc sao tui cũng bị như vậy chỉ giúp mình nhé. nTypeItem là kiểu gì vậy khai báo như thế nào
:((

thienthanden2
06-03-13, 09:04 AM
Cái biến đó là do người ta đã chỉnh load thêm 1 cột trong các file .txt của item đấy, hướng dẫn load thêm cột hình như là diễn đàn mình có, nhưng tui ko nhớ là ở đâu, các bạn chịu khó hỏi các bác mod nhé.

gj4cm0y3u3m
07-03-13, 08:24 AM
Cái biến đó là do người ta đã chỉnh load thêm 1 cột trong các file .txt của item đấy, hướng dẫn load thêm cột hình như là diễn đàn mình có, nhưng tui ko nhớ là ở đâu, các bạn chịu khó hỏi các bác mod nhé.

Cho em hỏi khi build Gameserver có cái cảnh báo như này thì sửa như thế nào ạ

LINK : warning LNK4098: defaultlib "LIBCMT" conflicts with use of other libs; use /NODEFAULTLIB:library
LIBCMTD.lib(crt0init.obj) : warning LNK4098: defaultlib "libc.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
A subdirectory or file ..\..\..\..\bin\server\release\ already exists.
1 file(s) copied.
1 file(s) copied.
1 file(s) copied.
1 file(s) copied.

GameServer.exe - 0 error(s), 2 warning(s)

thienthanden2
07-03-13, 10:19 AM
Cho em hỏi khi build Gameserver có cái cảnh báo như này thì sửa như thế nào ạ

LINK : warning LNK4098: defaultlib "LIBCMT" conflicts with use of other libs; use /NODEFAULTLIB:library
LIBCMTD.lib(crt0init.obj) : warning LNK4098: defaultlib "libc.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
A subdirectory or file ..\..\..\..\bin\server\release\ already exists.
1 file(s) copied.
1 file(s) copied.
1 file(s) copied.
1 file(s) copied.

GameServer.exe - 0 error(s), 2 warning(s)

Trường hợp này mình chưa gặp. Bạn thử build riêng 1 cái gameserver đó thui coi đc ko. Tức là ko build cùng lúc với nhiều project khác. Ko đc nữa thì coi lại phần khai báo thư viện có dư ko (hướng dẫn đã có trên diễn đàn).

shinrenkyo
10-04-13, 09:33 AM
Cuối cùng các bạn vào client, vào folder Ui tìm đến 2 file có đuôi mở rộng là .lua
Thêm
Code:
AddCommand("Alt+Space", "","Switch([[showobjname]])")
sau một hàm AddCommand bất kỳ.
Sau đó chạy server, chạy game và vào phần tùy chọn, chỉnh qua lại giữa chế độ bàn phím mặc định và kết hợp để client load các file lua. vào game vứt vật phẩm ra và ấn Alt+Space.

mình tìm ko ra file .lua bạn nói, ai biết chỉ mình với

zenyshou
10-04-13, 10:37 AM
Đầu tiên các bạn vào S3Client:
Tại ShortcutKey.cpp:
các bạn tìm showplayernumber, thêm vào sau nó "showobjname",


Làm ơn cho mình hỏi. nó nằm ở phần nào? server hay client? mình tìm khắp rồi mà ko thấy :(
chỉ đường dẫn giúp mình với.

thienthanden2
10-04-13, 11:04 AM
Cuối cùng các bạn vào client, vào folder Ui tìm đến 2 file có đuôi mở rộng là .lua
Thêm
Code:
AddCommand("Alt+Space", "","Switch([[showobjname]])")
sau một hàm AddCommand bất kỳ.
Sau đó chạy server, chạy game và vào phần tùy chọn, chỉnh qua lại giữa chế độ bàn phím mặc định và kết hợp để client load các file lua. vào game vứt vật phẩm ra và ấn Alt+Space.

mình tìm ko ra file .lua bạn nói, ai biết chỉ mình với

Nằm trong file updatehn.pak, dùng tool unpack theo đường dẫn ra là thấy. Hoặc có thể dùng file copy của sv khác bỏ vào cũng đc.

Làm ơn cho mình hỏi. nó nằm ở phần nào? server hay client? mình tìm khắp rồi mà ko thấy
chỉ đường dẫn giúp mình với.
Người viết đã nói rõ là nằm ở clietn rồi đó bạn. Trong thư mục s3client.

kakashi43
10-04-13, 11:20 AM
Cuối cùng các bạn vào client, vào folder Ui tìm đến 2 file có đuôi mở rộng là .lua
Thêm
Code:
AddCommand("Alt+Space", "","Switch([[showobjname]])")
sau một hàm AddCommand bất kỳ.
Sau đó chạy server, chạy game và vào phần tùy chọn, chỉnh qua lại giữa chế độ bàn phím mặc định và kết hợp để client load các file lua. vào game vứt vật phẩm ra và ấn Alt+Space.

mình tìm ko ra file .lua bạn nói, ai biết chỉ mình với

Hình như trong folder Ui có 2 file tiếng tàu ấy :-?

shinrenkyo
10-04-13, 01:00 PM
Nằm trong file updatehn.pak, dùng tool unpack theo đường dẫn ra là thấy. Hoặc có thể dùng file copy của sv khác bỏ vào cũng đc.

Người viết đã nói rõ là nằm ở clietn rồi đó bạn. Trong thư mục s3client.
ko biết unpack:((
30charrrrrrrrrrrrrrrrrrrrrrrr
bạn share tui 2 file .lua đó đc ko? tks

tam241992
10-04-13, 01:13 PM
ko biết unpack:((
30charrrrrrrrrrrrrrrrrrrrrrrr
bạn share tui 2 file .lua đó đc ko? tks

trời ạ, 2 file lụa đó nằm trong Ui/Tiếng tàu.lua
vô đó mà Add nút đó vào
chú ý là có 2 file lụa nha, 1 cái là kết hợp, còn cái là mặc định. xong vô test mặc định và kết hợp sẽ được thôi.

shinrenkyo
10-04-13, 01:34 PM
trời ạ, 2 file lụa đó nằm trong Ui/Tiếng tàu.lua
vô đó mà Add nút đó vào
chú ý là có 2 file lụa nha, 1 cái là kết hợp, còn cái là mặc định. xong vô test mặc định và kết hợp sẽ được thôi.
tks bạn, mà sever demo của tui trong ui ko co .lua:))
30 charrrrrrrrrrrrrrrrrrrrrrrrrr
bạn cho mình hỏi mình add code loat thêm 1 dòng trong item build ra thành công ko lỗi
giờ mình vao item thêm như thế nào cho nó ko dis gameserver

tam241992
10-04-13, 01:50 PM
tks bạn, mà sever demo của tui trong ui ko co .lua:))
30 charrrrrrrrrrrrrrrrrrrrrrrrrr
bạn cho mình hỏi mình add code loat thêm 1 dòng trong item build ra thành công ko lỗi
giờ mình vao item thêm như thế nào cho nó ko dis gameserver

bạn code load thêm 1 dong và phân biệt item của bên LTG hả. :|

shinrenkyo
10-04-13, 03:16 PM
bạn code load thêm 1 dong và phân biệt item của bên LTG hả. :|
đúng rồi bạn:(
30charrrrrrrrrrrrrrrr

thienthanden2
10-04-13, 03:30 PM
ko biết unpack:((
30charrrrrrrrrrrrrrrrrrrrrrrr
bạn share tui 2 file .lua đó đc ko? tks

Hĩ hix, bạn lấy file đó của server khác bỏ vào theo đúng đường dẫn đó vẫn xài đc bình thường mà. Đó chỉ là file để cài đặt thông tin mà thôi. Giờ mình đang đi làm hok có gửi đc.

shinrenkyo
10-04-13, 05:25 PM
Hĩ hix, bạn lấy file đó của server khác bỏ vào theo đúng đường dẫn đó vẫn xài đc bình thường mà. Đó chỉ là file để cài đặt thông tin mà thôi. Giờ mình đang đi làm hok có gửi đc.
tks bạn :DDDDDDDDDDDDDDDDDDdd
30charrrrrrrrrrrrrrr

zenyshou
10-04-13, 08:34 PM
Nằm trong file updatehn.pak, dùng tool unpack theo đường dẫn ra là thấy. Hoặc có thể dùng file copy của sv khác bỏ vào cũng đc.

Người viết đã nói rõ là nằm ở clietn rồi đó bạn. Trong thư mục s3client.

Bạn ơi. mình tìm rất kĩ rồi. nhưng ko hề thấy thư mục s3client :(
tìm trong client của VNG luôn rồi mà

thienthanden2
10-04-13, 08:46 PM
Bạn ơi. mình tìm rất kĩ rồi. nhưng ko hề thấy thư mục s3client :(
tìm trong client của VNG luôn rồi mà

Cái này đang nói trong source đó bạn ơi, tất cả thư mục đều nằm trong source hết. Bạn kiếm ở SV (client + sv) đã thành phẩm thì làm sao có được :D

zenyshou
10-04-13, 08:58 PM
Cái này đang nói trong source đó bạn ơi, tất cả thư mục đều nằm trong source hết. Bạn kiếm ở SV (client + sv) đã thành phẩm thì làm sao có được :D

hic. thảo nào. thế sau khi làm xong cái này thì phải cho nó vào client hả bạn.
cám ơn bạn nhìu

hoangtubeatup
11-04-13, 02:29 AM
Thanks bạn rât nhiều , mà bạn có thể cho mình hỏi 1 vần đề hơi bị ngố ngố tí không , mình build source rồi nhưng không biết phải lấy setting ở đâu . Source mình build mình khong thấy cho ra thư mục setting :( . Bạn có thể giúp mình không , mình là newbie ... :D

thaihoa91
11-04-13, 02:53 AM
Thanks bạn rât nhiều , mà bạn có thể cho mình hỏi 1 vần đề hơi bị ngố ngố tí không , mình build source rồi nhưng không biết phải lấy setting ở đâu . Source mình build mình khong thấy cho ra thư mục setting :( . Bạn có thể giúp mình không , mình là newbie ... :D

Settings là ở Server và Client bao gồm các file .txt .ini

Source dùng để build ra các file .dll .exe như game.exe, coreclient.dll, coreserver.dll, gameserver.exe.... chứ mấy file .txt .ini thì ko fải là dạng source !

shinrenkyo
11-04-13, 11:19 AM
Mình bị lỗi thế này:


E:\Build\SourceJX\swrod3\SwordOnline\Sources\Core\ Src\KObjSet.cpp(245) : error C2248: 'm_CommonAttrib' : cannot access private member declared in class 'KItem'
E:\Build\SourceJX\swrod3\SwordOnline\Sources\Core\ Src\KItem.h(139) : see declaration of 'm_CommonAttrib'

trong file KItem.h đã khai báo thế này ai chỉ dùm:


typedef struct
{
int nItemGenre; // 道具种类 (武器? 药品? 矿石?)
int nDetailType; // 在该种类中的具体类别
int nParticularType; // 详细类别
int nObjIdx; // 地图上摆放时对应的物件数据编号
BOOL bStack; // 是否可叠放
int nWidth; // 道具栏中所占宽度
int nHeight; // 道具栏中所占高度
int nPrice; // 价格
int nLevel; // 等级
int nSeries; // 五行属性
char szItemName[80]; // 名称
#ifndef _SERVER
char szImageName[80]; // 界面中的动画文件名
char szIntro[256]; // 说明文字
#endif
int nNpcImage; // NPC图象影响
int m_nTypeItem;
int m_nGroupItem;
int m_nActiveAllItem;
int m_nNumSetItem;
int nTypeItem;
int m_CommonAttrib;
int m_aryMagicAttrib;

} KItemCommonAttrib;

hi vọng mọi người giúp đỡ, tks

thienthanden2
11-04-13, 12:08 PM
Thanks bạn rât nhiều , mà bạn có thể cho mình hỏi 1 vần đề hơi bị ngố ngố tí không , mình build source rồi nhưng không biết phải lấy setting ở đâu . Source mình build mình khong thấy cho ra thư mục setting :( . Bạn có thể giúp mình không , mình là newbie ... :D

Bạn có thể lấy setting của sv khác bất kỳ để thêm vào, quan trọng là chỉnh sửa lại cho phù hợp với source. Mà muốn vậy phải đọc được source làm cái gì trong đó. Mà muốn hiểu được source thì phải đọc đi đọc lại, song song đó thì có thể đọc thêm sách c++ cơ bản. lúc đầu ko hiểu nhưng đọc riết cũng thành hiểu.

zenyshou
12-04-13, 10:03 PM
thienthan hoặc thái hòa giúp mình tí thế này:
để build cource thì server+client mình phải lấy cái mình cần dùng cho vào đấy rồi mới build đúng ko?
mình là gà. mới tập vọc JxP nên rất mong sự giúp đỡ tận tình của những người như 2 bạn.
thêm nữa.
mình thử build rồi nhưng có nhiều lỗi lắm.
các bạn có thể cho mình 1 cái hướng dẫn cách build đc ko?
mình có xem mấy cái hướng dẫn rồi. có cả hướng dẫn build =video của cyberteam nữa. nhưng tại vì xem mấy hướng dẫn thấy mỗi cái build 1 kiểu nên ko hiểu lắm. nó hướng dẫn đấy là ví dụ hay là sao?
xin lỗi vì hỏi hơi nhiều. cám ơn các bạn nhiều

zenyshou
17-04-13, 12:01 AM
có ai ko. trả lời giúp mình đi :(

thienthanden2
17-04-13, 01:29 AM
có ai ko. trả lời giúp mình đi :(

Theo tình trạng của bạn kể thì trước tiên bạn cần đọc sách c++ cơ bản trước cho thấm, sau đó thì làm theo hướng dẫn build có trên diễn đàn, huớg dẫn nào cũng đc cả, nó chỉ có 2 phần là add thư viện và build thành file thôi. Những file Build xong sẽ được đè vào sv nền nào đó. Build bị error gì nếu ko biết thì tiếp tục hỏi, sẽ có người giải đáp đó là lỗi gì rồi fix build lại chừng nào hết lỗi thì ok, thế thui. Chừng nào bạn build đc không còn error thì liên hệ mình, mình gửi cho sv nền config sẵn phù hợp với source gốc.

shinrenkyo
17-04-13, 06:58 AM
Theo tình trạng của bạn kể thì trước tiên bạn cần đọc sách c++ cơ bản trước cho thấm, sau đó thì làm theo hướng dẫn build có trên diễn đàn, huớg dẫn nào cũng đc cả, nó chỉ có 2 phần là add thư viện và build thành file thôi. Những file Build xong sẽ được đè vào sv nền nào đó. Build bị error gì nếu ko biết thì tiếp tục hỏi, sẽ có người giải đáp đó là lỗi gì rồi fix build lại chừng nào hết lỗi thì ok, thế thui. Chừng nào bạn build đc không còn error thì liên hệ mình, mình gửi cho sv nền config sẵn phù hợp với source gốc.
chuẩn rồi, mấy nay ko gặp:D
tại đang ngâm c++ cơ bản,ko ngâm xong build lỗi ko biết sửa, hỏi hoài cũng ngại:D mà cũng ko ai tl đâu

zenyshou
17-04-13, 04:11 PM
Theo tình trạng của bạn kể thì trước tiên bạn cần đọc sách c++ cơ bản trước cho thấm, sau đó thì làm theo hướng dẫn build có trên diễn đàn, huớg dẫn nào cũng đc cả, nó chỉ có 2 phần là add thư viện và build thành file thôi. Những file Build xong sẽ được đè vào sv nền nào đó. Build bị error gì nếu ko biết thì tiếp tục hỏi, sẽ có người giải đáp đó là lỗi gì rồi fix build lại chừng nào hết lỗi thì ok, thế thui. Chừng nào bạn build đc không còn error thì liên hệ mình, mình gửi cho sv nền config sẵn phù hợp với source gốc.

cám ơn Thiên Thần đã nhiệt tình giúp đỡ.


chuẩn rồi, mấy nay ko gặp:D
tại đang ngâm c++ cơ bản,ko ngâm xong build lỗi ko biết sửa, hỏi hoài cũng ngại:D mà cũng ko ai tl đâu

Shinren cho mình hỏi. bạn học C++ bằng ebooks hay video? có bộ tiếng việt nào share cho mình với. mình dốt tiếng anh lắm

shinrenkyo
17-04-13, 05:37 PM
cám ơn Thiên Thần đã nhiệt tình giúp đỡ.



Shinren cho mình hỏi. bạn học C++ bằng ebooks hay video? có bộ tiếng việt nào share cho mình với. mình dốt tiếng anh lắm
mình mới đọc cái ebook căn bản c++ àk:(

zenyshou
17-04-13, 05:56 PM
giaotrinhcntt.com
bạn vô trang này đi. có cả video kìa. mới down 1 đống về.nhưng ko biết đọc có hiểu gì ko nữa >"<

provklmv1
17-04-13, 10:35 PM
mình mới đọc cái ebook căn bản c++ àk:(

Bạn ơi cho mình yhaoo hoặc pm yhaoo mình vs mình hỏi cái này ty. yahoo: hero_it9x

--- Chế độ gộp bài viết ---


giaotrinhcntt.com
bạn vô trang này đi. có cả video kìa. mới down 1 đống về.nhưng ko biết đọc có hiểu gì ko nữa >"<

học lập trình code nhiều làm nhiều bài tập là hiểu thôi mà^^