You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
3.3 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ProxyCore;
using ProxyCore.Output;
using ProxyCore.Scripting;
namespace StayAlive
{
public class StayAlive : Plugin
{
public StayAlive()
: base("stayalive", "Stay logged in")
{
Author = "Duckbat";
Version = 4;
Description = "Automatically stays logged in.";
UpdateUrl = "www.duckbat.com/plugins/update.stayalive.txt";
Website = "code.google.com/p/proxymud/";
Config = new StayAliveConfig();
RegisterTrigger("autologin.name", "What be thy name, adventurer?", TriggerUsername);
RegisterTrigger("autologin.pass", "Existing profile loaded - please enter your password.", TriggerPassword);
}
public override void OnConnect()
{
base.OnConnect();
CanEnterUsername = 1;
}
private bool TriggerUsername(TriggerData t)
{
if(CanEnterUsername != 1)
return false;
string n = Config.GetString("AutoLogin.User", "").Trim();
if(string.IsNullOrEmpty(n))
{
CanEnterUsername = 0;
return false;
}
string p = Config.GetString("AutoLogin.Pass", "").Trim();
if(string.IsNullOrEmpty(p))
{
CanEnterUsername = 0;
return false;
}
CanEnterUsername = 2;
World.Instance.Execute(n, false);
return false;
}
private bool TriggerPassword(TriggerData t)
{
if(CanEnterUsername != 2)
return false;
string p = Config.GetString("AutoLogin.Pass", "").Trim();
if(string.IsNullOrEmpty(p))
{
CanEnterUsername = 0;
return false;
}
CanEnterUsername = 0;
World.Instance.Execute(p, false);
World.Instance.Execute("", false);
return false;
}
private int CanEnterUsername = 0;
public override void OnLoadedConfig(bool Success)
{
base.OnLoadedConfig(Success);
string n = Config.GetString("StayAlive.Line", "@wYour eyes glaze over.");
if(string.IsNullOrEmpty(n))
return;
RegisterTrigger("line", n, TriggerLine, TriggerFlags.NotRegex);
}
private bool TriggerLine(TriggerData t)
{
World.Instance.Execute(Config.GetString("StayAlive.Command", ""), false);
return false;
}
}
public class StayAliveConfig : ConfigFile
{
protected override void OnCreated()
{
base.OnCreated();
CreateSetting("StayAlive.Command", "", "What to send to MUD when we receive line about being idle. You can leave this blank to just send enter key.");
CreateSetting("StayAlive.Line", "@wYour eyes glaze over.", "On what line do we send command? Default: \"@wYour eyes glaze over.\"");
CreateSetting("AutoLogin.User", "", "User name to automatically log in with. Leave blank to disable this feature.");
CreateSetting("AutoLogin.Pass", "", "Password to automatically log in with. Leave blank to disable this feature.");
}
}
}