Question script

  • Initiateur de la discussion edouard292
  • Date de début
  • Initiateur de la discussion
edouard292

edouard292

Geek suprême
Messages
423
Score réaction
108
Points
150
Bonsoir à vous la communauté de mtx, je souhaiterais avoir pourquoi la fonction du /advert ne se bloque pas ?

local teams_oul = TEAM_RADIOMAN, TEAM_RADIOWOMEN

hook.Add('PlayerSay','bloquelafuncionauxjobs',function(ply, text, public)
if ( text == '/advert' ) then
if not teams_oul[ply:Team()] return end
end )

peut-être car il n'est pas modif dans le fichier du /advert, je souhaiterais être éclairé sur ce coup là si vous avez du temps à consacrer à ce topic et à cette question biensur :D
 
Vyn

Vyn

Bambi
Messages
16
Score réaction
16
Points
30
Lorsque tu fais:
Code:
if ( text == '/advert' ) then
tu vérifies simplement si le texte que le joueur a entré est égal à "/advert".

Imaginons que je j'écrive "/advert Vend stylo 40$", le texte que le joueur a entré est "/advert Vend stylo 40$" et non pas "/advert", tu ne rentres donc pas dans ta condition.
 
  • J'aime
Réactions: edouard292
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
Vyn à dit:
Lorsque tu fais:
Code:
if ( text == '/advert' ) then
tu vérifies simplement si le texte que le joueur a entrer est égal à "/advert".

Imaginons que je j'écrive "/advert Vend stylo 40$", le texte que le joueur a entré est "/advert Vend stylo 40$" et non pas "/advert", tu ne rentres donc pas dans ta condition.
Yep il faut vérifier les 7 premiers caractères
 
  • J'aime
Réactions: edouard292
  • Initiateur de la discussion
edouard292

edouard292

Geek suprême
Messages
423
Score réaction
108
Points
150
Merci @Vyn et @Valfunde mais comment vérifier un début de texte commencant par /advert, et pouvroi cibler tout autres caractères quel qu'il soit ?
 
Vyn

Vyn

Bambi
Messages
16
Score réaction
16
Points
30
Ce que tu peux faire pour que ça marche c'est soit de regarder les 7 premiers caractères comme l'a dit @Valfunde, soit "split" ton texte, c'est à dire regarder les mots séparés par des espaces. (Tu peux très bien choisir un autre caractère que l'espace mais dans ton cas c'est pas très utile)

Ce qui te donne:
Code:
hook.Add('PlayerSay','bloquelafuncionauxjobs',function(ply, text, public)
local words = string.Split(text, " ")
if ( words[1] and words[1] == '/advert' ) then
if not teams_oul[ply:Team()] return end
end )
Je ne suis pas du tout sûr qu'il fonctionne puisque je ne peux pas le tester, mais l'idée est là.

Plus d'informations sur la fonction string.Split:
https://wiki.garrysmod.com/page/string/Split
 
Dernière édition:
  • J'aime
Réactions: edouard292
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
Vyn à dit:
Ce que tu peux faire pour que ça marche c'est soit de regarder les 7 premiers caractères comme l'a dit @Valfunde, soit "split" ton texte, c'est à dire regarder les mots séparés par des espaces. (Tu peux très bien choisir un autre caractère que l'espace mais dans ton cas c'est pas très utile)

Ce qui te donne:
Code:
hook.Add('PlayerSay','bloquelafuncionauxjobs',function(ply, text, public)
local words = string.Split(text, " ")
if ( words[1] and words[1] == '/advert' ) then
if not teams_oul[ply:Team()] return end
end )
Je ne suis pas du tout sûr qu'il fonctionne puisque je ne peux pas le tester, mais l'idée est là.
String.explode plutôt me semble mais l'idéal est d'aller voir les fonctions dispo dur le wiki ^^
 
  • J'aime
Réactions: brh450 et edouard292
  • Initiateur de la discussion
edouard292

edouard292

Geek suprême
Messages
423
Score réaction
108
Points
150
Je vous remercies les gars c'est cool @Vyn, @Valfunde :D Bonne soirée à vous deux
 
Vyn

Vyn

Bambi
Messages
16
Score réaction
16
Points
30
Valfunde à dit:
String.explode plutôt me semble mais l'idéal est d'aller voir les fonctions dispo dur le wiki ^^
Les deux me semblent correctes dans sa situation, ils permettent de séparer un texte par rapport à un caractère/texte.

Bonne soirée @edouard292, en espérant qu'on ait été utile :)
 
  • J'aime
Réactions: edouard292
  • Initiateur de la discussion
edouard292

edouard292

Geek suprême
Messages
423
Score réaction
108
Points
150
Mais si tu peut m'éclairer sur le pourquoi du comment tu met le words[1] and words[1] ce serait sympa :D ?
 
Vyn

Vyn

Bambi
Messages
16
Score réaction
16
Points
30
La variable que j'ai appelé words est une table, c'est a dire qu'elle contient plusieurs éléments.

Lorsque tu split "/advert Vend stylo 40%" tu obtiens:
words[1] = "/advert"
words[2] = "Vend"
words[3] = "stylo"
words[4] = "40$"

Donc je regarde juste si le 1er mot correspond à "/advert".

Pourquoi est-ce que je mets le words[1] juste avant le and ?

C'est une habitude que j'ai qui vient d'autres langages, je vérifie juste si words[1] n'est pas égal à nil (Tu n'es pas obligé de le mettre je pense)
 
Dernière édition:
  • J'aime
Réactions: brh450, edouard292 et Valfunde
brh450

brh450

Geek suprême
Messages
611
Score réaction
180
Points
120
edouard292 à dit:
Mais si tu peut m'éclairer sur le pourquoi du comment tu met le words[1] and words[1] ce serait sympa :D ?
String.Split et String.Explode permettent de séparer le texte dans ton cas c'est avec un espace.

Ont donne la valeur String.Split(texte," ") à la variable Words

Puis à l'aide de "[x]" on définie qu'elle partie nous voulons

Par exemple si la phrase est "J'ai Mangé Un Tacos"
Alors
Words[1] = J'ai
Words[2] = Mangé
Words[3] = Un
Words[4] = Tacos

Dans ton cas se sera si Words[1] == "/advert" alors ...

Je sais pas si je me suis fais comprendre ;)
 
  • J'aime
Réactions: Vyn, Valfunde et edouard292
  • Initiateur de la discussion
edouard292

edouard292

Geek suprême
Messages
423
Score réaction
108
Points
150
merci de l'aide j'avais presque tout compris à part le words[1,2,3,4] qui n'était simplement juste écrit ici : https://wiki.garrysmod.com/page/string/Split
FailFish
 
brh450

brh450

Geek suprême
Messages
611
Score réaction
180
Points
120
Vyn à dit:
La variable que j'ai appelé words est une table, c'est a dire qu'elle contient plusieurs éléments.

Lorsque tu split "/advert Vend stylo 40%" tu obtiens:
words[1] = "/advert"
words[2] = "Vend"
words[3] = "/Stylo"
words[4] = "40$"

Donc je regarde juste si le 1er mot correspond à "/advert".

Pourquoi est-ce que je mets le words[1] juste avant le and ?

C'est une habitude que j'ai qui vient d'autres langages, je vérifie juste si words[1] n'est pas égal à nil (Tu n'es pas obligé de le mettre je pense)
Ont à envoyé le message en meme temps ^^
 
  • J'aime
Réactions: Vyn
Vyn

Vyn

Bambi
Messages
16
Score réaction
16
Points
30
@brh450 Yep, avec (presque) le même exemple x)
 
  • J'aime
Réactions: brh450
Discord d'entraide
Rejoignz-nous sur Discord