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!

Jackpotboard doesn`t save after restart "currently no jackpots"

Hello,

The Poker System works great but i does not save the Pokerjackpot after a server restart
The Jackpotboard always say "Currently no Jackpot" after the Server had a restart.
thanks




Code:
using System;
using System.Text;
using System.Collections;
using Server.Gumps;
using Server.Items;
using Server.Poker;
using Server.Network;
 
namespace Server.Items
{
        [Flipable( 0x1E5E, 0x1E5F )]
        public class JackpotBoard : Item
        {
                [Constructable]
                public JackpotBoard()
                        : base( 0x1E5E )
                {
                        Movable = false;
                        Name = "Poker Jackpot";
                        Hue = 1161;
                }
 
                public override void OnDoubleClick( Mobile from )
                {
 
                        if ( from.InRange( this.Location, 4 ) && from.NetState != null )
                        {
                                if ( PokerDealer.Jackpot > 0 && PokerDealer.JackpotWinners != null && PokerDealer.JackpotWinners.Winners.Count > 0 )
                                {
                                        if ( PokerDealer.JackpotWinners.Winners.Count > 1 )
                                        {
                                                StringBuilder sb = new StringBuilder( String.Format( "The jackpot is {0} gold. ", PokerDealer.Jackpot.ToString( "#,###" ) ) );
 
                                                sb.Append( "It is currently split by: " );
 
                                                for ( int i = 0; i < PokerDealer.JackpotWinners.Winners.Count; ++i )
                                                {
                                                        if ( PokerDealer.JackpotWinners.Winners[i].Mobile != null )
                                                                sb.Append( PokerDealer.JackpotWinners.Winners[i].Mobile.Name );
                                                        else
                                                                sb.Append( "(-null-)" );
 
                                                        if ( PokerDealer.JackpotWinners.Winners.Count == 2 && i == 0 )
                                                                sb.Append( " and " );
                                                        else if ( i != PokerDealer.JackpotWinners.Winners.Count - 2 )
                                                                sb.Append( ", " );
                                                        else
                                                                sb.Append( " and " );
                                                }
 
                                                sb.Append( String.Format( " leading with {0}", HandRanker.RankString( PokerDealer.JackpotWinners.Hand ) ) );
 
                                                DisplayMessage( from, sb.ToString() );
                                                return;
                                        }
                                        else if ( PokerDealer.JackpotWinners.Winners[0] != null && PokerDealer.JackpotWinners.Winners[0].Mobile != null )
                                        {
                                                DisplayMessage( from, String.Format( "The jackpot is {0} gold. {1} leads with {2}", PokerDealer.Jackpot.ToString( "#,###" ), PokerDealer.JackpotWinners.Winners[0].Mobile.Name, HandRanker.RankString( PokerDealer.JackpotWinners.Hand ) ) );
                                                return;
                                        }
                                }
 
                                DisplayMessage( from, "Currently No Jackpot" );
                        }
                        else
                                from.SendMessage( 0x22, "That is too far away." );
                }
 
                private void DisplayMessage( Mobile from, string text )
                {
                        from.NetState.Send( new AsciiMessage( Serial, ItemID, MessageType.Regular, Hue, 3, Name, text ) );
                }
 
                public JackpotBoard( Serial serial )
                        : base( serial )
                {
                }
 
                public override void Serialize( GenericWriter writer )
                {
                        base.Serialize( writer );
                }
 
                public override void Deserialize( GenericReader reader )
                {
                        base.Deserialize( reader );
                }
        }
}
 

ThatDudeJBob

Sorceror
I may be wrong but shouldnt your Serialize and Deserialize be like this?
PHP:
        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();
        }
 
thanks for the answer,
but the same Problem occours with ur Code it still says "Currently no Jackpots" after a Server restart

=/
pls help
 

pooka01

Sorceror
writer.WriteEncodedInt( (int)Jackpot );

Jackpot = reader.ReadEncodedInt();

One thing, do not add this in that item, this item has nothing in it except being a "bridge" between the PokerDealer and the user.
Go see in the pokerdealer script, and lok for the serialize/deserialize, if you don't see the 2 first lines i posted, add them lik so:

public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int)0 );
writer.WriteEncodedInt( (int)Jackpot );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
Jackpot = reader.ReadEncodedInt();
}

But just to be sure, post the script of the pokerdealer.
 
thanks for the help :p
hopefully ur able to fix that ;)

Code:
using System;
using System.Collections.Generic;
using Server;
using Server.Commands;
using Server.Gumps;
using Server.Items;
using Server.Mobiles;
using Server.Targeting;
 
namespace Server.Poker
{
        public class PokerDealer : Mobile
        {
                public static void Initialize()
                {
                        CommandSystem.Register( "AddPokerSeat", AccessLevel.Administrator, new CommandEventHandler( AddPokerSeat_OnCommand ) );
                        CommandSystem.Register( "PokerKick", AccessLevel.Seer, new CommandEventHandler( PokerKick_OnCommand ) );
 
                        EventSink.Disconnected += new DisconnectedEventHandler( EventSink_Disconnected );
                }
 
                private double m_Rake;
                private int m_RakeMax;
                private int m_MinBuyIn;
                private int m_MaxBuyIn;
                private int m_SmallBlind;
                private int m_BigBlind;
                private int m_MaxPlayers;
                private bool m_Active;
                private bool m_TournamentMode;
                private PokerGame m_Game;
                private List<Point3D> m_Seats;
                private Point3D m_ExitLocation;
                private Map m_ExitMap;
 
                private static int m_Jackpot;
                public static int Jackpot { get { return m_Jackpot; } set { m_Jackpot = value; } }
 
                [CommandProperty( AccessLevel.Seer )]
                public bool TournamentMode { get { return m_TournamentMode; } set { m_TournamentMode = value; } }
                [CommandProperty( AccessLevel.Administrator )]
                public bool ClearSeats { get { return false; } set { m_Seats.Clear(); } }
                [CommandProperty( AccessLevel.Administrator )]
                public int RakeMax { get { return m_RakeMax; } set { m_RakeMax = value; } }
                [CommandProperty( AccessLevel.Seer )]
                public int MinBuyIn { get { return m_MinBuyIn; } set { m_MinBuyIn = value; } }
                [CommandProperty( AccessLevel.Seer )]
                public int MaxBuyIn { get { return m_MaxBuyIn; } set { m_MaxBuyIn = value; } }
                [CommandProperty( AccessLevel.Seer )]
                public int SmallBlind { get { return m_SmallBlind; } set { m_SmallBlind = value; } }
                [CommandProperty( AccessLevel.Seer )]
                public int BigBlind { get { return m_BigBlind; } set { m_BigBlind = value; } }
                [CommandProperty( AccessLevel.Administrator )]
                public Point3D ExitLocation { get { return m_ExitLocation; } set { m_ExitLocation = value; } }
                [CommandProperty( AccessLevel.Administrator )]
                public Map ExitMap { get { return m_ExitMap; } set { m_ExitMap = value; } }
                [CommandProperty( AccessLevel.Administrator )]
                public double Rake
                {
                        get { return m_Rake; }
                        set
                        {
                                if ( value > 1 )
                                        m_Rake = 1;
                                else if ( value < 0 )
                                        m_Rake = 0;
                                else
                                        m_Rake = value;
                        }
                }
                [CommandProperty( AccessLevel.Seer )]
                public int MaxPlayers
                {
                        get { return m_MaxPlayers; }
                        set
                        {
                                if ( value > 22 ) m_MaxPlayers = 22;
                                else if ( value < 0 ) m_MaxPlayers = 0;
                                else m_MaxPlayers = value;
                        }
                }
 
        // tissemand edit, helps a bit while debugging :|
        [CommandProperty(AccessLevel.Counselor)]
        public int CurrentSeatCount
        {
            get { return m_Seats.Count; }
        }
                [CommandProperty( AccessLevel.Seer )]
                public bool Active
                {
                        get { return m_Active; }
                        set
                        {
                                List<PokerPlayer> toRemove = new List<PokerPlayer>();
 
                                if ( !value )
                                        foreach ( PokerPlayer player in m_Game.Players.Players )
                                                if ( player.Mobile != null )
                                                        toRemove.Add( player );
 
                                for ( int i = 0; i < toRemove.Count; ++i )
                                {
                                        toRemove[i].Mobile.SendMessage( 0x22, "The poker dealer has been set to inactive by a game master, and you are now being removed from the poker game and being refunded the money that you currently have." );
                                        m_Game.RemovePlayer( toRemove[i] );
                                }
 
                                m_Active = value;
                        }
                }
 
                public PokerGame Game { get { return m_Game; } set { m_Game = value; } }
                public List<Point3D> Seats { get { return m_Seats; } set { m_Seats = value; } }
 
                [Constructable]
                public PokerDealer()
                        : this( 10 )
                {
                }
 
                [Constructable]
                public PokerDealer( int maxPlayers )
                {
                        Blessed = true;
                        Frozen = true;
                        InitStats( 100, 100, 100 );
 
                        Title = "the poker dealer";
                        Hue = Utility.RandomSkinHue();
                        NameHue = 0x35;
 
                        if ( this.Female = Utility.RandomBool() )
                        {
                                this.Body = 0x191;
                                this.Name = NameList.RandomName( "female" );
                        }
                        else
                        {
                                this.Body = 0x190;
                                this.Name = NameList.RandomName( "male" );
                        }
 
                        Dress();
 
                        MaxPlayers = maxPlayers;
                        m_Seats = new List<Point3D>();
                        m_Rake = 0.10;                //10% rake default
                        m_RakeMax = 5000;        //5k maximum rake default
                        m_Game = new PokerGame( this );
                }
 
                private void Dress()
                {
                        AddItem( new FancyShirt( 0 ) );
 
                        Item pants = new LongPants();
                        pants.Hue = 1;
                        AddItem( pants );
 
                        Item shoes = new Shoes();
                        shoes.Hue = 1;
                        AddItem( shoes );
 
                        Item sash = new BodySash();
                        sash.Hue = 1;
                        AddItem( sash );
 
                        Utility.AssignRandomHair( this );
                }
 
                private static JackpotInfo m_JackpotWinners;
                public static JackpotInfo JackpotWinners { get { return m_JackpotWinners; } set { m_JackpotWinners = value; } }
 
                public static void AwardJackpot()
                {
                        if ( m_JackpotWinners != null && m_JackpotWinners.Winners != null && m_JackpotWinners.Winners.Count > 0 )
                        {
                                int award = m_Jackpot / m_JackpotWinners.Winners.Count;
 
                                if ( award <= 0 )
                                        return;
 
                                foreach ( PokerPlayer m in m_JackpotWinners.Winners )
                                {
                                        if ( m != null && m.Mobile != null && m.Mobile.BankBox != null )
                                        {
                                                m.Mobile.BankBox.DropItem( new BankCheck( award ) );
                                                World.Broadcast( 1161, true, "{0} has won the poker jackpot of {1} gold with {2}", m.Mobile.Name, award.ToString( "#,###" ), HandRanker.RankString( m_JackpotWinners.Hand ) );
                                        }
                                }
 
                                m_Jackpot = 0;
                                m_JackpotWinners = null;
                        }
                }
 
                public override void OnDoubleClick( Mobile from )
                {
                        if ( !m_Active )
                                from.SendMessage( 0x9A, "This table is inactive" );
                        else if ( !InRange( from.Location, 8 ) )
                                from.PrivateOverheadMessage( Server.Network.MessageType.Regular, 0x22, true, "I am too far away to do that", from.NetState );
                        else if ( m_MinBuyIn == 0 || m_MaxBuyIn == 0 )
                                from.SendMessage( 0x9A, "This table is inactive" );
                        else if ( m_MinBuyIn > m_MaxBuyIn )
                                from.SendMessage( 0x9A, "This table is inactive" );
                        else if ( m_Seats.Count < m_MaxPlayers )
                                from.SendMessage( 0x9A, "This table is inactive" );
                        else if ( m_Game.GetIndexFor( from ) != -1 )
                                return; //TODO: Grab more chips from the player's bankbox
                        else if ( m_Game.Players.Count >= m_MaxPlayers )
                        {
                                from.SendMessage( 0x22, "This table is full" );
                                base.OnDoubleClick( from );
                        }
                        else if ( m_Game.Players.Count < m_MaxPlayers )
                        {
                                //TODO: Send player the poker join gump
                                from.CloseGump( typeof( PokerJoinGump ) );
                                from.SendGump( new PokerJoinGump( from, m_Game ) );
                        }
                }
 
                public override void OnDelete()
                {
                        List<PokerPlayer> toRemove = new List<PokerPlayer>();
 
                        foreach ( PokerPlayer player in m_Game.Players.Players )
                                if ( player.Mobile != null )
                                        toRemove.Add( player );
 
                        for ( int i = 0; i < toRemove.Count; ++i )
                        {
                                toRemove[i].Mobile.SendMessage( 0x22, "The poker dealer has been deleted, and you are now being removed from the poker game and being refunded the money that you currently have." );
                                m_Game.RemovePlayer( toRemove[i] );
                        }
 
                        base.OnDelete();
                }
 
                public static void PokerKick_OnCommand( CommandEventArgs e )
                {
                        Mobile from = e.Mobile;
 
                        if ( from == null )
                                return;
 
                        foreach ( Mobile m in from.GetMobilesInRange( 0 ) )
                        {
                                if ( m is PlayerMobile )
                                {
                                        PlayerMobile pm = (PlayerMobile)m;
 
                                        PokerGame game = pm.PokerGame;
 
                                        if ( game != null )
                                        {
                                                PokerPlayer player = game.GetPlayer( m );
 
                                                if ( player != null )
                                                {
                                                        game.RemovePlayer( player );
                                                        from.SendMessage( "They have been removed from the poker table" );
                                                        return;
                                                }
                                        }
                                }
                        }
 
                        from.SendMessage( "No one found to kick from a poker table. Make sure you are standing on top of them." );
                }
 
                static void EventSink_Disconnected( DisconnectedEventArgs e )
                {
                        Mobile from = e.Mobile;
 
                        if ( from == null )
                                return;
 
                        if ( from is PlayerMobile )
                        {
                                PlayerMobile pm = (PlayerMobile)from;
 
                                PokerGame game = pm.PokerGame;
 
                                if ( game != null )
                                {
                                        PokerPlayer player = game.GetPlayer( from );
 
                                        if ( player != null )
                                                game.RemovePlayer( player );
                                }
                        }
                }
 
        // tissemand add:
        private class DealerTarget : Target
        {
            public DealerTarget()
                : base(10, false, TargetFlags.None)
            {
            }
 
            protected override void OnTarget(Mobile from, object target)
            {
                if ( !(target is PokerDealer) )
                {
                    from.SendMessage("That isn't a poker dealer!");
                    return;
                }
 
                PokerDealer dealer = (PokerDealer)target;
                if (dealer.AddPokerSeat(from, from.Location))
                {
                    // add a stool just because :3
                    Stool stool = new Stool();
                    stool.Visible = false;
                    stool.Movable = false;
                    stool.MoveToWorld(from.Location, from.Map);
 
                    from.SendMessage(0x22, "A new seat was successfully created.");
                }
                else
                    from.SendMessage(0x22, "There is no more room at that table for another seat. Try increasing the value of MaxPlayers first.");
            }
        }
 
        // tissemand edit:
                public static void AddPokerSeat_OnCommand( CommandEventArgs e )
                {
                        Mobile from = e.Mobile;
 
                        if ( from == null )
                                return;
 
            from.SendMessage(0x22, "Please select the dealer.");
 
            from.Target = new DealerTarget();
 
                }
 
        // tisseemand edit... why was this return type of int? bool has better logic imo
                public bool AddPokerSeat( Mobile from, Point3D seat )
                {
                        if ( m_Seats.Count >= m_MaxPlayers )
                                return false;
 
                        m_Seats.Add( seat );
                        return true;
                }
 
                public bool SeatTaken( Point3D seat )
                {
                        for ( int i = 0; i < m_Game.Players.Count; ++i )
                                if ( m_Game.Players[i].Seat == seat )
                                        return true;
 
                        return false;
                }
 
                public int RakeGold( int gold )
                {
                        double amount = gold * m_Rake;
                        return (int)( amount > m_RakeMax ? m_RakeMax : amount );
                }
 
                public PokerDealer( Serial serial )
                        : base( serial )
                {
                }
 
                public override void Serialize( GenericWriter writer )
                {
                        base.Serialize( writer );
 
                        writer.Write( (int)0 ); //version
 
                        writer.Write( m_Active );
                        writer.Write( m_SmallBlind );
                        writer.Write( m_BigBlind );
                        writer.Write( m_MinBuyIn );
                        writer.Write( m_MaxBuyIn );
                        writer.Write( m_ExitLocation );
                        writer.Write( m_ExitMap );
                        writer.Write( m_Rake );
                        writer.Write( m_RakeMax );
                        writer.Write( m_MaxPlayers );
 
                        writer.Write( m_Seats.Count );
 
                        for ( int i = 0; i < m_Seats.Count; ++i )
                                writer.Write( m_Seats[i] );
                }
 
                public override void Deserialize( GenericReader reader )
                {
                        base.Deserialize( reader );
 
                        int version = reader.ReadInt();
 
                        switch ( version )
                        {
                                case 0:
                                        m_Active = reader.ReadBool();
                                        m_SmallBlind = reader.ReadInt();
                                        m_BigBlind = reader.ReadInt();
                                        m_MinBuyIn = reader.ReadInt();
                                        m_MaxBuyIn = reader.ReadInt();
                                        m_ExitLocation = reader.ReadPoint3D();
                                        m_ExitMap = reader.ReadMap();
                                        m_Rake = reader.ReadDouble();
                                        m_RakeMax = reader.ReadInt();
                                        m_MaxPlayers = reader.ReadInt();
 
                                        int count = reader.ReadInt();
                                        m_Seats = new List<Point3D>();
 
                                        for ( int i = 0; i < count; ++i )
                                                m_Seats.Add( reader.ReadPoint3D() );
 
                                        break;
                        }
 
                        m_Game = new PokerGame( this );
                }
 
                public class JackpotInfo
                {
                        private List<PokerPlayer> m_Winners;
                        private ResultEntry m_Hand;
                        private DateTime m_Date;
 
                        public List<PokerPlayer> Winners { get { return m_Winners; } }
                        public ResultEntry Hand { get { return m_Hand; } }
                        public DateTime Date { get { return m_Date; } }
 
                        public JackpotInfo( List<PokerPlayer> winners, ResultEntry hand, DateTime date )
                        {
                                m_Winners = winners;
                                m_Hand = hand;
                                m_Date = date;
                        }
                }
        }
}
 

pooka01

Sorceror
you will probably have to replace every pokerdealers in the server idf you do:
Code:
                public override void Serialize( GenericWriter writer )
                 {
                         base.Serialize( writer );
  
                         writer.Write( (int)0 ); //version
  
                         writer.Write( m_Active );
                         writer.Write( m_SmallBlind );
                         writer.Write( m_BigBlind );
                         writer.Write( m_MinBuyIn );
                         writer.Write( m_MaxBuyIn );
                         writer.Write( m_ExitLocation );
                         writer.Write( m_ExitMap );
                         writer.Write( m_Rake );
                         writer.Write( m_RakeMax );
                         writer.Write( m_MaxPlayers );
    writer.Write( m_Jackpot );
  
                         writer.Write( m_Seats.Count );
  
                         for ( int i = 0; i < m_Seats.Count; ++i )
                                 writer.Write( m_Seats[i] );
                 }
  public override void Deserialize( GenericReader reader )
                 {
                         base.Deserialize( reader );
  
                         int version = reader.ReadInt();
  
                         switch ( version )
                         {
                                 case 0:
                                         m_Active = reader.ReadBool();
                                         m_SmallBlind = reader.ReadInt();
                                         m_BigBlind = reader.ReadInt();
                                         m_MinBuyIn = reader.ReadInt();
                                         m_MaxBuyIn = reader.ReadInt();
                                         m_ExitLocation = reader.ReadPoint3D();
                                         m_ExitMap = reader.ReadMap();
                                         m_Rake = reader.ReadDouble();
                                         m_RakeMax = reader.ReadInt();
                                         m_MaxPlayers = reader.ReadInt();
      m_Jackpot = reader.ReadInt();
  
                                         int count = reader.ReadInt();
                                         m_Seats = new List<Point3D>();
  
                                         for ( int i = 0; i < count; ++i )
                                                 m_Seats.Add( reader.ReadPoint3D() );
  
                                         break;
                         }
  
                         m_Game = new PokerGame( this );
                 }

but if this is not an option for you, you might use:
Code:
                public override void Serialize( GenericWriter writer )
                 {
                         base.Serialize( writer );
  
                         writer.Write( (int)1 ); //version -- changed to 1 to save the jackpot amount.
  
                         writer.Write( m_Jackpot );
 
                         writer.Write( m_Active );
                         writer.Write( m_SmallBlind );
                         writer.Write( m_BigBlind );
                         writer.Write( m_MinBuyIn );
                         writer.Write( m_MaxBuyIn );
                         writer.Write( m_ExitLocation );
                         writer.Write( m_ExitMap );
                         writer.Write( m_Rake );
                         writer.Write( m_RakeMax );
                         writer.Write( m_MaxPlayers );
  
                         writer.Write( m_Seats.Count );
  
                         for ( int i = 0; i < m_Seats.Count; ++i )
                                 writer.Write( m_Seats[i] );
                 }
  public override void Deserialize( GenericReader reader )
                 {
                         base.Deserialize( reader );
  
                         int version = reader.ReadInt();
  
                         switch ( version )
                         {
                                 case 1:
                                         m_Jackpot = reader.ReadInt();
                                         break;
                                 case 0:
                                         m_Active = reader.ReadBool();
                                         m_SmallBlind = reader.ReadInt();
                                         m_BigBlind = reader.ReadInt();
                                         m_MinBuyIn = reader.ReadInt();
                                         m_MaxBuyIn = reader.ReadInt();
                                         m_ExitLocation = reader.ReadPoint3D();
                                         m_ExitMap = reader.ReadMap();
                                         m_Rake = reader.ReadDouble();
                                         m_RakeMax = reader.ReadInt();
                                         m_MaxPlayers = reader.ReadInt();
  
                                         int count = reader.ReadInt();
                                         m_Seats = new List<Point3D>();
  
                                         for ( int i = 0; i < count; ++i )
                                                 m_Seats.Add( reader.ReadPoint3D() );
  
                                         break;
                         }
  
                         m_Game = new PokerGame( this );
                 }
 
thank u :p
really close now

still saying "currently no Jackpots" after restart

But

before this change the Jackpot always had 200gp after the test Hand

got it set that with these ammounts i test 200gp goes into the Jackpot
with ur Code the board now Shows a Jackpot of 800 insteed of 200 after 1 Hand is played.

why the Jackpot is hidden before something new goes into it after serverrestart ?



PS

got the first code block
tested the second before but it said cant use case after another
 

pooka01

Sorceror
Oh woups, my bad, put case 1: under the break; of the case 0:
as follows:
Code:
switch ( version )
                         {
                                  case 0:
                                         m_Active = reader.ReadBool();
                                         m_SmallBlind = reader.ReadInt();
                                         m_BigBlind = reader.ReadInt();
                                         m_MinBuyIn = reader.ReadInt();
                                         m_MaxBuyIn = reader.ReadInt();
                                         m_ExitLocation = reader.ReadPoint3D();
                                         m_ExitMap = reader.ReadMap();
                                         m_Rake = reader.ReadDouble();
                                         m_RakeMax = reader.ReadInt();
                                         m_MaxPlayers = reader.ReadInt();
  
                                         int count = reader.ReadInt();
                                         m_Seats = new List<Point3D>();
  
                                         for ( int i = 0; i < count; ++i )
                                                 m_Seats.Add( reader.ReadPoint3D() );
   
                                     break;
                                     case 1:
                                         m_Jackpot = reader.ReadInt();
                                     break;
                          }
By the way, open the server with these codes, then set the jackpot, save the server then re-open it, and look at the amount.
In theory this should work right.
 
hm now starts fine compile no Problem
but after everything is set and i restart
i get this

an error was encountered while loading a saved object

-type: server.poker.pokerdealer

- serial: 0x00000108

delete the object y/n


whatever i choose Server crash
 

pooka01

Sorceror
Hm, i guess the edit i suggested was wrong...
Go in the backups folder, take the second backup,
and replace the actual save by that.

Then change writer.Write( (int)1 );
to
writer.Write( (int)0 );

Compile the script, save the server, and reboot the server, if it stills asks you for deleting things don't go further and repost.
If it worked, save the server, close it, then switch back
writer.Write( (int)0 ); -> to -> writer.Write( (int)1 );

and recompile/save server/close/reboot.
If it worked, then it worked!
 
adding dealer and board works then restart works fine
but after props the dealer and set him to aktiv the message occours again after restart
 

pooka01

Sorceror
Would removing all the boards and delears from the map be a problem?
If not, just put everything in case 0, and set version to 0, then replace every boards and dealers you added.
i think that would be less of a headache xD
 
thanks

seems to work the Gold ammount is there after restart
but it doesnt save the current lead Hand to win the Jackpot after restart
 

pooka01

Sorceror
Theorically players should not still be in the poker table when the server restarts right?

in static void EventSink_Disconnected( DisconnectedEventArgs e )
it kicks out players when they get disconnected, so theorically, they ca't still be playing :/
if ( player != null )
game.RemovePlayer( player );

Also i don't get what you mean by current load hand to win the jackpot, what attribute would that be in your script?

and lol Dian... xD
 

Dian

Sorceror
but it doesnt save the current lead Hand to win the Jackpot after restart

That might be tricky, as you would need to have the hands also stored/saved both through serialization as well, like how the jackpot was done. The way it is as you found, once a hand is dealt, thats that. nothing saved nothing stored, so if server go's down, restarts or I assume if you leave game before its been finished, all is lost beyond the jackpot.
 

pooka01

Sorceror
Also just to be sure, what happens if you close the server with a jackpot saved, then playing the game back, will that reset the jackpot to 0?
 
no the Gold ammout stay saved seems ok now
but the board tells on click for exampel:

The jackpot is 2.800 gold. "playername" leads with two pairs: sixs and fives

after restart the Gold ammount is there but no lead Hand and if i start a new round
the Gold ammount increase in total but the lead Hand is gone and then another Player get on the board may with K high or something whatever its not saved
 

pooka01

Sorceror
JackpotWinners.Hand
looks like it is what needs to be "stored"

storing JackpotWinners would by effect store Hand, as it is contained in what it stored.
I'm just unsure of how to serialise it.

serialise
writer.Write( m_JackpotWinners );

deserialise
m_JackpotWinners = (JackpotInfo)reader.ReadClass();

this might work.
 
writer.Write( m_JackpotWinners ); Argument 1 cant konvert in string from Server.poker.pokerdealer.jackpotinfo

m_JackpotWinners = (JackpotInfo)reader.ReadClass(); Server.GenericReader dont have a Definition for ReadClass
 
Top