SA-MP Forums

SA-MP Forums (https://forum.sa-mp.com/index.php)
-   Plugin Development (https://forum.sa-mp.com/forumdisplay.php?f=18)
-   -   [Plugin] samp-precise-timers ⌚: A timer plugin written in the memory-safe Rust language. Check it out, you might like Rust! (https://forum.sa-mp.com/showthread.php?t=666687)

Misiek 20/05/2019 09:04 AM

samp-precise-timers ⌚: A timer plugin written in the memory-safe Rust language. Check it out, you might like Rust!
 
Briefly
Developed for net4game.com (RolePlay), this SA-MP plugin provides precise timers for the server. It is written in Rust, a memory-safe language.

Why rewrite timers?
I had a lot of safety concerns with some of the existing solutions. They weren't written with data integrity, memory safety or preventing server crashes in mind and seemed to have quite a few bugs. As privacy and safety is our primary concern at net4game, I wrote this in Rust, which combines high-level ergonomics with the performance of a low-level language. ⚡

Please check out the code to see the benefits. You might like Rust a lot. The code is much simpler than C++ equivalents, especially the ones which still use *char, free() and delete[] instead of modern C++ idioms such as std::unique_ptr, but as Rust has no runtime, there is no overhead 😉

We would like your help! 💃
Oh, and if you enjoy working on servers, we are looking for a team to help our international expansion. 🎉 net4game has been around for a decade as the biggest Polish server. We introduced a lot of innovations over the years and we are almost ready to become international. Shoot me an e-mail at bm+code@net4game.com if you're interested.

Downloads on GitHub
Also available on sampctl:
Code:

bmisiak/samp-precise-timers

cSharp 20/05/2019 10:09 PM

Re: samp-precise-timers ⌚: A timer plugin written in the memory-safe Rust language. Check it out, you might like Rust!
 
<3

The message you have entered is too short. Please lengthen your message to at least 4 characters.

Mobtiesgangsa 21/05/2019 01:23 PM

Re: samp-precise-timers ⌚: A timer plugin written in the memory-safe Rust language. Check it out, you might like Rust!
 
Great respect for u polish developers for presenting such a unique plugin, as soon as reach my destination I might give a try, BTW great introduction of your release +rep:

Chaprnks 21/05/2019 05:27 PM

Re: samp-precise-timers ⌚: A timer plugin written in the memory-safe Rust language. Check it out, you might like Rust!
 
Do you know if this is compatible with y_timers?

Misiek 21/05/2019 07:06 PM

Re: samp-precise-timers ⌚: A timer plugin written in the memory-safe Rust language. Check it out, you might like Rust!
 
Quote:

Originally Posted by Chaprnks (Post 4099452)
Do you know if this is compatible with y_timers?

Yeah, it is fully compatible with y_timers. The plugin defines two new natives:
Code:

/*
    # SetPreciseTimer returns timer_number, or 0 on failure.
        interval: miliseconds before the callback is triggered.
        repeat:  true/false. If false, the callback will only be called once.

    # Examples:
    SetPreciseTimer("EveryMinute",60000,true);
    SetPreciseTimer("EverySecond",1000,true,"ds",playerid,"Hello");
    new array[2] = {42,2}; SetPreciseTimer("AfterFiveSecs",5000,false,"dsaA",playerid,"world",array,sizeof(array));
*/
native SetPreciseTimer(const callback_name[], const interval, const repeat, const types_of_arguments[]="", {Float,_}:...);

/*
    Returns 1 if the timer existed or 0 on failure.
*/
native DeletePreciseTimer(const timer_number);

The argument syntax is compatible with SetTimerEx.

Quote:

Originally Posted by Mobtiesgangsa (Post 4099423)
Great respect for u polish developers for presenting such a unique plugin, as soon as reach my destination I might give a try, BTW great introduction of your release +rep:

Thank you. I tried to make the code easy to understand. Give it a go, I would love to get some feedback 😊

RogueDrifter 21/05/2019 08:36 PM

Re: samp-precise-timers ⌚: A timer plugin written in the memory-safe Rust language. Check it out, you might like Rust!
 
Quote:

Originally Posted by Misiek (Post 4099461)
Yeah, it is fully compatible with y_timers. The plugin defines two new natives:
Code:

/*
    # SetPreciseTimer returns timer_number, or 0 on failure.
        interval: miliseconds before the callback is triggered.
        repeat:  true/false. If false, the callback will only be called once.

    # Examples:
    SetPreciseTimer("EveryMinute",60000,true);
    SetPreciseTimer("EverySecond",1000,true,"ds",playerid,"Hello");
    new array[2] = {42,2}; SetPreciseTimer("AfterFiveSecs",5000,false,"dsaA",playerid,"world",array,sizeof(array));
*/
native SetPreciseTimer(const callback_name[], const interval, const repeat, const types_of_arguments[]="", {Float,_}:...);

/*
    Returns 1 if the timer existed or 0 on failure.
*/
native DeletePreciseTimer(const timer_number);

The argument syntax is compatible with SetTimerEx.


Thank you. I tried to make the code easy to understand. Give it a go, I would love to get some feedback 😊

I thought we were unable to pass strings through the settimer function, does that mean your plugin fixes it?

nickdodd25 22/05/2019 01:06 AM

Re: samp-precise-timers ⌚: A timer plugin written in the memory-safe Rust language. Check it out, you might like Rust!
 
Quote:

Originally Posted by RogueDrifter (Post 4099472)
I thought we were unable to pass strings through the settimer function, does that mean your plugin fixes it?

Fairly certain that you can pass a string as long as it is not empty. Kind of like CallRemote/LocalFunction.

RogueDrifter 22/05/2019 01:20 AM

Re: samp-precise-timers ⌚: A timer plugin written in the memory-safe Rust language. Check it out, you might like Rust!
 
Quote:

Originally Posted by nickdodd25 (Post 4099509)
Fairly certain that you can pass a string as long as it is not empty. Kind of like CallRemote/LocalFunction.

https://wiki.sa-mp.com/wiki/SetTimerEx

Quote:

Originally Posted by Wiki.sa-mp
Specifier Meaning
i Integer.
d Integer.
a Array. The next parameter must be an integer ("i") with the array's size. [CURRENTLY UNUSABLE]
s String. [CURRENTLY UNUSABLE]
f Float.
b Boolean (true/false).

Are you sure?

MisterTickle 22/05/2019 09:11 PM

Re: samp-precise-timers ⌚: A timer plugin written in the memory-safe Rust language. Check it out, you might like Rust!
 
Going to go ahead and implement this. Good job.

nickdodd25 22/05/2019 10:35 PM

Re: samp-precise-timers ⌚: A timer plugin written in the memory-safe Rust language. Check it out, you might like Rust!
 
Quote:

Originally Posted by RogueDrifter (Post 4099512)


Ah.... just tested it and you would be correct. I just get random chars instead of the string i passed. I thought the issue was similar to the empty string issue. Guess not. :picard:


All times are GMT. The time now is 03:18 PM.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.