tagtag15
23-05-13, 03:15 AM
Thân chào anh em!
Hiện nay thì auto đã trở thành phần cơ bản của các server private rồi. Nên mình mới làm cái này share cho các bạn nền giao diện và hướng dẫn cho các bạn chưa biết làm. Mới viết mấy hôm rồi bỏ đó nên có sai sót là điều không trảnh khỏi, các bạn hãy phát triển thêm tùy theo ý mình nhé.
Hình minh họa:
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
Đầu tiên các bạn down UI về theo link
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
Giải nén bỏ các thư mục spr và Ui vào client tương ứng. Còn 2 file .h và .cpp thì add vào project của visual mục S3Client gần cái UiItem dùng để build.
Bây giờ mình sẽ hướng dẫn các bạn code bơm máu nha, cực kỳ dễ:
1.File \S3Client\Ui\Elem\WndPureTextBtn.h
Khai báo 1 hàm nằm trong public trước chữ private:
BOOL IsChecked();//them dong nay kiem tra co check hay ko
private:
void AdjustPosition();
2.File \S3Client\Ui\Elem\WndPureTextBtn.cpp
tìm 1 chỗ trống nào đó xử lý cái hàm vừa khai xong, mục đích chỉ để trang trí auto cho đẹp thôi >:/
BOOL KWndPureTextBtn::IsChecked()
{
if (m_Flag & WNDPTB_F_CHECK)
return true;
else
return false;
}
3.File \Core\Src\CoreShell.h
Tìm cái enum GAMEOPERATION_INDEX và thêm vào 1 dòng ở cuối cái enum này:
.............................
GOI_AUTO_COMMAND, // gui lenh tu auto play
};
4.File \Core\Src\CoreShell.cpp
Tìm chữ này GOI_WEAR_EQUIP và thêm 1 cái case ở phía trên như sau:
case GOI_AUTO_COMMAND:
{
switch(uParam)
{
case 0:{ //mau'
ItemPos Pos;
PlayerItem* pItem = Player[CLIENT_PLAYER_INDEX].m_ItemList.GetFirstItem();
if (pItem && (pItem->nPlace == pos_equiproom || pItem->nPlace == pos_immediacy) &&
(Item[pItem->nIdx].GetGenre() == item_medicine && (Item[pItem->nIdx].GetDetailType() == medicine_blood
|| Item[pItem->nIdx].GetDetailType() == medicine_both)))
{
Pos.nPlace = pItem->nPlace;
Pos.nX = pItem->nX;
Pos.nY = pItem->nY;
Player[CLIENT_PLAYER_INDEX].ApplyUseItem(pItem->nIdx, Pos);
return 1;
}
while(pItem)
{
pItem = Player[CLIENT_PLAYER_INDEX].m_ItemList.GetNextItem();
if (pItem && (pItem->nPlace == pos_equiproom || pItem->nPlace == pos_immediacy) &&
(Item[pItem->nIdx].GetGenre() == item_medicine && (Item[pItem->nIdx].GetDetailType() == medicine_blood
|| Item[pItem->nIdx].GetDetailType() == medicine_both)))
{
Pos.nPlace = pItem->nPlace;
Pos.nX = pItem->nX;
Pos.nY = pItem->nY;
Player[CLIENT_PLAYER_INDEX].ApplyUseItem(pItem->nIdx, Pos);
return 1;
}
}
}break;
case 1:{//mana
}break;
default:break;
}
}
break;
case GOI_WEAR_EQUIP:
Build core - s3client lại. Vậy là bơm máu được rồi đó các bạn, bơm mana với thổ địa phù thì cũng tương tự như vậy, gán lệnh vào case 1, case 2, ... case n. Muốn thêm chức năng gì thì tùy. Chức năng tự đánh các bạn tự nghiên cứu, vì share hết thì không hay lắm, để các bạn tìm tòi phát triển thêm. Dùng KNpcAI để làm, dễ như bơm máu vậy. Chúc các bạn thành công! :-?
Nguồn maze-gamevn.org
Người Share thienthanden2
Hiện nay thì auto đã trở thành phần cơ bản của các server private rồi. Nên mình mới làm cái này share cho các bạn nền giao diện và hướng dẫn cho các bạn chưa biết làm. Mới viết mấy hôm rồi bỏ đó nên có sai sót là điều không trảnh khỏi, các bạn hãy phát triển thêm tùy theo ý mình nhé.
Hình minh họa:
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
Đầu tiên các bạn down UI về theo link
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
Giải nén bỏ các thư mục spr và Ui vào client tương ứng. Còn 2 file .h và .cpp thì add vào project của visual mục S3Client gần cái UiItem dùng để build.
Bây giờ mình sẽ hướng dẫn các bạn code bơm máu nha, cực kỳ dễ:
1.File \S3Client\Ui\Elem\WndPureTextBtn.h
Khai báo 1 hàm nằm trong public trước chữ private:
BOOL IsChecked();//them dong nay kiem tra co check hay ko
private:
void AdjustPosition();
2.File \S3Client\Ui\Elem\WndPureTextBtn.cpp
tìm 1 chỗ trống nào đó xử lý cái hàm vừa khai xong, mục đích chỉ để trang trí auto cho đẹp thôi >:/
BOOL KWndPureTextBtn::IsChecked()
{
if (m_Flag & WNDPTB_F_CHECK)
return true;
else
return false;
}
3.File \Core\Src\CoreShell.h
Tìm cái enum GAMEOPERATION_INDEX và thêm vào 1 dòng ở cuối cái enum này:
.............................
GOI_AUTO_COMMAND, // gui lenh tu auto play
};
4.File \Core\Src\CoreShell.cpp
Tìm chữ này GOI_WEAR_EQUIP và thêm 1 cái case ở phía trên như sau:
case GOI_AUTO_COMMAND:
{
switch(uParam)
{
case 0:{ //mau'
ItemPos Pos;
PlayerItem* pItem = Player[CLIENT_PLAYER_INDEX].m_ItemList.GetFirstItem();
if (pItem && (pItem->nPlace == pos_equiproom || pItem->nPlace == pos_immediacy) &&
(Item[pItem->nIdx].GetGenre() == item_medicine && (Item[pItem->nIdx].GetDetailType() == medicine_blood
|| Item[pItem->nIdx].GetDetailType() == medicine_both)))
{
Pos.nPlace = pItem->nPlace;
Pos.nX = pItem->nX;
Pos.nY = pItem->nY;
Player[CLIENT_PLAYER_INDEX].ApplyUseItem(pItem->nIdx, Pos);
return 1;
}
while(pItem)
{
pItem = Player[CLIENT_PLAYER_INDEX].m_ItemList.GetNextItem();
if (pItem && (pItem->nPlace == pos_equiproom || pItem->nPlace == pos_immediacy) &&
(Item[pItem->nIdx].GetGenre() == item_medicine && (Item[pItem->nIdx].GetDetailType() == medicine_blood
|| Item[pItem->nIdx].GetDetailType() == medicine_both)))
{
Pos.nPlace = pItem->nPlace;
Pos.nX = pItem->nX;
Pos.nY = pItem->nY;
Player[CLIENT_PLAYER_INDEX].ApplyUseItem(pItem->nIdx, Pos);
return 1;
}
}
}break;
case 1:{//mana
}break;
default:break;
}
}
break;
case GOI_WEAR_EQUIP:
Build core - s3client lại. Vậy là bơm máu được rồi đó các bạn, bơm mana với thổ địa phù thì cũng tương tự như vậy, gán lệnh vào case 1, case 2, ... case n. Muốn thêm chức năng gì thì tùy. Chức năng tự đánh các bạn tự nghiên cứu, vì share hết thì không hay lắm, để các bạn tìm tòi phát triển thêm. Dùng KNpcAI để làm, dễ như bơm máu vậy. Chúc các bạn thành công! :-?
Nguồn maze-gamevn.org
Người Share thienthanden2