Project Zomboid × LibertyTalk : Talky
Un follow Twitch fait apparaître un zombie à son nom, 300 bits en envoient trois, une récompense de points de chaîne appelle l'hélicoptère. Partie 1 : installer le mod Talky et son pont. Partie 2 : comprendre les workflows qui relient vos lives à la partie.
- Niveau Intermédiaire
- 45 min de lecture
- Mis à jour le 30 octobre 2026
- Langues disponibles FR · EN

Talky relie vos événements Twitch et YouTube à votre partie de Project Zomboid. Quand Bob suit votre chaîne, un bandeau annonce son arrivée et, deux secondes plus tard, un zombie apparaît à une dizaine de cases de votre personnage, avec « Bob » écrit en violet au-dessus de sa tête. Talky se compose de deux pièces : un mod pour le jeu et un petit programme, le pont (« Bridge » dans le menu du jeu), qui tourne sur votre PC.
- Déclencheur
Follow sur Twitch
Bob suit votre chaîne.
- Action
Widget LibertyTalk
Envoie
{"user_name":"Bob"}à l'adresse de votre pont. - Hors LibertyTalk
Tunnel cloudflared
Rend le pont joignable depuis Internet.
- Hors LibertyTalk
Pont Talky
Lance le workflow
new_followeret dépose les actions pour le jeu. - Hors LibertyTalk
Mod Talky
Affiche le bandeau puis fait apparaître le zombie nommé.
Pourquoi un pont ? Le Lua de Project Zomboid ne peut pas recevoir d'appel réseau : il sait seulement lire et écrire des fichiers dans %USERPROFILE%\Zomboid\Lua. Le pont reçoit les appels de LibertyTalk sur http://127.0.0.1:7420 et écrit les actions dans ce dossier, que le mod lit chaque seconde.
La partie 1 installe Talky et le relie à LibertyTalk avec le widget officiel. La partie 2 explique les workflows des deux côtés, pour que vous puissiez changer ce qui se passe dans la partie quand un viewer offre 500 bits.
À savoir
Version testée
Talky 0.5.0 fonctionne en solo et sur un serveur (partie 3). Il a été testé en vraie partie sur la Build 42.21, en solo et sur un serveur dédié : follows, commandes de chat, bits, noms au-dessus des zombies, hélicoptère et météo.
Activer Talky dans Project Zomboid
Installer le mod et le pont, tester sans LibertyTalk, ouvrir le tunnel, puis brancher le widget officiel.
Ce qu'il vous faut
- Windows 10 ou 11.
- Project Zomboid Build 42, version 42.20.1 ou plus récente. Cette partie décrit le solo ; pour un serveur, voir la partie 3.
- Node.js version 18 ou plus récente, pour faire tourner le pont.
- cloudflared, l'outil de Cloudflare qui donne une adresse publique au pont.
- Un compte LibertyTalk avec votre chaîne Twitch ou YouTube connectée à votre communauté.
Node.js et cloudflared s'installent avec deux commandes dans un terminal PowerShell :
winget install OpenJS.NodeJS.LTS
winget install --id Cloudflare.cloudflarednode et cloudflared soient reconnues.Récupérer Talky
Talky se télécharge à deux endroits. Le Steam Workshop distribue le mod seul : il refuse les fichiers .bat, .exe et .zip, et réécrit son dossier à chaque mise à jour, ce qui effacerait la configuration du pont. Les releases GitHub contiennent le pont, start-bridge.cmd qui le lance, et une copie du mod pour jouer sans le Workshop.
- Talky sur le Steam WorkshopLe mod, tenu à jour par Steam. Abonnez-vous à l'élément Talky.
- Releases GitHub de TalkyLe zip Windows : le pont, start-bridge.cmd et une copie du mod.
Attention
Une seule copie du mod
Le mod du Workshop et celui du zip portent le même identifiant, Talky. Si vous êtes abonné sur le Workshop, ne copiez pas le dossier Talky du zip dans %USERPROFILE%\Zomboid\mods, et supprimez %USERPROFILE%\Zomboid\mods\Talky s'il existe déjà, par exemple après une ancienne installation manuelle. Sinon, le jeu voit deux mods avec le même identifiant. Le pont vous prévient à chaque démarrage quand il trouve les deux copies : sa fenêtre affiche une ligne qui commence par warning: Talky is installed twice.
Installer
Étape 1
Extrayez le zip dans un dossier que vous gardez
Par exemple
Documents\Talky. Ne le décompressez ni dans%USERPROFILE%\Zomboid\modsni dans le dossier du Workshop. Steam réécrit le dossier du Workshop à chaque mise à jour, et dansZomboid\mods, supprimer ou remplacer un mod peut emporter le pont avec son fichierbridge\config.json. Le pont signale à chaque démarrage un dossier rangé dansZomboid\mods.Étape 2
Sans le Workshop seulement : copiez le mod
Copiez le dossier
Talkydu zip dans%USERPROFILE%\Zomboid\mods, pour obtenir%USERPROFILE%\Zomboid\mods\Talky\42\mod.info. Ne copiez que ce dossier : le pont reste dansDocuments\Talky. Si vous êtes abonné sur le Workshop, sautez cette étape : Steam installe déjà le mod.
Il n'y a rien d'autre à installer : le pont crée sa configuration lui-même, à son premier lancement.
Lancer le pont
Double-cliquez sur start-bridge.cmd. Une fenêtre noire intitulée « Talky bridge » s'ouvre. Elle vérifie que Node.js 18 ou plus est installé, puis lance le pont. Au premier lancement, le pont crée bridge\config.json à partir de bridge\config.example.json : il tire au sort un jeton de 48 caractères, règle la langue des exemples sur celle de Windows (fr si le format régional est le français, en sinon) et copie le jeton dans le presse-papiers sans l'afficher. Vous le collerez dans le widget à la fin de cette partie. La fenêtre affiche ensuite ces lignes, chacune précédée de l'heure :
created ~\Documents\Talky\bridge\config.json with a random token (language: en)
the token is in your clipboard and in config.json, never shown here: paste it into "Bridge token" in the LibertyTalk widget
created ~\Zomboid\Lua\talky_config.json from config.json
config loaded: 10 webhook(s), 14 workflow(s)
Talky bridge 0.4.0 listening on http://127.0.0.1:7420
game folder: ~\Zomboid\Lua
http steps allowed to: *.liberty-talk.com
webhook POST /hooks/follow
webhook POST /hooks/sub
webhook POST /hooks/gift
webhook POST /hooks/bits
webhook POST /hooks/raid
webhook POST /hooks/donation
webhook POST /hooks/superchat
webhook POST /hooks/member
webhook POST /hooks/command
webhook POST /hooks/pointsDocuments\Talky. Avec un format régional français, la première ligne se termine par (language: fr) et la troisième par (fr: 19 text(s) translated). Ces trois lignes n'apparaissent qu'au premier lancement : ensuite, le pont garde config.json tel quel. Le numéro de version et les nombres suivent votre installation.Astuce
Le jeton est un mot de passe
Le jeton de bridge\config.json protège l'adresse de votre pont : quiconque le connaît peut faire apparaître des zombies dans votre partie. Le pont ne l'affiche jamais et ne le copie dans le presse-papiers qu'au premier lancement. N'ouvrez pas config.json pendant un live. Si la copie a échoué, la deuxième ligne commence par the token is in config.json ("token"). Dans ce cas, ou si vous avez copié autre chose depuis, ouvrez config.json hors live et copiez la valeur de token, sans les guillemets. Si le jeton a pu fuiter, lancez node bridge\bridge.js new-token dans le dossier de Talky : le pont écrit un nouveau jeton dans config.json et le copie dans le presse-papiers. Relancez le pont et collez-le dans « Jeton du pont » du widget.
Astuce
La langue des exemples
Les workflows d'exemple (textes des bandeaux, mots des récompenses) sont écrits une seule fois, au premier lancement du pont, dans la langue de settings.language de bridge\config.json, ou dans celle choisie dans le menu F8 si vous l'avez réglée avant ce premier lancement. Le pont y met fr quand le format régional de Windows est le français, en sinon. Changer ensuite « Langue des textes du bridge » dans le menu F8 ne traduit pas les exemples déjà écrits : pour les obtenir dans l'autre langue, arrêtez le pont, mettez settings.language à fr ou en dans bridge\config.json, supprimez %USERPROFILE%\Zomboid\Lua\talky_config.json, puis relancez le pont, en perdant les modifications faites dans le menu F8.
À chaque démarrage, le pont peut aussi afficher des lignes qui commencent par warning:. Il démarre quand même, mais chacune signale un réglage à corriger : cloudflared absent du PATH, Talky installé deux fois (une copie dans Zomboid\mods en plus du Workshop), ou dossier du pont rangé dans Zomboid\mods. Le dépannage à la fin de cette partie donne la solution de chacune.
Laissez cette fenêtre ouverte pendant toute la session : si vous la fermez, plus rien n'arrive dans le jeu. Si le pont s'arrête sur une erreur, la fenêtre affiche le message, puis The bridge has stopped., et attend que vous appuyiez sur une touche. Dans ses messages, erreurs sur config.json comprises, le pont écrit ~ à la place de votre dossier utilisateur, ce qui garde votre nom d'utilisateur Windows hors de l'écran si la fenêtre passe en live.

config.json s'affichent avant.Activer le mod et ouvrir le menu
Étape 1
Activez le mod
Dans le menu principal de Project Zomboid, ouvrez Mods et cochez Talky - LibertyTalk Live Events.
Étape 2
Lancez une partie
Nouvelle partie solo ou sauvegarde.
Étape 3
Ouvrez le menu Talky avec F8
La touche se change dans Options > Raccourcis > Talky, ligne « Ouvrir la fenêtre Talky ».
Étape 4
Vérifiez la page Statut
En bas à gauche, la pastille doit afficher « Bridge connecté » en vert, et le haut de la page « Bridge connecté sur le port 7420 - 0 job(s) en attente », suivi de la version du pont, puis la ligne « Solo : les jobs s'exécutent dans cette partie. ». Une pastille rouge « Bridge hors ligne » s'accompagne du message « Bridge hors ligne : lancez start-bridge.cmd (ou node bridge/bridge.js) sur ce PC. ». Dans ce cas, voyez le dépannage à la fin de cette partie.
La fenêtre compte cinq pages, listées à gauche sous « TALKY ». Statut montre la connexion, l'adresse publique et les derniers événements reçus. Webhooks liste les adresses /hooks/<id> que LibertyTalk appelle. Workflows contient ce que le jeu fait pour chaque événement. Événements du jeu relie la mort d'un zombie nommé ou celle du joueur à un workflow. Réglages fixe les plafonds, par exemple « Zombies max par action » à 60. Le bouton Enregistrer, en bas à droite, devient Enregistrer * tant qu'une modification n'est pas enregistrée.

Tester sans LibertyTalk
Avant de brancher Twitch, vérifiez que le pont et le mod se parlent. Dans le menu F8, page Workflows, sélectionnez new_follower dans la liste de gauche, tapez Bob dans le champ « Tester avec le pseudo » puis cliquez sur Tester maintenant. Le jeu confirme l'envoi du test par une notification, et la fenêtre du pont écrit une ligne comme [test] new_follower -> 3 game step(s) (job #1) user=Bob, dont le numéro de job augmente à chaque envoi.
Vous pouvez aussi lancer le test depuis un second terminal ouvert dans le dossier de Talky, pendant que le pont tourne :
node bridge\bridge.js fire new_follower user=Bob200 {"ok":true,"results":[{"workflow":"new_follower","job":2,"steps":3}]} et la fenêtre du pont écrit une ligne [fire] new_follower -> 3 game step(s).Dans le jeu, le bandeau « Bob rejoint la horde ! » s'affiche (« Bob joins the horde! » avec les exemples en anglais), puis un zombie nommé « Bob » apparaît entre 8 et 14 cases de votre personnage. Si rien ne s'affiche, vérifiez que la partie n'est pas en pause : le mod n'exécute rien en pause, au menu principal ou quand votre personnage est mort. Tester maintenant envoie aussi bits à 500, viewers à 10 et tier à 1000 : sur le workflow bits, il fait apparaître 5 zombies.

new_follower : un bandeau, deux secondes d'attente, puis un zombie nommé.
Ouvrir le tunnel
LibertyTalk refuse d'appeler une adresse locale comme 127.0.0.1, pour empêcher les requêtes vers des réseaux privés. Le tunnel cloudflared donne au pont une adresse publique en https. Dans un nouveau terminal, lancez :
cloudflared tunnel --url http://127.0.0.1:7420https://...trycloudflare.com. Copiez-la et laissez la fenêtre ouverte.Attention
Une nouvelle adresse à chaque lancement
Ce tunnel rapide, sans compte Cloudflare, change d'adresse chaque fois que vous relancez cloudflared. À chaque session, recopiez la nouvelle adresse dans le widget (étape suivante). Pour garder la même adresse d'un live à l'autre, il faut un tunnel nommé sur votre propre domaine, avec un compte Cloudflare (documentation Cloudflare).

Facultatif : collez aussi cette adresse dans F8, page Statut, champ « URL publique (tunnel Cloudflare) », puis cliquez sur Enregistrer. La liste des webhooks affiche alors leurs adresses publiques, jeton masqué. Copier la commande copie node bridge\bridge.js url <webhook> pour le webhook sélectionné : lancée dans un terminal ouvert dans le dossier de Talky, cette commande met l'URL complète, jeton compris, dans le presse-papiers et l'affiche masquée. Le jeu ne voit jamais le jeton. Le widget n'en a pas besoin : cette commande sert quand vous construisez vous-même un workflow LibertyTalk.
Installer le widget officiel
Le widget officiel « Project Zomboid · Talky » contient déjà les dix chaînes LibertyTalk qui appellent le pont : follow, abonnement, abonnements offerts, bits, raid, points de chaîne, commande de chat, don Streamlabs, Super Chat et nouveau membre YouTube. Vous remplissez l'adresse du tunnel et le jeton, puis vous l'activez.
Project Zomboid · Talky
Widget gratuit publié par LibertyTalk. Dix déclencheurs Twitch et YouTube reliés au pont, chacun avec sa case à cocher.
Étape 1
Installez-le dans votre communauté
Sélectionnez votre communauté dans la barre latérale. Sur la fiche du widget dans la Marketplace, cliquez sur Installer. Le même bouton se trouve sur sa carte dans la Bibliothèque officielle de Widgets. LibertyTalk ajoute le widget à la communauté sélectionnée, désactivé, puis ouvre sa page.
Étape 2
Gardez la portée Global
Sur la page du widget, gardez la portée Global, sélectionnée par défaut : le widget écoutera tous les comptes Twitch et YouTube de la communauté. Pour revenir plus tard sur cette page, ouvrez Widgets et cliquez sur la carte Project Zomboid · Talky, sous « Widgets de workflow ».
Étape 3
Remplissez sa configuration
Dans l'onglet Configuration du widget, ouvrez la section « Connexion au pont Talky » et remplissez « Adresse publique du pont Talky » et « Jeton du pont ». Le tableau ci-dessous détaille chaque champ. Cliquez sur Enregistrer : le message « Configuration du widget enregistrée. » confirme.
Étape 4
Activez-le
Dans le bloc Activation, cliquez sur Activer : la ligne « Inactif sur Global. » devient « Actif sur Global. » et le bloc Écoute liste les comptes écoutés. La page refuse d'activer tant qu'une modification de la configuration n'est pas enregistrée. Si seule votre chaîne Twitch est connectée, les déclencheurs YouTube restent muets ; ils se branchent quand vous connectez YouTube à la communauté.

| Champ | Ce qu'il faut y mettre |
|---|---|
Adresse publique du pont Talky (talky_bridge_url) | Obligatoire. L'adresse https donnée par cloudflared, par exemple https://votre-tunnel.trycloudflare.com, sans / final. |
Jeton du pont (talky_token) | Obligatoire. La valeur de token dans bridge\config.json, sans les guillemets : celle que le pont a copiée dans votre presse-papiers à son premier lancement. LibertyTalk la traite comme un secret : elle n'est pas réaffichée après l'enregistrement et elle est masquée dans les traces d'exécution. Pour la changer, saisissez la nouvelle valeur. |
Commande de chat (sans « ! ») (talky_command) | La commande, en minuscules et sans le !. Par défaut zombie : un viewer tape !zombie dans le chat Twitch. Le champ n'apparaît que si « Envoyer la commande de chat » est cochée. |
Envoyer les follows à Envoyer les nouveaux membres YouTube (talky_on_follow à talky_on_member) | Section « Événements envoyés au jeu » : dix cases, toutes cochées par défaut. Décochez un événement pour qu'il n'atteigne plus le jeu, par exemple « Envoyer les raids » si vous ne voulez pas de horde pendant un raid. |


Astuce
À chaque session
Relancez start-bridge.cmd et cloudflared, collez la nouvelle adresse du tunnel dans « Adresse publique du pont Talky », onglet Configuration du widget, et cliquez sur Enregistrer. Le changement s'applique tout de suite, sans désactiver le widget.
Vérifier de bout en bout
Demandez à quelqu'un de suivre votre chaîne, ou suivez-la avec un second compte. Quelques secondes plus tard, la fenêtre du pont écrit une ligne [hook:follow] new_follower -> 3 game step(s), le zombie apparaît, et dans F8, page Statut, la liste « Derniers événements reçus par le bridge » affiche hook:follow -> new_follower (Pseudo) précédé de l'heure. Côté LibertyTalk, ouvrez l'onglet Exécutions de la page du widget et cliquez sur « Charger le dernier run » pour voir le même passage.


hook:follow) et lancé new_follower.
webhook_response_status à 200 et webhook_response_ok à true. Adresse du tunnel floutée, jeton masqué.Dépannage
F8 affiche « Bridge hors ligne ».
-cachedir, le jeu lit un autre dossier : indiquez ce dossier Lua dans zomboidLuaDir de bridge\config.json, puis relancez le pont.La fenêtre du pont affiche une ligne warning:.
warning: cloudflared is not in the PATH : installez cloudflared avec winget install --id Cloudflare.cloudflared, puis fermez la fenêtre et relancez start-bridge.cmd ; si vous lancez cloudflared depuis son propre dossier, ignorez cette ligne. warning: Talky is installed twice : le mod est à la fois dans %USERPROFILE%\Zomboid\mods\Talky et dans le Workshop ; supprimez le dossier de Zomboid\mods, la version du Workshop suffit. warning: The bridge folder ... is inside ...\Zomboid\mods : sortez tout le dossier de Talky de Zomboid\mods, bridge\config.json compris, par exemple vers Documents\Talky, puis relancez start-bridge.cmd depuis ce nouvel emplacement. Le jeton ne change pas.La fenêtre du pont affiche Cannot create ...\bridge\config.json.
config.json dans le dossier de Talky, par exemple parce que vous l'avez décompressé sous C:\Program Files. Déplacez le dossier dans Documents\Talky et relancez start-bridge.cmd.La fenêtre du pont affiche Set a long random "token".
bridge\config.json est vide ou commence encore par change-me, ce qui arrive quand config.example.json a été copié à la main. Remplacez-le par une longue chaîne aléatoire, ou supprimez config.json et relancez start-bridge.cmd : le pont en crée un nouveau, avec un nouveau jeton à coller dans « Jeton du pont » du widget.node bridge\bridge.js fire affiche No config at ....
bridge\config.json n'existe pas encore : la commande fire ne le crée pas. Lancez d'abord le pont une fois avec start-bridge.cmd, puis relancez la commande pendant qu'il tourne.La fenêtre affiche Node.js was not found on this PC. ou Node.js ... is too old.
winget install OpenJS.NodeJS.LTS (ou winget upgrade OpenJS.NodeJS.LTS pour une mise à jour), fermez la fenêtre, puis relancez start-bridge.cmd. Une fenêtre ouverte avant l'installation ne voit pas encore Node.js.Le pont affiche Port 7420 is already used.
port dans bridge\config.json, par exemple 7421, et utilisez le même port pour le tunnel : cloudflared tunnel --url http://127.0.0.1:7421.Un follow arrive sur Twitch mais rien ne bouge dans F8.
webhook_response_status dans la sortie de l'étape d'appel. 401 : le jeton ne correspond pas. Le pont vérifie le jeton avant tout le reste et répond 401 même pour un webhook qui n'existe pas : recopiez token de config.json dans « Jeton du pont ». Le widget envoie ce jeton global : si ce webhook figure dans hookTokens de bridge\config.json, il le refuse, retirez-le de hookTokens et relancez le pont (F8, page Webhooks, rubrique « Jeton dédié » : « Oui » ou « Non »). 404 : le jeton est bon, mais le webhook a été renommé ou supprimé dans F8 ; le widget appelle follow, sub, gift, bits, raid, points, command, donation, superchat et member. Code 0 ou 5xx : le tunnel est fermé ou son adresse a changé. Un run qui s'arrête au nœud « Si (classique) » : la case de l'événement est décochée. Aucun run : le widget n'est pas activé, ou le bloc Écoute ne liste pas ce compte.L'étape d'appel webhook passe en « Échec ».
Webhook URL is empty, ou elle contient une adresse locale comme http://127.0.0.1:7420, que LibertyTalk refuse. Collez l'adresse https://...trycloudflare.com du tunnel et cliquez sur Enregistrer.Un abonnement offert ne lance pas new_sub.
gift avec total à 5 : le pont lance gift_subs une seule fois au lieu de six workflows.Le pont affiche job #N mais rien ne se passe dans le jeu.
jobTtlSeconds dans config.json) est abandonné, pour que vous ne receviez pas d'un coup les événements d'un live joué jeu fermé. Enfin, 8 workflows au plus tournent en même temps (page Réglages, « Workflows simultanés max ») et 200 jobs au plus attendent leur tour : les suivants restent dans le pont, et le jeu les reprend quelques secondes plus tard.F8 affiche « ignoré : cooldown » ou une autre raison.
points_helicopter. « condition non remplie » : la condition réglée avec « Modifier la condition » est fausse. « tirage de chance perdu » : le champ « Chance (0 à 1) » a dit non. « workflow désactivé » : la case « Activé » est décochée. « aucune route ne correspond » : aucune route du webhook points ne reconnaît le titre de la récompense (voir la partie 2).Le zombie de !zombie s'appelle « Anonyme ».
Plus rien n'arrive après avoir relancé le tunnel.
Le mod n'apparaît pas dans la liste des mods.
%USERPROFILE%\Zomboid\mods\Talky\42\mod.info : copiez le dossier Talky du zip, pas le dossier qui le contient. Vérifiez aussi qu'il n'existe pas deux copies du mod, celle du Workshop et %USERPROFILE%\Zomboid\mods\Talky, et gardez-en une seule.Les bits ne déclenchent rien.
bits:read. Si votre chaîne Twitch a été connectée avant l'ajout de cette autorisation, reconnectez Twitch à la communauté.Les Super Chats et les nouveaux membres YouTube n'arrivent pas.
Les dons n'arrivent pas.
Le pont refuse une étape http d'un workflow.
http step refused: host "..." is not in httpAllowedHosts (bridge/config.json) et la page Statut montre la même raison après « erreur : ». Le pont n'appelle que les hôtes listés dans httpAllowedHosts de bridge\config.json, par défaut ceux de LibertyTalk (*.liberty-talk.com), comme le rappelle la ligne http steps allowed to au démarrage. Ajoutez-y l'hôte voulu puis relancez le pont. Cette liste se trouve dans config.json et non dans talky_config.json, que d'autres mods du jeu pourraient réécrire.F8 affiche « Bridge antérieur à 0.4.0 ».
Documents\Talky, en remplaçant les fichiers. Le zip ne contient pas bridge\config.json : le jeton et la configuration du pont restent les mêmes. Relancez ensuite start-bridge.cmd.F8 affiche « Solo : le code Talky de la partie n'a pas démarré ».
%USERPROFILE%\Zomboid\console.txt une erreur Lua qui mentionne Talky. Une fois le problème réglé, relancez la partie : Talky ne refait cette vérification qu'au chargement d'une partie.Où trouver les journaux ?
%USERPROFILE%\Zomboid\console.txt, lignes préfixées par [Talky]. L'adresse http://127.0.0.1:7420/health?token=<votre jeton>, ouverte dans un navigateur du même PC, renvoie la version, le nombre de jobs en attente et les 50 derniers événements. Ne l'affichez pas en live : elle contient votre jeton.Comprendre les workflows avec Talky
Ce que fait le widget, où placer la logique, trois exemples commentés, puis le retour du jeu vers LibertyTalk.
Deux moteurs, un même modèle
Un workflow LibertyTalk part d'un déclencheur, un événement comme « Nouveau follower », puis exécute ses nœuds dans l'ordre en leur passant les données de l'événement. Le pont Talky a son propre moteur, plus petit : chaque webhook /hooks/<id> lance un workflow du pont, une liste d'étapes que le mod exécute dans la partie.
- Déclencheur
Nouveau follower
Déclencheur Twitch, il fournit
{user_name}. - Condition
Si (classique)
La case « Envoyer les follows » (
talky_on_follow) est-elle cochée ? - Action
Appel webhook / API (arrière-plan)
POST vers
{talky_bridge_url}/hooks/follow. - Hors LibertyTalk
Pont : webhook follow
Lance le workflow
new_followerdu pont. - Hors LibertyTalk
Mod : trois étapes
notify,wait,spawn_zombie.
Retenez cette frontière : LibertyTalk décide quels événements partent vers le jeu et avec quelles données, le pont décide de ce qui se passe dans la partie.
Ce que fait le widget officiel
Le widget contient dix chaînes construites sur le même patron : un déclencheur, un nœud « Si (classique) » qui teste la case de l'événement, puis un « Appel webhook / API (arrière-plan) ». Chaque appel envoie un POST à {talky_bridge_url}/hooks/<id> avec l'en-tête {"X-Bridge-Token":"{talky_token}"}. L'appel part en arrière-plan pour qu'un tunnel lent ne retarde pas les autres événements de votre communauté. La chaîne des abonnements teste aussi is_gift : elle ne relaie que les abonnements qui ne sont pas offerts, la chaîne des cadeaux s'occupe des autres.
| Déclencheur | Webhook du pont | Données envoyées | Workflow du pont |
|---|---|---|---|
| Nouveau follower (Twitch) | follow | user_name | new_follower |
| Nouveau subscriber (Twitch), hors abonnements offerts | sub | user_name, tier, is_gift | new_sub |
| Nouveau cadeau subscriber (Twitch) | gift | user_name, total, tier | gift_subs |
| Bits reçus (cheer) | bits | user_name, bits | bits |
| Raid reçu | raid | user_name, viewers | raid |
| Récompense (points de chaîne) | points | user_name, reward_title | routes selon reward_title |
Commande reçue, filtrée sur {talky_command} | command | command | chat_zombie |
| Don reçu (Streamlabs) | donation | donor, amount, formatted_amount | donation |
| Super Chat (YouTube) | superchat | author_display_name, formatted_amount | donation |
| Nouveau membre (YouTube) | member | author_display_name | new_sub |
Les workflows du pont de la dernière colonne sont ceux livrés avec Talky. Vous les modifiez dans F8, page Workflows, sans toucher au widget. Par exemple, Super Chats et dons partagent donation, qui tire au sort un fusil à pompe avec ses cartouches, un soin avec des conserves, ou un pick-up.
À savoir
Pourquoi la commande arrive sans pseudo ni texte
Le contrat développeur de Twitch interdit de redistribuer les messages du chat hors de Twitch. LibertyTalk applique cette règle aux widgets de la marketplace : un widget ne peut envoyer à un service externe ni le pseudo de l'auteur d'un message de chat, ni le texte de ce message (règles des plateformes). Une commande !zombie est un message de chat : le webhook command reçoit donc seulement {"command":"zombie"}. Conséquence : !zombie et !zombie Bob font la même chose, et le zombie porte le nom des événements anonymes du pont, « Anonyme » en français, ou la valeur de « Pseudo des événements anonymes » dans F8, page Réglages. Le widget n'envoie pas non plus le texte qu'un viewer saisit avec une récompense de points : les routes du pont travaillent sur le titre de la récompense.
Pour qu'un viewer obtienne un zombie à son nom, passez par un événement qui fournit un pseudo hors du chat : un follow, des bits, ou une récompense de points de chaîne dont le titre contient « zombie ». Cette dernière lance points_zombie, qui nomme le zombie d'après le viewer qui a échangé la récompense.
Les variables
Dans LibertyTalk, une variable s'écrit entre accolades simples. Chaque déclencheur annonce les siennes : « Bits reçus (cheer) » fournit {bits}, {user_name} et {is_anonymous}, et « Récompense (points de chaîne) » fournit {reward_title} et {reward_cost}. Le sélecteur de variables de l'éditeur les propose dans les nœuds qui suivent.
Les variables du widget, {talky_bridge_url}, {talky_token} et {talky_command}, sont remplies à l'installation et relues à chaque exécution. Elles portent le préfixe talky_ parce que les données de l'événement passent en priorité : une variable de widget nommée user_name serait masquée par celle du déclencheur. {talky_token} est déclarée secrète : sa valeur est masquée dans les traces d'exécution.
Une variable mal orthographiée reste telle quelle : avec {user_nmae}, le pont reçoit ce texte et votre zombie s'appelle « {user_nmae} ». Une variable prévue par le déclencheur mais absente de l'événement devient vide, comme {user_name} pour un cheer anonyme ; le pont utilise alors son nom par défaut.
Le pont a ses propres modèles, entre accolades doubles, avec des filtres : {{bits | div:100 | floor}} donne 4 pour 450 bits. {{user}} prend le premier champ rempli parmi user_name, author_display_name, donor et quelques autres, ce qui permet au même workflow new_sub de servir aux abonnés Twitch et aux membres YouTube. Quand aucun de ces champs n'est rempli, {{user}} vaut le nom des événements anonymes.
Astuce
Écrire un corps JSON
Placez chaque variable entre guillemets dans un JSON valide, comme {"bits":"{bits}"}. LibertyTalk échappe alors les valeurs : un guillemet dans le titre d'une récompense, comme Appel "urgent", ne casse plus le corps. Les valeurs partent en texte ; le pont convertit bits, viewers, total, amount et tier en nombres avant de tester ses conditions.
Attention
Gardez les modèles du pont dans le pont
N'écrivez pas {{user_name}} dans un champ LibertyTalk : LibertyTalk remplace la partie {user_name} et le pont reçoit {Bob}. Les modèles à accolades doubles se règlent dans F8, page Workflows.
Décider dans LibertyTalk ou dans le pont
Les deux moteurs ne savent pas faire les mêmes choses. LibertyTalk n'a pas de nœud de boucle ni de calcul : un nœud ne peut pas se répéter « une fois par tranche de 100 bits ». Le pont, lui, ne voit que ce que LibertyTalk lui envoie. Ce tableau indique où placer chaque besoin.
| Besoin | Dans LibertyTalk | Dans le pont Talky |
|---|---|---|
| Choisir les événements qui partent vers le jeu | Cases du widget (« Si (classique) ») et filtres du déclencheur, comme filter_command | Case « Activé » d'un workflow |
| Aiguiller selon un texte, comme le titre d'une récompense | « Aiguillage (switch) » avec « ~ correspond au regex » | routes avec contains ou matches |
| Calculer un nombre, comme bits ÷ 100 | Impossible : aucun nœud de calcul | Filtres div, floor, clamp |
| Répéter une action N fois | Impossible : un workflow ne boucle pas | Étape repeat avec un plafond max |
| Tirer au sort | Seulement en détournant {@uuid}, déconseillé | random avec weights, ou chance |
| Limiter la fréquence (cooldown) | « Détecter du spam (répétition / flood) » détourné, fenêtre d'une heure au plus | cooldownSeconds et userCooldownSeconds |
| Mettre un texte en forme | Non, la valeur part telle quelle | Filtres upper, lower, truncate, default |
| Réagir dans le chat à un événement du jeu | « Webhook entrant » puis « Envoyer un message » | Étape http vers ce webhook entrant |
En pratique, laissez LibertyTalk router et filtrer, et donnez au pont les nombres bruts. Le widget suit cette règle : il envoie {bits} tel quel et le pont calcule la taille de la horde.
Exemple 1 · Un follow, un zombie nommé
Quand Bob suit la chaîne, le widget envoie {"user_name":"Bob"} à /hooks/follow. Le pont lance new_follower, qui contient trois étapes :
notify: un bandeau avec le pseudo, en violet#b388ff.wait: 2 secondes de pause dans le jeu.spawn_zombie: un zombie nommé{{user}}, entre 8 et 14 cases du personnage, avec son nom affiché de la même couleur.
Pour changer ce zombie, ouvrez F8, page Workflows, new_follower, et double-cliquez sur l'étape du zombie dans la liste des étapes. Cochez « Rampant » pour qu'il rampe, ou passez « Nombre » à 3 : trois zombies apparaissent, nommés « Bob #1 » à « Bob #3 », ou tous « Bob » avec « Même nom pour tous ». Cliquez sur Valider, puis sur Enregistrer : le pont recharge la configuration sans redémarrer.
Exemple 2 · Des bits, une horde à leur mesure
Le widget transmet {bits} sans le transformer, car LibertyTalk ne sait ni diviser un nombre ni répéter un nœud. C'est le workflow bits du pont qui fait le calcul :
"bits": {
"steps": [
{ "if": { "bits": { "gte": 1000 } },
"then": [ { "action": "helicopter" } ],
"else": [
{ "if": { "bits": { "gte": 100 } },
"then": [
{ "repeat": "{{bits | div:100 | floor}}", "max": 20, "steps": [
{ "action": "spawn_zombie", "name": "{{user}}", "sameName": true, "distance": 18 },
{ "action": "wait", "seconds": 1 }
] }
],
"else": [ { "action": "noise", "radius": 25 } ] }
] }
]
}bits livré avec Talky, sans les étapes notify qui affichent les bandeaux.- 450 bits :
450 / 100arrondi à l'entier inférieur donne 4 zombies au nom du viewer, un par seconde, à 18 cases au plus. - 1 000 bits ou plus : l'hélicoptère passe, sans zombie nommé.
- Moins de 100 bits : un bruit attire les zombies dans un rayon de 25 cases.
Le plafond max: 20 protège la partie si vous retirez la branche de l'hélicoptère : 5 000 bits donneraient sinon 50 zombies. Pour tester sans dépenser de bits, Tester maintenant sur bits envoie 500 bits, soit 5 zombies.

bits : les zombies arrivent un par seconde.À savoir
Et avec un Aiguillage ?
Dans LibertyTalk, un « Aiguillage (switch) » sur bits peut envoyer des paliers fixes vers des webhooks différents, par exemple 100, 500 et 1 000 bits. Il ne peut pas produire un zombie par tranche de 100 bits : ce calcul reste dans le pont.
Exemple 3 · Une récompense de points, un événement au choix
Le widget envoie toutes les récompenses de points de chaîne au même webhook, points, avec user_name et reward_title. Le pont choisit le workflow avec des routes : la première dont la condition est vraie gagne. Les routes livrées avec Talky cherchent un mot dans le titre, en français si le pont a été lancé la première fois avec settings.language à fr :
- « hélico » lance
points_helicopter: l'hélicoptère passe, une fois toutes les 10 minutes au plus. - « soin » lance
points_heal: soin complet et texte flottant au nom du viewer. - « tempête » lance
points_storm: 3 heures de tempête dans le jeu. - « zombie » lance
points_zombie: un zombie dont le nom, en bleu clair, est le pseudo du viewer qui a échangé la récompense.
La comparaison contains du pont ignore les majuscules : « Appeler l'Hélico » correspond, mais « Appeler l'helico » sans accent ne correspond pas, et un pont resté en anglais cherche helicopter, heal et storm. Des routes en matches acceptent plusieurs graphies et les deux langues. Une récompense qui ne correspond à aucune route ne lance rien : la page Statut l'affiche avec « ignoré : aucune route ne correspond ».
[
{ "when": { "reward_title": { "matches": "h[ée]lico" } }, "workflow": "points_helicopter" },
{ "when": { "reward_title": { "matches": "soin|heal" } }, "workflow": "points_heal" },
{ "when": { "reward_title": { "matches": "temp[êe]te|storm" } }, "workflow": "points_storm" },
{ "when": { "reward_title": { "contains": "zombie" } }, "workflow": "points_zombie" }
]points, bouton « Modifier les routes (JSON) ». h[ée]lico reconnaît « hélico », « helico » et « helicopter ».La même logique dans LibertyTalk
Vous préférez voir l'aiguillage dans l'éditeur de workflows ? Décochez « Envoyer les récompenses de points de chaîne » dans le widget pour éviter les doublons, puis construisez votre propre workflow :
Étape 1
Le déclencheur
« Récompense (points de chaîne) » sur votre compte Twitch.
Étape 2
Un Aiguillage exclusif
« Aiguillage (switch) » en mode « Exclusif (1er cas vrai) », un cas par récompense, par exemple
reward_title« ~ correspond au regex »/h[ée]lico/iu.Étape 3
Une variable par cas
Dans chaque branche, « Définir une variable » nommée
talky_hook, avec la valeurhelico,soinoutempete.Étape 4
Un seul appel
Reliez toutes les branches au même « Appel webhook / API (arrière-plan) » : URL
https://votre-tunnel.trycloudflare.com/hooks/{talky_hook}, méthode POST, en-têtes{"X-Bridge-Token":"votre jeton"}, corps{"user_name":"{user_name}","reward_title":"{reward_title}"}. Comme ce workflow n'est pas le widget, son adresse est à mettre à jour à chaque nouveau tunnel.Étape 5
Les webhooks côté pont
Dans F8, page Webhooks, créez
helico,soinettempeteavec + Nouveau puis Renommer, et associez-les àpoints_helicopter,points_healetpoints_storm.
Attention
Deux différences avec le pont
Dans LibertyTalk, contains respecte les majuscules : « Hélico » ne contient pas « hélico ». Et une expression régulière s'écrit entre délimiteurs avec ses options, /h[ée]lico/iu : sans les /, un motif qui commence par [ ou ^ est mal lu et la condition reste fausse.
Un seul appel final plutôt qu'un appel par branche : au-delà de 5 appels HTTP atteignables depuis un même déclencheur, l'éditeur affiche un avertissement à l'enregistrement.
Limiter la fréquence
Chaque workflow du pont a deux délais, réglables dans F8, page Workflows : « Cooldown global (s) » bloque le workflow pour tout le monde, « Cooldown par viewer (s) » pour un même pseudo. Par défaut, points_helicopter attend 600 secondes entre deux hélicoptères, et chat_zombie 20 secondes entre deux zombies.
chat_zombie n'a pas de « Cooldown par viewer (s) » : la commande de chat arrive sans pseudo, tous les viewers portent donc le même nom par défaut, et un délai par viewer y agirait comme un délai global. Pour espacer les !zombie, augmentez son « Cooldown global (s) ».
À savoir
Délais en mémoire
Le pont garde ses délais en mémoire : relancer start-bridge.cmd les remet à zéro.
Côté LibertyTalk, aucun nœud n'est prévu pour ça, mais le nœud de modération « Détecter du spam (répétition / flood) » peut servir de délai : portée network_id, valeur à comparer constante (helico), fenêtre de 600 secondes, « Flood : messages max dans la fenêtre » à 2, puis « Si (classique) » sur is_flood faux. Le premier passage est accepté, les suivants sont bloqués jusqu'à la fin de la fenêtre, qui ne dépasse pas une heure.
Le retour du jeu vers LibertyTalk
Le mod renvoie trois événements au pont : zombie_killed avec name et byPlayer quand un zombie nommé meurt, player_died avec hoursSurvived et zombieKills, et game_started. F8, page Événements du jeu, relie chacun à un workflow du pont. Exemple : poster « Le zombie de Bob est tombé. » dans votre chat Twitch, avec le workflow désactivé report_to_libertytalk que Talky livre pour ça.
Étape 1
Créez le webhook entrant
Dans LibertyTalk, créez un workflow avec le déclencheur « Webhook entrant » et enregistrez-le : le champ « URL & secret du webhook » affiche l'adresse, qui se termine par
/webhooks/workflow/<jeton>, et le secret.Étape 2
Récupérez le nom du zombie
Dans « Variables depuis le payload », ajoutez la variable cible
nameavec la cléname.Étape 3
Postez dans le chat
Ajoutez l'action Twitch « Envoyer un message » avec le contenu
Le zombie de {name} est tombé., puis activez le workflow.Étape 4
Remplissez la cible du pont
Hors live, ouvrez
bridge\config.jsondans un éditeur de texte. DanshttpTargets>lt_report, remplacezPASTE_THE_TOKEN_OF_YOUR_INCOMING_WEBHOOKpar le jeton qui termine l'adresse du webhook entrant etPASTE_THE_SECRET_OF_YOUR_INCOMING_WEBHOOKpar son secret, enregistrez, puis relancez le pont. Ce fichier reste hors de portée du jeu et de ses mods ; tant qu'une valeurPASTE_reste, le pont refuse l'étape.Étape 5
Activez le workflow du pont
Dans F8, page Workflows, sélectionnez
report_to_libertytalk, cochez « Activé », puis cliquez sur Enregistrer. Son étapehttpindique seulement"target": "lt_report": l'adresse et le secret ne passent pas partalky_config.json. Si votretalky_config.jsonvient de Talky 0.3.0, cette étape porte encoreurletheaders: remplacez-les par"target": "lt_report"(bouton « Workflow en JSON »), sinon le pont envoie l'appel avec un avertissement.Étape 6
Reliez l'événement du jeu
Page Événements du jeu, choisissez
report_to_libertytalkpour « Un zombie nommé meurt », puis cliquez sur Enregistrer.
"httpTargets": {
"lt_report": {
"url": "https://api.liberty-talk.com/webhooks/workflow/PASTE_THE_TOKEN_OF_YOUR_INCOMING_WEBHOOK",
"headers": { "X-Webhook-Secret": "PASTE_THE_SECRET_OF_YOUR_INCOMING_WEBHOOK" }
}
}lt_report telle que livrée avec Talky, avant de la remplir. Le pont lit ce fichier à son démarrage."report_to_libertytalk": {
"enabled": false,
"steps": [
{ "action": "http", "target": "lt_report",
"body": { "event": "{{event}}", "name": "{{name}}", "hoursSurvived": "{{hoursSurvived}}", "zombieKills": "{{zombieKills}}" } }
]
}report_to_libertytalk tel que livré avec Talky : son étape nomme la cible, l'adresse et le secret restent dans bridge\config.json. Le webhook entrant répond 202 quand il accepte l'appel.L'hôte api.liberty-talk.com fait partie de httpAllowedHosts par défaut, l'étape passe donc sans réglage. Elle s'exécute en arrière-plan : elle ne retarde ni le jeu ni les autres événements. Relier « Un zombie nommé meurt » à report_to_libertytalk remplace on_zombie_killed, qui fait apparaître dans 30 % des cas deux « cousins » du zombie tué. Pour garder les deux, copiez plutôt l'étape http dans les étapes de on_zombie_killed.
Le corps envoie aussi event, hoursSurvived et zombieKills. Reliez « Le joueur meurt » au même workflow, déclarez aussi les variables event et hoursSurvived dans « Variables depuis le payload », et un « Aiguillage (switch) » avec un cas event égal à player_died peut poster un autre message à votre mort, par exemple Mort après {hoursSurvived} h de survie.
Attention
Pas d'aller-retour sans fin
Un workflow du pont lancé par un webhook ne doit pas rappeler le webhook entrant qui l'a déclenché : LibertyTalk et le pont se renverraient l'événement en boucle. LibertyTalk coupe un webhook entrant qui reçoit trop d'appels.
Tester et déboguer
Testez d'abord le pont seul, avec Tester maintenant ou node bridge\bridge.js fire. Pour tester le trajet de LibertyTalk vers le pont sans attendre un vrai follow, créez un workflow avec le déclencheur « Déclenchement manuel » et, dans « Variables simulées », user_name égal à Bob. Ajoutez un « Appel webhook / API » vers https://votre-tunnel.trycloudflare.com/hooks/follow, avec l'en-tête {"X-Bridge-Token":"votre jeton"} et le corps {"user_name":"{user_name}"}. Le bouton de déclenchement manuel fonctionne même si le workflow n'est pas activé.
La console d'exécution montre ce que chaque nœud a reçu et produit. Pour le widget, ouvrez son onglet Exécutions puis cliquez sur « Charger le dernier run ». Chaque étape affiche son entrée et sa sortie, et le bouton « Variables » montre toutes les variables disponibles à ce moment, secrets masqués, {talky_token} compris.
Attention
Une étape terminée n'est pas un appel réussi
Si le pont refuse l'appel ou ne répond pas, l'étape d'appel webhook s'affiche quand même « Terminé » : LibertyTalk a bien envoyé la requête. Lisez sa sortie : webhook_response_ok vaut false et webhook_response_status donne le code reçu. L'étape passe en « Échec » seulement quand l'adresse est vide (Webhook URL is empty) ou refusée par LibertyTalk, comme une adresse locale.
| Code reçu | Ce que ça veut dire | Que faire |
|---|---|---|
| 200 | Le pont a accepté l'appel. | Regardez F8, page Statut : la ligne indique le workflow lancé ou la raison du refus, par exemple « ignoré : cooldown ». |
| 401 | Jeton refusé. Le pont vérifie le jeton avant le webhook : sans le bon jeton, tout identifiant répond 401. | Recopiez token de bridge\config.json dans « Jeton du pont ». Un webhook listé dans hookTokens de bridge\config.json refuse ce jeton : retirez-le de hookTokens et relancez le pont, ou appelez-le avec l'URL que donne node bridge\bridge.js url <webhook>. |
| 404 | Le jeton est bon, mais le webhook n'existe pas dans le pont. | Recréez dans F8, page Webhooks, l'identifiant appelé, par exemple follow. |
| 413 | Corps de plus de 64 Ko. | Retirez les longs champs de texte du corps. |
| 0 ou 5xx | Le tunnel ou le pont ne répond pas. | Vérifiez que les fenêtres du pont et de cloudflared sont ouvertes, et que « Adresse publique du pont Talky » contient l'adresse du jour. |
Limites à connaître
- L'adresse du tunnel rapide change à chaque lancement de cloudflared : recopiez-la dans le widget à chaque session, ou passez à un tunnel nommé.
- La commande de chat arrive sans pseudo ni texte, à cause de la règle de Twitch sur la redistribution des messages du chat : le zombie de
!zombieporte le nom des événements anonymes. - Un événement attend 15 minutes au plus : si le jeu reste fermé ou en pause plus longtemps, il est abandonné.
- Le pont plafonne chaque workflow : une étape
waitdure 600 secondes au plus, les textes denotify,sayethalosont coupés à 200 caractères, un bandeau reste 60 secondes au plus, et unrepeatne dépasse jamais 100 tours, quel que soit sonmax. - Les Super Chats et les membres YouTube n'arrivent que pendant un live, et les dons que si Streamlabs est relié.
- Talky 0.5.0 a été testé sur la Build 42.21. Une mise à jour du jeu peut changer les fonctions qu'il utilise : mettez à jour le mod et le pont ensemble.
Jouer à Talky sur un serveur
L'admin lance le pont à côté du serveur et ajoute les streamers depuis le jeu ; chaque streamer colle une adresse et un jeton dans son widget.
Sur un serveur, dédié ou hébergé depuis le menu principal du jeu, le pont ne tourne pas sur le PC des streamers : l'admin le lance sur la machine du serveur et ajoute les streamers depuis le jeu. Chaque streamer reçoit une adresse et un jeton, qu'il colle dans son widget LibertyTalk. Les effets de son live se produisent autour de son personnage, et tous les joueurs les voient.
- L'admin du serveur installe le mod sur le serveur, lance le pont à côté, ouvre un port et ajoute les streamers.
- Chaque streamer rejoint le serveur, installe le widget LibertyTalk et y colle l'adresse et le jeton reçus. Rien d'autre à installer sur son PC que le mod, que le serveur demande de toute façon.
Pour l'admin : préparer le serveur
Étape 1
Ajoutez Talky aux mods du serveur
Serveur dédié : dans
Zomboid/Server/<nom du serveur>.ini, mettezMods=TalkyetWorkshopItems=3830066321, l'id de Talky sur le Steam Workshop. Le serveur télécharge le mod au démarrage, et chaque joueur le reçoit en se connectant. Partie hébergée : Héberger > Modifier les réglages..., page Mods, puis page Workshop Steam.Étape 2
Réglez les limites
Les options de Talky sont sur la page Talky des options bac à sable : limites de zombies, d'objets et de météo, un interrupteur par catégorie, délais, distance des autres joueurs. Le feu et l'hélicoptère sont désactivés par défaut sur un serveur.
Étape 1
Installez Node.js 18 ou plus sur la machine du serveur
Sous Windows :
winget install OpenJS.NodeJS.LTS. Sous Linux : le paquetnodejsde la distribution s'il est en version 18 ou plus, sinon celui de nodejs.org.Étape 2
Décompressez le zip de Talky
Téléchargez
Talky-0.5.0.zipdans les releases GitHub et décompressez-le dans un dossier du compte qui lance le serveur.Étape 3
Lancez le pont en mode serveur
Avec le compte qui lance le serveur :
sh start-bridge.shsous Linux,start-bridge.cmd serverdans un terminal ouvert dans le dossier de Talky sous Windows. Partie hébergée :start-bridge.cmd serversur le PC de l'hôte. La fenêtre du pont affichelistening on http://0.0.0.0:7420 (server mode).Étape 4
Démarrez le serveur
Sa console affiche
[Talky] server ready (Talky 0.5.0), puis[Talky] inbox readyà la première lecture des jobs.

start-bridge.cmd server. Ici sur le port 7421, parce qu'un pont solo occupait déjà 7420 sur la même machine.![Console du serveur dédié : *** SERVER STARTED ***, puis [Talky] server ready (Talky 0.5.0).](https://d1lvjaji8qt9t1.cloudfront.net/media/db71aa53-d4d8-4bbb-b34f-175defa10774.png)
À savoir
Le pont doit utiliser le dossier Zomboid/Lua du serveur : lancez-le avec le compte qui lance le serveur. Pour un serveur lancé avec -cachedir=<dossier>, mettez <dossier>/Lua dans zomboidLuaDir de bridge/config.json. Sous Linux, le zip contient talky-bridge.service, un exemple d'unité systemd pour démarrer le pont avec la machine.
Étape 1
Ouvrez le port TCP 7420
Dans le pare-feu de la machine (sous Linux, par exemple
sudo ufw allow 7420/tcp; sous Windows, une règle entrante TCP 7420) et dans celui de l'hébergeur s'il y en a un. Partie hébergée : redirigez aussi le port TCP 7420 de la box vers le PC de l'hôte.Étape 2
Notez l'adresse publique du pont
http://<IP publique du serveur>:7420. Une adresse privée (192.168.…,10.…) ne marche pas : LibertyTalk doit joindre le pont depuis internet.
Étape 1
Passez admin
La page Webhooks de F8 est réservée aux admins et aux modérateurs. Serveur dédié : tapez
setaccesslevel "<nom d'utilisateur>" admindans la console du serveur, ou connectez-vous avec le compteadmincréé au premier démarrage. Partie hébergée : voir l'encadré plus bas.Étape 2
Enregistrez l'adresse publique
En jeu : F8 > Webhooks > onglet Streamers. Tapez l'adresse notée plus haut dans Adresse publique du bridge, puis Enregistrer. L'IP seule suffit : Talky ajoute
http://et le port du pont.Étape 3
Ajoutez chaque streamer
Tapez son nom d'utilisateur en bas à gauche, puis + Ajouter un streamer. Une seconde plus tard, le pont lui a tiré un jeton et il apparaît dans la liste.
Étape 4
Envoyez-lui son adresse et son jeton
Choisissez-le, puis Copier l'URL et le jeton : le presse-papiers contient les deux valeurs de son widget, une par ligne. Envoyez-les en message privé.

http://<IP publique>:7420. Le jeton reste masqué.Attention
Le jeton s'affiche masqué dans F8 ; Afficher le jeton le montre : ne le faites pas pendant un live. Nouveau jeton remplace le jeton d'un streamer : l'ancien s'arrête tout de suite, et le streamer colle le nouveau dans son widget. Retirer arrête son jeton et abandonne ses jobs en attente.
À savoir
Partie hébergée
Dans une partie hébergée, le compte de l'hôte n'est pas admin au départ. Sur la page Statut ou Webhooks de F8, cliquez sur M'autoriser (hôte) : quelques secondes plus tard, les pages des admins s'ouvrent.
Pour le streamer : brancher son live
Étape 1
Rejoignez le serveur
Le mod Talky vient avec la liste des mods du serveur : le jeu le télécharge à la connexion.
Étape 2
Installez le widget
Dans le dashboard LibertyTalk : Marketplace > Project Zomboid · Talky > Installer, puis ouvrez sa page dans Widgets, comme dans la partie 1.
Étape 3
Collez l'adresse et le jeton
Onglet Configuration du widget : Adresse publique du pont Talky = l'adresse reçue de l'admin, Jeton du pont = votre jeton. Enregistrer, puis Activer.
Étape 4
Vérifiez en jeu
F8 > Statut affiche « Vous êtes streamer ici : les événements de votre live se produisent autour de votre personnage. »
Astuce
Rien à lancer sur votre PC : ni pont, ni tunnel. Si l'admin vous donne un nouveau jeton, remplacez Jeton du pont dans le widget et enregistrez. Les workflows (ce qui se passe pour un follow, un raid...) et l'affichage (noms au-dessus des zombies, bandeaux) sont ceux du serveur : c'est l'admin qui les règle, dans F8.
Ports et sécurité
- Un seul port à ouvrir : TCP 7420 (
portdebridge/config.json), vers la machine qui fait tourner le pont. Le serveur du jeu garde ses propres ports. - Les appels de LibertyTalk arrivent en
http, en clair : le jeton du streamer circule en clair entre LibertyTalk et le pont. Quelqu'un qui intercepte ce trafic pourrait le réutiliser jusqu'au prochain Nouveau jeton. - Le jeton d'un streamer ne déclenche que des effets autour de ce streamer, dans les limites des options bac à sable du serveur.
À savoir
Pour du https
Placez un proxy inverse avec un certificat (Caddy, nginx...) devant le pont, mettez "host": "127.0.0.1" dans bridge/config.json pour que le pont ne réponde qu'au proxy, et tapez l'adresse https:// du proxy comme adresse publique dans F8. Pour une partie hébergée sans adresse publique, un tunnel cloudflared (cloudflared tunnel --url http://127.0.0.1:7420) donne aussi une adresse https://.
Limites
- La machine du serveur doit pouvoir lancer Node.js et être joignable depuis internet sur le port du pont. Un serveur loué sans accès à la ligne de commande, géré seulement par un panneau web, ne convient pas.
- Un seul jeu de workflows pour tout le serveur : chaque streamer reçoit les mêmes effets, autour de son propre personnage. Les délais comptent par streamer.
- La météo et l'heure sont les mêmes pour tous les joueurs, et leurs délais comptent pour tout le serveur.
- L'hélicoptère va vers un joueur au hasard : il est désactivé par défaut et, une fois activé, ne part que si un seul joueur est connecté (sauf option contraire).
- Les jobs d'un streamer hors ligne attendent son retour, 15 minutes au plus ; au-delà, ils sont abandonnés.
- Les effets autour d'un streamer évitent les autres joueurs (15 cases par défaut) et les refuges où il n'a pas accès.
Dépannage
| Symptôme | Solution |
|---|---|
| F8 > Statut : « Bridge du serveur : hors ligne. » | Lancez le pont sur la machine du serveur, avec le compte du serveur. |
| F8 > Statut : « Le bridge du serveur tourne en mode solo » | Relancez-le avec start-bridge.sh (Linux) ou start-bridge.cmd server (Windows). |
| F8 > Webhooks : « Réservé aux admins de ce serveur » | Votre rôle n'est ni admin ni modérateur. Hôte d'une partie : M'autoriser (hôte). |
| Le serveur vous expulse : « Lua/script checksums do not match » | Votre jeu et le serveur n'ont pas les mêmes fichiers Lua. Gardez une seule copie de Talky (le Workshop ou Zomboid/mods, pas les deux) et retirez les mods copiés à la main dans le dossier du jeu, puis redémarrez le jeu. |
La fenêtre du pont : Port 7420 is already used | Un autre programme prend ce port, par exemple un pont solo sur la même machine. Changez port dans bridge/config.json, puis le port de l'adresse publique. |
| Rien ne se passe en jeu après un follow | Le port n'est pas ouvert, l'adresse du widget est fausse, ou le streamer a été retiré : la fenêtre du pont affiche 401 bad token ou not_streamer, et l'onglet Exécutions du widget montre l'erreur. |
Pour aller plus loin : tous les déclencheurs, conditions et statuts d'exécution de LibertyTalk, au-delà de Project Zomboid.Workflows en profondeurComment le moteur exécute un workflow : déclencheurs, variables, conditions, appels webhook, tests et widgets, avec les pièges qui font échouer un scénario sans message d'erreur.Lire le guide
Essayez sur votre communauté
Créez un compte gratuit et suivez le guide avec vos propres réseaux.