修改捕鱼结算

来源:互联网 发布:js input数组 编辑:程序博客网 时间:2024/04/30 07:54



bug: ID28、27、的鱼打中没有加入结算金币中;
ID24的炸弹以及被炸弹效果炸死的鱼没有加入结算金币中;​​
​开启能量炮后打一发10倍炮扣10金币,但是在结算中算的子弹消耗为*2即20金币。

///e:\永荣\游戏组件\常规游戏\蛇行亿年\蛇行亿年客户端\Logic\NPC.cpp

void NPC::OnDead( int _playerID , int scoreDelta, bool bGuiCoinTip )
{
dtePlayer *player = g_World->GetPlayer(_playerID);
if ( !player )
{
printf("NPC.cpp OnDead player == NULL playerID = %d...\n", _playerID);
return;
}



if ( g_Env->pNetWorkManger->GetSelfChairID()==_playerID )
{

player->Addi64GainGold(scoreDelta);

}



__ChangeAction( NS_Deathing );
int allScore = scoreDelta;
//
EnemyManager *enemyMgr = g_World->GetMissionManager()->GetEnemyManager();
dteCoinManager *coinManager = g_World->GetCoinManager();
coinManager->FlyCoin( allScore, position, player->GetPos(), player->GetTurretLv(), player->GetRotate() );


__OnShowSceneMoneyEvent( _playerID, allScore, position.x, position.y );


// 粒子动画
switch( type )
{
case eGROUP:
case eNORMAL:
case eBOAT:
{
if ( bGuiCoinTip )
{
__OnShowCoinPacketEvent( _playerID, allScore, (float)allScore/player->GetTurretLv() );
if ( fishType >= 18 )
{
__OnShowPraiseEvent( _playerID, allScore );
if ( g_World->GetSoundManager() )
{
g_World->GetSoundManager()->PlayDeadSoundYesPraise();
}
}
}
}
break;
case eBOTTLE:
{
//player->OnEnergyChange();
}
break;
case eBOMB:
break;
case eLOCALITY:
{
// UI
g_World->GetParticleManager()->PlayTropedoEmitter( position );
g_World->CameraShake(1);
}
break;
case eTEAM:
break;
case eSCREEN:
{
// UI
g_World->GetParticleManager()->PlayTropedoEmitter( position );
g_World->GetParticleManager()->PlaySeaWaveEmitter( position );
g_World->CameraShake(1);
}
break;
case eSTOP:
{
g_World->GetMissionManager()->GetEnemyManager()->StopAllEnemy( _playerID, allScore );
g_World->GetParticleManager()->PlayAllKillEmitter( position );
}
break;
}
}

////e:\永荣\游戏组件\常规游戏\蛇行亿年\NetInterface\NetWorkEventImplement.cpp

bool DTENetWork::_OnCastNetSuccess( const void * pBuffer, WORD wDataSize )
{
const CMD_S_Cast_Net_Success_dte *pCastNetSuccess = (CMD_S_Cast_Net_Success_dte *)pBuffer;


if (wDataSize!=sizeof(CMD_S_Cast_Net_Success_dte)-(MAX_FISH_IN_CUCESS-pCastNetSuccess->cbCount)*sizeof(CMD_C_Fish_Net_Object)) 
{
Log("校验失败!");
return false;
}
//清掉之前添加的捕鱼金币统计
CALL_EVENT(OnCastNet, 
pCastNetSuccess->cbChairID, 
pCastNetSuccess->FishNetIDs, 
pCastNetSuccess->cbCount,
pCastNetSuccess->dwPlayerScore,
pCastNetSuccess->dwPlayerAddScore,
pCastNetSuccess->wHitCount);
return true;
}


////e:\永荣\游戏组件\常规游戏\蛇行亿年\蛇行亿年客户端\Logic\dteTurret.cpp

void dteTurret::__FireBullet( int _bulletCost )
{


float tRot = (fBaseRotate+fRotate);
// 从弹夹中获取一枚子弹
BULLET_ITR itr = pCurTurretInfo->BulletList.begin();
if (  T_TYPE_POWER == nCurTurretType )
{
//奇怪能量炮实际耗费的金币一样,但为什么要*2
(*itr)->SetCostScore( _bulletCost*2, true );//将子弹耗分设置进子弹类里(能量炮一次耗分双倍效果)
Addi64ExpendGold(_bulletCost);
}
else
{
(*itr)->SetCostScore( _bulletCost, false );//将子弹耗分设置进子弹类里
Addi64ExpendGold(_bulletCost);
}


//发射子弹
NPC *lockNpc = NULL;
if ( bLockHighScoreFish )
{
lockNpc = pLockState->GetLockNpc();
}
(*itr)->Fire(pPlayer, Pos.x, Pos.y, tRot-M_PI_2, lockNpc );
dteBulletManager::GetInst()->AddPlayerBullet( (*itr) );
pCurTurretInfo->BulletList.erase( itr );
if( ++pCurTurretInfo->nBulletIndex >= MAX_BULLET_NUM )
{
pCurTurretInfo->nBulletIndex = 0;
}


//
if ( pPlayer->IsSelfPlayer() )
{
EventParam param;
if ( !bLockHighScoreFish )
{
param.fireParam.chairId = pPlayer->GetID();
param.fireParam.cost = _bulletCost;
param.fireParam.fRote = fRotate;
g_Env->pGameEventManager->SendEvent( eGameSelfFire, param, pPlayer );
}
else
{
if ( lockNpc )
{
param.lockFireParam.chairId = pPlayer->GetID();
param.lockFireParam.cost = _bulletCost;
param.lockFireParam.fishType = lockNpc->GetFishType();
param.lockFireParam.fishID = lockNpc->GetFishID();
g_Env->pGameEventManager->SendEvent( eGameSelfLockFire, param, pPlayer );
}
else
{
param.fireParam.chairId = pPlayer->GetID();
param.fireParam.cost = _bulletCost;
param.fireParam.fRote = fRotate;
g_Env->pGameEventManager->SendEvent( eGameSelfFire, param, pPlayer );
}
}
}
//
nFiredBulletSize ++;
}

0 0
原创粉丝点击