public func Advance() { // Letzten Vertex ermitteln var iLastVertex = GetVertexNum() - 1; // Einschlag im Boden if (GBackSemiSolid(GetVertex(iLastVertex, 0) - GetX(), GetVertex(iLastVertex, 1) - GetY())) return(Remove()); // Schon über fünf Schritte fortgeschritten: Schaden an Objekten verursachen if (iLastVertex > 5) BlastObjects(GetVertex(iLastVertex, 0), GetVertex(iLastVertex, 1), 3); // Neuen Schritt durchführen if (Not(AddVertex(GetVertex(iLastVertex, 0) + Local(0) + Random(Local(1)), GetVertex(iLastVertex, 1) + Local(2) + Random(Local(3)) ))) return(Remove()); // Anziehung an ein Zielobjekt prüfen var pTarget; iLastVertex = GetVertexNum() - 1; if (iLastVertex > 7) if (pTarget = FindObject( 0, GetVertex(iLastVertex, 0) - GetX() - 50, GetVertex(iLastVertex, 1) - GetY() - 50, 100, 100, OCF_AttractLightning() )) Attraction(pTarget); }
func An() { if(Local(0)) return(1); SetAction("An"); ObjectSetAction(Local(0)=CreateObject(LJ3V,-20,16),"Neon"); return(1); }
protected func Initialize() { // Anfangsgeldwert value=GetWealth(GetOwner()); if(Local(CheckTeam(GetOwner()), FindObject(TACC))) value = Local(CheckTeam(GetOwner()), FindObject(TACC)); else Local(CheckTeam(GetOwner()), FindObject(TACC)) = value; SetWealth(GetOwner(), value); }
func Flacker() { if(Not(Random(15))) And(CastObjects(SU3V,Sum(1,Random(1)),Sum(5,Random(15)),Sum(-14,Random(28)),Sum(1,Random(2))),Sound("Spark*")); if(Not(Random(2))) return(0); if(Random(6)) return(ObjectSetAction(Local(0),"Neon")&&SetAction("FlackerAn")); if(Random(6)) return(ObjectSetAction(Local(0),"Aus")&&SetAction("FlackerAus")); return(1); }
func Damage() { if(SEqual(GetAction(),"An")) if(LessThan(50,GetDamage())) { SetAction("FlackerAn"); if(!Local(0)) ObjectSetAction(Local(0)=CreateObject(LJ3V,-20,16),"Neon"); } return(1); }
// Core events void CAI_Crow::net_Export (NET_Packet& P) // export to server { // export R_ASSERT (Local()); u8 flags = 0; P.w_float (GetfHealth()); P.w_float (0); P.w_u32 (0); P.w_u32 (0); P.w_u32 (Level().timeServer()); P.w_u8 (flags); float yaw, pitch, bank; XFORM().getHPB (yaw,pitch,bank); P.w_float /*w_angle8*/ (yaw); P.w_float /*w_angle8*/ (yaw); P.w_float /*w_angle8*/ (pitch); P.w_float /*w_angle8*/ (0); P.w_u8 (u8(g_Team())); P.w_u8 (u8(g_Squad())); P.w_u8 (u8(g_Group())); }
void CArtefact::OnAnimationEnd(u32 state) { switch (state) { case eHiding: { SwitchState(eHidden); }break; case eShowing: { SwitchState(eIdle); }break; case eActivating: { if(Local()) { SwitchState (eHiding); NET_Packet P; u_EventGen (P, GEG_PLAYER_ACTIVATEARTEFACT, H_Parent()->ID()); P.w_u16 (ID()); u_EventSend (P); } }break; }; }
void CPhantom::net_Export (NET_Packet& P) // export to server { // export R_ASSERT (Local()); u8 flags = 0; P.w_float (GetfHealth()); P.w_float (0); P.w_u32 (0); P.w_u32 (0); P.w_u32 (Device.dwTimeGlobal); P.w_u8 (flags); float yaw, pitch, bank; XFORM().getHPB (yaw,pitch,bank); P.w_float /*w_angle8*/ (yaw); P.w_float /*w_angle8*/ (yaw); P.w_float /*w_angle8*/ (pitch); P.w_float /*w_angle8*/ (0); P.w_u8 (u8(g_Team())); P.w_u8 (u8(g_Squad())); P.w_u8 (u8(g_Group())); }
void CGrenade::State(u32 state) { switch (state) { case eThrowStart: { Fvector C; Center (C); PlaySound ("sndCheckout", C); }break; case eThrowEnd: { if(m_thrown) { if (m_pPhysicsShell) m_pPhysicsShell->Deactivate(); xr_delete ( m_pPhysicsShell ); m_dwDestroyTime = 0xffffffff; PutNextToSlot (); if (Local()) { #ifndef MASTER_GOLD Msg( "Destroying local grenade[%d][%d]", ID(), Device.dwFrame ); #endif // #ifndef MASTER_GOLD DestroyObject(); } }; }break; }; inherited::State( state ); }
void CGrenade::Deactivate() { //Drop grenade if primed m_pHUD->StopCurrentAnimWithoutCallback(); if (!GetTmpPreDestroy() && Local() && (GetState() == MS_THREATEN || GetState() == MS_READY || GetState() == MS_THROW)) { if (m_fake_missile) { CGrenade* pGrenade = smart_cast<CGrenade*>(m_fake_missile); if (pGrenade) { if (m_pCurrentInventory->GetOwner()) { CActor* pActor = smart_cast<CActor*>(m_pCurrentInventory->GetOwner()); if (pActor) { if (!pActor->g_Alive()) { m_constpower = false; m_fThrowForce = 0; } } } Throw (); }; }; }; inherited::Deactivate(); }
void CGrenade::State(u32 state) { switch (state) { case MS_THREATEN: { Fvector C; Center (C); PlaySound (sndCheckout,C); }break; case MS_HIDDEN: { if(m_thrown) { if (m_pPhysicsShell) m_pPhysicsShell->Deactivate(); xr_delete (m_pPhysicsShell); m_dwDestroyTime = 0xffffffff; if(H_Parent()) PutNextToSlot (); if (Local()) { #ifdef DEBUG Msg("Destroying local grenade[%d][%d]",ID(),Device.dwFrame); #endif DestroyObject (); } }; }break; }; inherited::State(state); }
void CActorMP::postprocess_packet (net_update_A &N_A) { if (!NET.empty()) N_A.dwTimeStamp = NET.back().dwTimeStamp; else N_A.dwTimeStamp = Level().timeServer(); N_A.State.previous_position = N_A.State.position; N_A.State.previous_quaternion = N_A.State.quaternion; if (Local() && OnClient() || !g_Alive()) return; { //----------------------------------------------- if (!NET_A.empty() && N_A.dwTimeStamp < NET_A.back().dwTimeStamp) return; if (!NET_A.empty() && N_A.dwTimeStamp == NET_A.back().dwTimeStamp) { NET_A.back() = N_A; } else { VERIFY(valid_pos(N_A.State.position)); NET_A.push_back (N_A); if (NET_A.size()>5) NET_A.pop_front(); }; if (!NET_A.empty()) m_bInterpolate = true; }; Level().AddObject_To_Objects4CrPr (this); CrPr_SetActivated (false); CrPr_SetActivationStep (0); }
//void CEntity::Hit (float perc, Fvector &dir, CObject* who, s16 element,Fvector position_in_object_space, float impulse, ALife::EHitType hit_type) void CEntity::Hit (SHit* pHDS) { // if (bDebug) Log("Process HIT: ", *cName()); // *** process hit calculations // Calc impulse Fvector vLocalDir; float m = pHDS->dir.magnitude(); VERIFY (m>EPS); // convert impulse into local coordinate system Fmatrix mInvXForm; mInvXForm.invert (XFORM()); mInvXForm.transform_dir (vLocalDir,pHDS->dir); vLocalDir.invert (); // hit impulse if(pHDS->impulse) HitImpulse (pHDS->impulse,pHDS->dir,vLocalDir); // @@@: WT // Calc amount (correct only on local player) float lost_health = CalcCondition(pHDS->damage()); // Signal hit if(BI_NONE!=pHDS->bone()) HitSignal(lost_health,vLocalDir,pHDS->who,pHDS->boneID); // If Local() - perform some logic if (Local() && !g_Alive() && !AlreadyDie() && (m_killer_id == ALife::_OBJECT_ID(-1))) { KillEntity (pHDS->whoID); } //must be last!!! @slipch inherited::Hit(pHDS); }
std::wstring Desc() const { CAtlString s; s.Format(L"<TCP PID:%d Local:(%s:%d) Remote:(%s:%d), State:%d>", dwOwningPid, Local().c_str(), dwLocalPort, Remote().c_str(), dwRemotePort, dwState); return (LPCTSTR)s; }
void CGrenade::State(u32 state) { switch (state) { case MS_THREATEN: { Fvector C; Center (C); PlaySound (sndCheckout,C); }break; case MS_HIDDEN: { if(m_thrown) { if (m_pPhysicsShell) m_pPhysicsShell->Deactivate(); xr_delete (m_pPhysicsShell); m_dwDestroyTime = 0xffffffff; PutNextToSlot (); if (Local()) DestroyObject (); }; }break; }; inherited::State(state); }
void CArtefact::OnAnimationEnd (u32 state) { switch (state) { case eHiding: { SwitchState(eHidden); //. if(m_pInventory->GetNextActiveSlot()!=NO_ACTIVE_SLOT) //. m_pInventory->Activate(m_pInventory->GetPrevActiveSlot()); }break; case eShowing: { SwitchState(eIdle); }break; case eActivating: { if(Local()){ SwitchState (eHiding); NET_Packet P; u_EventGen (P, GEG_PLAYER_ACTIVATEARTEFACT, H_Parent()->ID()); P.w_u16 (ID()); u_EventSend (P); } }break; }; }
void Run() { SetStartTime(); Log("Started %s\n", GetTimeAsStr()); for (int i = 0; i < g_argc; ++i) Log("%s ", g_argv[i]); Log("\n"); #if TIMING TICKS t1 = GetClockTicks(); #endif if (g_bRefine) Refine(); else if (g_bRefineW) { extern void DoRefineW(); DoRefineW(); } else if (g_bProfDB) ProfDB(); else if (g_bSW) Local(); else if (0 != g_pstrSPFileName) DoSP(); else if (g_bProfile) Profile(); else if (g_bPPScore) PPScore(); else if (g_bPAS) ProgAlignSubFams(); else DoMuscle(); #if TIMING extern TICKS g_ticksDP; extern TICKS g_ticksObjScore; TICKS t2 = GetClockTicks(); TICKS TotalTicks = t2 - t1; TICKS ticksOther = TotalTicks - g_ticksDP - g_ticksObjScore; double dSecs = TicksToSecs(TotalTicks); double PctDP = (double) g_ticksDP*100.0/(double) TotalTicks; double PctOS = (double) g_ticksObjScore*100.0/(double) TotalTicks; double PctOther = (double) ticksOther*100.0/(double) TotalTicks; Log(" Ticks Secs Pct\n"); Log(" ============ ======= =====\n"); Log("DP %12ld %7.2f %5.1f%%\n", (long) g_ticksDP, TicksToSecs(g_ticksDP), PctDP); Log("OS %12ld %7.2f %5.1f%%\n", (long) g_ticksObjScore, TicksToSecs(g_ticksObjScore), PctOS); Log("Other %12ld %7.2f %5.1f%%\n", (long) ticksOther, TicksToSecs(ticksOther), PctOther); Log("Total %12ld %7.2f 100.0%%\n", (long) TotalTicks, dSecs); #endif ListDiagSavings(); Log("Finished %s\n", GetTimeAsStr()); }
const IAccess* CFrame::FindVar( const CSymbol * var ) const { const IAccess* local = Local( var ); if( local != nullptr ) { return local; } else { return Formal( var ); } }
Transform IActor::World() const { Transform transform = Local(); if (m_parent.expired()) { return transform; } return transform * m_parent.lock()->World(); }
void CBreakableObject::SendDestroy() { if (Local()) DestroyObject (); // NET_Packet P; // u_EventGen (P,GE_DESTROY,ID()); // Msg ("ge_destroy: [%d] - %s",ID(),*cName()); // if (Local()) u_EventSend (P); bRemoved=true; }
func Hit() { _inherited(); if(Local(0)) { CastParticles("FSpark", 5,10, 0,0, 50, 75); RemoveObject(); } return(1); }
//обновление состояния float CEntity::CalcCondition(float hit) { // If Local() - perform some logic if (Local() && g_Alive()) { SetfHealth (GetfHealth()-hit); SetfHealth ((GetfHealth()<-1000)?-1000:GetfHealth()); } return hit; }
void CCar::ChangeCondition (float fDeltaCondition) { CEntity::CalcCondition(-fDeltaCondition); CDamagableItem::HitEffect(); if (Local() && !g_Alive() && !AlreadyDie()) KillEntity (Initiator()); // if(Owner()&&Owner()->ID()==Level().CurrentEntity()->ID()) // CurrentGameUI()->UIMainIngameWnd->CarPanel().SetCarHealth(GetfHealth()); }
int main() { std::vector<int> v{1,2,3}; struct Local { bool operator()(int n, int m) { return n > m; } }; std::sort(v.begin(), v.end(), Local()); // since C++11 for(int n: v) std::cout << n << ' '; }
void CWeaponAmmo::OnH_B_Independent(bool just_before_destroy) { if(!Useful()) { if (Local()){ DestroyObject (); } m_ready_to_destroy = true; } inherited::OnH_B_Independent(just_before_destroy); }
protected func Initialize() { _inherited(); // Alle Verbündeten des Besitzers speichern for(var i=0, l=0 ; i < GetPlayerCount() ; i++) if(GetPlayerByIndex(i) > -1) if(!Hostile(GetOwner(), i)) { Local(l) = i+1; l++; } }
void CGameObject::DestroyObject() { if(m_bObjectRemoved) return; m_bObjectRemoved = true; if (getDestroy()) return; if (Local()) { NET_Packet P; u_EventGen (P,GE_DESTROY,ID()); u_EventSend (P); } }
void CBottleItem::Hit (SHit* pHDS) { inherited::Hit(pHDS); if(pHDS->damage()>BREAK_POWER) { //Generate Expode event if (Local()) { NET_Packet P; u_EventGen (P,GE_GRENADE_EXPLODE,ID()); u_EventSend (P); }; } }
void CActor::g_Physics (Fvector& _accel, float jump, float dt) { // Correct accel Fvector accel; accel.set (_accel); hit_slowmo -= dt; if (hit_slowmo<0) hit_slowmo = 0.f; accel.mul (1.f-hit_slowmo); if(g_Alive()) { if(mstate_real&mcClimb&&!cameras[eacFirstEye]->bClampYaw)accel.set(0.f,0.f,0.f); character_physics_support()->movement()->Calculate (accel,cameras[cam_active]->vDirection,0,jump,dt,false); bool new_border_state=character_physics_support()->movement()->isOutBorder(); if(m_bOutBorder!=new_border_state && Level().CurrentControlEntity() == this) { SwitchOutBorder(new_border_state); } character_physics_support()->movement()->GetPosition (Position()); character_physics_support()->movement()->bSleep =false; } if (Local() && g_Alive()) { if (character_physics_support()->movement()->gcontact_Was) Cameras().AddCamEffector (xr_new<CEffectorFall> (character_physics_support()->movement()->gcontact_Power)); if (!fis_zero(character_physics_support()->movement()->gcontact_HealthLost)) { const ICollisionDamageInfo* di=character_physics_support()->movement()->CollisionDamageInfo(); Fvector hdir;di->HitDir(hdir); SetHitInfo(this, NULL, 0, Fvector().set(0, 0, 0), hdir); // Hit (m_PhysicMovementControl->gcontact_HealthLost,hdir,di->DamageInitiator(),m_PhysicMovementControl->ContactBone(),di->HitPos(),0.f,ALife::eHitTypeStrike);//s16(6 + 2*::Random.randI(0,2)) if (Level().CurrentControlEntity() == this) { SHit HDS = SHit(character_physics_support()->movement()->gcontact_HealthLost,hdir,di->DamageInitiator(),character_physics_support()->movement()->ContactBone(),di->HitPos(),0.f,di->HitType()); // Hit(&HDS); NET_Packet l_P; HDS.GenHeader(GE_HIT, ID()); HDS.whoID = di->DamageInitiator()->ID(); HDS.weaponID = di->DamageInitiator()->ID(); HDS.Write_Packet(l_P); u_EventSend (l_P); } } } }
void CCustomMonster::net_Export(NET_Packet& P) // export to server { R_ASSERT (Local()); // export last known packet R_ASSERT (!NET.empty()); net_update& N = NET.back(); P.w_float (GetfHealth()); P.w_u32 (N.dwTimeStamp); P.w_u8 (0); P.w_vec3 (N.p_pos); P.w_float /*w_angle8*/ (N.o_model); P.w_float /*w_angle8*/ (N.o_torso.yaw); P.w_float /*w_angle8*/ (N.o_torso.pitch); P.w_float /*w_angle8*/ (N.o_torso.roll); P.w_u8 (u8(g_Team())); P.w_u8 (u8(g_Squad())); P.w_u8 (u8(g_Group())); }