LEGACY_MAX_CLIENTS
enum taken from the original 128 player pr
!image
mapbug
FillSelection()
does.// layer_tiles.h
class CLayerTiles : public CLayer
{
// ...
int m_Tele;
int m_Speedup;
int m_Front;
int m_Switch;
int m_Tune;
// ...
}
<=
in pLayer->m_Tele <= pBrushLayer->m_Tele
is really misleading. I initially thought it was some kind of counter variable.sv_rcon_password
but auth_add
with a specific editor-local-server
user so it doesn't ch...math.c
and math.cpp
the same file?math.c
and math.cpp
the same file? 2025-02-23 10:31:45 I sql: failed connecting to db: (real_connect:mysql:3159): Connections using insecure transport are prohibited while --require_secure_transport=ON.
2025-02-23 10:31:45 I assert: /tw/sources/src/game/server/instagib/sql_stats.cpp(1005): CreateTableThread failed to write
What should I do? Does DDNet support MariaDB with SSL?sv_use_sql 1
add_sqlserver r "ddnet-insta" record "ddnet-insta" "<password>" "db.teefusion.net" "3306" 1
add_sqlserver w "ddnet-insta" record "ddnet-insta" "<password>" "db.teefusion.net" "3306" 1
mysql_options
(edited)MAYBE_UNUSED static const char *FONT_ICON_HEART = "\xEF\x80\x84";
that?mysql_options
(edited)gdb
Thread 43 "DDNet" received signal SIGSEGV, Segmentation fault.
bt
-DCMAKE_BUILD_TYPE=Debug
cmake flag to get better info2025-02-23 10:31:45 I sql: failed connecting to db: (real_connect:mysql:3159): Connections using insecure transport are prohibited while --require_secure_transport=ON.
I am absolutely sure i set up MariaDB and DDNet properly.
DDNet config:
```
sv_use_sql 1
add_sqlserver r "ddnet-insta" record "ddnet-insta" "" "db.teefusion.net" "3306" 1
add_sqlserver w "ddnet-insta...0c7b987
Add language credits in English as a placeholder - furo321
9537e96
Fix dutch translation credits - def-
72c3d0b
Add spectator count to HUD - KebsCS
f76573a
Add 128 player support to the client - heinrich5991
90ac3b6
Update romanian.txt - Sans3108
ef4112d
Fix grammar - Sans3108
2a63bca
Update dutch.txt - realurg
698b9cc
Update Russian translations for 19.0 - furo321
b51729e
Update Swedish translations for 19.0 - furo321
2b43ab3
Update Chinese translations for 19.0 - Pioooooo
701343c
Update spanish.txt for 19.0 - n0Ketchp
67efab8
Update Turkish translations for 19.0 - GokturkTalha
7b52312
Update Azerbaijani translations for 19.0 - GokturkTalha
73a3831
Update Azerbaijani translations for 19.0 - GokturkTalha
6aee3dd
Update brazilian_portuguese.txt - rffontenelle
bb241e9
slinack is Isadora nick - rffontenelle
ec22711
Fix DDNetSpectatorInfo unpack error - KebsCS
b424609
Add delay to spectator count and exclude afk players - KebsCS
e36fff3
Fix editor weapon shield preview for custom entities - KebsCS
67d4809
Address /unpractice review comments - KebsCS
6afef64
Update Korean translations by CHaBek - cwh7435
a282dc4
Fix order - def-
459c58c
Fix wrong max team size - KebsCS
0e7ca0d
Use NUM_DDRACE_TEAMS instead - def-integration_test.sh
. It's not fully covering, but some basic checks at least.bool CSqliteConnection::AddDeaths(const char *pPlayer, int Deaths, char *pError, int ErrorSize)
{
char aBuf[512];
str_format(aBuf, sizeof(aBuf),
"INSERT INTO %s_stats(Name, Deaths) "
"VALUES (?, ?) "
"ON CONFLICT(Name) DO UPDATE SET Deaths=Deaths+?",
GetPrefix());
if (PrepareStatement(aBuf, pError, ErrorSize))
{
dbg_msg("system", "%s", pError);
return false;
}
BindString(1, pPlayer);
BindInt(2, Deaths);
BindInt(3, Deaths);
bool End;
return Step(&End, pError, ErrorSize);
}
bool CSqliteConnection::AddDeaths(const char *pPlayer, int Deaths, char *pError, int ErrorSize)
{
char aBuf[512];
str_format(aBuf, sizeof(aBuf),
"INSERT INTO %s_stats(Name, Deaths) "
"VALUES (?, ?) "
"ON CONFLICT(Name) DO UPDATE SET Deaths=Deaths+?",
GetPrefix());
if (PrepareStatement(aBuf, pError, ErrorSize))
{
dbg_msg("system", "%s", pError);
return false;
}
BindString(1, pPlayer);
BindInt(2, Deaths);
BindInt(3, Deaths);
bool End;
return Step(&End, pError, ErrorSize);
}
PrepareStatement
is true. The function should return true instead of false. You seem to have copied the AddPoints
function, but changed that for some reason.PrepareStatement
is true. The function should return true instead of false. You seem to have copied the AddPoints
function, but changed that for some reason. void IDbConnection::FormatCreateStats(char *aBuf, unsigned int BufferSize) const
{
str_format(aBuf, BufferSize,
"CREATE TABLE IF NOT EXISTS %s_stats ("
" Name VARCHAR(%d) COLLATE %s NOT NULL, "
" Kills INT DEFAULT 0, "
" Deaths INT DEFAULT 0, "
" PRIMARY KEY (Name)"
")",
GetPrefix(), MAX_NAME_LENGTH_SQL, BinaryCollate());
}
void IDbConnection::FormatCreateStats(char *aBuf, unsigned int BufferSize) const
{
str_format(aBuf, BufferSize,
"CREATE TABLE IF NOT EXISTS %s_stats ("
" Name VARCHAR(%d) COLLATE %s NOT NULL, "
" Kills INT DEFAULT 0, "
" Deaths INT DEFAULT 0, "
" PRIMARY KEY (Name)"
")",
GetPrefix(), MAX_NAME_LENGTH_SQL, BinaryCollate());
}
SaveStats
function, https://github.com/furo321/ddnet-bombtag/commit/8e909528a40fa2473ceecbc9192d15236c6bcfccSaveStats
function, https://github.com/furo321/ddnet-bombtag/commit/8e909528a40fa2473ceecbc9192d15236c6bcfcc if (m_pPlayer && GameServer()->m_pConnection)
{
dbg_msg("system", "I ADD STATS");
if (char Error[512]; !GameServer()->m_pConnection->AddDeaths(Server()->ClientName(m_pPlayer->GetCid()), 1, Error, sizeof(Error)))
{
dbg_msg("system", "Error adding deaths: %s", Error);
}
}
else
{
dbg_msg("system", "I DON`T ADD STATS");
}
IGameServer
doesn't have a m_pConnection
variable. If you do it like this, you will be calling the SQL in the same thread as the server. Which means you will be effectively halting your entire server waiting for the SQL response.IGameServer
doesn't have a m_pConnection
variable. If you do it like this, you will be calling the SQL in the same thread as the server. Which means you will be effectively halting your entire server waiting for the SQL response. IGameServer
doesn't have a m_pConnection
variable. If you do it like this, you will be calling the SQL in the same thread as the server. Which means you will be effectively halting your entire server waiting for the SQL response. int victiim = m_pPlayer->GetCID();
GameServer()->m_apPlayers[victiim]->SetTeam(TEAM_SPECTATORS);
at
void CCharacter::DieSpikes(int pPlayerID, int spikes_flag) {
(edited)implicit_pid
starts at None
, and must be set to Some(pid)
if you hit one of those chunks. If there was already a value an it is equal or higher, advance one tick.
However, set implicit_pid
to None
, whenever you hit a TickSkip. (edited)implicit_pid
starts at None
, and must be set to Some(pid)
if you hit one of those chunks. If there was already a value an it is equal or higher, advance one tick.
However, set implicit_pid
to None
, whenever you hit a TickSkip. (edited)int victiim = m_pPlayer->GetCID();
GameServer()->m_apPlayers[victiim]->SetTeam(TEAM_SPECTATORS);
at
void CCharacter::DieSpikes(int pPlayerID, int spikes_flag) {
(edited)static bool UnknownArgumentCallback(const char *pCommand, void *pUser)
/showall
gplay
command I think. Or modify the code slightly to make it possible (edited)gplay
command I think. Or modify the code slightly to make it possible (edited)demos
folder%appdata%\Teeworlds
New: %appdata%\DDNet
On Linux:
Old: ~/.teeworlds
New: ~/.local/share/ddnet
On macOS:
Old: ~/Library/Application Support/Teeworlds
New: ~/Library/Application Support/DDNet
demo_extract_chat
tool which doesn't use the map, or write a fuzzing test driver based on that%appdata%\Teeworlds
New: %appdata%\DDNet
On Linux:
Old: ~/.teeworlds
New: ~/.local/share/ddnet
On macOS:
Old: ~/Library/Application Support/Teeworlds
New: ~/Library/Application Support/DDNet