Bonjour,
j'ai posé la question sur la partie anglophone du serveur et sur l'IRC destiné au modding, mais je n'y ai pas trouvé d'aide.
Dans ce bout de code : https://pastebin.com/p33eVDNd le swap_node de la ligne 43 devrait se produire une seconde et demie après celui de la ligne 37. Mais non, la ligne 43 s'exécute de suite, et on n'a même pas le temps d'apercevoir l'autre node (en commentant la ligne 43, on voit que la ligne 37 s'éxécute bien).
D'où provient ce comportement étrange, et comment le contourner ? Il n'y a pas un sleep ou un wait en natif dans LUA ou dans l'API Minetest ?
Merci !
[modding]Introduire un délai entre deux appels de swap_node
- Grossam
- Member
- Posts: 63
- Joined: Sun Apr 02, 2017 07:21
- GitHub: Grossam
- IRC: Grossam
- In-game: Grossam
- Location: Bourges
- Contact:
[modding]Introduire un délai entre deux appels de swap_node
Gloire à qui, n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins.
Se borne à ne pas trop emmerder ses voisins.
Re: [modding]Introduire un délai entre deux appels de swap_n
Salut Grossam,
peux-tu essayer avec os.time() et os.difftime() qui calcule directement l'écart en secondes?
(On ne sait jamais).
peux-tu essayer avec os.time() et os.difftime() qui calcule directement l'écart en secondes?
Code: Select all
-- wait 5 seconds before swapping the node again please !
local t0 = os.time()
while os.difftime(os.time(), t0) <= 5 do end
minetest.swap_node(pos, {name = "scifi_nodes:palm_scanner_off", param2 = node.param2})
Meowww
- Grossam
- Member
- Posts: 63
- Joined: Sun Apr 02, 2017 07:21
- GitHub: Grossam
- IRC: Grossam
- In-game: Grossam
- Location: Bourges
- Contact:
Re: [modding]Introduire un délai entre deux appels de swap_n
Aucun changement… ça doit être une histoire de threads dans l'implémentation du moteur ?
Gloire à qui, n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins.
Se borne à ne pas trop emmerder ses voisins.
- Gael de Sailly
- Member
- Posts: 845
- Joined: Sun Jan 26, 2014 17:01
- GitHub: gaelysam
- IRC: Gael-de-Sailly
- In-game: Gael-de-Sailly gaelysam
- Location: Voiron, France
Re: [modding]Introduire un délai entre deux appels de swap_n
Salut,
Un problème plus embêtant avec ce code c'est que même si ça marche, ça va occuper le serveur pendant 1.5s alors qu'il pourrait faire autre chose, et ça va créer du lag.
Le code ressemblerait à ça :
Un problème plus embêtant avec ce code c'est que même si ça marche, ça va occuper le serveur pendant 1.5s alors qu'il pourrait faire autre chose, et ça va créer du lag.
Il y a minetest.after qui exécute une fonction avec un délai et sans monopoliser le serveur.Grossam wrote:Il n'y a pas un sleep ou un wait en natif dans LUA ou dans l'API Minetest ?
Le code ressemblerait à ça :
Code: Select all
minetest.swap_node(pos, {name = "scifi_nodes:palm_scanner_checking", param2 = node.param2})
minetest.sound_play("scifi_nodes_palm_scanner", {max_hear_distance = 8, pos = pos, gain = 1.0})
-- wait a minute please !
minetest.after(1.5, function()
minetest.swap_node(pos, {name = "scifi_nodes:palm_scanner_off", param2 = node.param2})
-- etc.
end)
Just realize how bored we would be if the world was perfect.
- Grossam
- Member
- Posts: 63
- Joined: Sun Apr 02, 2017 07:21
- GitHub: Grossam
- IRC: Grossam
- In-game: Grossam
- Location: Bourges
- Contact:
Re: [modding]Introduire un délai entre deux appels de swap_n
Oui, on m'a a parlé sur le forum anglais. J'ai refait avec et ça marche au poil.
Sinon il y a un truc plus propre avec les timers (je vais peut-être refaire mon implémentation du coup) :
fonction toggle_scanner : scanner_off → scanner_checking → scanner_on → scanner_off…
Avec à chaque transition l'initialisation d'un timer et le on_timer qui va bien dans le register_node concerné.
Si tu es curieux, le dépot est là : https://git.fwhost.eu/Grossam/scifi_nodes
Sinon il y a un truc plus propre avec les timers (je vais peut-être refaire mon implémentation du coup) :
fonction toggle_scanner : scanner_off → scanner_checking → scanner_on → scanner_off…
Avec à chaque transition l'initialisation d'un timer et le on_timer qui va bien dans le register_node concerné.
Si tu es curieux, le dépot est là : https://git.fwhost.eu/Grossam/scifi_nodes
Gloire à qui, n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins.
Se borne à ne pas trop emmerder ses voisins.
Who is online
Users browsing this forum: No registered users and 1 guest