Valentin3526 Posted December 21, 2014 Share Posted December 21, 2014 (edited) ------------------------------ Message de salutations ------------------------------ AddEventHandler('onPlayerJoin', root, local oldAllowed = wasAllowedList[player] local newAllowed = isPlayerAllowedHere(player) wasAllowedList[player] = newAllowed if newAllowed and not oldAllowed then outputChatBox("Bienvenue sur GuilAndreas", value, 25, 45, 35, false) if oldAllowed and not newAllowed then function outputChatBox(joueur) outputChatBox("Salut, "..getPlayerName(joueur).." content de te revoir !", value, 35, 45, 25, false) end end end ) ------------------------------ Message d'arrivée ------------------------------ AddEventHandler('onPlayerLogin', root, function outputChatBox(joueur) outputChatBox(..getPlayerName(joueur).."s'est connécté !", value, 0, 255, 0, true) end ) ------------------------------ Message de déconnexion ------------------------------ AddEventHandler('onPlayerQuit', root, function outputChatBox(joueur) outputChatBox(..getPlayerName(joueur).."s'est déconnécté !", value, 255, 0, 0, true) end ) ------------------------------ Message de connexion ------------------------------ AddEventHandler('onPlayerLogin', root, local outputChatBox("Vous êtes maintenent en ligne", value, 100, 255, 100, false) end ) ------------------------------ Message de déconnexion ------------------------------ AddEventHandler('onPlayerLogout', root, local outputChatBox("Vous êtes maintenent hors ligne", value, 255, 100, 100, false) end ) Edited February 14, 2015 by Guest Link to comment
Moderators Citizen Posted December 21, 2014 Moderators Share Posted December 21, 2014 Bonsoir dfigfjf, (jamais vu un ratio de voyelles aussi bas dans un pseudo lol) Problème sur mon script ?Oh oui y en a pas mal et c'est sûrement parce que tu as fais des copiés collés sans comprendre.Déjà je vais juste te proposer une autre écriture plus simple que ceci: addEventHandler("monEvent", gensConcernés, function (param1, param2, etc) outputChatBox("monEvent à été déclenché !") end ) Ce code écrit dans la chatbox "monEvent à été lancé !" à chaque fois que l'event "monEvent" est déclenché et pour chaque joueur qui compose la variable gensConcernés. Si tu mets root ce bout de code fonctionnera pour tous les joueurs présent sur le serveur. Mais c'est une écriture avancée que je déconseille fortement pour débuter. Donc voici la même chose écrit plus simplement: function maFonction(param1, param2, etc) outputChatBox("monEvent à été lancé !") end addEventHandler("monEvent", gensConcernés, maFonction) Ici on déclare d'abord tranquillement la fonction qui sera attachée à l'event puis on l'attache via la fonction addEventHandler Enfait, la fonction addEventHandler attends une fonction en 3ème argument. Donc: - soit on lui donne le nom d'une fonction qu'on a déjà déclaré: maFonction (cf.écriture simplifié) - soit on déclare la fonction dans le 3ème argument (cf. écriture complexe). Mais quand on utilise là 2ème possibilité (l'écriture complexe), il ne faut pas donner de nom à ta fonction. On appelle cette fonction une fonction anonyme (qui existe dans d'autres langages). Dans le bouts de codes que tu nous a montré, tu commences presque tout le temps le 3ème arguement par du code genre: local oldAllowed = wasAllowedList[player] Donc commençons par le message de salutations, la version corrigée: function salutationsOnJoin() local oldAllowed = wasAllowedList[source] local newAllowed = isPlayerAllowedHere(source) wasAllowedList[source] = newAllowed if newAllowed and not oldAllowed then outputChatBox("Bienvenue sur GuilAndreas", source, 25, 45, 35, false) else outputChatBox("Salut, "..getPlayerName(source).." content de te revoir !", source, 35, 45, 25, false) end end addEventHandler("onPlayerJoin", root, salutationsOnJoin) On repère tout de suite l'écriture simplifiée qui ne doit pas te poser de problème si t'as bien compris ce que j'ai dit plus haut. Ensuite si on lit la page wiki de onPlayerJoin on lit que la source de cet event est le joueur qui est à l'origine de cet event (donc le joueur qui vient de join). Hors dans ton code, tu utilises la variable player partout: Un petit extrait de ton code: local oldAllowed = wasAllowedList[player] local newAllowed = isPlayerAllowedHere(player) wasAllowedList[player] = newAllowed La variable player n'a pas été définie dans ta fonction et vaut donc nil. A la place de player, il faut utiliser la variable source. Mais je ne vois pas non plus la définition de la variable source dans ton code C'est une bonne remarque effectivement. La variable source est une sorte de variable invisible que notre addEventHandler se charge de remplir. Et on viens à l'instant de voir que pour onPlayerJoin source contient le joueur qui vient de join. C'est pour ça que j'ai mis source de partout. Ensuite tu avais cette potion de code: if oldAllowed and not newAllowed then function outputChatBox(joueur) outputChatBox("Salut, "..getPlayerName(joueur).." content de te revoir !", value, 35, 45, 25, false) end end Là par contre c'est pas juste une petite erreur de variable, c'est carrément le temple du copier/coller foireux ^^ Donc tu veux afficher "Salut dfigfjf", content de te revoir !" si oldAllowed vaut true et si newAllowed vaut false ou nil. Je ne suis pas sûr que ça soit tout à fait ça que tu voulais faire, mais c'est du moins ce qui est écrit. Et vu que c'est exactement la même condition que celle d'avant, les deux outputChatBox vont toutes les deux afficher leur message en même temps ... Ce qui, j'en suis sûr, une erreur de ta part. C'est soit l'un, soit l'autre, donc c'est pour ça que j'ai mis un else à la place de t'a deuxième condition. if newAllowed and not oldAllowed then outputChatBox("Bienvenue sur GuilAndreas", source, 25, 45, 35, false) else outputChatBox("Salut "..getPlayerName(source)..", content de te revoir !", source, 35, 45, 25, false) end Traduction du code en français: [b]Si [/b]newAllowed vaut true et si oldAllowed vaut nil ou false [b]alors[/b] Afficher "Bienvenue sur GuilAndreas" au joueur [b]Sinon[/b] Afficher "Salut <nom du joueur>, content de te revoir !" au joueur [b]Fin[/b] Message de connexion function showLogin() outputChatBox(getPlayerName(source).." s'est connecté !", root, 0, 255, 0, true) end addEventHandler('onPlayerLogin', root, showLogin) Bon là même chose pour source, c'est source qui contient le joueur. Et par contre j'ai mis root en 2ème argument pour outputChatBox parce que je veux l'afficher à tout le monde présent sur le serveur. Ensuite tu as écrit ceci: ..getPlayerName(joueur).."s'est connécté !" Donc petit cours de concatenation. Concaténation: ce terme désigne le fait de mettre bout à bout deux chaines (=textes). en Lua on concatène avec deux points à la suite => x..y Ici j'ai joint la variable x à la variable y Voici pleins d'exemples de concaténation qui produit le même message: ----------------------------------------- local text = "Bonjour ".."dfigfjf ! Joueur numéro 2" ----------------------------------------- local text = "Bonjour".." ".."dfigfjf ! Joueur numéro 2" ----------------------------------------- local playerName = "dfigfjf" local text = "Bonjour "..playerName.." ! Joueur numéro 2" ----------------------------------------- local playerName = "dfigfjf" local nbJoueur = 2 local text = "Bonjour "..playerName.." ! Joueur numéro "..nbJoueur ----------------------------------------- local bonjourBonsoir = "Bonjour " local playerName = "dfigfjf" local exclamation = " ! " local joueurNumero = "Joueur numéro " local nbJoueur = 2 local text = bonjourBonsoir..playerName..exclamation..joueurNumero..nbJoueur Dans tous les cas, les deux points à la suite sont TOUJOURS entouré par une variable, un texte ou un chiffre, tu peux pas avoir: local text = ..playerName.." s'est connecté !" car les premiers deux points n'ont rien sur leur gauche. Il faut écrire à la place: local text = playerName.." s'est connecté !" Là ça marchera. Au passage, évite les couleurs en full 255, là t'as mis 255 sur la couleur verte, et crois en mon expérience, ça pique les yeux En général 200 rends bien à l'écran, le 255 c'est genre le vert fluo d'un stabilo . Message de déconnexion function showQuit() outputChatBox(getPlayerName(joueur).." à quitté le serveur !", source, 255, 0, 0, true) end addEventHandler('onPlayerQuit', root, showQuit) Plus besoin d'expliquer pourquoi j'ai mis source maintenant Message de connexion Je te laisse corriger Message de déconnexion Je te laisse corriger Voilà je te conseil très fortement de suivre l'intégralité de cette Introduction à la programmation dispo sur le wiki FR de MTA. Et pour info, pour coller du code sur le forum, utilise les balises [ lua][ /lua] sans les espaces genre: [ lua]outputChatBox("Salut")[ /lua] sans les espaces donne outputChatBox("Salut") ça pique moins les yeux, y a la coloration syntaxique et en plus ça garde l'indentation. Voilà j'espère que tu as maintenant tout compris et que tu apprécieras le temps que je t'ai accorder pour te répondre avec le maximum d'explications et d'exemples possibles. Cordialement, Citizen Link to comment
Valentin3526 Posted December 22, 2014 Author Share Posted December 22, 2014 Merci pour l'aide, c'est juste que j'avais vu ce type de script sur un autre s_xxx.lua donc je me suis dit qu'en faisait de même sa marcherait Sinon encors merci Link to comment
Valentin3526 Posted December 25, 2014 Author Share Posted December 25, 2014 Encors une fois, merci, j'ai maintenant refait le script, et je n'ai plus aucuns bugs. Ce coup là, j'ai lu une des tes corrections et j'ai dessuite tout corrigé sans problèmes. Link to comment
Moderators Citizen Posted December 25, 2014 Moderators Share Posted December 25, 2014 Cool ça fait plaisir à entendre et merci d'avoir pris la peine de donner quelques feedbacks Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now