/*
ServerPerks webadmin interface
*/
class ServerPerkWebAdmin extends xWebQueryHandler;
var ServerPerksMut Mut;
var string HomeURL,PerksURL,TraderCatURL,TraderInvURL;
function bool Init()
{
foreach Level.AllActors( class'ServerPerksMut', Mut )
break;
return true;
}
function Cleanup()
{
Mut = None;
}
function bool Query(WebRequest Request, WebResponse Response)
{
switch (Mid(Request.URI, 1))
{
case DefaultPage:
RequestFrame(Request, Response);
return true;
case HomeURL:
RequestMain(Request, Response);
return true;
case PerksURL:
RequestPerks(Request, Response);
return true;
case TraderCatURL:
TradetCat(Request, Response);
return true;
case TraderInvURL:
RequestInventory(Request, Response);
return true;
}
return false;
}
function RequestFrame(WebRequest Request, WebResponse Response)
{
Response.SendText("
SP");
Response.SendText("");
Response.SendText("");
}
final function SendHeader( WebResponse Response, optional bool bNoSettings )
{
Response.SendText("SP");
if( !bNoSettings )
Response.SendText("");
}
final function SendFooter( WebResponse Response )
{
Response.SendText("
");
}
final function SendHeaderLine( WebResponse Response, string S )
{
Response.SendText("| "$S$" |
");
}
final function SendURLLine( WebResponse Response, string URL, string DisplayStr )
{
Response.SendText("| "$DisplayStr$" |
");
}
final function SendTableLine( WebResponse Response, string S )
{
Response.SendText(""$S$"
");
}
function RequestMain(WebRequest Request, WebResponse Response)
{
SendHeader(Response,true);
SendHeaderLine(Response,"ServerPerks settings");
SendURLLine(Response,PerksURL,"Edit perk classes");
SendURLLine(Response,TraderCatURL,"Edit trader categories");
SendURLLine(Response,TraderInvURL,"Edit trader inventory");
SendFooter(Response);
}
function RequestPerks(WebRequest Request, WebResponse Response)
{
local string S,Er;
local array PA;
local int i,j;
local class VC;
// Process response.
if( Request.GetVariable("submit") == "Submit" )
{
S = Request.GetVariable("Perks", "");
if( S!="" )
{
Split(S,Chr(13)$Chr(10),PA);
if( PA.Length<=1 )
{
PA.Length = 0;
Split(S,Chr(10),PA);
}
Class'ServerPerksMut'.Default.Perks.Length = 0;
for( i=0; i(DynamicLoadObject(PA[i],Class'Class'));
if( VC!=None )
{
Class'ServerPerksMut'.Default.Perks.Length = j+1;
Class'ServerPerksMut'.Default.Perks[j++] = string(VC);
}
else if( Er=="" )
Er = PA[i];
else Er $= ", "$PA[i];
}
Class'ServerPerksMut'.Static.StaticSaveConfig();
}
}
SendHeader(Response);
SendHeaderLine(Response,"Perk classes:");
if( Er!="" )
SendHeaderLine(Response,"[Warning] Perk classes failed to load:
"$Er$"");
// Send perk list
for( i=0; i");
SendSubmitButton(Response);
SendURLLine(Response,HomeURL,"Return to home");
SendFooter(Response);
}
function TradetCat(WebRequest Request, WebResponse Response)
{
local string S,D,A,B;
local int i,j;
// Process response.
if( Request.GetVariable("submit") == "Submit" )
{
for( i=Class'ServerPerksMut'.Default.WeaponCategories.Length; i>=0; --i )
{
j = int(Request.GetVariable("WI"$i, "-2"));
if( j==-2 )
continue;
S = Request.GetVariable("WC"$i, "");
if( S=="" || S=="NEW" )
{
if( i=0 )
S = string(j)$":"$S;
if( i>=Class'ServerPerksMut'.Default.WeaponCategories.Length )
Class'ServerPerksMut'.Default.WeaponCategories.Length = i+1;
Class'ServerPerksMut'.Default.WeaponCategories[i] = S;
}
}
Class'ServerPerksMut'.Static.StaticSaveConfig();
}
SendHeader(Response);
SendHeaderLine(Response,"Trader categories:");
// gather perks
D = " >";
for( i=0; i"$Class'ServerPerksMut'.Default.Perks[i]$"";
D $= "";
// categories
Response.SendText(""$S$"
");
for( i=0; i<=Class'ServerPerksMut'.Default.WeaponCategories.Length; ++i )
{
S = " |
");
}
SendSubmitButton(Response);
SendURLLine(Response,HomeURL,"Return to home");
SendFooter(Response);
}
function RequestInventory(WebRequest Request, WebResponse Response)
{
local string S,Er,A,B;
local array PA;
local int i,j;
local class PC;
// Process response.
if( Request.GetVariable("submit") == "Submit" )
{
S = Request.GetVariable("Inv", "");
if( S!="" )
{
Split(S,Chr(13)$Chr(10),PA);
if( PA.Length<=1 )
{
PA.Length = 0;
Split(S,Chr(10),PA);
}
Class'ServerPerksMut'.Default.TraderInventory.Length = 0;
for( i=0; i(DynamicLoadObject(B,Class'Class'));
if( PC!=None )
{
Class'ServerPerksMut'.Default.TraderInventory.Length = j+1;
Class'ServerPerksMut'.Default.TraderInventory[j++] = A$string(PC);
}
else if( Er=="" )
Er = PA[i];
else Er $= ", "$PA[i];
}
Class'ServerPerksMut'.Static.StaticSaveConfig();
}
}
SendHeader(Response);
SendHeaderLine(Response,"Inventory classes:");
if( Er!="" )
SendHeaderLine(Response,"[Warning] Pickup classes failed to load:
"$Er$"");
// Send perk list
for( i=0; i");
SendSubmitButton(Response);
SendURLLine(Response,HomeURL,"Return to home");
SendFooter(Response);
}
defaultproperties
{
HomeURL="ServerPerkMain"
PerksURL="ServerPerksPerks"
TraderCatURL="ServerPerksTraderCat"
TraderInvURL="ServerPerksTraderInv"
DefaultPage="ServerPerkWebAdmin"
Title="Server Perks"
}