LUA - Chatcommand

eXistenZ #LUA

Cadet 1st Year
Registriert
Dez. 2014
Beiträge
8
local function Deathmatch( ply, text, public )
if string.sub( text, 1, 3 ) == "!dm" then

ply:ChatPrint( "Deathmatch Anfrage wurde gestellt. Warte auf Teilnehmer" )

end
end
hook.Add( "PlayerSay", "Deathmatch", Deathmatch )



Frage : Wie schaffe ich es, dass "Deathmatch Anfrage wurde gestellt. Warte auf Teilnehmer" im globalen chat steht ?

Spiel : Garrysmod

Die Frage im klartext : Wie schaffe ich es, dass alle "Deathmatch Anfrage wurde gestellt. Warte auf Teilnehmer" im chat sehen können? Im moment sieht es nur der spieler, der den command selbst eingegeben hat.
 
Das ist auch bullshit. falls du es nicht bemerkt hast steht dies bereits im scriptund dieser command führt eben nur das aus, dass NUR der Spieler seine nachricht sehen kann. Allerdings war meine Frage WIE ich es schaffe, dass jeder diese nachricht sieht. Also google hilft nicht immer.
Ergänzung ()

Hab die Antwort selbst raus-gefunden. Trotzdem danke an alle die sich damit beschäftigt hatten.
 
Zuletzt bearbeitet:
Ich hatte die antwort bis vor 5 min noch nicht. Ich weiß echt nicht was du damit meinst, allerdings darf man doch weiterhin auch nach so einem Post- selbst nach einer Lösung suchen. Ich hatte ein Problem, hatte diesen post erstellt in der hoffnung das jemand weiß was zutun ist und bei Antworten wie bei stwe (nichts gegen dich), finde ich es doch schon traurig, das man sich nicht einmal die Frage genau durch-liest, denn in meiner Frage steht genau das, was stwe "in 10 sekunden" mithilfe von google gefunden hat- nähmlich mein Problem. Ich wüsste auch nicht was an meiner Antwort falsch war. Also bitte erläutere mir meinen Fehler so , dass ich in Zukunft diesen Vermeiden kann. Danke.
 
eXistenZ #LUA schrieb:
Das ist auch bullshit. falls du es nicht bemerkt hast steht dies bereits im scriptund dieser command führt eben nur das aus, dass NUR der Spieler seine nachricht sehen kann.

Deswegen wird in der verlinkten Doku auch über alle Spieler iteriert und der Command auf jedem Spieler aufgerufen. Hast du den Link überhaupt angeschaut? Das Example 1 dort passt zu deiner Frage wie die Faust auf's Auge.

stwe hatte da schon recht mit den 10 Sekunden Google, da wundert es auch nicht, dass du "deine Lösung" nun scheinbar nicht posten willst. Der Link war im Nachhinein wohl doch nicht so schlecht, was?
 
Zuletzt bearbeitet:
Hast du die Seite auch ganz gelesen?! Das hier steht nämlich ganz unten (Hervorhebung von mir):
Prints "Hello World" to chat of all players

Code:
for k, ply in pairs( player.GetAll() ) do
	ply:ChatPrint( "Hello World" )
end

Output: Hello World (In chatbox)

Das sind mir immer die Allerliebsten; Nach Hilfe fragen und dann nichtmal die Antworten ordentlich durchlesen ... Die Lösung zu deinem Problem steht sogar so genau auf der Seite, dass den Code einfach 1:1 kopieren kannst. Du musst nichtmal das Beispiel abändern. Noch mehr helfen kann man dir ja wirklich nicht.
 
auch nochmal für dich : Dies bewirkt eben nur das, dass nur der Spieler diesen Befehl sehen kann ( also ne privat-nachricht), aber meine Frage war wie ich es schaffe, dass jeder diese nachricht sehen kann. Ich hatte dieses ply:chatprint schon ausprobiert. Und für alle Interessierte :

PrintMessage( HUD_PRINTTALK, "I'm new here." ) <--- das ist die lösung. Mit diesem PrintMessage kommt es auch im globalen-chat an.

Danke.
Ergänzung ()

Du dieser code funktioniert wirklich nicht. Der zeigt den nur in einer Privaten Nachricht an- mehr aber auch nicht. Das war garnicht böse gegen dich gemeint aber : "ply:ChatPrint( "Deathmatch Anfrage wurde gestellt. Warte auf Teilnehmer" )" das stand in meiner Frage. heißt ja andersrum das ich deine und sogar noch ne andere Methode probiert hatte.

danke.
Ergänzung ()

Und nochmal an alle die sich das neu durchlesen. Vielleicht hatte ich meine Frage schlecht formuliert oder so, aber damit war gemeint, das wenn ich "!dm" eingebe, eine nachricht in den Gloablen-chat kommt. Dieses ply:chatprint bewirkt lediglich das, was nicht passieren soll- nähmlich damit sieht nur der spieler diese nachricht und niemand anderes.

Hier nochmal der ganze funktionierende script : (da mir ja unterstellt wurden ist nichtmal die lösung zu teilen)

local function Deathmatch( ply, text, public )
if string.sub( text, 1, 3 ) == "!dm" then

PrintMessage( HUD_PRINTTALK, "Deathmatch-Anfrage wurde gestellt. Warte auf Teilnehmer..." )

end
end
hook.Add( "PlayerSay", "Deathmatch", Deathmatch )

wie und wo ihr solch ein script einfügen müsst- kann ich euch gerne erklären.

ich bitte nun diesen post zu schließen bzw. zu ignorieren.
(ich weiß nicht wie das hier auf dem Forum so ist)

LG
 
Hey,

sorry wenn die Antwort etwas spitz formuliert war ;-)
Es ist klar, dass das "ply:chatprint" nur an einen Spieler eine Nachricht schickt. Deshalb ist in dem Code hier ja auch eine Schleife, die über alle Spieler iteriert und jedem Spieler die Nachricht schickt:
Code:
    for k, ply in pairs( player.GetAll() ) do
    ply:ChatPrint( "Hello World" )
    end
Anscheinend gibt es aber in deinem Spiel einen Unterschied zwischen dem privaten Chat von jedem Spieler und dem Globalen Chat. Das war aber aus deiner Frage nicht ersichtlich. Aber mit dem Code oberhalb müsste eigentlich jeder Spieler diese Nachricht bekommen, nicht nur der, der sie geschickt hat.
 
So viel Text, so wenig Verständnis und dann auch noch Threadschließungsbitte. :(
 
Da ich die lösung schon habe.. Wozu sollen sich andere noch die mühe machen und nach einer Lösung suchen ? ;-)
 
Zurück
Oben