

return std::chrono::nanoseconds(1s).count() / 10; under int64_t time_freq() in base/system.cpp (edited)

bc36a09 M Barren, M Behemoth, M Cerulean, M Exhale, M Flux 2, M Flux, M Lotus, M Polarity, M Apex, M Momentum, M Smash, M Stellar, M Binary, M Grim Reaper, M Crimson Woods, M Slippy Slide Up, M Spoon, M oco, M Orion, M Sketch, M Sunny Side Up, M Disposition, M Dodge, M Rapid, M Zap - ddnet-maps





























while(t > TickStartTime(m_CurrentGameTick + 1)) (edited)while(true) it would not check for map changes or anything else and just go as fast as it could. ofc you couldnt join the server anymore if you were to do that
but im not sure. (edited)







char *CAccount::GenerateID()
{
char aBuf[8];
FormatUuid(RandomUuid(), aBuf, sizeof(aBuf));
return aBuf;
}
?dbg_msg("GenerateID()", pSelf->m_pAccount->GenerateID());
print nothing





char *CAccount::GenerateID()
{
char aBuf[8];
FormatUuid(RandomUuid(), aBuf, sizeof(aBuf));
return aBuf;
}
? 







dbg_msg("GenerateID()", pSelf->m_pAccount->GenerateID());
print nothing 







char *CAccount::GenerateID()
{
char aBuf[8];
FormatUuid(RandomUuid(), aBuf, sizeof(aBuf));
return aBuf;
}
? 






























CProjectile::CProjectile(CGameWorld *pGameWorld, int Type, int Owner, vec2 Pos, **vec2 Dir**
, int Span, bool Freeze, bool Explosive, int SoundImpact, int Layer = 0, int Number = 0)





vec2(0.f, 0.f) maybe


GetPos() if you set Speed = 0.f; before return CalcPos(m_Pos, m_Direction, Curvature, Speed, Time); it works serverside





CNetObj_Projectile
static_cast<CNetObj_EntityEx *>(Server()->SnapNewItem(NETOBJTYPE_ENTITYEX, GetID(), sizeof(CNetObj_EntityEx))); kind ofstatic_cast<CNetObj_Projectile *>(Server()->SnapNewItem(NETOBJTYPE_PROJECTILE, GetID(), sizeof(CNetObj_Projectile))); this one is what you actually need i think












CProjectile or CEntity directly and in the snap function of that you snap a new CNetObj_*


void *(*foo)(int *);
void *




If you are having problem with deciphering complex pointer declarations like int (*(*foo[10])(void))(int) then you are at the right place. In this tutorial, you would learn to decipher any complex pointer declarations.
To decipher complex declarations, remember these two simple rules:
Always read declarations from the inside out: Start from the innermost, if any, parenthesis. Locate the identifier that's being declared, and start deciphering the declaration from there.
When there is a choice, always favor [] and () over *: If * precedes the identifier and [] follows it, the identifier represents an array, not a pointer. Likewise, if * precedes the identifier and () follows it, the identifier represents a function, not a pointer. (Parentheses can always be used to override the normal priority of [] and () over *.)







































































