RunUO Community

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

InternalMap Cleanup

Status
Not open for further replies.

Phantom

Knight
I have said I am sorry.

If people cannot accept that this time, well there is no help for them. There is alot more I feel bad, and I am sure there will be new things. Only thing I can be sorry for is this thing right now, I will be sorry about something else in the future.
 

Fury

Wanderer
Im cool.. i replied i just got home and just recieved the pm and i apologized as well.. i have enough bs to deal with in rl dont need more enemies here where i come to relax.
 

psz

Administrator
I'd ask you guys to kiss and make up, but I want my computer to still boot in the morning ;->
 
K

Krazy_zack

Guest
Being a troll, everyone already know your views.

I just troll you phantom....

...only you....

Doncha feel special now? :rolleyes:

Besides my momma said that everybody should be good at somthing! :p
 

Horde_Pil

Wanderer
I never thought i would be doing this but ok guys listen up


i like most of you and respect all you have done... but i will have to say in defence of phantom, yes he might have a bad attitude sometimes and can get under your skin. BUT he does help, he also helps when you ask him to moderate a post, he will help people on the board and redoes there scripts. He might have a bad attitude but phantom is part of this community, even i have had a fight with him once but i let it go after it was resolved. you guys should to.. you wont always get everything you want in an argument, and people wont change cous you disagree with them.. so even if you dont agree with phantom respect his opinion as an individual and let it go..



he apologized, i dont agree with how he handled it but he is trying to make it right, we all have done this with others ourselves..
 

mvmiller

Wanderer
Is there any way to modify one of the scripts to search for spawners on the internal map. I have about 20 spawners for some reason that showed up there.
 

Fury

Wanderer
[code:1] public static ArrayList BuildList( Mobile owner )
{
ArrayList list = new ArrayList();
foreach ( Item i in World.Items.Values )
{
if ( i is Spawner && i.Map = Map.Internal )
list.Add(i);
}
return list;
}[/code:1]

that would show just spawners in internal map.
 
S

Seven

Guest
Problem :
[internalmobiles - when i use this command my server crashes. Anyone know why?
[code:1]Server Crash Report
===================

Operating System: Microsoft Windows NT 5.1.2600.0
.NET Framework: 1.1.4322.573
Time: 12/23/2003 11:16:16 PM
Mobiles: 305
Items: 6948
Clients:
- Count: 2
+ 64.91.43.14: (account = Oblivion) (mobile = 0x2 'Seven')
+ 67.23.122.45: (account = punker5150) (mobile = 0x27 'Leyroy')

Exception:
System.NullReferenceException: Object reference not set to an instance of an object.
at Server.Gumps.InternalMobilesGump.Initialize(Int32 page)
at Server.Gumps.InternalMobilesGump..ctor(Mobile owner, ArrayList list, Int32 page)
at Server.Gumps.InternalMobilesGump.InternalMobiles_OnCommand(CommandEventArgs e)
at Server.Commands.Handle(Mobile from, String text)
at Server.Mobile.DoSpeech(String text, Int32[] keywords, MessageType type, Int32 hue)
at Server.Network.PacketHandlers.UnicodeSpeech(NetState state, PacketReader pvSrc)
at Server.Network.MessagePump.HandleReceive(NetState ns)
at Server.Network.MessagePump.Slice()
at Server.Core.Main(String[] args)[/code:1]
 

Phantom

Knight
Simple: Don't use this script.

Real Solution: Don't use Bob Spawner's spawners.

You are a very bad admin if you use them, and should be shoot for using a BUGGY ASS SCRIPT like his.
 

ArteGordon

Wanderer
ok Phantom, I have seen you bash bob smart and his spawner at every opportunity. Often it is even in threads that dont have anything to do with spawners (e.g. blaming the "unexplained lag" that some people have reported in b36 on bob smart and his spawner)
Now, I use his xml spawner as repackaged by Knightshade, I LIKE it, and I dont feel I deserve to be shot for it, but given that you feel so strongly about it I thought I would go through the "buggy-assed" spawner script again and look for all these so-called bugs.

Well, I dont see em. There was one fix that applied to both the distro spawner and to xmlspawner that was pointed out in another post (sorry forgot who found it) relating to the way in which locations are specified after the map leading to potentially lost internals.

I did find a few differences as listed below.
There is a small potential bug in the distro spawner that is addressed in xmlspawner

in Spawner(), index is not tested for negative values leading to a potential invalid index reference.

distro


[code:1]if ( map == null || map == Map.Internal || m_CreaturesName.Count == 0 || index >= m_CreaturesName.Count )
return;

Defrag();

if ( m_Creatures.Count >= m_Count )
return;

Type type = SpawnerType.GetType( (string)m_CreaturesName[index] );
[/code:1]

xmlspawner


[code:1]// Make sure everything is ok to spawn an object
if( ( map == null ) ||
( map == Map.Internal ) ||
( this.m_SpawnObjects.Count == 0 ) ||
( index < 0 ) ||
( index >= this.m_SpawnObjects.Count ) )
return false;

// Remove any spawns that don't belong to the spawner any more.
this.Defrag();

// Get the spawn object at the required index
SpawnObject TheSpawn = this.m_SpawnObjects[index] as SpawnObject;[/code:1]

Another difference is that xmlspawner does ontick() defrags for all spawners, distro spawner only does this for group=true spawners. This leads to a Defrag followed by spawn in xmlspawner, while only a spawn in distro. I may be wrong, but I believe the former is more correct (taming a non-group spawn will stop the distro spawner).

distro
[code:1]public void OnTick()
{
DoTimer();

if ( m_Group )
{
Defrag();

if ( m_Creatures.Count == 0 )
{
Respawn();
}
else
{
return;
}
}
else
{
Spawn();
}
}[/code:1]

xmlspawner
[code:1]public void OnTick()
{
this.Defrag();
this.DoTimer();

if( this.m_Group == true )
{
if( this.TotalSpawnedObjects <= 0 )
Respawn();
else
return;
}
else
Spawn();
}[/code:1]

Now, one thing I am definitely NOT doing is bashing any of the devs or those responsible for the distro spawner. The whole b36 package is amazing and I cant heap enough praise on everyone for the job they have done, but I have to say, if there is a problem with bob smarts spawner, then please tell us what it is?
In all the posts relating to this, the only piece of actual information that I've gathered is that you dont like bob smart, his world package, or his spawner. To support this dislike you have made statements about his spawner that just arent accurate, e.g. that [get home doesnt work with xmlspawner, (in my experience it does), and that home range doesnt work (in my experience it does).
Bottom line is, I'm having trouble getting an accurate picture of your criticism.

It sounds personal to me and I would like to make it a bit more objective.

What, exactly, in your opinion, is wrong with xmlspawner???
 

ASayre

RunUO Developer
If there was nothing wrong witht he XML spanwer/world package, Then explan why a script such as this made specifically to CLEAN UP the mess casused by it was made...
 
S

Seven

Guest
Phantom once again you have created a useless post...
1. This script works fine...only problem is the [internalmobiles
2. I don't use Bob Smarts packages...I really don't know why you said that.
 

ArteGordon

Wanderer
ASayre8, as I mentioned in the post, and as was identified in another thread, a problem was identified with BOTH the distro spawner, and xmlspawner, which basically did the same thing as the distro spawner. The internal spawn problem was never identified as an xmlspawner specific one. This script isnt CLEANING UP the mess it made, it is providing a way to address a problem that ALL the spawners have been making.

That's my point, even you assume that this is cleaning up an xmlspawner problem even though it has never been shown to be one.

its easy to solve problems by finding scapegoats. harder to solve them by finding actual solutions.
 

Fury

Wanderer
The internal mobiles someone else wrote and was lost after forum timewarp.. it works for me im not sure what would cause your crash..

I find this useful for finding problems with any custom script.. for instance i noticed Davids harvest system leaves alot of items in the internal map.. i havent checked the script yet to see if this is intentional but i would have never noticed had it not been for this.

ArteGordon is 100% right.. i personally use the xml spawner as well and prefer it over the distro.
 

mebane2

Wanderer
This got started up when Beta36 came out because of a bug in RunUO where if you specify map then location instead of the other way around you can possibly end up with this errant internals. Bobs package is simply the largest collection of prepackaged spawners, so people using it saw the biggest incedents. The bug is in RunUO though. As was said, the distro spawner has the same result, you just don't have the magnatude in qty for most people to trigger the bug enough to be readily visable.

True, not using the prepackaged spawners will help reduce the bug, but not because of any fault of XMLSpawner, but only due to pure statistics.

This bug shows up in more then just when the distro or xmlspawner is used. It also can show up with champspawns, or probably anytime an item or mobile is created by a script and map gets set first. Unf whatever the exact bug in RunUO is, it needs something more specific then just a spawn. Thus sometimes the bug will get triggered, and othertimes it won't.

The RunUO dev team would prob be helped debugging the issue by actually using the XMLSpawner and the prepackaged spawners to trigger the bug so they can see what the problem is.

But one small change to scripts that spawn, and you get around the problem anyway. I got rid of all my xmlspawners. Cleaned up my system. Put in the change to the XMLSpawner as well as the distro spawner, then repopulated the prepackaged xmlspawners and haven't had any bogus mobiles or items show back up. I will prob still need to make the same kinda change to the champspawner.

As for lag complaints, for the most part it has been ruled down to GMs overpopulating areas (once case). And a setting that defaults to let mobiles run around even though no players are near. That is fixed by changing that setting. Yes, if there were no mobiles you could have no lag. Then again if you had no internet connection you would have no lag ether. With that setting change the lag is taken care of. Any lag "caused" by the XMLSpawner is indirectly simply because of the amount of spawned creatures in the prepackaged spawners (something like 14K of em) and not having that setting set.

Bugs/nobugs aside. Phantom has expressed that his dislike of the worldpackage is because it does make it so easy for a newbie to setup a world that they don't have to work at it and learn, so they run into tons of problems later and have to come running for help. And when they do, Bob, until he released the 36 ver, was no where to be found for questions or support. So everyone else had to support users who didn't know as much as they prob should using Bob's package.

These are valid arguments. But ya, its def gone beyond valid arguments and gotten personal I think with Phantom. Ive been hoping this would just die down, but it prob won't because you still have newbies coming in and getting the package, then having to come to the community for support. IOW nothing has changed except the version number so to speak.

*shrug* *sigh*
 

psz

Administrator
For the record, the bobsmart package does currently, and has always had bugs in it. I know as I wrote the Hirable NPCs and had to help debug it (basehire.cs).

The problem doesn't lay on one part of the package (basehire.cs or XMLSpawners), but the fact that the package is a COLLECTION of various scipts FROM VARIOUS AUTHORS. Thus it greatly increases the chance for conflicts and/or other bugs.

If ALL of the sctipts were written by one person or one group of people, these problems would not show up.

The spawner bug shows up more with the world package because of the shear number of spawns placed at once. ALL spawners have the aforementioned bug that if it is in a backpack, it will spawn to the internal map. VERY simple solutions to that part.

A: Do like David, and set them to Inactive when in a backpack, or

B: Go to EVERY spawn, and do a Total Respawn.

When placing spawns manually, this is obviously not near as much a problem as with a spawner script, because you DIRECTLY control *EVERY* spawn you place. You control where, what, when, and how.
No worrying about if a spawner placed actually has some mobiles floating around in the Internal map, or wandering too far, or whatnot.

The XMLSpawner specific bugs are much more minor than all of that. It simple has a sloppy way to handle Homerange versus a Walkingrange (Which Spawner2 does wonderfully), and there's no easy way to track down a mobile's spawner (If you [get home on a mobile that was spawned with the distro spawner or spawner2, you are given the Spawner's location. If you do it with the XMLSpawner, you get the tile that the mobile was spawned ON... So if the XMLSpawner has a range of 100, you have to check 100 tiles x 100 tiles to find it. Otherwise you have to use the XMLSpawnerShowAll command. This is a problem because *ALL* players can see AND MODIFY it when this is done).
 

Fury

Wanderer
I like davids walkingrange spawner as well but if your shard has playerrangesensitive true the xml spawner produces much better results as 9 times outta 10 the npcs dont have time to walk anywhere if they're frozen. The homerange can be a pain but the bug with the show spawns is simple.. dont make them visible lol.. staff can see invisible players cant.. im not sure how that visible = true even got in there. And if you really like the xmlspawner give basecreature a new home property so you can assign both where it spawns and the spawner. Im not one for the package but i do like the spawner and the program he made to manage spawns (with some slight modifications)
 

psz

Administrator
Oh, I think the XMLSpawner concept is great. Makes saving custom spawn maps easy ;->

The reason I like having a seperate Home and Walkingrange is for Dungeons. Makes them much more... "accurate" I guess is the best word.


Also good for sea creatures.
 
Status
Not open for further replies.
Top