Monthly Archives: August 2012

Wanderer of Na Pali


Wanderer of Na Pali (Released 8/31/12)



You were one of the survivors of a crash landing on Na Pali. You helped the Nali overthrow the Skaarj. Since this you’ve been a wanderer – a nomad moving from place to place on the planet, making your living by hunting and making camps in different areas of the world. You, along with many of the other humans that were marooned here, have made Na Pali your new home. One day, you are caught right in the middle of a battle for Na Pali yet again as the Skaarj re-emerge for one last struggle.


In play order, from beginning to end…

Northern Area:

NorthernWastes.unr – Na Pali Northern Wastes
Factory1.unr – Factory W-33D
WastesReturn.unr – Return to the Wastes
IcyHarbor.unr – Icy Harbor

Central Area:

Nahm.unr – Nahm’s Jungle
Honp.unr – Heart of Na Pali
Tomb1.unr – Tomb of Bolara
Storm.unr – Southern Sea

Southern Area:

DesertShores.unr – Desert Shores
Habkhali1.unr – Hab’khali Desert
Habkhali2.unr – Hab’khali Ruins

Wend.unr – Wanderer Ending Sequence


Na Pali Northern Wastes – gate to the Northern Watch Fortress.

Factory W-33D – front entrance.

Factory W-33D – compression room.

Icy Harbor – the ship.

Nahm’s Jungle – arrival in the jungle.

Nahm’s Jungle – small mountain pass.

Heart of Na Pali – deep caverns.

Tomb of Bolara – warlord fight #3.

Hab’khali Desert – dunes in the desert.

Hab’khali Desert – a dried up well in the desert.




Leave a comment

Posted by on August 31, 2012 in Uncategorized


Well I got some bad news.

My main  machine decided to crap out  2 days ago, and I needed to reinstall everything again.I used  a live CD Linux to recover160 gb of  the files to a flash drive and then to another computer.

But , During the backup process my development server (the 225f crazy serve)r, got corrupted in the move ,  and i lost about half of the files mostly between t and z + other random files,  with includes all the configuration files and xcoop server side files and any of my custom maps i made and 4 years worth of server logs , I dont have any upto date backups that are less then a year old.  So it looks like that server will probably never run again.

I know you want to , you cant help me to much , as i never published all of my work, and also kept many files serverside where they would have never been downloded by anyone .I do tho have most of my main online playing install tho , witch i religiously downloaded every revision of every mod i made to testplay , so technicly i can recovery the mods and maps from there, but not the serverside files or configuration setting.

So yeah i get to start over without 4 years worth of collected mods/maps/ files in my225 crazy server install  , and get to mabye  rebuild all my mods from either cache of from source code files, witch seem to have survived. most major source code was backed up the cloud , but not all my new projects were..

mabye this is  a good thing as that install was overcluttered with outdated  files and i always meant to clean it up ,  Also mabye it is a sign to tell me to quit this gane and get a life  somtimes you just need to move on….,

Oh yeah did i mention my toothache is back again? yeah it it and i have to still goto work….

The newer 3 servers
ah monsters , tva coop ,  227 ah monsters test
are safe tho  as they were on a differnt drive and also backed up to a duplicate install on the server machine.

Leave a comment

Posted by on August 29, 2012 in Uncategorized


offline project updates

As a few may have noticed  my internet connection has been very flaky the last few days  to the point were i have been stuck offline alot.My ISP comcast hasnt yet discovered the problem dispite every house on the block here having shitty service latly and sevral complaints to the cable company later its not fixed,
So  I started working again on some other projects again.


I had another need for a feature add in U_listtool  so I updated the ulisttool to add   file list import features  so now you can search  in folders for wildcards and files  that have a specific string in the name , such as “dm-” to grab a deathmatch map list to export.

This search code will eventually be in a plugin. so it can get updated and be cross form compatible .I also fixed the delete entry option so you can cleanup the list before export.

Export selected as sequential ini file works , but requires some  more work to create start and end points. I feel tho that it needs it own micro replace menu so that it can edit info in structs.

I added  a extra decompile line for music  and  support in “import mod” , so you can now “import as  mod” a map and  export embeded resources.
I am considering  recreating it in the new 8.0 build  environment ( It offers multi window interfaces) , but that  is a steep learning curve with known issues.(yact2 was built in 8.0)


I have had jsaver running for the past week and I saw issues with some players using the new builds  were either they get spammed ‘newstats’ or there score would actually  jump into negitive values somehow!!??
I think i tried to address them with a recent fix , but im not sure it is working any better then before . it only happens with certain players , and i believes its a bug in the compare data or the findplayer funtions but  it sort of seems to only effect some random users, Please be pateint with it its still beta , so if there are issues , report them please , stating you playername  and what happends so i can debug it.


I made some progress on the rtnpmcoop stuff  for aar its just i keep forgeting , there are some surprises in there like a walking tree but the spider walks like it is break dancing still. a have no motivation for this…..

New test server:
I created a 227h version of ah montsers server  to test some stuff and work on a special halloween map remake using static meshes and 227 things for stability , this server will be compatible normaly except for 226f  , but somtimes it will be running 227 stuff  and old version may not be able to join.
Please join it if you can instead of the 225 one to put it tho its paces.


I added bug fixes to the following mods on the server:

Sectoid (PlayRangedAttack Access none)
Wingedterror (PoundDamageTarget Access none)
Scorcher (PlayVictoryDance  Invalid animation)
Reaper (Playclawdamage Access none)
Sectopodboss (multiple invalid animation sequences in dead3)
map18(Fixed forcefeld so it opens)
Map22 ( Fixed doors so that map functions properly)
firedrop( Fixed playerstart for skarja)
Jsaver(Access none  infitite in certin maps)
Csejte1 , Csejte2  and Csejte3fixes for samspawn etc)


Leave a comment

Posted by on August 23, 2012 in Uncategorized


Making a simple score saver for jcoopz1 (Preliminary thoughts and explanation and working example)

Well lets start with a intro , Before i bore you to death with the technical  details
this week im really not sure what made me decide that you needed to read me explaining how to rewrite jcoop to add serverside saved scores but im going to anyway. because i thought it was interesting.

Some back story:

My ah monsters server is setup so it is pushed to the point where 225 limits start showing , the game locks up quite a lot on many maps despite running on a pretty high  mid-end PC with plenty of ram  , The only thing i can do to remedy that would be to lower the monster counts and I dont want to do that , in fact i really want to raise them even higher, But that will need to wait intill 227i comes out  with “clientcompmode” as one of my main players insists on still using 226f. ^sigh^

In the mean time my biggest complaint from players isnt that it crashes , as it can usually restart in just  a few seconds, but that there scores are lost when it restarts.

now i know that score recovery mod  wont work with jcoopz1 because it saves the values in a different value in a custom pri class in jzPRI. and  i really didn’t care enough to try and make it work somehow. but a few days ago i decided to look at some of bleeder’s  risingsaver code and saw how he choose to save his custom player data , by alliterating the pri classes, ( as oppose to ill iterating the playerpawns which would be how i would have done it) and it just seemed so simple  i decided to try and make it work with jcoopz for fun.

Lets do some stuff:

The irst step was to figure out where jcoopz1 stores  the values , you can clearly see it is seems to be stored in JZPRI , but that class has been stripped of the values , So utpt is needed to view the values here  and it starts to get interesting:

var int EnemyKillCount;
var int FriendKillCount;
var int DeathCount;
var int SuicideCount;
var int jSpree;
var int TScore;
var int STI;
var bool bSTIValid;
var bool bIsTyping;

That a lot of values we can use! Why isnt this data exposed?!

Some are obvious score values, others are validation bools.
While ememykillcount seems usable ,Tscore is what we want to save as it  is the total accumulated score that spans maps.

I modified all the code in rising saver  and comment out all irrelevant values and change the references to jzpri and go to compile , Oh crap… While zombie did technically leave enough code to recompile subclasses and such he wiped out most of the vars in most of the classes , so the compiler cant find the variables to reference. Hmm what can i do about this , Mabye I can write the entire mod and ask zombie to compile it for me ? ah not really  ideal, what other options do i have? Mabye i can add the decompiled variables back into jzpri  and recompile so it can reference the  variables ,  YES it will work!. so i do just that.Now we have something we can build against.

At this point i decided that bleeders actual original  saving code was too over complicated and overly dependent on 227 callbacks ( There isnt any thing wrong with his code but it used alot of checks that made debuging difficult for me using 225), So i trashed all the data save/load functions and substituted it for  my own i wrote a few years ago for my failed ‘statmut’ mod ,  This has the added bonus of basically making it 99% my own work  since the only thing left of his work is a timer call that calls the functions that i wrote and some var definitions that i also completely changed anyway.  Also my code is more suited for 225 as it replaces characters that 225 cant understand in player names or save in a ini.

Since what I am building dosnt have access to any kind of mutatenewplayer calls(yet)  ,We are doing this data raking somewhat blind (Just by timer) So we need to do something simple to detect when a player joins and there score needs to be re loaded. While technically i could write a pickup to hook into the giveitem and do some magic , i wanted to keep this code serverside. So The simplistic  way i thought i could do  it was to just compare the score , If the players score is less then the saved value , the score is loaded to the pri. otherwise is is just saved to the server every 15 seconds, why every 15 seconds tho? Well like i said , we are doing it blind so  it could take up to a full timer cycle to load the score so 15 seconds was a compimize between resources and load time.

There was a problem Tho ,  When the level switches  the players score is ‘recovered’ every map switch again regardless,  But everything apperars to be working,  all kills  are properly added to that number as things are killed,But  It has a bit of weirdness at the map start.  hmm lets look a bit further, Decompile jzplayerpawn and you get this and more:

var string SpareHolder;
var string PlayerIP;
var string ConsoleClass;
var string LocalID;
var string EngineVersion;
var string PlayerUID;
var travel int TScore;
var travel string TPlayerIP;
var travel string TLocalID;
var travel string TPlayerUID;

Alot of  potentially useful variables. But to  get to these we need to repeat what we did before and re add them to jcoopz1.u using unrealed as i dd this  i noticed something  , 2 more vars labeled Tscore under playerpawn. Lets log some crap and play a bit and see what changes

ScriptLog: ip:  76.117.84.XXX
ScriptLog: ConsoleClass:  UMenu.UnrealConsole
ScriptLog: LocalID:  -1549992XXX
ScriptLog: EngineVersion:227
ScriptLog: PlayerUID:  1467642XXX
ScriptLog: TScore:  14
ScriptLog: name:BobIsUnreal

A bit of logging shows that this tscore seems to be the actual live value we want. It is separate  from the totalscore   numbers we saved before ,  that  seemed to count the current score, but  this value  makes up for the  difference we saw ( The highscore of 160000 was loaded and replaced the pri values andshowed in  scoreboard , But you could tell it was not the current value at mapstar).This big block of data also conveniently gives us a lot of usfull security data we can use to secure the stat saving system from being hijacked.

After further testing   it is shown that you need to  reload both variables , The playerpawn one is the actual score that travels , and the pri is what is displayed on the scoreboard ( technicly you dont need to set the pri , But it will only update after a mapswitch).

what about security ?

How am i going to secure the data from  player hijacking?
I honestly don’t care  if someone hijacked another players score , and im pretty sure they are not smart enough to try we have all this data here , but , we cant really  ‘trust’ uid t or ip o be permanent  so I am   currently just using there name. if it was important enough to you you could swap the uid feild for the playername in the code for score table , and let the mod basicly save  data via uid and just save the name as  the original uid feild to identify the entry.

What I finally decided  would be the best plan was to add a option called BeSemiSecure that will validate against the uid saved into the players slot , if that uid matches the slot is used , if the uid’s dont match , a new slot is created for the player .The downside of this is that there can be multiple slots with the same username and if you chose this option , you need to stick with it. If you choose to switch back there will be a ton of duplicate names in the table that will be usefess and need to be manually combined. I did not create this thing primarily for security , so this is a afterthought and was not tested

Outcome and end product:

so what did all this 8 hours of effort   end with?
If ends with a actor that can save total score , engine , uid , ip , playername , ememies killled per map and restore that score data after a server crash.

If Your interested in such a thing you can have it becuase thats how i roll.

download here
code only (pastebin)

You need to add it to the mutators or serveractors it’s name is jsaver.jsaver
It works pretty well if all you need is total score saved, or if you want engine version or a sort of half ass player logger to mess with.You wont be able to edit of rebuild this script without  modifying your jcoopz files as i stated above so its probably not the best thing to build off but a decent example of how to expand jcoopz with limited means.

I had fun doing this over the last 4 days in my spare time , and I even took the time  to make the code well documented and clean. and did some tweaking that increases the code performance quite a bit.

Leave a comment

Posted by on August 1, 2012 in Uncategorized