All pastes #253505 Raw Edit

Mine

public text v1 · immutable
#253505 ·published 2006-11-20 20:37 UTC
rendered paste body
Item.cs OnSingleClick
            if (ns != null)
            {
                if (this.Name == null)
                {
                    if (m_Amount <= 1)
                        ns.Send(new AsciiMessage(this.m_Serial, this.m_ItemID, MessageType.Label, 0x3b2, 3, "", string.Format("{0} {1}", this.m_Amount, (ClilocTranslator.ClilocStringList[LabelNumber] as ClilocStringEntries).Singular)));
                    else

                        ns.Send(new AsciiMessage(this.m_Serial, this.m_ItemID, MessageType.Label, 0x3b2, 3, "", string.Format("{0} {1}", this.m_Amount, (ClilocTranslator.ClilocStringList[LabelNumber] as ClilocStringEntries).Plural)));
                }
                else
                {
                    if (m_Amount <= 1)
                        ns.Send(new AsciiMessage(m_Serial, m_ItemID, MessageType.Label, 0x3b2, 3, "", this.Name.ToLower()));
                    else
                    {
                        string toDisplay = string.Format("{0} {1}", this.m_Amount, this.Name.ToLower());

                        if (toDisplay[toDisplay.Length - 1] != 's')
                            toDisplay += "s";

                        ns.Send(new AsciiMessage(this.m_Serial, this.m_ItemID, MessageType.Label, 0x3b2, 3, "", toDisplay));
                    }
                }
            }















Cliloc to string

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.IO;
using System.Text.RegularExpressions;

namespace Server
{
    #region Ultima SDK code + mod

    public class StringList
    {
        private Hashtable m_Table;
        private string m_Language;

        public Hashtable Table { get { return m_Table; } }
        public string Language { get { return m_Language; } }

        private static byte[] m_Buffer = new byte[1024];

        public StringList(string language)
        {
            m_Language = language;
            m_Table = new Hashtable();

            string path = string.Format("{0}cliloc.{1}",ClilocTranslator.clientPath, language);

            if (path == null)
            {
                return;
            }

            using (BinaryReader bin = new BinaryReader(new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)))
            {
                bin.ReadInt32();
                bin.ReadInt16();

                while (bin.PeekChar() != -1)
                {
                    int number = bin.ReadInt32();

                    bin.ReadByte();
                    int length = bin.ReadInt16();

                    if (length > m_Buffer.Length)
                        m_Buffer = new byte[(length + 1023) & ~1023];

                    bin.Read(m_Buffer, 0, length);

                    m_Table[number] = new ClilocStringEntries(Encoding.UTF8.GetString(m_Buffer, 0, length));
                }
            }
        }
    }

    #endregion

    class ClilocTranslator
    {
        private static Hashtable clilocList;
        private static string language = "enu";

        public static string clientPath = "D:\\Program\\Ultima Online 2D\\";

        public static Hashtable ClilocStringList
        {
            get { return clilocList; }
            set { clilocList = value; }
        }

        public static void Start()
        {
            if (language == null || language == "")
                language = "enu";

            StringList sl = new StringList(language);

            clilocList = sl.Table;           
        }
    }

    public class ClilocStringEntries
    {
        string singular;
        string plural;

        public string Singular
        {
            get { return singular; }
            set { singular = value; }
        }

        public string Plural
        {
            get { return plural; }
            set { plural = value; }
        }

        public ClilocStringEntries(string clilocString)
        {
            if (clilocString.Contains("~"))
                clilocString = FormatVars(clilocString);

            singular = clilocString.ToLower();

            if (singular[singular.Length - 1] != 's')
                plural += "s";
        }

        public string FormatVars(string text)
        {
            Regex r = new Regex("~(.+?)~");
            MatchCollection mC = r.Matches(text);

            for (int i = 0; i < mC.Count; i++)
                text = text.Replace(mC[i].ToString(), string.Format("{{0}}",i));
         
            return text;
        }
    }
}