Kết quả 1 đến 10 của 10
-
04-05-17, 07:44 PM #1
- Ngày tham gia
- Jul 2007
- Bài viết
- 137
- Thanks
- 47
- Thanked 61 Times in 20 Posts
Hỏi về source JX Win - file KPlayer.cpp
Nếu có thể mong các cao thủ dev source giải thích hay chỉ dẫn giùm (không phải dev script nha)
Mình đã hiểu được cách load một số file .lua khi start server.
Khi xem về file UiMarket (kỳ trân các) - mình search các biến các hàm thì thấy trong 2 file KPlayer có các dòng lệnh sau
File KPlayer.h
Code:void script(int nId);
Code:#ifdef _SERVER void KPlayer::script(int nId) { if (nId == 1) { char scriptName[255]; sprintf(scriptName,"\\script\\datau\\phanthuong\\exp.lua"); ExecuteScript(scriptName,"main",0); } else if (nId == 2) { char scriptName[255]; sprintf(scriptName,"\\script\\datau\\phanthuong\\money.lua"); ExecuteScript(scriptName,"main",0); } else if (nId == 3) { char scriptName[255]; sprintf(scriptName,"\\script\\datau\\phanthuong\\random.lua"); ExecuteScript(scriptName,"main",0); } else if (nId == 4) { char scriptName[255]; sprintf(scriptName,"\\script\\datau\\phanthuong\\lucky.lua"); ExecuteScript(scriptName,"main",0); } else if (nId == 5) { char scriptName[255]; sprintf(scriptName,"\\script\\datau\\phanthuong\\item.lua"); ExecuteScript(scriptName,"main",0); } else if (nId == 6) { char scriptName[255]; sprintf(scriptName,"\\script\\datau\\phanthuong\\point.lua"); ExecuteScript(scriptName,"main",0); } else if (nId == 7) { if(Npc[Player[CLIENT_PLAYER_INDEX].m_nIndex].m_FightMode == 0) { char scriptName[255]; sprintf(scriptName,"\\script\\ktc\\kytrancac.lua"); ExecuteScript(scriptName,"main",0); } else { char szMsg[100]; sprintf(szMsg, "Kh«ng thÓ më kú tr©n c¸c ë khu vùc chiÕn ®Êu."); KPlayerChat::SendSystemInfo(1, m_nPlayerIndex, "HÖ thèng", (char *) szMsg, strlen(szMsg) ); } } else if (nId == 8) { char scriptName[255]; sprintf(scriptName,"\\script\\epdo\\ephkmp.lua"); ExecuteScript(scriptName,"main",0); } else if (nId == 9) { char scriptName[255]; sprintf(scriptName,"\\script\\trangthaipk\\luyencong.lua"); ExecuteScript(scriptName,"main",0); } else if (nId == 10) { char scriptName[255]; sprintf(scriptName,"\\script\\trangthaipk\\chiendau.lua"); ExecuteScript(scriptName,"main",0); } else if (nId == 11) { char scriptName[255]; sprintf(scriptName,"\\script\\trangthaipk\\dosat.lua"); ExecuteScript(scriptName,"main",0); } else if (nId == 12) { char scriptName[255]; sprintf(scriptName,"\\script\\system\\hethong.lua"); ExecuteScript(scriptName,"main",0); } else if (nId == 13) { char scriptName[255]; sprintf(scriptName,"\\script\\nhiemvu\\datau.lua"); ExecuteScript(scriptName,"main",0); } } #endif
- void script(int nId); => cái này thì gọi hàm.
- Nhưng qua file .cpp khi gọi hàm thì những dòng if (nId == 1) rồi else if (nId == 2) ...... trong những điều kiện có trong code - nếu thỏa mãn thì thực hiện chạy file .lua đã chỉ định sẵn.
- Do đang tìm cách hiểu cái UiMarket nó hoạt động thông qua source và script như thế nào (bình thường nó là 1 button - khi nhấn vào tất nhiên sẽ hiện một window (UI) nhỏ bán đồ gì đó - và cái việc bán đồ đó thông qua một file .lua để đưa vật phẩm lên UI - mình search trong thư mục script có file theo đường dẫn \\script\\ktc\\kytrancac.lua - trong file lua này là lệnh Sale(2) - theo mình hiểu là bán mấy cái đồ phúc duyên ... được qui định trong các file .txt - bình thường là 1 cái Ui Box để chứa các vật phẩm và khi mình thay đổi script theo dạng Say(....) gì đó - chạy game nó thay đổi Ui theo hàm Say)
- hiểu đến đây - nhưng vẫn chưa hiểu ngay chỗ mấy dòng lệnh if và else if - chính xác là mấy cái "nId"
- các file .lua luyencong, chiendau, ... hay datau (mình thấy trong các source khác) -
- đơn cử lấy datau làm ví dụ - thông thường mình click vào npc dã tẩu - sẽ hiện Ui dạng Say hay Say2 hay SayNew - và nó sẽ load script được viết tại file datau.lua còn khi click vào button trong game thì làm sao biết những nId này là của button hay chỉ là npc hoặc chỉ là một hàm trung gian để gọi script.
Những cái "nId" này ở đâu ra (mình thấy trong KPlayer.h có lệnh gọi) - và làm sao biết được nId nào là của các button luyencong, chiendau, item, lucky, datau, kytrancac...?
Có file nào qui định những nId đó không? Mình chỉ là tự mò mẫm rồi xem các bài viết, hướng dẫn của các ad, mod, và các jx developers trên clb. Mong các cao thủ chỉ dẫn giùm.Lần sửa cuối bởi traminh83, ngày 04-05-17 lúc 07:58 PM.
Khách viếng thăm hãy cùng traminh83 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
04-05-17, 07:55 PM #2
Ðề: Hỏi về source JX Win - file KPlayer.cpp
source này bạn dùng hình như không phải source gốc của tàu share mà source của team nào dev.
cái trên là khai báo và định nghĩa hàm, bạn sreach xem script(int nId) được gọi ở chổ nào, mình gà lắm nên chỉ biết vậy.Khách viếng thăm hãy cùng wermanhme1990 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
04-05-17, 08:02 PM #3
- Ngày tham gia
- Jul 2007
- Bài viết
- 137
- Thanks
- 47
- Thanked 61 Times in 20 Posts
Ðề: Hỏi về source JX Win - file KPlayer.cpp
Đúng rồi bạn, source này là source BrotherTeam7 - HTVL mình download theo link của một bạn trên diễn đàn.
Mình đã search rồi - search toàn bộ các file trong bộ source - nhưng chỉ thấy script(int nId) có trong 2 file là KPlayer.h và KPlayer.cpp thôi.Khách viếng thăm hãy cùng traminh83 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
04-05-17, 08:05 PM #4
Ðề: Hỏi về source JX Win - file KPlayer.cpp
bạn sreach script( hoặc KPlayer::script thôi, vì nó có thể thay bằng script(xyz).
Khách viếng thăm hãy cùng wermanhme1990 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
04-05-17, 08:14 PM #5
- Ngày tham gia
- Jul 2007
- Bài viết
- 137
- Thanks
- 47
- Thanked 61 Times in 20 Posts
Ðề: Hỏi về source JX Win - file KPlayer.cpp
Vẫn chỉ có trong file KPlayer.cpp - kiếm trong file này cũng chỉ có một chỗ mà mình đã post ở trên.
Khách viếng thăm hãy cùng traminh83 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
04-05-17, 08:52 PM #6
Ðề: Hỏi về source JX Win - file KPlayer.cpp
của bạn đây:
Core\Src\KProtocolProcess.cpp
Code:void KProtocolProcess::NpcDaTauCommand(int nIndex, BYTE* pProtocol) { CP_DATAU *pDaTauCmd; pDaTauCmd = (CP_DATAU *)pProtocol; if (nIndex <= 0 || nIndex >= MAX_PLAYER) return; if (Player[nIndex].m_nIndex <= 0 || Player[nIndex].m_nIndex >= MAX_NPC) return; Player[nIndex].script(pDaTauCmd->nbutton); }
Khách viếng thăm hãy cùng wermanhme1990 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
Các thành viên gởi lời cảm ơn đến wermanhme1990 vì bài viết này !
traminh83 (04-05-17)
-
04-05-17, 09:19 PM #7
- Ngày tham gia
- Jul 2007
- Bài viết
- 137
- Thanks
- 47
- Thanked 61 Times in 20 Posts
Ðề: Hỏi về source JX Win - file KPlayer.cpp
Mình hiểu được chút
PHP Code:int KUiDaTau::WndProc(unsigned int uMsg, unsigned int uParam, int nParam)
{
int nRet = 0;
switch(uMsg)
{
case WND_N_BUTTON_CLICK:
if (uParam == (unsigned int)(KWndWindow*)&EXP)
{
Hide();
g_pCoreShell->OperationRequest(GOI_DATAU, 1, 0);
}
else if (uParam == (unsigned int)(KWndWindow*)&money)
{
Hide();
g_pCoreShell->OperationRequest(GOI_DATAU, 2, 0);
}
else if (uParam == (unsigned int)(KWndWindow*)&random)
{
Hide();
g_pCoreShell->OperationRequest(GOI_DATAU, 3, 0);
}
break;
default:
nRet = KWndShowAnimate::WndProc(uMsg, uParam, nParam);
}
return nRet;
}
cái chỗ g_pCoreShell->OperationRequest(GOI_DATAU, 1, 0);g_pCoreShell->OperationRequest(GOI_DATAU, 2, 0);g_pCoreShell->OperationRequest(GOI_DATAU, 3, 0);
tương ứng với exp, money, và random
mà 3 chữ này trong KPlayer.cpp ở trên mình post cũng có exp.lua, money.lua và random.lua.
- trong CoreShell.h có dòng GOI_DATAU khai báo trước,
- trong CoreShell.cpp
PHP Code:case GOI_DATAU:// Da Tau
SendClientDaTau(uParam);
break;
PHP Code:void SendClientDaTau(int nstt)
{
CP_DATAU ButtonCmd;
ButtonCmd.ProtocolType = c2s_datau;
ButtonCmd.nbutton = nstt;
if (g_pClient)
g_pClient->SendPackToServer((BYTE*)&ButtonCmd, sizeof(CP_DATAU));
}
Phía trên chút trong file KProtocol.cpp có khai báo
PHP Code:sizeof(CP_DATAU), // c2s_datau
PHP Code:void KProtocolProcess::NpcDaTauCommand(int nIndex, BYTE* pProtocol)
{
CP_DATAU *pDaTauCmd;
pDaTauCmd = (CP_DATAU *)pProtocol;
if (nIndex <= 0 || nIndex >= MAX_PLAYER)
return;
if (Player[nIndex].m_nIndex <= 0 || Player[nIndex].m_nIndex >= MAX_NPC)
return;
Player[nIndex].script(pDaTauCmd->nbutton);
}
Cái dòng lệnh "script(pDaTauCmd->nbutton)" không biết có liên quan đến file UiDaTau trong cái đoạn mình post ở trên đầu
PHP Code:case WND_N_BUTTON_CLICK:
if (uParam == (unsigned int)(KWndWindow*)&EXP)
{
Hide();
g_pCoreShell->OperationRequest(GOI_DATAU, 1, 0);
}
- Theo mình hiểu thì phân tích ra vậy. Không biết đúng 100% không? Các hàm liên quan và kết nối với nhiều file, làm hơi bị rối.Khách viếng thăm hãy cùng traminh83 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
04-05-17, 09:29 PM #8
- Ngày tham gia
- Jul 2007
- Bài viết
- 137
- Thanks
- 47
- Thanked 61 Times in 20 Posts
Ðề: Hỏi về source JX Win - file KPlayer.cpp
Mình tiếp tục search và kiểm tra trong UiMarket thử và kết quả cũng có GOI_DATAU
PHP Code:int KUiMiniMap::WndProc(unsigned int uMsg, unsigned int uParam, int nParam)
{
int nRet = 0;
switch(uMsg)
{
case WND_N_BUTTON_CLICK:
if (uParam == (unsigned int)(KWndWindow*)&m_SwitchBtn)
MapSetMode(s_eMapMode == MINIMAP_M_BRIEF_PIC ? MINIMAP_M_BRIEF_PIC_BROWSE : MINIMAP_M_BRIEF_PIC);
else if (uParam == (unsigned int)(KWndWindow*)&m_SwitchBtn)
MapSetMode(x_eMapMode == MINIMAP_M_BRIEF_PIC ? MINIMAP_M_BRIEF_PIC_BROWSE : MINIMAP_M_BRIEF_PIC);
else if (uParam == (unsigned int)(KWndWindow*)&m_WorldMapBtn)
MapSetMode(MINIMAP_M_WORLD_MAP);
else if (uParam == (unsigned int)(KWndWindow*)&m_BtnFlag)
KUiFindPos::OpenWindow();
else if (uParam == (unsigned int)(KWndWindow*)&m_CaveBtn)
MapSetMode(MINIMAP_M_CAVE_MAP);
else if (uParam == (unsigned int)(KWndWindow*)&m_MarketBtn)
if (g_pCoreShell->GetGameData(GDI_IS_CHEST_UNLOCKED, 0, 0))
{
g_pCoreShell->OperationRequest(GOI_DATAU, 7, 0);
break;
}
g_pCoreShell->OperationRequest(GOI_PLAYER_ACTION, CN_GH, 0);
break;
PHP Code:g_pCoreShell->OperationRequest(GOI_DATAU, 7, 0);
và số 7 mình nghĩ nó cũng là nId trong file KPlayer.cpp
Có lẽ mình suy nghĩ đúng.
Thank wermanhme1990 nhiều lắm!Khách viếng thăm hãy cùng traminh83 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
04-05-17, 09:35 PM #9
Ðề: Hỏi về source JX Win - file KPlayer.cpp
src jx cũ lắm rồi, đưa lên vs version cao như vs 2010 hoặc vs 2017 cũng khó, mình trước chỉ vọc chứ không dev.
Khách viếng thăm hãy cùng wermanhme1990 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
-
Các thành viên gởi lời cảm ơn đến wermanhme1990 vì bài viết này !
traminh83 (04-05-17)
-
04-05-17, 10:37 PM #10
- Ngày tham gia
- Jul 2007
- Bài viết
- 137
- Thanks
- 47
- Thanked 61 Times in 20 Posts
Ðề: Hỏi về source JX Win - file KPlayer.cpp
Khách viếng thăm hãy cùng traminh83 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!
Các Chủ đề tương tự
-
[JX] [Source] Cấu trúc file Pak/Spr và cách tạo ra chúng
Bởi FanLoveJX trong diễn đàn Võ Lâm Truyền Kỳ (Jx Server)Trả lời: 51Bài viết cuối: 06-09-21, 03:34 PM -
[Gunny] Các bac Pro chỉ giáo. file nào trong source là file hiệu ứng châu báu
Bởi laibixoa trong diễn đàn Hỏi Đáp/ Yêu CầuTrả lời: 1Bài viết cuối: 09-07-14, 01:47 PM -
[JX] Vấn đề về thêm 1 thuộc tính vào lớp KPlayer
Bởi JackSparrow trong diễn đàn Hỏi Đáp/ Yêu CầuTrả lời: 0Bài viết cuối: 24-12-12, 12:07 PM -
source VB tạo file logIn cho MU đây
Bởi congacon trong diễn đàn SQL Server & WebsiteTrả lời: 36Bài viết cuối: 10-04-09, 04:26 PM -
Source tạo file Login cho Mu
Bởi congacon trong diễn đàn ReleasesTrả lời: 1Bài viết cuối: 01-01-09, 09:36 PM