Thema: [C#] RandomKisser
-
13.11.2011, 18:01 #1
- Registriert seit
- 22.05.2012
- Beiträge
- 202
Thanked 21 Times in 9 Posts[C#] RandomKisser
Hey,
war ein Wunsch von einem User, nichts besonderes..
Kisst im angegebenen Channel einen User (wird durch Zufall ausgewählt) der sich im Channel befindet.
Viel Spaß damit. (H)
PHP-Code:/*
____ __. _________ .__ __
| |/ _| / _____/ ___________|__|______/ |_
| < \_____ \_/ ___\_ __ \ \____ \ __\
| | \ / \ \___| | \/ | |_> > |
|____|__ \/_______ /\___ >__| |__| __/|__|
\/ \/ \/ |__|
Knuddels RandomKisser Sample
© The Don of NYC
*/
using KNLib;
using System;
using System.Threading;
using System.Collections.Generic;
namespace RandomKisser
{
class Program
{
static List<User> userList = null;
static int intervall = 0;
static void Main(string[] args)
{
Console.Title = "RandomKisser";
Console.WriteLine("Nickname?");
String nick = Console.ReadLine(); // Nickeingabe auslesen
Console.WriteLine("Passwort?");
String pass = Console.ReadLine(); // Passworteingabe auslesen
Console.WriteLine("Channel?");
String channel = Console.ReadLine(); // Channeleingabe auslesen
Console.WriteLine("Intervall?");
while (!int.TryParse(Console.ReadLine(), out intervall)) // solange der User keine Zahl eingibt, verlangen wir von ihm die Intervallangabe
Console.WriteLine("Intervall?");
new Thread(delegate() {login(nick, pass, channel);}).Start(); // parametisierten Thread starten, wo mit unseren angegebenen Daten der Loginvorgang durchgeführt wird
}
/// <summary>
/// Loggt sich mit den angegeben Daten in Knuddels ein
/// </summary>
/// <param name="nick">Nickname</param>
/// <param name="pass">Passwort</param>
/// <param name="channel">Channel</param>
private static void login(String nick, String pass, String channel)
{
KSClient KSC = new KSClient(new Applet("applet.jar"));
KSC.OnUserListReceive += new KSClient.UserListReceiveHandler(KSC_OnUserListReceive); // Userlist Event adden
KSC.OnChannelJoin += new KSClient.ChannelJoinHandler(KSC_OnChannelJoin); // Channeljoin Event adden
KSC.OnChannelLeave += new KSClient.ChannelLeaveHandler(KSC_OnChannelLeave); // Channelleave Event adden
KSC.Connect(ChatSystem.DE); // zum Chatsystem verbinden
KSC.Login(nick, pass, channel); // mit den eingegebenen Daten einloggen
}
#region Events
private static void KSC_OnUserListReceive(object sender, List<User> Userliste)
{
userList = new List<User>();
userList.AddRange(Userliste); // Userliste in unsere separate Liste adden
showLog(String.Format("Eingeloggt! User im Channel: {0}", userList.Count), ConsoleColor.Green);
showLog("Starte nun den RandomKisser!", ConsoleColor.Magenta);
new Thread(delegate() { kiss((KSClient)sender); }).Start(); // starten einen parametisierten Thread wo der Kissvorgang durchgeführt wird
}
private static void KSC_OnChannelJoin(object sender, User user)
{
showLog(String.Format("{0} hat den Channel betreten.", user.Name), ConsoleColor.DarkCyan);
lock (userList) // "sperren" sozusagen die Userliste, damit kein Fehler auftaucht, wenn diese woanders gleichzeitig auch aufgerufen wird
userList.Add(user); // adden den User, der den Channel betreten hat
}
private static void KSC_OnChannelLeave(object sender, User user)
{
showLog(String.Format("{0} hat den Channel verlassen.", user.Name), ConsoleColor.Cyan);
lock (userList) // siehe oben
userList.Remove(user); // entfernen den User, der den Channel verlassen hat
}
private static void showLog(String str, ConsoleColor c)
{
Console.ForegroundColor = c; // Farbe der Schriftfarbe in der Console
Console.WriteLine(str); // zeigen unseren Wunschtext in der Console an
}
#endregion
#region Kissbot
/// <summary>
/// Kisst in angegebenen Zeitabständen einen Randomuser
/// </summary>
/// <param name="KSC">KSClient</param>
private static void kiss(KSClient KSC)
{
while (true)
{
User user = getRandomUser(); // holt einen Zufallsuser aus unserer Liste, die wir beim joinen geladen haben
showLog(String.Format("Werde nun {0} küssen!", user.Name), ConsoleColor.Yellow); // zeigt den Zufallsuser an
KSC.SendMessage(String.Format("/kiss {0}°{1}", getRandomUser().Name, new Random().Next(0, 1337))); // kisst den Zufallsuser
Thread.Sleep(intervall); // wartet XXXX Millisekunden, bis er den nächsten Zufallsuser küsst
}
}
/// <summary>
/// Gibt einen Zufallsuser zurück
/// </summary>
/// <returns>User</returns>
private static User getRandomUser()
{
return userList[new Random().Next(0, userList.Count)];
}
#endregion
}
}
Geändert von Darkfield (10.04.2014 um 05:51 Uhr)
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.