Ergebnis 1 bis 4 von 4

Thema: Code-Schnipsel

  1. #1

    Terminal Code-Schnipsel


    Wie schon vielleicht vermuten lässt könnt ihr in diesem Thread Code-Schnipsel posten!


    Aber beachtet doch folgendes:

    Was hier reingehört:
    • Scripts die GameMode unabhängig sind!


    Was hier NICHT reingehört:
    • Nichts geklautes aus GameModes, SWEPs, etc.
    • Diskussionen, Frage, etc. über Scripts!
    • Schadcode!
    • Copy 'n Paste aus der Engl./Deu. Wiki!



    Missachtungen der oben aufgeführten "Regeln" enden mit einer Verwarnung/Ban, sowie das Löschen des Postes!


    Desweiteren gilt:

    • Dokumentiert wichtige Teile eures Codes .
    • Gebt eine kleine Beschreibung zum Code ab ( also was er macht ).
    • Nutzt die Lua-Tags! ( [lua] CODE_HIER [/lua] )
    • Wer Fragen zu einem Script hat wendet sich via PN an den User!


    ||||||||||||||||

    Folgende Vorlage könnt ihr verwenden!:

    Status: SERVER/CLIENT/SHARED
    Nützliche Links: URL's
    Beschreibung: BESCHREIBUNG
    Lua Code:
    1. // CODE HIER REIN!

    ||||||||||||||||

    Hier ein fertiges Beispiel:


    Status: SERVER
    Nützliche Links: os.date
    Beschreibung:
    Dieses Script gibt die Zeit im Chat aus sobald ein bestimmter
    "Chat-Befehl" eingegeben wird.

    Lua Code:
    1. function timeprint( ply, text, toall )
    2.  
    3. 	// !time muss an erster stelle stehen damit die Funktion ausgeführt wird
    4. 	if string.find( text, "!time" ) == 1 then 
    5.  
    6. 		// Gibt die Zeit im Format Std.:Min:Sek: aus
    7. 		ply:ChatPrint( "Current time is: "..os.date( "%H:%M:%S" ) ) 
    8.  
    9. 		// Verhindert das "!time" in den Chat geschrieben wird
    10. 		return "" 
    11. 	end
    12. end
    13.  
    14. hook.Add( "PlayerSay", "TimePrintFunction", timeprint )
    Geändert von Pac_187 (25.07.2008 um 18:52 Uhr) Grund: Bild hinzugefügt

  2. Folgende 7 Benutzer sagen Danke zu Pac_187 für den nützlichen Beitrag:


  3. #2

    Standard AW: Code-Schnipsel

    So dann möchte ich auch mein 1. selbst nachempfundenen Code-Snippet mal hier bereitstellen.

    Status: SERVER
    Nützliche Links: hook.Add, player:ChatPrint(), string.sub
    Beschreibung: Dieser Code gibt den Text in blauer, dicker Schrift aus wenn man ein "/me" davor schreibt.

    Die LUA Datei sollte in lua/autorun liegen.
    Lua Code:
    1. --Zuerst fügen wir den hook hinzu (siehe ende des Codes).
    2. local function CommandSay( ply, text, public )
    3. /* string.sub schneidet vom string "text" (der Chateingabe) die Chars zwischen Position 1 - 4 weg
    4. ( [B]1.[/B] / [B]2.[/B] m [B]3.[/B] e [B]4.[/B] <Leerzeichen> )*/
    5. if(string.sub( text, 1, 4 ) == "/me " ) then
    6. /* Er soll den Befehl "ChatPrint" einmal für alle ausführen (das jeder den "Emote" sieht) */
    7. 		for k, v in pairs(player.GetAll()) do
    8. /* ply:Nick() bezieht den Namen des Spielers den den Emote ausführt.
    9. Anschließend wird der text ab dem 4 Zeichen (Leerzeichen) wiedergegeben. */
    10. 			v:ChatPrint( ply:Nick()..string.sub( text, 4 ) );
    11. 		end
    12. /* return "" sorgt dafür, dass in dem Chat nicht noch die Chatzeile "/me ist cool" z.B. eingetragen wird. Der Text wird dann durch "nix" ersetzt
    13. (zwischen den "" ist kein Leerzeichen, sonst würde eine Leerzeile im Chat angezeigt!) */
    14. 		return "";
    15. 	end
    16. end
    17. /* Der 1. Parameter gibt an, welches Callback wir "hook'en" möchten. (In diesem Fall soll der Hook beim Event "PlayerSay", also dem schreiben in den Chat aufgerufen werden.)
    18. Der 2. Parameter ist nur ein frei wählbarer Name, über diesen man den hook über "hook.Remove" wieder löschen könnte.
    19. Der 3. Parameter gibt an, welche funktion aufgerufen werden soll beim benutzen des Events. In diesem Fall habe ich die Funktion "CommandSay" gennant. */
    20. hook.Add( "PlayerSay", "ChatHook", CommandSay )

    Bei Fragen stehe ich gerne zur Verfügung.
    Ich werde später noch das "Goto" Script hinzufügen. (Also finden und interagieren mit einem Spieler über Namens- oder Teilnamenseingabe.)
    Geändert von monky2k6 (25.07.2008 um 19:22 Uhr)
    Website: monky-town.de

    WildStar
    Server: Kazor
    Seite: Verbannte
    Char: Monkii (Arkanschütze)

  4. Folgender Benutzer sagt Danke zu monky2k6 für den nützlichen Beitrag:


  5. #3
    Avatar von Alex22
    Registriert seit
    11.11.2005
    Ort
    Berlin

    Standard AW: Code-Schnipsel

    Hier mal ein Goto Script von mir:

    Status:
    Nützliche Links: hook.Add ply:ChatPrint string.Explode string.find string.upper
    Beschreibung: Ein Script, dass einen Spieler mit dem Chat Command "!GOTO *Spielername*" zu einem Spieler teleportiert

    Lua Code:
    1. function gotoTeleport(ply,text,all)//Hier begint die Teleport Funktion
    2. 	if string.find(string.upper(text), "!GOTO") == 1 then //Wenn das geschriebene mit !GOTO beginnt (das string.upper ist dafür falls jemand nur !goto schreibt)
    3. 		local str = string.Explode(" ", text) //Der Text den der Spieler geschrieben hat wird hier
    4. 		local allPlys = player.GetAll() //Hier werden alle Spieler in einer Table gespeichert
    5. 			for k, v in pairs(allPlys) do //Die Schleife geht nach und nach alle Spieler in der Table durch
    6. 				if string.upper(v:GetName()) == string.upper(str[2]) then //Das If-Statement überprüft ob der Nickname von v der gleiche wie vom Spieler geschriebenem Namen ist
    7. 					TargetVec = v:GetPos() //TargetVec wird die Position des Spielers gegeben zu dem man sich teleportieren will
    8. 					TargetVec.z = TargetVec.z + 150 //Das  hier ist dazu da damit sich der Spieler nicht direkt in den anderne Teleportier
    9. 					TargetVec.x = TargetVec.x + 100 //sondern ein bisschen daneben
    10. 					ply:SetPos(TargetVec) //Die eigentliche Teleport Anweisung
    11. 					v:ChatPrint(ply:Nick().." has teleported to you!") //Zeigt in der Chatbox den Text an
    12. 					ply:ChatPrint("You teleported yourself to "..str[2])
    13. 					return
    14. 				end
    15. 			end
    16. 			ply:ChatPrint("Player can't be found") //Wenn man einen Namen eingeben hat den es auf dem Server nicht gibt wird das angezeigt
    17. 	end
    18. end
    19. hook.Add( "PlayerSay", "GotoTeleport", gotoTeleport); //Der PlayerSay Hook

    Wenn ihr es benutzen wollt, erstellt einfach im Ordner lua/autorun/server/ eine neue .lua Datei und schiebt den Code da rein.

    Edit: O: Hatte was vergessen, Script funktioniert jetzt.
    Geändert von Alex22 (22.07.2009 um 21:26 Uhr)



  6. Folgende 2 Benutzer sagen Danke zu Alex22 für den nützlichen Beitrag:


  7. #4
    Avatar von Mentos
    Registriert seit
    08.09.2007
    Ort
    München

    Standard AW: Code-Schnipsel

    Irgendwie finde ich, dass wir viel zu wenige Schnipsel haben... Daher:

    Eine Implementierung in die table Funktionen
    Funktion: table = table.randomize( table )
    Status: SHARED
    Bescheibung: Nimmt den sortieren Inhalt eines Tables und gibt ein Table mit zufälliger Anordung zurück.
    Lua Code:
    1. --Der Inhalt des übergebenen Tables wird nicht zerstört! (so wie es jetzt steht ;D)
    2. function table.randomize( SortiertesTable )
    3. 	if SortiertesTable && #SortiertesTable > 1 then --Dieses Script brauch erst zu laufen, wenn das zu mischende Table mehr als 1 Eintrag hat
    4. 		local RandomTable = {} --Dieses Table wird später die zufällig zusammengepackten Inhalte aus dem sortieren Table beinhalten
    5. 		local Index = 0
    6.  
    7. 		for #SortiertesTable > 0 do --Wiederhole so oft, bis das sortierte Table leer ist (alle einträge sind jetzt im RandomTable)
    8. 			Index = math.random( 1, #SortiertesTable ) --Suche dir eine zufällige Zahl aus dem Bereich aus, der noch im Sortierten Table als Key enthalten ist
    9. 			table.insert( RandomTable, nil, SortiertesTable[Index] ) --Copiere den Inhalt vom sortierten Table in das RandomTable (der Index aus dem gelesen wird ist zufällig)
    10. 			table.remove( SortiertesTable, Index ) --Lösche den Inhalt aus dem SortiertesTable, damit wir es nicht nochmal erwischen können --table.remove löscht den Key(Index) und rückt nachfolgende Elemente im Table nach!
    11. 		end
    12.  
    13. 		return RandomTable --Mix fertig gestellt... Zurückgeben an die aufrufende Funktion
    14. 	else
    15. 		return SortiertesTable --Hier muss nix gemischt werden... (1 Eintrag, weniger oder nil)
    16. 	end
    17. end
    Nicht getestet aber falls was nicht funktionieren sollte, sollte das jeder Scripter fixen können.

    Auf das hier bald viele Schnipsel rum fliegen ;D
    Gruß
    Geändert von Mentos (16.09.2014 um 19:11 Uhr) Grund: grammar!!
    Zitat Zitat von pacmcmax Beitrag anzeigen
    ich kann mich nicht in kurzen worten zusammen fassen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •