/* 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(""); Response.SendText("<body bgcolor=\"#FFFFFF\"></body>"); } final function SendHeader( WebResponse Response, optional bool bNoSettings ) { Response.SendText("SP
"); if( !bNoSettings ) Response.SendText(""); } final function SendSubmitButton( WebResponse Response ) { 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); } defaultproperties { HomeURL="ServerPerkMain" PerksURL="ServerPerksPerks" TraderCatURL="ServerPerksTraderCat" TraderInvURL="ServerPerksTraderInv" DefaultPage="ServerPerkWebAdmin" Title="Server Perks" }