Archiv verlassen und diese Seite im Standarddesign anzeigen : Chatcommand parameter?
Xandaros
18.12.2007, 17:00
Ich weiss die nachfolgende frage ist absolut dämlich :(
Wie kann ich chatcommands auf parameter überprüfen?
Ich füge also ein chatcommand ein, jetzt gibt es aber 3mio parameter^^ Und nun?
Schonmal danke für die hilfe :)
€d!t: sry... falsches forum grml... muss natürlich nach lua :(
Habe es mal verschoben!
@Topic:
Was genau meinst du?
Hast du Links oder eine bessere Beschreibung zu dem was du das machen möchtest?
Xandaros
18.12.2007, 17:29
Man öffnet chat:
/heal 150
man bekommt 150 leben dazu
/heal 300
man bekommt 300 leben dazu
/conc sv_gravity 100
führt sv_gravity 100 aus
sowas halt ;D
Ach so...
Beispiel:
function playerSaid( ply, saywhat )
local playerName = ply:GetName()
local ip = ply:IPAddress()
if string.find(saywhat, "!ip") == 1 then // Look for !ip in the player's chat -- and make sure it's the first in the sentence.
ply:PrintMessage( HUD_PRINTTALK, "IP for " .. playerName .. ": " .. ip .. "." )
end
end
hook.Add ( "PlayerSay", "playerSaid", playerSaid )
Xandaros
18.12.2007, 17:45
äääähm... man gibt !ip ein und bekommt seine ip... toll hrmpf... ich glaube du hast mich nicht verstanden ;D ich möchte das parameter ausgelesen werden, wie in den Beispielen oben...
/health XXX
gibt XXX leben dazu. Ich mach doch nicht 999 commands dafür...
Ja, da kann ich dir so nicht weiterhelfen...
guck dir die ULX Scriptdateien an.
Xandaros
18.12.2007, 17:50
*gegen kopf hau*
danke ;D
ich habs immer noch nicht hinbekommen :oops:
Kann sich jemand bitte die mühe machen mir das zu erklären? Ich bin scheinbar zu blöd dazu :(
Das ist nicht schwer,ich kan dir mal nen Beispiel geben,one sec.
function GM:PlayerSay( ply, txt, team ) -- Die Funktion überhaupt,Serverside
if string.find(txt, "/heal") == 1 then -- Prüfen ob /heal vorkommt
local texttable = string.Explode(" ",txt) -- Jedes einzelnes wort in eine tabelle einfügen
local Anzahl = moneytable[2] -- Die Anzahl is der zweite Wert aus der Tabelle mit den Geschrieben Wörtern
if table.getn(texttable) > 2 then -- Falls es mehr als zwei Wörter gibt,beenden.
ply:PrintMessage(HUD_PRINTTALK ,"Falsche Anwendung! Die Anwendung lautet /heal <Anzahl> ")
if !tonumber(Anzahl) then -- Falls die Anzahl keine Zahl ist,beenden.
ply:PrintMessage(3,"Dies ist keine Zahl!.")
return end
if tonumber(Anzahl) ~= math.Round(tonumber(Anzahl)) then -- Falls,die zahl keine normale(Also Keine Dezimal) ist,beenden.
ply:PrintMessage(3,"Keine Dezimalzahlen!")
return end
ply:SetHealth(ply:Health() + tonumber(Anzahl) ) --A Addiere sein jetziges leben mit den der Anzahl
end
end
Bitte dankeschön :)
Xandaros
18.12.2007, 19:24
Frage am rande: würde das auch mit say_team gehen? Oder kann man verhindern das andere diesen befehl sehen?
€d!t: danke^^
jo,klar eine Zeile nach ply:SetHealth einfach return " " machen,also das nix wiedergegeben wird.
Xandaros
18.12.2007, 19:57
Frage:
local texttable = string.Explode(" ",txt)
local Anzahl = moneytable[2]
Wie kommt man auf "moneytable"?
Ich will schliesslich was draus lernen ;D
So wie ich das sehe wurde im oberen ein array erzeugt und im unteren dann ...?
Wahrscheinlich hat er es wieder einfach via copy 'n paste gemacht und
Übersetzt...
Denn selbstgeschrieben sieht es nicht aus.
EDIT:
function GiveHealth( ply, txt, team ) // Die Funktion überhaupt,Serverside
if string.find(txt, "/heal") == 1 then // Prüfen ob /heal vorkommt
local texttable = string.Explode(" ",txt) // Jedes einzelnes wort in eine tabelle einfügen
local Anzahl = texttable[2] // Die Anzahl is der zweite Wert aus der Tabelle mit den Geschrieben Wörtern
if table.getn( texttable ) > 2 then // Falls es mehr als zwei Wörter gibt,beenden.
ply:PrintMessage( HUD_PRINTCHAT , "Falsche Anwendung! Die Anwendung lautet /heal <Anzahl> " )
return end
if !tonumber( Anzahl ) then // Falls die Anzahl keine Zahl ist,beenden.
ply:PrintMessage( HUD_PRINTCHAT, "Dies ist keine Zahl!." )
return end
if tonumber( Anzahl ) ~= math.Round(tonumber(Anzahl)) then // Falls,die zahl keine normale(Also Keine Dezimal) ist,beenden.
ply:PrintMessage( HUD_PRINTCHAT, "Keine Dezimalzahlen!" )
return end
ply:SetHealth( ply:Health() + tonumber( Anzahl ) ) // Addiere sein jetziges leben mit den der Anzahl
end
end
hook.Add ( "PlayerSay", "GiveSomeHealth", GiveHealth )
So sollte es funktionieren!
Ich will ja nicht meckern, aber ist der Code nicht besser so?
function healcommand( ply, saywhat )
if string.find(saywhat , "/heal") == 1 then
local texttable = string.Explode( " ", saywhat )
local health = texttable[2]
if table.getn(texttable) > 2 then
ply:PrintMessage(HUD_PRINTTALK ,"The command is /heal <Number>")
return
end
if not ( tonumber( health ) ) or ( tonumber( health ) ~= math.Round( tonumber( health ) ) ) or (health > 50000) or (health < 1) then
ply:PrintMessage(3,"You didn't entered a valid numer!")
return
end
ply:SetHealth( ply:Health() + tonumber(health) )
end
end
hook.Add ( "PlayerSay", "healcommand", healcommand )
Xandaros
18.12.2007, 20:11
Doof wird es dann, wenn man nicht weiss wie viele Parameter der Benutzer eingibt, zB bei einem rcon befehl...
Wahrscheinlich hat er es wieder einfach via copy 'n paste gemacht und
Übersetzt...
Denn selbstgeschrieben sieht es nicht aus.
ebendrum ja ;D
Macht mir ein Beispiel mit rcon-befehl und ich bin glücklich ;D
Zum glück mach ich kein rcon-mod, sonst wäre das ja doof :)
PS: wenn ich das zum laufen bringe wäre das mein erster "brauchbarer" mod ;D
So habe meine letzen Beitrag noch einmal editiert!
Ich hatte außerdem selbst gesagt,ich hohle ein Beispiel und nicht das ich es eben selbst Schreibe,da ich mir das String.Explode nie merken kann ;)
Zumal das Copy and Paste aus mein eigenen Script war
Und warum Wieder,hat ich schonmal was andres per Copy & Paste gezeigt?
Auch glaube ich sollte es damit keine Probleme geben mit Rcon "say"
Da dies ja auch Chat hookt,und dass den Text auch in den Chat wiedergibt,aber nur ohne den Namen halt.
Aber der name gehöhrt ja nicht zum text,deswegen sollte es soweit keine Probleme damit geben,denke ich
Powered by vBulletin® Version 4.2.2 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.