IsAdmin, nicht isAdmin. Benutz doch auch die Dokumentationen, wenn du die Links dazu hast.
Druckbare Version
IsAdmin, nicht isAdmin. Benutz doch auch die Dokumentationen, wenn du die Links dazu hast.
Vielen dank! Es klappt, kann mir aber vielleicht nochmal jemand sagen, ob ich das so alles richtig verstanden habe? Bzw. was das ich nicht verstanden habe berichtigen?
Erstellt eine Funktion die "healPlayer" heisst und da Funktionen immer "()" haben gibt diese an 1. Stelle den Spielernamen, an 2. Stelle den eingegebenen Text und an 3. Stelle den benutzten Chat aus.Code:function healPlayer(ply, txt) // Erstellt eine Funktion mit Spielernamen und Eingabe
local split = string.Explode(" ", txt) // Legt für jedes getrennte Wort ein neues Feld an
local command = split[1] // Der Inhalt vom 1. Feld
local pname = split[2]
Dann wird "split" als lokale Variable definiert und als Array gefüllt, jedes Feld ist durch ein Leerzeichen in der Benutzereingabe getrennt.
Nun werden die lokalen Variablen "command" und "pname" mit dem jeweiligen Feld des Arrrays bestückt.
Der Command wird auf Großbuchstaben gestellt, damit die Groß- und Kleinschreibung des Befehls keine Rolle spielt. Dazu wird geprüft ob der eingegebene Command "!GIVEHP" ist.Code:if string.upper(command) == "!GIVEHP" then // Wenn der String !GIVEHP lautet
if ply:IsAdmin() then // Und der Spieler admin ist
for k,v in pairs(player.GetAll()) do
if string.find(string.lower(v:Nick()), pname) then
v:ChatPrint("Dir wurden 10.000 HP gegeben!") // Und dem betroffenen Spieler
v:SetHealth(10000) // Setze die HP des Zielspielers auf 10.000
else
ply:ChatPrint("Spieler nicht gefunden!")
end
end
else // Ist der Benutzer kein Admin
ply:ChatPrint("Du bist kein Admin!") // Sage das er keiner ist
end
end
Nun prüft das Script ob der Benutzer ein Admin ist, wenn nicht gibt es nur die Nachricht, er seie kein Admin. Wenn doch gehts weiter.
Also weiter in die Schleife wo ein "key" und eine "value" zusammengefügt werden aus den Daten der Spieler die gerade online sind. Die Schleife wird beendet wenn alle Spieler aufgenommen sind.
Nächste Zeile wird die Chateingabe in Kleinbuchstaben konvertiert und in der value "Nick()" nach dem angegebenen Zielnamen durchsucht.
Wenn ein Spieler mit dem Nick gefunden wurde geht es weiter, wenn nicht kommt die Meldung, es seie kein Spieler gefunden worden.
Ist der Spieler also online bekommt er die Nachricht für 10.000HP und die 10.000HP dazu.
Damit der Befehl nicht öffentlich sichtbar wird, gibt die Funktion nichts zurück mittels "return nil".Code:
return nil
end
hook.Add("PlayerSay", "healPlayerHook", healPlayer) // Lege einen Auslöser für die Funktion fest
Jetzt wird zum Schluss der "Trigger" oder auch "hook" zum auslösen des Ereignisses hinzugefügt. 1. Stelle als String der Ereignisname, 2. Stelle als String die HookID und 3. Stelle die aufzurufende Funktion.
Habe ich das alles soweit richtig verstanden? Vielen dank für die ganze Hilfe :) Ich habe mir inzwischen einiges in der Doku angesehen, bin aber immer unsicher bei Schleifen. Auch in allen anderen Sprachen sind Schleifen meine "Feinde".
Grüße
Spike
Edit //
Wo finde ich die Bedank-Funktion hier? Ich sehe wohl das es Leute gibt, bei denen sich bedankt wurde, ich finde die Funktion aber nicht.
funktionen haben immer folgendes
"rückgabewert(return)" = "funktionsname"("Parameter1"),("parameter2").. ...)
die Parameter sind bei jeder funktion angepasst,
zb. bei RunConsoleCommand ist der Parameter 1 ein String, der Parameter 2 auch nur der erste gibt den Commandnamen an, der 2te und 3te und so weiter die parameter (RunConsoleCommand("say", "hello"))
(kann man mit concommand.Add("commandname", function(ply, cmd, args) über die args auslesen args[1] wäre argument 1 usw. 2 wäre argument 2)
Da gibt es aber noch Modifizierende Funktionen wie ent:SetPos oder ply:ConCommand ent:SetColor usw.
da sieht der command so aus
"rückgabewert" = "Eingabe, wie zb. ein entity das modifiziert werden soll":SetPos("argument1, in dem fall ein Vector")
Es gibt noch eine Kategorie, und zwar Funktionen in einem Table
(string.<funktionsname> draw.<funktionsname> math.<funktionsname> sind alles tables mit funktionen drinn)
http://s3.imgimg.de/uploads/dsfjhklktzer964ea1e3PNG.pngZitat:
Wo finde ich die Bedank-Funktion hier? Ich sehe wohl das es Leute gibt, bei denen sich bedankt wurde, ich finde die Funktion aber nicht.
Nein, andersrum. Die Funktion wird an den Hook geknüpft, sodass beim geschehen der im Hook beschriebenen Aktion, eine andere Aktion ausgeführt wird.
Kleiner, jedoch feiner Unterschied. ;)
Das wäre zwar zu vermuten, stimmt aber so nicht. Die Funktionen befinden sich nicht in einer Table, sondern sind lediglich durch die diversen Namens-Präfixe (wie string, table, math, util, render usw.) einzeln gekennzeichnet, um sie leichter der korrekten Library zuordnen zu können.
Anhang 3990
Ich habe die Funktion nicht, es ist nur das "Melde"-Zeichen da, der andere Button nicht.
Ja, das ist mir klar. Auch ein sehr tolles Thema mit der Vererbung... In Bio ist es fast so schlimm wie in der Programmierung... allerdings muss man nicht so viel auswendig lernen wenn es um Bio geht. Danke für die Zusammenfassung nochmal, aber eine Frage hat sich noch nicht geklärt: Warum werden manche Funktionen groß- und andere kleingeschrieben? Z.B. "string.Explode()" und "string.find()"?Zitat:
Das wäre zwar zu vermuten, stimmt aber so nicht. Die Funktionen befinden sich nicht in einer Table, sondern sind lediglich durch die diversen Namens-Präfixe (wie string, table, math, util, render usw.) einzeln gekennzeichnet, um sie leichter der korrekten Library zuordnen zu können.
Hm, das hatte ich früher auch mal. Schreib mal neh PN an Grüne Gurken, der wird das sicherlich fixen können.
Das hat keinen tieferen Sinn, und man kann es auch machen wie man lustig ist. Im Fall von string.Explode, fand Garry das große e anscheinend cooler als das kleine.
Ah, okay. Ich habe Grüne Gurken eine PN geschickt. Ich bevorzuge das kleine "E", weil man da nicht Shift für drücken muss :P aber in Ordnung. Schon viel in Erfahrung gebracht dank euch.
Soweit mir bekannt kann man sich erst ab einer bestimmten Anzahl an Beiträgen bei anderen Bedanken. Verhindert das man Fake-Accounts erstellen kann und "Danke" klicken kann. Du hast erst 11 Beiträge, liegt also vermutlich daran.
Achja bevor es jemand vergisst (Was jetzt eh schon zuspät ist, aber für die zukunft notwendig)
spike, du musst hier im forum vorweisen, dass du gmod gekauft hast
wie dies funktioniert steht hier
http://gmod.de/faq.php?faq=vb_board_usage#faq_steamauth
:)
Danke für die Hinweise. CJ ich hab's versucht, aber es heisst immer, mein Profil sei nicht öffentlich. Obwohl ich für die Verifizierung alles auf Public gestellt habe.
Das kommt dann immer:
Ich habe Profilstatus, Kommentarrechte und Inventar auf Öffentlich gestellt UND bin sogar noch in der Steam-Com online.Zitat:
Ihr Steam Community Profil ist nicht öffentlich. Bitte änderen Sie Ihren Profil Status und versuchen Sie es dann noch einmal.
http://www.abload.de/img/unbenanntc5kfd.png