2017-09-06 3 views
0

Donc j'essaye actuellement de créer un petit script pour quand un joueur, dans GMOD, entre "! Content" par exemple, ils seraient présentés par une fenêtre qui les mènerait à la Steam Contenu pour ce serveur. Pour l'exemple précédent, j'ai essayé de copier le modèle et de changer le nom de la fonction etc. Je n'ai pas rencontré le même résultat que l'exemple montré, mais rien ne semble se produire et je ne sais pas pourquoi changé le nom de la fonction et la chaîne. Si vous pouvez m'aider s'il vous plaît ce serait génial. Merci d'avance.Lua Problèmes avec le script de chat personnalisé GMOD

Groupe Steam chat Script (Works)

function steamgroupCommand(ply, text) 
    if string.sub(text, 1, 6) == "!steam" then 
    ply:PrintMessage(3, "It Worked!") 
    ply:SendLua([[gui.OpenURL("http://steamcommunity.com/groups/PhantomNetworksCommunity")]]) 
    for k, v in pairs(player.GetAll()) do v:ChatPrint("Player " .. ply:Nick() .. " has used !steam to view our community Steam Group!") 
    end 
    end 
end 
hook.Add("PlayerSay", "Chat", steamgroupCommand) 

Discorde Script chat (ne fonctionne pas)

function discordCommand(ply, text) 
    if string.sub(text, 1, 8) == "!discord" then 
    ply:PrintMessage(3, "It Worked!") 
    ply:SendLua([[gui.OpenURL("https://discord.gg/35rQxcE")]]) 
    for k, v in pairs(player.GetAll()) do v:ChatPrint("Player " .. ply:Nick() .. " has used !discord to view our official Discord server!") 
    end 
    end 
end 
hook.Add("PlayerSay", "Chat", discordCommand) 
+0

J'ai oublié d'ajouter ce fichier est placé dans \ garrysmod \ Lua \ autorun – Ryke

+0

Avez-vous plusieurs crochets? Vous semblez utiliser le même identifiant pour les deux; vous ne pouvez avoir qu'une seule fonction de hook par identifiant: https://wiki.garrysmod.com/page/hook/Add –

Répondre

0

Si vous avez un oeil à la documentation of hook.Add, vous verrez des détails sur les arguments nécessaires.

Le second argument est important pour vous

  1. any Identifiant

L'identifiant unique, généralement une chaîne. Cela peut être utilisé ailleurs dans le code pour remplacer ou retirer le crochet.

L'identificateur doit être unique afin que vous ne surchargez pas accidentellement d'autres hooks de mods, sauf si c'est ce que vous essayez de faire.

L'identificateur peut être soit un string, ou un table/objet avec une fonction IsValid défini comme un Entity ou Panel. numbers et booleans, par exemple, ne sont pas autorisés.

Si l'identificateur est une table/un objet, il sera inséré devant les autres arguments dans le rappel et le hook sera appelé tant qu'il est valide. Cependant, dès que IsValid (identifiant) renvoie false, le hook sera supprimé.

Ainsi, selon ce que vous devez changer votre deuxième argument de hook.Add (qui dans votre cas est "chat" pour vos deux crochets) pour être unique pour chaque crochet pour ne pas passer outre vos autres crochets.

+0

@Ryke Cela vous aide-t-il? – Mischa

0

Cette façon fonctionnera, car c'est ce que je fais sur mon serveur.

if(CLIENT) then 
    concommand.Add("steam", function() 
     gui.OpenURL("http://steamcommunity.com/groups/PhantomNetworksCommunity") 
    end) 
end 
if(SERVER) then 
    hook.Add("PlayerSay", "OpenSteam", function(calling, txt, t) 
     local args = string.lower(txt) 
     if(args == "!steam") then 
      calling:ConCommand("steam") 
      return "" 
     end 
    end) 
end 

Vous pouvez faire la même chose sur votre invitation à la discorde.

EDIT:

Je ne ai jamais réalisé que tu l'avais imprimer discuter, alors je vais vous montrer une bonne façon de le faire (ou fixer):

if(CLIENT) then 
    concommand.Add("steam", function() 
     gui.OpenURL("http://steamcommunity.com/groups/PhantomNetworksCommunity") 
    end) 
    concommand.Add("discord", function() 
     gui.OpenURL("https://discord.gg/35rQxcE") 
    end) 
    concommand.Add(".prt", function(calling, cmds, args, argStr) 
     chat.AddText(Color(255, 255, 255), "Player", Color(98, 176, 255), args[1], Color(255, 255,255), " has used ", Color(255, 62, 62), "!steam", Color(255, 255, 255), " to view our community Steam Group!") 
    end) 
    concommand.Add(".disprt", function(calling, cmds, args, argStr) 
     chat.AddText(Color(255, 255, 255), "Player", Color(98, 176, 255), args[1], Color(255, 255,255), " has used ", Color(255, 62, 62), "!discord", Color(255, 255, 255), " to view our official Discord server!") 
    end) 
end 
if(SERVER) then 
    hook.Add("PlayerSay", "ChatCommands", function(calling, txt, t) 
     local args = string.lower(txt) 
     if(args == "!steam") then 
      calling:ConCommand("steam") 
      for _, ply in pairs(player.GetAll()) do 
       ply:ConCommand(".prt " .. calling:Nick()) 
      end 
      return "" 
     end 
     if(args == "!discord") then 
      calling:ConCommand("discord") 
      for _, ply in pairs(player.GetAll()) do 
       ply:ConCommand(".disprt " .. calling:Nick()) 
      end 
      return "" 
     end 
    end) 
end 

EDIT 2:

Une autre raison possible d'erreur est que les deux crochets portent le même nom, "Chat"

0

Le problème est que vous écrasez le crochet. Vous devez changer le deuxième argument à quelque chose de plus descriptif tel que:

hook.Add("PlayerSay", "ChatSteamGroup", steamgroupCommand)

et hook.Add("PlayerSay", "ChatDiscord", discordCommand)