are you sellin it? DM me thank you!yes but different
View attachment 253841
Most visitors online was 12487 , on 27 Apr 2024
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!are you sellin it? DM me thank you!yes but different
View attachment 253841
Waiting for it
No worries. that's why its simple. if you don't mind sharing your perfect modelHAHAHA....!
It won't be complete.
I'd rather distribute it myself.
I did already just follow the logic of other card . it works thanks ejsayaaa for this post..No worries. that's why its simple. if you don't mind sharing your perfect model
so they will have the expiry function.
you forgot to add header.try
C++:int m_nKILLFEEDSELECTOR;
on GLCharData.h below bool m_bCaptureTheFlagHoldFlag;
any idea to fix this ?
View attachment 253836
did you know who is the author for what you're using?yes but different
View attachment 253841
is it complete now mr engaged ? hahapost updated.
\Lib_Client\G-Logic\GLCharactorReq.cpp(2033) : error C3861: 'ReqKillFeedWindowOpen': identifier not found, even with argument-dependent lookup
GLCharacter.h
HRESULT ReqKillFeedWindowOpen ( WORD wPosX, WORD wPosY );
GLCharactorReq.cpp
HRESULT GLCharacter::ReqKillFeedWindowOpen( WORD wPosX, WORD wPosY )
{
SINVENITEM* pInvenItem = m_cInventory.FindPosItem ( wPosX, wPosY );
if ( !pInvenItem ) return E_FAIL;
SITEM* pItem = GLItemMan::GetInstance().GetItem ( pInvenItem->sItemCustom.sNativeID );
if ( !pItem )
{
CInnerInterface::GetInstance().PrintMsgText ( NS_UITEXTCOLOR::DISABLE, ID2GAMEINTEXT("EMKILL_FEED_SELECT_NOITEM") );
return E_FAIL;
}
if ( pItem->sBasicOp.emItemType != ITEM_KILL_FEED_SELECTOR )
{
CInnerInterface::GetInstance().PrintMsgText ( NS_UITEXTCOLOR::DISABLE, ID2GAMEINTEXT("EMKILL_FEED_SELECT_NOITEM") );
return E_FAIL;
}
CInnerInterface::GetInstance().ShowGroupFocus( STYLE_KILL_FEED_WINDOW );
m_wInvenPosX1 = wPosX;
m_wInvenPosY1 = wPosY;
return S_OK;
}
try this
C++:HRESULT ReqKillFeedWindowOpen ( WORD wPosX, WORD wPosY );
C++:HRESULT GLCharacter::ReqKillFeedWindowOpen( WORD wPosX, WORD wPosY ) { SINVENITEM* pInvenItem = m_cInventory.FindPosItem ( wPosX, wPosY ); if ( !pInvenItem ) return E_FAIL; SITEM* pItem = GLItemMan::GetInstance().GetItem ( pInvenItem->sItemCustom.sNativeID ); if ( !pItem ) { CInnerInterface::GetInstance().PrintMsgText ( NS_UITEXTCOLOR::DISABLE, ID2GAMEINTEXT("EMKILL_FEED_SELECT_NOITEM") ); return E_FAIL; } if ( pItem->sBasicOp.emItemType != ITEM_KILL_FEED_SELECTOR ) { CInnerInterface::GetInstance().PrintMsgText ( NS_UITEXTCOLOR::DISABLE, ID2GAMEINTEXT("EMKILL_FEED_SELECT_NOITEM") ); return E_FAIL; } CInnerInterface::GetInstance().ShowGroupFocus( STYLE_KILL_FEED_WINDOW ); m_wInvenPosX1 = wPosX; m_wInvenPosY1 = wPosY; return S_OK; }
how about database saving
on fetch find this
int COdbcManager::GetCharacterInfo(int nUserNumber,
int nChaNum,
SCHARDATA2* pChaData2)
{
if (nUserNumber <= 0 || nChaNum <= 0)
{
return DB_ERROR;
}
int nRowCount = 0;
SQLRETURN sReturn = 0;
ODBC_STMT* pConn = m_pGameDB->GetConnection();
if (!pConn) return DB_ERROR;
TCHAR szTemp[1024] = {0};
_snprintf( szTemp, 1024, "SELECT UserNum,SGNum,ChaName,ChaTribe,ChaClass,"
"ChaBright,ChaLevel,ChaDex,ChaIntel,ChaPower,"
"ChaStrong,ChaSpirit,ChaStrength,ChaStRemain,ChaAttackP,"
"ChaDefenseP,ChaFightA,ChaShootA,ChaSkillPoint,ChaHP,"
"ChaMP,ChaSP,ChaPK,ChaStartMap,ChaStartGate,"
"ChaPosX,ChaPosY,ChaPosZ,ChaMoney,ChaExp,"
"ChaSaveMap,ChaSavePosX,ChaSavePosY,ChaSavePosZ,ChaSchool,"
"ChaHair,ChaFace,ChaLiving,ChaInvenLine,"
"ChaReturnMap,ChaReturnPosX,ChaReturnPosY,ChaReturnPosZ,GuNum,"
"ChaGuName,ChaSex,ChaHairColor, ChaReExp, ChaSpMID, ChaSpSID, "
"ChaScaleRange,ChaCP,ChaContributionPoint, "
"ChaActivityPoint, ChaBadge, ChaPKScore, ChaPKDeath, "
"ChaInventoryLockStatus, ChaLockerLockStatus, ChaEquipmentLockStatus, "
"ChaCWKill, ChaCWDeath, ChaEquipmentLockEnable, ChaKillFeedID "
"FROM ChaInfo WHERE ChaNum=%d AND UserNum=%d", nChaNum, nUserNumber );
//add this
// kill feed
SQLINTEGER nChaKillFeedID, cbChaKillFeedID = SQL_NTS;
while (true) // <-------------- find this
{
find this
int COdbcManager::SaveCharacter(LPVOID _pbuffer)
{
if (_pbuffer == NULL) return DB_ERROR;
SCHARDATA2* pCharData2 = reinterpret_cast<SCHARDATA2*> ( _pbuffer );
DWORD dwChaNum = pCharData2->m_dwCharID;
// 해킹한 캐릭터의 경우 레벨이 0 으로 세팅될 가능성이 많다.
if (dwChaNum == 0 || pCharData2->m_wLevel == 0)
{
return DB_ERROR;
}
char szNick[CHAR_SZNAME] = {0}; // Club nick name
DWORD dwUserNum = pCharData2->GetUserID();
DWORD dwSvrNum = pCharData2->m_dwServerID;
DWORD dwChaID = pCharData2->m_dwCharID;
StringCchCopy(szNick, CHAR_SZNAME, pCharData2->m_szNick);
// 베트남 탐직방지 시스템의 추가로 캐릭터 저장하는 부분의 수정
TCHAR szTemp[2048] = {0};
_snprintf( szTemp, 2048, "UPDATE ChaInfo SET ChaBright=%d, ChaLevel=%u, ChaMoney=%I64d, "
"ChaDex=%u, ChaIntel=%u, ChaSchool=%u, ChaHair=%u, ChaFace=%u, "
"ChaLiving=%d, ChaStrong=%u, ChaPower=%u, ChaSpirit=%u, ChaStrength=%u, "
"ChaStRemain=%u, ChaAttackP=%u, ChaDefenseP=%u, ChaFightA=%u, ChaShootA=%u, "
"ChaExp=%I64d, ChaSkillPoint=%u, ChaHP=%u, ChaMP=%u, ChaSP=%u, ChaPK=%u, "
"ChaStartMap=%u, ChaStartGate=%u, ChaPosX=%f, ChaPosY=%f, ChaPosZ=%f, "
"ChaSaveMap=%d, ChaSavePosX=%f, ChaSavePosY=%f, ChaSavePosZ=%f, ChaReturnMap=%d, "
"ChaReturnPosX=%f, ChaReturnPosY=%f, ChaReturnPosZ=%f, ChaGuName='%s', ChaReExp=%I64d, "
"ChaScaleRange=%f, ChaCP=%u, ChaContributionPoint=%I64d, "
"ChaActivityPoint=%u, ChaBadge='%s', ChaPKScore=%u, ChaPKDeath=%u, "
"ChaEquipmentLockEnable=%u, ChaInventoryLockStatus=%u, ChaLockerLockStatus=%u, ChaEquipmentLockStatus=%u, "
"ChaCWKill=%u, ChaCWDeath=%u, ChaKillFeedID=%d " // kill feed
"WHERE ChaNum=%u",
pCharData2->m_nBright,
pCharData2->m_wLevel,
pCharData2->m_lnMoney,
pCharData2->m_sStats.wDex,
pCharData2->m_sStats.wInt,
pCharData2->m_wSchool,
pCharData2->m_wHair,
pCharData2->m_wFace,
pCharData2->m_nLiving,
pCharData2->m_sStats.wStr,
pCharData2->m_sStats.wPow,
pCharData2->m_sStats.wSpi,
pCharData2->m_sStats.wSta,
pCharData2->m_wStatsPoint,
pCharData2->m_wAP,
pCharData2->m_wDP,
pCharData2->m_wPA,
pCharData2->m_wSA,
pCharData2->m_sExperience.lnNow,
pCharData2->m_dwSkillPoint,
pCharData2->m_sHP.dwData,
pCharData2->m_sMP.dwData,
pCharData2->m_sSP.dwData,
pCharData2->m_wPK,
pCharData2->m_sStartMapID.dwID,
pCharData2->m_dwStartGate,
pCharData2->m_vStartPos.x,
pCharData2->m_vStartPos.y,
pCharData2->m_vStartPos.z,
(int) pCharData2->m_sSaveMapID.dwID,
pCharData2->m_vSavePos.x,
pCharData2->m_vSavePos.y,
pCharData2->m_vSavePos.z,
(int) pCharData2->m_sLastCallMapID.dwID,
pCharData2->m_vLastCallPos.x,
pCharData2->m_vLastCallPos.y,
pCharData2->m_vLastCallPos.z,
szNick,
pCharData2->m_lnReExp,
pCharData2->m_fScaleRange,
pCharData2->m_sCombatPoint.wNow, /*combatpoint logic, Juver, 2017/05/27 */
/*contribution point, Juver, 2017/08/23 */
pCharData2->m_llContributionPoint,
/*activity point, Juver, 2017/08/23 */
pCharData2->m_dwActivityPoint,
/*activity system, Juver, 2017/11/04 */
pCharData2->m_szBadge,
/*pk info, Juver, 2017/11/17 */
pCharData2->m_dwPKScore,
pCharData2->m_dwPKDeath,
/*equipment lock, Juver, 2018/01/13 */
pCharData2->m_bLockEnable,
pCharData2->m_bInventoryLockStatus,
pCharData2->m_bLockerLockStatus,
pCharData2->m_bEquipmentLockStatus,
pCharData2->m_dwCWKill,
pCharData2->m_dwCWDeath,
pCharData2->m_nKILLFEEDSELECTOR, // kill feed
pCharData2->m_dwCharID );
I don't know that my skillfeed is still broken, he's just like that, not like ejaysayahow about database saving
You have the database saving sir ?
can you share databased saving sir?
can you share databased saving sir?