void VoIP::ScheduleTransmit (double time) { if ( (Simulator::Init()->Now () + time) < GetStopTime () ) { Simulator::Init()->Schedule(time, &VoIP::Send, this); } }
bool CHARACTER::UpdateAffect() { // affect_event 에서 처리할 일은 아니지만, 1초짜리 이벤트에서 처리하는 것이 // 이것 뿐이라 여기서 물약 처리를 한다. if (GetPoint(POINT_HP_RECOVERY) > 0) { if (GetMaxHP() <= GetHP()) { PointChange(POINT_HP_RECOVERY, -GetPoint(POINT_HP_RECOVERY)); } else { int iVal = 0; if (LC_IsYMIR()) { iVal = MIN(GetPoint(POINT_HP_RECOVERY), GetMaxHP() * 9 / 100); } else { iVal = MIN(GetPoint(POINT_HP_RECOVERY), GetMaxHP() * 7 / 100); } PointChange(POINT_HP, iVal); PointChange(POINT_HP_RECOVERY, -iVal); } } if (GetPoint(POINT_SP_RECOVERY) > 0) { if (GetMaxSP() <= GetSP()) PointChange(POINT_SP_RECOVERY, -GetPoint(POINT_SP_RECOVERY)); else { int iVal; if (!g_iUseLocale) iVal = MIN(GetPoint(POINT_SP_RECOVERY), GetMaxSP() * 7 / 100); else iVal = MIN(GetPoint(POINT_SP_RECOVERY), GetMaxSP() * 7 / 100); PointChange(POINT_SP, iVal); PointChange(POINT_SP_RECOVERY, -iVal); } } if (GetPoint(POINT_HP_RECOVER_CONTINUE) > 0) { PointChange(POINT_HP, GetPoint(POINT_HP_RECOVER_CONTINUE)); } if (GetPoint(POINT_SP_RECOVER_CONTINUE) > 0) { PointChange(POINT_SP, GetPoint(POINT_SP_RECOVER_CONTINUE)); } AutoRecoveryItemProcess( AFFECT_AUTO_HP_RECOVERY ); AutoRecoveryItemProcess( AFFECT_AUTO_SP_RECOVERY ); // 스테미나 회복 if (GetMaxStamina() > GetStamina()) { int iSec = (get_dword_time() - GetStopTime()) / 3000; if (iSec) PointChange(POINT_STAMINA, GetMaxStamina()/1); } // ProcessAffect는 affect가 없으면 true를 리턴한다. if (ProcessAffect()) if (GetPoint(POINT_HP_RECOVERY) == 0 && GetPoint(POINT_SP_RECOVERY) == 0 && GetStamina() == GetMaxStamina()) { m_pkAffectEvent = NULL; return false; } return true; }