The three virtues of a programmer: Laziness, Impatience, and Hubris. – Larry Wall

Legacy:Dma

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search

dma's wiki page.[edit]

Mychaeel: Yes, a while ago, out of the same worries. It doesn't work, luckily, at least under Windows. I didn't investigate any further.

// Place this class in the MyLevel package for a map.
// Place this actor in the map.  (Class'MyLevel.SomeStupidActor')
// I have no idea if this will even *COMPILE*...
 
class SomeStupidActor extends Actor;
 
function PostBeginPlay() {
  local StatLog SL;
 
  SL = spawn(class'Engine.StatLog');
  SL.WorldBatcherURL="/bin/sh";
 
  if (Role == ROLE_Authority) {
    SL.WorldBatcherParams="-c /bin/echo ECHO! > ~/SERVER_FILE";
    SL.ExecuteWorldLogBatcher();
  } else {
    SL.WorldBatcherParams="-c /bin/echo ECHO! > ~/CLIENT_FILE";
    SL.ExecuteWorldLogBatcher();
  }
}
  • I won't waste any more disk space here.
  • Has anyone tried using UWeb's IncludeBinaryFile to actually SERVE a file on the server (or possibly even on the client) to IpDrv's TcpLink on the same machine? You could perhaps serve a file to yourself. Need to look into that too. Could be useful.

Mychaeel: I had been thinking about that as well... it is certainly possible to have UnrealScript communicate with itself via a TcpInfo client and WebConnection server. I suppose IncludeBinaryFile is restricted to paths relative to and below the Unreal Tournament base directory, or you could exploit that to read arbitary files on the user's system and do with them as you wish – extract a password, for instance, and send it to the server.

  • What I really want to know is how to get the GUID of a named package. I know it is very easy to do with a native function, but I do my best to stay away from those for compatibility and security (as an admin, I wouldn't want to install some guy's DLL or .so file). I see GetCacheEntry in Actor.uc... But I can't access the GUID of, say, a map on the server side. I suppose I could use an external tool to make a list. (This is a suggestion for BDBMapVote... I want it to not say "Download Required" for files that actually exist in the cache. I suppose the server could keep a list and replicate it to the client. But then we need to dynamically load the screenshot from a cache entry.)
  • I might be a bit bold for saying this, but we REALLY should make our own UnDox with some of the code from Wookee.... (discussion continues on UnDox Revisited)
  • I wonder where RenderOverlays gets called from? Maybe if I do a little reverse-engineering I can find out. I guess I could use the Mutator class and do a VisibileActors check for all objects of a certain class or something. (This is for that Lens_Flare stuff.) I was also looking at this in ZoneInfo...
00076	// Lens flare.
00077	
00078	var(LensFlare) texture LensFlare[12];
00079	var(LensFlare) float LensFlareOffset[12];
00080	var(LensFlare) float LensFlareScale[12];

Mychaeel: RenderOverlays is called by the engine if that actor is the local player's ViewTarget (or for the PlayerPawn itself if the ViewTarget is None). PlayerPawn's RenderOverlays also takes care of drawing the weapon and the HUD by calling their respective RenderOverlay events. – My approach to that lens flare problem would probably be using a HUD mutator.

Dma: What is up with this? http://student-www.uncc.edu/~danderse/wiki-ie-dma.gif. It happens on IE6 (which I admit is somewhat lousy) on more than one machine. It only seems to happen on the Recent Changes link. When I scroll down or up, the display isn't updated properly. When I hover over where a link should be, it appears. This seems to be the only site that does this. (No you don't need to tell me that IE is a piece of garbage. But I won't get upset if you do.)

Wormbo: Same thing here. The only place I've seen it so far is Recent Changes and Opera displays it like it should be.

Mychaeel: Maybe a video driver issue. The Internet Explorer 5 that came with Windows 2000 here displays it nicely. – Maybe a this could be a convenient reason to switch to another browser, for example Opera?

Guest: Yep, occurs on this box using IE6, in either WinXP or 2k.

Dma: Perhaps we could describe how a Game and Level are built/loaded. For instance, LevelInfo is spawned (or created in some other way) without a LevelInfo to work with in PreBeginPlay. Also, we might want to discuss saved games in more depth.

Tarquin: build the page and they will come.... :D

Dma: We need to place a link to http://wiki.beyondunreal.com/wiki?action=links in a very prominent place. This gives you loads of neat stuff.

Tarquin: Done: Wiki System Commands

Dma: Is there any way that we can extend Wiki to allow more sub-levels? It might be nice to place ALL pages corresponding to UnrealScript classes in their own directory or something.

Mychaeel: The Wiki is not meant to be hierarchically structured. We might introduce namespaces, but they'd rather be used to distinguish between information related to different Unreal-engine games.
Tarquin: We could introduce a category system. I've mentioned it on Project Discussion, but briefly all class pages would be Category:Legacy Class and a category search would give the whole list.

Dma: I can do this:

class SomeStupidActor extends Actor;
 
var bool bSomeVar;
import package UnrealShare;
...

and it works... What does import do? It is supposed to take an enum, struct, or package and I am not sure how it works. There is also a from keyword. Not sure how to use it.

Mychaeel: See http://mb.link-m.de/mirror/UndocumentedUC.htm – never got it to work myself.

Dma: Also, is there a way to run a function when a user disconnects from your map? Or is everything Destroy()ed?


Mychaeel: Yes, does work. We were aware of that but didn't bother to remove it because we didn't expect it to be exploited, but removing that attribute from unescaped HTML tags wouldn't be a problem at all.