Festlegen des Container-Bereichs

Hier könnt ihr Unterstützung holen für euere Script Probleme, und Fragen rund um das Scripten.
Antworten
Nachricht
Autor
Nabu

Festlegen des Container-Bereichs

#1 Beitrag von Nabu » 06 Apr 2008 18:25

Hallo zusammen

Ich hab da ein Problem mit dem korrekten Setzen des Ablagebereichs eines Spielbrettes (container).

Das Spielbrett (Mensch ärger dich nicht) wird, mit den zugehörigen Spielfiguren, erstellt (Script dazu hab ich vom Schachbrett Chessboard.cs abgeleitet).
Das Spielbrett selber ist ein Container.
Da ich Probleme mit Gumps als Spielfiguren habe (siehe dazu: Foren-Übersicht » Mul-File - Bearbeitung » Restliche Mul-Files » Spielstein-Gumps für Spielbretter ), habe ich die Spielfiguren als einfache Gegenstände (Arts) eingefügt.
Diese werden auch korrekt auf dem Spielfeld aufgestellt.
wenn man sie jedoch dann bewegt, ist nur noch ein kleiner Teil des Spielfeldes nutzbar (etwa 3/5 des gesamten Spielfeldbereiches).
Der Containerbereich ist jedoch einfach vom Schachbrett übernommen.

Hier der Quellcode (ludoboard.cs):

Code: Alles auswählen

using System;
using System.Collections;

namespace Server.Items
{
	public class LudoBoard : BaseBoard
	{
		
		public override int DefaultGumpID{ get{ return 0x92F; } }

		public override Rectangle2D Bounds
		{
			get{ return new Rectangle2D( 0, 0, 282, 210 ); }
		}

		[Constructable]
		public LudoBoard() : base( 0x225A )
		{
		}

		public override void CreatePieces()
		{
			// Blaue Spielfiguren
			CreatePiece( new PieceLudoBlue( this ), 51, 24);
			CreatePiece( new PieceLudoBlue( this ), 68, 24);
			CreatePiece( new PieceLudoBlue( this ), 51, 41);
			CreatePiece( new PieceLudoBlue( this ), 68, 41);
			// Rote Spielfiguren
			CreatePiece( new PieceLudoRed( this ), 204, 24);
			CreatePiece( new PieceLudoRed( this ), 221, 24);
			CreatePiece( new PieceLudoRed( this ), 204, 41);
			CreatePiece( new PieceLudoRed( this ), 211, 41);
			// Gelbe Spielfiguren
			CreatePiece( new PieceLudoYellow( this ), 51, 177);
			CreatePiece( new PieceLudoYellow( this ), 68, 177);
			CreatePiece( new PieceLudoYellow( this ), 51, 194);
			CreatePiece( new PieceLudoYellow( this ), 68, 194);
			// Grüne Spielfiguren
			CreatePiece( new PieceLudoGreen( this ), 204, 177);
			CreatePiece( new PieceLudoGreen( this ), 221, 177);
			CreatePiece( new PieceLudoGreen( this ), 204, 194);
			CreatePiece( new PieceLudoGreen( this ), 221, 194);
		}

		public LudoBoard( Serial serial ) : base( serial )
		{
		}

		public override void Serialize( GenericWriter writer )
		{
			base.Serialize( writer );
			writer.Write( (int) 0 ); // version
		}

		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );
			int version = reader.ReadInt();
		}
	}
}
Ich hab dann ein wenig in den Scripts herumgesucht und stieß dabei auf eine Einschränkung, welche den Containerbereich halbiert, wenn dieser zu groß gesetzt wurde (zumindest hoffe ich, dies richtig interpretiert zu haben).
Darum habe ich den Bereich probeweise etwas kleiner festgelegt („Rectangle2D( 5, 5, 277, 205 )“), was jedoch nicht zum erwünschten Erfolg geführt hat.

Viel kleiner möchte ich jedoch den nutzbaren Bereich nicht machen, da man sonst die Spielfiguren nicht mehr überall passend absetzen kann.

Vielleicht bewege ich mich auch einfach auf dem Holzweg und die Lösung ist ganz einfach.

Wäre schön, wenn mir da jemand weiterhelfen könnte.

Gruß
Nabu

Antworten