













fmap and (.) are the SAME THING

kill lag in console 

void CGameClient::ConKill(IConsole::IResult *pResult, void *pUserData)
{
if(pResult->NumArguments() == 0)
((CGameClient *)pUserData)->SendKill(-1);
}
I think this works






kill lag in console quit gambling to convert all your luck into skill






























but again, tie the flag to input type is probably the best thing to do.





m_pClient->m_Camera.CamType() != CCamera::CAMTYPE_SPEC you are just introducing potential desyncs and confusing the server.






















































(c -> d -> e) -> (a -> b -> c) -> (a -> b -> d) -> a -> b -> e
(c -> c -> d) -> (a -> b -> c) -> (a -> b -> c) -> a -> b -> d

[24-12-07 10:50:18][tuning]: air_friction in zone 3 changed to 1.00
[24-12-07 10:50:18][tuning]: ground_control_speed in zone 3 changed to 0.00
[24-12-07 10:50:18][tuning]: ground_control_accel in zone 3 changed to 0.00
[24-12-07 10:50:18][tuning]: ground_friction in zone 3 changed to 1.00
[24-12-07 10:50:18][tuning]: air_control_speed in zone 4 changed to 4.00
[24-12-07 10:50:18][tuning]: ground_control_speed in zone 4 changed to 6.00
[24-12-07 10:50:18][console]: failed to open 'maps/WarioWare.map.cfg'
[24-12-07 10:50:18][TeeWare::bombrain]: 75 total bomb rain entities
[24-12-07 10:50:18][TeeWare::passball]: 12 total ball spawn entities
[24-12-07 10:50:18][TeeWare::reachendnade1]: 8 total nade spawn entities
[24-12-07 10:50:18][TeeWare::reachendnade2]: 8 total nade spawn entities
[24-12-07 10:50:18][game]: team_join player='63:' m_Team=-1
[24-12-07 10:50:18][server]: 'bot' -> 'bot'
[24-12-07 10:50:18][server]: version 0.6 626fce9a778df4d4
[24-12-07 10:50:18][engine/mastersrv]: refreshing master server addresses
[24-12-07 10:50:18][register]: refreshing ip addresses
[24-12-07 10:50:18][host lookup]: host='master1.teeworlds.com' port=0 3
[24-12-07 10:50:18][host lookup]: host='master2.teeworlds.com' port=0 3
[24-12-07 10:50:18][host lookup]: host='master3.teeworlds.com' port=0 3
[24-12-07 10:50:18][host lookup]: host='master4.teeworlds.com' port=0 3
[24-12-07 10:50:19][engine/mastersrv]: saving addresses
[24-12-07 10:50:19][register]: fetching server counts
[24-12-07 10:50:22][register]: chose 'master4.teeworlds.com' as master, sending heartbeats
[24-12-07 10:50:23][register]: no firewall/nat problems detected
[24-12-07 10:50:23][register]: no firewall/nat problems detected
[24-12-07 10:50:23][register]: server registered

wget https://zillyhuhn.com/crack/bam4 -O /usr/local/bin/bam4 to get bam 4.0 then go to the source code and run bam4 server_release






















if(Stroke) is redundant, as you're always having a stroke



const CChat::CLine *pLine;
if(pName)
{
for(int i = GameClient()->m_Chat.m_CurrentLine; i >= 0; --i)
{
if(str_comp(GameClient()->m_Chat.m_aLines[i].m_aName, pName) == 0)
{
pLine = &GameClient()->m_Chat.m_aLines[i];
goto matched;
}
}
for(int i = GameClient()->m_Chat.m_CurrentLine; i >= 0; --i)
{
if(str_comp_nocase(GameClient()->m_Chat.m_aLines[i].m_aName, pName) == 0)
{
pLine = &GameClient()->m_Chat.m_aLines[i];
goto matched;
}
}
GameClient()->m_Chat.Echo("No chat to translate");
return;
}
else
{
pLine = &GameClient()->m_Chat.m_aLines[GameClient()->m_Chat.m_CurrentLine];
}
matched:




const CChat::CLine *pLine;
if(pName)
{
for(int i = GameClient()->m_Chat.m_CurrentLine; i >= 0; --i)
{
if(str_comp(GameClient()->m_Chat.m_aLines[i].m_aName, pName) == 0)
{
pLine = &GameClient()->m_Chat.m_aLines[i];
goto matched;
}
}
for(int i = GameClient()->m_Chat.m_CurrentLine; i >= 0; --i)
{
if(str_comp_nocase(GameClient()->m_Chat.m_aLines[i].m_aName, pName) == 0)
{
pLine = &GameClient()->m_Chat.m_aLines[i];
goto matched;
}
}
GameClient()->m_Chat.Echo("No chat to translate");
return;
}
else
{
pLine = &GameClient()->m_Chat.m_aLines[GameClient()->m_Chat.m_CurrentLine];
}
matched: 



const CChat::CLine *pLine;
if(pName)
{
for(int i = GameClient()->m_Chat.m_CurrentLine; i >= 0; --i)
{
if(str_comp(GameClient()->m_Chat.m_aLines[i].m_aName, pName) == 0)
{
pLine = &GameClient()->m_Chat.m_aLines[i];
goto matched;
}
}
for(int i = GameClient()->m_Chat.m_CurrentLine; i >= 0; --i)
{
if(str_comp_nocase(GameClient()->m_Chat.m_aLines[i].m_aName, pName) == 0)
{
pLine = &GameClient()->m_Chat.m_aLines[i];
goto matched;
}
}
GameClient()->m_Chat.Echo("No chat to translate");
return;
}
else
{
pLine = &GameClient()->m_Chat.m_aLines[GameClient()->m_Chat.m_CurrentLine];
}
matched: 



matched: into a closure or extra function

matched: into a closure or extra function 



matched: into a closure or extra function 

if (condition) {
a();
} else {
b():
}
would first pause every single thread where condition is false and execute a(); on every single thread where it's true
then pause every thread where condition is true and execute b(); on every single thread where it's false
and then finally continue execution of all threads like normal

if (condition) {
a();
} else {
b():
}
would first pause every single thread where condition is false and execute a(); on every single thread where it's true
then pause every thread where condition is true and execute b(); on every single thread where it's false
and then finally continue execution of all threads like normal 


















http: <url> failed. libcurl error (1): Protocol "http" disabled
5120e79 fix spectate closest - TsFreddie
51ff510 Update Simplified & Traditional Chinese translations for upcoming 18.8 - ASKLL-STAR
ada887c Fix hook collisions preview string not being localizable - Robyt3
7294013 Revert "remove self from spectate selector" - TsFreddie
0f1b253 fully allow clicking on yourself to spectate - TsFreddie
7e79e4e Update Simplified Chinese translations for upcoming 18.8 - ASKLL-STAR
72f3f6a Update Traditional Chinese translations for upcoming 18.8 - ASKLL-STAR
ab0aaa1 Unite the word used in traditional_chinese.txt - By622
626c324 Update Turkish translation for 18.8 - GokturkTalha
f72297f Update Azerbaijani translation for 18.8 - GokturkTalha
0381d82 don't allow SpectateClosest to select self - TsFreddie
018c64a 100% RO translation (1/2) - Sans3108
aa3087d 100% RO translation (2/2) - Sans3108
cf6309e Update brazilian_portuguese.txt - rffontenelle
cc57c1c French translation by Yubel - def-
41a4d5a Update Swedish translations for 18.8 - furo321
8061d82 pr#9329 supplement - ASKLL-STAR
a718956 Update Ukrainian l10n (18.8) - EGYT5453
0177660 fix style - def-
d0bdc64 Update ddnet-libs to include Android libs - def-
656d179 Fix clipping of last console line, save background noise as RGBA - Robyt3



















static float Time = 0.0f;
Time += Client()->RenderFrameTime() * ((float)g_Config.m_ClRainbowSpeed / 100.0f);
float DefTick = std::fmod(Time, 1.0f);




0.000001 (for the fps you said) (edited)











static float Time = 0.0f;
Time += Client()->RenderFrameTime() * ((float)g_Config.m_ClRainbowSpeed / 100.0f);
float DefTick = std::fmod(Time, 1.0f); 























































































debug 1 from your config


void CHttp::Run(std::shared_ptr<IHttpRequest> pRequest)
{
std::shared_ptr<CHttpRequest> pRequestImpl = std::static_pointer_cast<CHttpRequest>(pRequest);
then whats the point of it being an interface then???2024-12-07 16:55:47 I assert: /home/solly/Games/ddnet/src/engine/shared/http.cpp(423): Request not done
if(State == EHttpState::DONE)
):<2024-12-07 16:55:47 I http: task done: https://translate.sollybunny.xyz/translate
2024-12-07 16:55:47 I assert: /home/solly/Games/ddnet/src/engine/shared/http.cpp(423): Request not done // The globally visible state must be updated after OnCompletion has finished,
// or other threads may try to access the result of a completed HTTP request,
// before the result has been initialized/updated in OnCompletion.
OnCompletion(State);
{
std::unique_lock WaitLock(m_WaitMutex);
m_State = State;
}
m_WaitCondition.notify_all();
6 | while bound_checker(guard_x, guard_y, width, height) do
249 | local state = state_hash(guard_x, guard_y, direction, width, height)
1072 | if visited_states[state] then
| loops = loops + 1
| break
| end
| visited_states[state] = true
|
6199 | if bound_checker(guard_x + dx, guard_y + dy, width, height) and map[(guard_y + dy - 1) * width + guard_x + dx] then
| direction = (direction + 1) % 4
| dx, dy = dir2delta(direction)
| else
| guard_x = guard_x + dx
| guard_y = guard_y + dy
| end
| end (edited)visited_states[state] to take the most time, but it appears that's 6x less important than simply reading where the walls are in the play area

OnCompletion then you should add a different mechanism for that

OnCompletion runs on the curl multi thread, you shouldn't perform heavy work there or you block HTTP requests






6 | while bound_checker(guard_x, guard_y, width, height) do
249 | local state = state_hash(guard_x, guard_y, direction, width, height)
1072 | if visited_states[state] then
| loops = loops + 1
| break
| end
| visited_states[state] = true
|
6199 | if bound_checker(guard_x + dx, guard_y + dy, width, height) and map[(guard_y + dy - 1) * width + guard_x + dx] then
| direction = (direction + 1) % 4
| dx, dy = dir2delta(direction)
| else
| guard_x = guard_x + dx
| guard_y = guard_y + dy
| end
| end (edited)


dont kill on practice section you added to toggle it on and off.
i have no idea how to keep a state set after a player dies.
pChr->SetKillable(pResult->NumArguments() == 0 ? !pChr->Core()->m_Killable : pResult->GetInteger(0)); this is automatically set to false whenever a player dies, which is generally intended behaviour, but i want to keep it across the entire "practice session"
elp, me noob

void CCharacter::SetKillable(bool Killable)
{
m_Core.m_Killable = Killable;
if(!Killable)
Freeze();
}
it's a mere copy from the invincible toggle (edited)





void CCharacter::SetKillable(bool Killable)
{
m_Core.m_Killable = Killable;
if(!Killable)
Freeze();
}
it's a mere copy from the invincible toggle (edited)&& player->m_killable == true)


okäse




un commands
I KNOW




/shotgun ?i[enabled]




/killable to switch between the behaviour.









m_WarnPngliteIncompatibleImages as this variable is also used in multiple threads.
Do not use CLock as the thread-safety annotations would otherwise have to be added to a lot of client/graphics functions.
Use client instead of the warning title as the log system, as the warning...





