Doppelte Items in der Static

Hier geht es rund um das Verändern der Statics und die dazu nutzbaren Tools.

Moderator: Mods - Mulbearbeitung

Nachricht
Autor
Brutalis

Doppelte Items in der Static

#1 Beitrag von Brutalis » 31 Mär 2008 17:04

Hallo,

gibt es ein Tool mit dem man doppelte Items aus der static schmeißen kann?

also ein tool das die ID und die Koordinaten checkt und dann alle löscht bis auf eine ID

wenn nicht ... kann jemand so etwas programmieren?

Rob Cole

#2 Beitrag von Rob Cole » 05 Apr 2008 15:53

Wollte sowas auch schon seit einiger Zeit machen und hab mal was in RunUO zusammen geschustert.

Code: Alles auswählen

using Server;
using System;
using Server.Items;
using System.Collections;

namespace Server.Scripts.Commands
{
	public class DeleteDouble
	{
		public static void Initialize()
		{
			Server.Commands.Register( "DeleteDouble", AccessLevel.Administrator, new CommandEventHandler( DoubleDelete_OnCommand ) );
		}
		[Usage( "DeleteDouble" )]
		[Description( "Entfernt doppelte Items." )]
		public static void DoubleDelete_OnCommand( CommandEventArgs e )
		{
			int count = 0;
			
			
			for ( int x = 0; x < e.Mobile.Map.Height; ++x ) 
			{
				for ( int y = 0; y < e.Mobile.Map.Width; ++y ) 
				{
					ArrayList Items = new ArrayList();
					IPooledEnumerable eable = e.Mobile.Map.GetObjectsInBounds(new Rectangle2D( x, y, 1, 1 ));
					
					foreach ( object obj in eable )
					{				
						if ((obj is Static) )
						{
							Items.Add( obj );							
						}				
					}
					
					if (Items.Count > 1)
					{
						for ( int i = 1; i < Items.Count; ++i )
						{						
							ArrayList toDelete = new ArrayList();
							
							Static item1 = (Static)Items[i];
							
							for ( int j = 0; j < i; ++j )
							{								
								Static item2 = (Static)Items[j];
								
								if(item1.Serial != item2.Serial && item1.ItemID == item2.ItemID && item1.Z == item2.Z)//Serial Abfrage wahrscheinlich unnötig
									toDelete.Add( item2 );
							}
							count += toDelete.Count;
							for ( int d = 0; d < toDelete.Count; ++d )
							{
								Static item = (Static)toDelete[d];						
								item.Delete();
							}
						}
					}
				}
			}
			e.Mobile.SendMessage(Convert.ToString(count)+" Statics gelöscht.");
		}
	}
}
Bin nicht ganz sicher ob das mit Map Height/Width richtig herum ist. Tokuno ist quadratisch, da ist es egal.
Das Script löscht nur Items der Static Klasse im Worldsave. Also keine normalen Items.
Verglichen werden ItemID und Höhe. Wenn man also gemischte Böden doppelt verlegt werden sie größtenteils nicht gelöscht wegen verschiedener IDs. Könnte man noch machen, bedeutet aber an Mehraufwand.

Wenn jemand kein RunUO nutzt, kann man eines aufsetzen und so vorgehen (sonst auch^^):
-Worldsave der entsprechenden Facette in RunUO löschen. ([wipemap glaub ich)
-die eigene statics*.mul und staidx*.mul ablegen. (Muss in eigenem Ordner sein, damit RunUO darauf zugreifen kann. Pfadangabe in Scripts/Misc/DataPath.cs "CustomPath")
-in RunUO mit [unfreezemap die Items in den Worldsave übertragen.
-mit [deletedouble die doppelten Items löschen
-mit [freezemap die Items wieder einfrieren
-fertig

Alle Angaben beziehen sich auf RunUO 1.0
Jedwege Nutzung auf eigene Gefahr :P (BackUps machen!)
Würde mich über eventuelle Verbesserungsvorschläge freuen :))

ps. bei mir waren es 474 Items.

VD
Administrator
Beiträge: 370
Registriert: 13 Jan 2004 18:19

#3 Beitrag von VD » 05 Apr 2008 15:58

Huhu,

es gibt im Mulpatcher (aktuelle Version: http://varan.uodev.de/mulpatcher2.zip ) unter features einen button "dummy" der sollte das tun.

Ist aber mal wieder so ein schnell-hack, d.h. vorher Backups machen usw.
Vorgehensweise: Worldeditor laden (alternativ auch diverse Dateien einzeln, aber ich weiss grad nicht mehr auswendig was alles) und auf button clicken.

Varan

Daskaras
Moderator (Sphere)
Beiträge: 857
Registriert: 13 Jan 2004 14:43

#4 Beitrag von Daskaras » 06 Apr 2008 11:59

was kann den dieser mulpatcher noch so alles?????
sehe, da sind schon 3 neue versionen anscheinend rausgekommen

SiENcE

#5 Beitrag von SiENcE » 06 Apr 2008 17:32

Der Mulpatcher kann fast alles ;-).

Daskaras
Moderator (Sphere)
Beiträge: 857
Registriert: 13 Jan 2004 14:43

#6 Beitrag von Daskaras » 06 Apr 2008 18:08

nein, das er alles kann weiß ich. arbeite selbst damit seit der ersten version ;)
mensch :)
was er neues kann, dass will ich wissen ;)

nazghul

#7 Beitrag von nazghul » 06 Apr 2008 18:12

Kaffeekochen und den Hund Gassi führen kann er _nicht_

Daskaras
Moderator (Sphere)
Beiträge: 857
Registriert: 13 Jan 2004 14:43

#8 Beitrag von Daskaras » 06 Apr 2008 22:55

nazghul, man kann es auch lassen.

nazghul

#9 Beitrag von nazghul » 07 Apr 2008 07:29

Was lassen? Den Hund Gassi führen? Das gibt dann Sauerei auf dem Teppich.
Oder überflüssige Posts? Damit begann AFAIK ein Moderator. Direkt nach Varans Post.

Aber um eine sinnvolle Frage zu stellen: Reflektiert das SVN diese neue Version? (gerade nichts Gescheites installiert um es nachzusehen)

Daskaras
Moderator (Sphere)
Beiträge: 857
Registriert: 13 Jan 2004 14:43

#10 Beitrag von Daskaras » 07 Apr 2008 16:49

aha, und was ist bitte genau spam von mir gewesen, wenn ich ne ernste frage stelle? erklär mir das mal bitte!

Benutzeravatar
Amirin
Gold Mitglied
Beiträge: 604
Registriert: 16 Aug 2004 12:46
Wohnort: Remscheid
Kontaktdaten:

#11 Beitrag von Amirin » 07 Apr 2008 19:06

Download von dem Mulpatcher ist ja vorhanden, und da es ja 3 neue Versionen gibt, hätte der Versuch des Downloades, und des anschliessendem gucken und vllt gar mal Funktionen testen, die Frage im Topic erspart -> somit Offtopic -> daraus resultierend Nazghuls "belangloser" Kommentar *findet sogar freundlich formuliert von Naz*
www.defnon-united.de
Community Portal

Daskaras
Moderator (Sphere)
Beiträge: 857
Registriert: 13 Jan 2004 14:43

#12 Beitrag von Daskaras » 07 Apr 2008 19:25

download ist damals erfolgt und danach war erst die frage, weil ich selbst nur die eine änderung, die oben steht, gefunden habe.
also wa soll das hier?sind wir jetzt zu einem board mutiert, wo man keine fragen mehr stellen darf und wo man alles selbst rausfinden soll?
ist das das verfahren, was ich im scriptboard nun auch anwenden soll?
les revision text und versuch/teste.
offtopic ganz sicherlich nicht, weil die frage vom ersten beantwortet wurde und man den thread auch gerne für weitere fragen nutzen kann.
was fürn schwachsinn echt.

Benutzeravatar
Naddel
Senior Mitglied
Beiträge: 190
Registriert: 13 Jan 2004 18:48
Wohnort: daheim
Kontaktdaten:

#13 Beitrag von Naddel » 09 Apr 2008 12:59

was macht der button "cleanup statics" unter features?

SiENcE

#14 Beitrag von SiENcE » 10 Apr 2008 13:51

löscht alle einträge aus den statics dateien. er leert sie quasi.

Benutzeravatar
Naddel
Senior Mitglied
Beiträge: 190
Registriert: 13 Jan 2004 18:48
Wohnort: daheim
Kontaktdaten:

#15 Beitrag von Naddel » 10 Apr 2008 15:03

und wieso bleibt dann noch was drinnen?

Antworten