graphics_threaded.cpp
, we could delay the localization but this just feels easier and doesn't seem to break things.
graphics_threaded.cpp
that is using double quotes.
test cases:
https://regex101.com/r/c3IWM0/1
CGraphics_Threaded::LoadPng
produces a lot of errors, the game randomly crashes. Probably because m_vWarnings
was accessed in both the main thread on init and some jobs in the browser.
I found this by commenting out the condition guarding m_vWarnings.emplace_back(FormatPngliteIncompatibilityWarning(PngliteIncompatible, pFilename));
and
m_vWarnings.emplace_back(FormatPngliteIncompatibilityWarning(PngliteIncompatible, pContextName));
However, if local assets & community icons...#!/bin/env python3
from random import random
from time import sleep
MSGCOUNTDOWN = "%ss untill randomize"
MSGRANDOMIZE = "tunes randomized"
DELTA = 5 # seconds between each random
FIFOPATH = "./fifo.fifo"
TUNES = {
("ground_control_speed", 4.00, 14.00), # Maximum running speed on the ground. (Higher values make the character move faster).
("ground_control_accel", 0.50, 4.00), # Acceleration on the ground. (Higher values make the character speed up faster).
("ground_friction", 0.30, 1.00), # Ground friction. (Higher values make the character stop faster).
("ground_jump_impulse", 8.00, 18.00), # Jump force from the ground. (Higher values make the character jump higher).
("air_jump_impulse", 6.00, 16.00), # Jump force in the air. (Applies to double jumps; higher values allow higher jumps).
("air_control_speed", 2.00, 9.00), # Maximum speed when moving in the air. (Higher values allow faster air movement).
("air_control_accel", 0.50, 3.00), # Acceleration in the air. (Higher values allow quicker changes in air movement).
("air_friction", 0.70, 1.10), # Air friction. (Higher values reduce the character's air speed more quickly).
("gravity", 0.30, 0.80), # Gravity strength. (Lower values make the character float longer; higher values make them fall faster).
}
def write(s):
with open(FIFOPATH, "w") as fifo:
fifo.write(s)
print(s)
sleep(1)
while True:
out = "broadcast %s\n" % MSGRANDOMIZE
for name, min, max in TUNES:
value = min + random() * (max - min)
value = round(value, 2)
out += "tune %s %s\n" % (name, value)
write(out)
if DELTA > 3:
sleep(DELTA - 3)
for i in range(3):
write("broadcast " + MSGCOUNTDOWN % (3 - i))
sleep(1)
else:
sleep(DELTA)
@Evelyn #!/bin/env python3
from time import sleep
MSGRANDOMIZE = "Подпишись на наш Telegram @serv! На 500 подписчиков будет крупный розыгрыш на слоунет. Также у нас дешевыйслоунет и слоунет!"
DELTA = 3600 # интервал между сообщениями в секундах
FIFOPATH = "./fifo.fifo"
def write(s):
with open(FIFOPATH, "w") as fifo:
fifo.write(s)
print(s)
sleep(1)
while True:
write(f"broadcast {MSGRANDOMIZE}")
sleep(DELTA)
(edited)([String], ((Int, Int), (Int, Int)))
because I'm not allowed to have proper state([String], ((Int, Int), (Int, Int)))
because I'm not allowed to have proper state skip_vertex_transform
skip_vertex_transform
datasrc/network.py:L7 PlayerFlags = ["PLAYING", "IN_MENU", "CHATTING", "SCOREBOARD", "AIM"]
datasrc/network.py:L7 PlayerFlags = ["PLAYING", "IN_MENU", "CHATTING", "SCOREBOARD", "AIM"]
foldr
such that it terminates given an infinite list...stepForwards
above, the liftM2 (,)
at the start of it coerces to the type (([String], ((Int, Int), (Int, Int))) -> [String]) -> (([String], ((Int, Int), (Int, Int))) -> ((Int, Int), (Int, Int))) -> (([String], ((Int, Int), (Int, Int))) -> ([String], ((Int, Int), (Int, Int))))
liftM2 (,)
is at least cabable of coercing to that monster of a type(State -> [String]) -> (State -> ((Int, Int), (Int, Int))) -> (State -> State)
, but the internal structure of State
is still there for me to keep in mindcompose2 = (.) . (.)
I agree, dangerous commands should be registered with a new CFGFLAG_DANGEROUS.
what about cmdflag_dangerous?CMDFLAG_PRACTICE
and CMDFLAG_TEST
existCFGFLAG_SERVER
is also used for commands. And config variables are considered commands internally. (edited)CMDFLAG_
prefix, otherwise I would prefer the simplicity of having only one prefix CFGFLAG_
.CFGFLAG
. I guess it would be cleaner to separate the command and config flags but then you'd have to avoid using the same bits in the flags, but that probably requires a discussion firstCGameConsole::CInstance::ExecuteLine
is brittle though. For example doesn't check for ; quit
m_pGameConsole->m_pConsole->ExecuteLine(pLine);
which says if dangerous commands are enabled/disabledconsole_allow_dangerous
command in src/engine/shared/console.cpp
insteadCGameConsole::CInstance::ExecuteLine
doesn't parse commands yet, you can separate multiple commands with semicolon. echo;quit
quits the client without confirmation (with your PR) (edited) Print(OUTPUT_LEVEL_STANDARD, "console", "Test commands aren't allowed, enable them with 'sv_test_cmds 1' in your initial config.");
void cxxbridge1$IConsole$ExecuteLine(::IConsole &self, ::StrRef *pStr, ::std::int32_t ClientId, bool InterpretSemicolons, bool AllowDangerous) noexcept {
void (::IConsole::*ExecuteLine$)(::StrRef, ::std::int32_t, bool, bool) = &::IConsole::ExecuteLine;
(self.*ExecuteLine$)(::std::move(*pStr), ClientId, InterpretSemicolons, AllowDangerous);
}
console.rs
unbindall
though. Alternatives that would make it less dangerous would already be enough, including removing it and changing how default binds work. Not really an easily solvable issue. The other dangerous commands aren't really problematic, they make you lose a run and then you know not to trust that person again. unbindall;quit
immediately deletes all binds.unbindall
though. Alternatives that would make it less dangerous would already be enough, including removing it and changing how default binds work. Not really an easily solvable issue. The other dangerous commands aren't really problematic, they make you lose a run and then you know not to trust that person again. unbindall;quit
immediately deletes all binds. unbindall
though. Alternatives that would make it less dangerous would already be enough, including removing it and changing how default binds work. Not really an easily solvable issue. The other dangerous commands aren't really problematic, they make you lose a run and then you know not to trust that person again. unbindall;quit
immediately deletes all binds. (Int, Int, Direction)
, where Direction is an enum of four possible values((Int, Int), Direction)
because