00:10 <+bridge> [ddnet] I think you can also add an envelop timer that tells you how long your client is open 00:10 <+bridge> [ddnet] would also be funny in a map 00:10 <+bridge> [ddnet] (non synced env) 00:12 <+bridge> [ddnet] and since ddnet doesnt use floats anymore to store the time it should be pretty accurate, depending on how reliable the processor gives timestamps 00:12 <+bridge> [ddnet] and since ddnet doesnt use floats anymore to store the envelop time it should be pretty accurate, depending on how reliable the processor gives timestamps 01:01 <+bridge> [ddnet] not checked for correctness xd 01:01 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/862830800592830504/time_start.map 01:36 <+bridge> [ddnet] Oh I think very last tile layer is wrong must be deleted 01:52 <+bridge> [ddnet] This is cute, we should take it 02:50 <+bridge> [ddnet] it's already in ddnet client 02:54 <+bridge> [ddnet] it is? 02:54 <+bridge> [ddnet] yeah I guess not many people know about it 02:56 <+bridge> [ddnet] how 02:56 <+bridge> [ddnet] you need a quad with an envelope assigned and enable Info 02:57 <+bridge> [ddnet] ah and I think you can't move the first and last points or so, so add some in the envelope 02:59 <+bridge> [ddnet] wtff 02:59 <+bridge> [ddnet] wait its so buggy tho 11:25 <+bridge> [ddnet] Add info next to the player's nickname where I can see I have a strong or weak hook to him 11:31 <+bridge> [ddnet] https://github.com/ddnet/ddnet/pull/3476 12:45 <+bridge> [ddnet] this a lots numbers! 13:20 <+bridge> [ddnet] To the rustaceans\:```pub 13:20 <+bridge> [ddnet] impl From<&str> for Error { 13:20 <+bridge> [ddnet] fn from(msg: &str) -> Error { 13:20 <+bridge> [ddnet] Error(msg.to_owned()) 13:20 <+bridge> [ddnet] } 13:20 <+bridge> [ddnet] } 13:20 <+bridge> [ddnet] 13:20 <+bridge> [ddnet] impl From for Error { 13:20 <+bridge> [ddnet] fn from(msg: String) -> Error { 13:20 <+bridge> [ddnet] Error(msg) 13:20 <+bridge> [ddnet] } 13:20 <+bridge> [ddnet] } 13:20 <+bridge> [ddnet] ```Can I shorten this? 13:20 <+bridge> [ddnet] To the rustaceans\:``` 13:20 <+bridge> [ddnet] pub struct Error(String); 13:20 <+bridge> [ddnet] 13:20 <+bridge> [ddnet] impl From<&str> for Error { 13:20 <+bridge> [ddnet] fn from(msg: &str) -> Error { 13:20 <+bridge> [ddnet] Error(msg.to_owned()) 13:20 <+bridge> [ddnet] } 13:20 <+bridge> [ddnet] } 13:20 <+bridge> [ddnet] 13:20 <+bridge> [ddnet] impl From for Error { 13:21 <+bridge> [ddnet] fn from(msg: String) -> Error { 13:21 <+bridge> [ddnet] Error(msg) 13:21 <+bridge> [ddnet] } 13:21 <+bridge> [ddnet] } 13:21 <+bridge> [ddnet] ```Can I shorten this? 13:21 <+bridge> [ddnet] I want to be able to create errors from static strings and from strings built for example with `format!` 13:22 <+bridge> [ddnet] In a function that returns `Result<(), Error>` I want to be able to write `return Err("message".into())` 13:24 <+bridge> [ddnet] Oh, and I can't really use `Result<(), String>` because I need to distinguish between different `Error` types, e.g. `module1::Error` 13:48 <+bridge> [ddnet] Cow ? 13:49 <+bridge> [ddnet] Cow<'static, str> * 13:51 <+bridge> [ddnet] ```rust 13:51 <+bridge> [ddnet] impl From for Error { 13:51 <+bridge> [ddnet] fn from(msg: String) -> Error { 13:51 <+bridge> [ddnet] Error(msg) 13:51 <+bridge> [ddnet] } 13:51 <+bridge> [ddnet] } 13:51 <+bridge> [ddnet] ``` 13:51 <+bridge> [ddnet] ups 13:51 <+bridge> [ddnet] ```rust 13:51 <+bridge> [ddnet] use std::borrow::Cow; 13:52 <+bridge> [ddnet] 13:52 <+bridge> [ddnet] pub struct Error(Cow<'static, str>); 13:52 <+bridge> [ddnet] 13:52 <+bridge> [ddnet] impl From<&'static str> for Error { 13:52 <+bridge> [ddnet] fn from(msg: &'static str) -> Error { 13:52 <+bridge> [ddnet] Error(Cow::Borrowed(msg)) 13:52 <+bridge> [ddnet] } 13:52 <+bridge> [ddnet] } 13:52 <+bridge> [ddnet] 13:52 <+bridge> [ddnet] impl From for Error { 13:52 <+bridge> [ddnet] fn from(msg: String) -> Error { 13:52 <+bridge> [ddnet] Error(Cow::Owned(msg)) 13:52 <+bridge> [ddnet] } 13:52 <+bridge> [ddnet] } 13:52 <+bridge> [ddnet] 13:52 <+bridge> [ddnet] fn lol() -> Result<(), Error> { 13:52 <+bridge> [ddnet] Err("my error".into()) 13:52 <+bridge> [ddnet] } 13:52 <+bridge> [ddnet] 13:52 <+bridge> [ddnet] fn lol2() -> Result<(), Error> { 13:52 <+bridge> [ddnet] Err(String::from("hello").into()) 13:52 <+bridge> [ddnet] } 13:52 <+bridge> [ddnet] 13:52 <+bridge> [ddnet] fn main() {} 13:52 <+bridge> [ddnet] ``` 13:52 <+bridge> [ddnet] @timakro i would do it like this i guess 13:52 <+bridge> [ddnet] :greenthing: 15:14 <+bridge> [ddnet] ```rust 15:14 <+bridge> [ddnet] impl> From for Error { 15:14 <+bridge> [ddnet] fn from(msg: T) -> Error { 15:14 <+bridge> [ddnet] Error(msg.into()) 15:14 <+bridge> [ddnet] } 15:14 <+bridge> [ddnet] }``` 15:14 <+bridge> [ddnet] Not quite sure if the compiler is smart enough to optimize this but it should work 15:17 <+bridge> [ddnet] Update: it is https://godbolt.org/z/f1TEad99r 15:27 <+bridge> [ddnet] https://godbolt.org/ 15:27 <+bridge> [ddnet] ups 15:27 <+bridge> [ddnet] actually i think mine is better 15:28 <+bridge> [ddnet] i just gotta figure out hwo to share 15:28 <+bridge> [ddnet] this 15:28 <+bridge> [ddnet] Ofc a cow will have better performance, he asked for shorter 😄 15:28 <+bridge> [ddnet] https://godbolt.org/z/sd64Pvnaz 15:28 <+bridge> [ddnet] :monkalaugh: 15:28 <+bridge> [ddnet] oh shorten 15:28 <+bridge> [ddnet] but i think its better to use cow 15:30 <+bridge> [ddnet] https://godbolt.org/z/5orM7T1TM 15:30 <+bridge> [ddnet] i fixed the functions 15:39 <+bridge> [ddnet] :twcow: 21:42 <+bridge> [ddnet] @Kaffeine the problem is likely that the server doesn't support the extended serverinfo protocol, but just the old fstd protocol 21:57 <+bridge> [ddnet] imagine have ability to abort vote as vote starter 21:57 <+bridge> [ddnet] holy shit 21:57 <+bridge> [ddnet] that HAS to be an issue already 22:04 <+bridge> [ddnet] didn't find any heh 22:36 <+bridge> [ddnet] lol this is great 😄 22:36 <+bridge> [ddnet] https://cdn.discordapp.com/attachments/293493549758939136/863156615977238548/unknown.png 23:43 <+bridge> [ddnet] Stack over trolls