[JX] [Source] Hướng dẫn làm hiện tên Obj và phân biệt màu giống VNG
Hello & Welcome to our community. Is this your first visit? Đăng Ký
Follow us on
Follow us on Facebook Follow us on Twitter Linked In Flickr Watch us on YouTube My Space Blogger
 
Trang 1 của 4 1 2 3 ... CuốiCuối
Kết quả 1 đến 10 của 33
  1. #1
    Thành Viên lzlsky301's Avatar
    Ngày tham gia
    Nov 2011
    Đang ở
    The Moon
    Bài viết
    366
    Thanks
    85
    Thanked 230 Times in 76 Posts

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

    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 .
    Đầ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",
    Code:
    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
    Code:
    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:
    Code:
    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:
    Code:
    case GDI_SHOW_PLAYERS_MANA:			//»ñÈ¡ÏÔʾ¸÷Íæ¼ÒÄÚÁ¦
    		nRet = NpcSet.CheckShowMana();
    		break;
    Thêm vào sau nó
    Code:
    case GDI_SHOW_OBJ_NAME:			//hien tên obj
    		nRet = ObjSet.CheckShowName();
    		break;
    Tiếp theo tìm đến
    Code:
    case GOI_SHOW_PLAYERS_MANA:
    		NpcSet.SetShowManaFlag(nParam);
    		break;
    Thêm vào sau nó:
    Code:
    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
    Code:
    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:
    Code:
    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
    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.
    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
    Code:
    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
    Code:
    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);
    	}}
    Khách viếng thăm hãy cùng lzlsky301 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. The Following 20 Users Say Thank You to lzlsky301 For This Useful Post:

    assaa (30-09-12), caochung (06-03-13), chaoban6 (07-03-13), Edward_Newgate (30-09-12), gia_muvn (04-10-12), gj4cm0y3u3m (07-03-13), ICarus (30-09-12), kakashi43 (07-03-13), KingMax (30-09-12), loianhhua003 (30-09-12), nhoxmap_b7 (30-09-12), pro812731 (30-09-12), runkissbig (30-09-12), satthupro95 (26-01-13), SystemError (30-09-12), thaihoa91 (30-09-12), thanhtunghk (02-11-12), tunglt (02-10-12), vipprolc (30-09-12), Vo Le (13-06-13)

  3. #2
    Thành Viên
    Ngày tham gia
    Jun 2012
    Bài viết
    216
    Thanks
    23
    Thanked 568 Times in 74 Posts

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

    tks cho chú 1 phát lun nè

    rất hay
    Khách viếng thăm hãy cùng duykhang xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  4. #3
    Thành Viên
    Ngày tham gia
    Mar 2012
    Bài viết
    57
    Thanks
    11
    Thanked 3 Times in 2 Posts

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

    tớ làm bị báo lỗi
    Code:
     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
    Code:
    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;
    Khách viếng thăm hãy cùng borntolead xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  5. #4
    Thành Viên
    Ngày tham gia
    Apr 2012
    Bài viết
    72
    Thanks
    44
    Thanked 5 Times in 4 Posts

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

    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
    Khách viếng thăm hãy cùng jackylong911 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  6. #5
    Thành Viên thienthanden2's Avatar
    Ngày tham gia
    Jun 2007
    Đang ở
    Thiên đường đã lỡ...
    Bài viết
    217
    Thanks
    14
    Thanked 183 Times in 73 Posts

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

    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é.
    Khách viếng thăm hãy cùng thienthanden2 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  7. #6
    Thành Viên
    Ngày tham gia
    Feb 2012
    Bài viết
    200
    Thanks
    256
    Thanked 163 Times in 30 Posts

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

    Trích dẫn Gửi bởi thienthanden2 [Only registered and activated users can see links. ]
    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 ạ
    Code:
    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)
    Khách viếng thăm hãy cùng gj4cm0y3u3m xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  8. #7
    Thành Viên thienthanden2's Avatar
    Ngày tham gia
    Jun 2007
    Đang ở
    Thiên đường đã lỡ...
    Bài viết
    217
    Thanks
    14
    Thanked 183 Times in 73 Posts

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

    Trích dẫn Gửi bởi gj4cm0y3u3m [Only registered and activated users can see links. ]
    Cho em hỏi khi build Gameserver có cái cảnh báo như này thì sửa như thế nào ạ
    Code:
    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).
    Khách viếng thăm hãy cùng thienthanden2 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  9. #8
    Thành Viên Tâm Huyết shinrenkyo's Avatar
    Ngày tham gia
    May 2011
    Bài viết
    1,534
    Thanks
    376
    Thanked 147 Times in 108 Posts

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

    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
    Khách viếng thăm hãy cùng shinrenkyo xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  10. #9
    Thành Viên
    Ngày tham gia
    Aug 2010
    Bài viết
    18
    Thanks
    11
    Thanked 0 Times in 0 Posts

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

    Đầ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.
    Khách viếng thăm hãy cùng zenyshou xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  11. #10
    Thành Viên thienthanden2's Avatar
    Ngày tham gia
    Jun 2007
    Đang ở
    Thiên đường đã lỡ...
    Bài viết
    217
    Thanks
    14
    Thanked 183 Times in 73 Posts

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

    Trích dẫn Gửi bởi shinrenkyo [Only registered and activated users can see links. ]
    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.
    Lần sửa cuối bởi thienthanden2, ngày 10-04-13 lúc 11:08 AM.
    Khách viếng thăm hãy cùng thienthanden2 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  12. The Following 2 Users Say Thank You to thienthanden2 For This Useful Post:

    shinrenkyo (10-04-13), zenyshou (10-04-13)

 

 
Trang 1 của 4 1 2 3 ... CuốiCuối

Các Chủ đề tương tự

  1. [JX] Vài vấn đề về source cần pro giúp
    Bởi FanLoveJX trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 3
    Bài viết cuối: 30-08-12, 10:56 AM
  2. Xin bộ Source của các pác đã cài thành công NHẤT KIẾM
    Bởi cuongpzo trong diễn đàn Hỏi Đáp/ Yêu Cầu
    Trả lời: 2
    Bài viết cuối: 29-10-11, 03:53 PM

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 02:51 AM.
vBulletin®, Copyright ©2000-2011, Jelsoft Enterprises Ltd.
CLBGamesVN không chịu trách nhiệm về Luật Bản Quyền của các tài liệu, bài viết v.v...được đăng tải trên diễn đàn này.
Diễn đàn phát triển dưới sự đóng góp của tất cả thành viên. BQT chỉ là những người thành lập ra sân chơi, quản lý và duy trì về mặt kỹ thuật, nội dung khi hợp lệ.