Исключение! - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II

Lineage II
Дискуссии на тему создания, настройки и обслуживания серверов Lineage 2. При поддержке: Премиум услуги по рекламе

Ответ
Опции темы
Непрочитано 15.01.2013, 22:23   #1
Аватар для SkyWard
Олдфаг

Автор темы (Топик Стартер) Исключение!

Доброй ночи! Ребят подскажите как быть, не могу понять в чем проблема,
Код:
Config file server.ini loaded with 13 parameters.
Config file options.ini loaded with 11 parameters.
Config file rates.ini loaded with 3 parameters.
SkillTable: loaded 7451 skills, 523 enchants.
SkillTable: learnable 112 groups, #42773 skills.
ItemTable: #18096 items, #1 sets, #804 convertable.
Templates: loaded 102 player templates.
NetworkBlock: 0 blocks.
GameTime Controller: started 18:00 PM.
MySQL:  established
idfactory: used ids 1
l2world: 18496 regions done.
MapRegion: loaded 288 regions with 0 ids, resps 18
AreaTable: intercepted 380 regions with 50 zones
NpcTable: loaded #10079 NPC, #96 VIDs, 61815 drop items.
NpcData(Teleporter): loaded 44 npcs.
NpcData: loaded 1 merchants.
dublicate zone name rune09_2116_01
dublicate zone name rune09_2116_02
dublicate zone name rune09_2116_03
dublicate zone name rune09_2116_04
dublicate zone name rune09_2116_05
dublicate zone name rune09_2116_06
dublicate zone name rune09_2116_07
dublicate zone name rune09_2116_08
dublicate zone name rune09_2116_09
dublicate zone name rune09_2116_10
dublicate zone name rune09_2116_11
dublicate zone name rune09_2116_12
dublicate zone name rune09_2116_13
dublicate zone name rune09_2116_14
dublicate zone name rune09_2116_15
dublicate zone name rune09_2116_16
dublicate zone name rune09_2116_17
dublicate zone name rune09_2116_18
dublicate zone name rune09_2116_19
dublicate zone name rune09_2116_20
dublicate zone name rune09_2116_21
dublicate zone name rune09_2116_22
dublicate zone name rune09_2116_23
dublicate zone name rune09_2116_24
dublicate zone name rune09_2116_25
dublicate zone name schuttgart17_2114_21
System.TypeInitializationException: Инициализатор типа "game.tables.SpawnTable
" выдал исключение. ---> System.NullReferenceException: Ссылка на объект не указ
ывает на экземпляр объекта.
   в game.tables.SpawnTable.read(String path) в C:\Users\Sergey\Desktop\l2game
\l2game\game\tables\SpawnTable.cs:строка 86
   в game.tables.SpawnTable..ctor() в C:\Users\Sergey\Desktop\l2game\l2game\
game\tables\SpawnTable.cs:строка 24
   в game.tables.SpawnTable..cctor() в C:\Users\Sergey\Desktop\l2game\l2game\game\tables\SpawnTable.cs:строка 13
   --- Конец трассировки внутреннего стека исключений ---
   в game.tables.SpawnTable.getInstance()
   в game.GameServer..ctor() в C:\Users\Sergey\Desktop\l2game\l2game\game\GameServer.cs:строка 74
   в game.GameServer..cctor() в C:\Users\Sergey\Desktop\l2game\l2game\game\GameServer.cs:строка 26
сам код

Код:
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml.Linq;
using game.logger;
using game.model.npcs;
using game.world;

namespace game.tables
{
    public class SpawnTable
    {
        private static SpawnTable instance = new SpawnTable();
        public static SpawnTable getInstance()
        {
            return instance;
        }

        public readonly SortedList<string, L2Territory> territorries = new SortedList<string, L2Territory>();
        public readonly List<L2Spawn> spawns = new List<L2Spawn>();
        public SpawnTable()
        {
            foreach (string path in Directory.EnumerateFiles(@"scripts\spawn\", "*.xml"))
                read(path);

            CLogger.info("SpawnTable: Created " + territorries.Count+" territories with "+npcs+" monsters.");
        }

        private long npcs = 0;
        public void read(string path)
        { 
            XElement xml = XElement.Parse(File.ReadAllText(path));
            XElement ex = xml.Element("list");
            foreach (var m in ex.Elements())
            {
                if (m.Name == "territory")
                {
                    L2Territory zone = new L2Territory();
                    zone.name = m.Attribute("name").Value;
                    zone.controller = m.Attribute("controller").Value;
                    zone.start_active = bool.Parse(m.Attribute("start_active").Value);

                    foreach (var stp in m.Elements())
                    {
                        switch (stp.Name.LocalName)
                        {
                            case "npc":
                                int cnt = Convert.ToInt32(stp.Attribute("count").Value);
                                string pos = null;
                                if (stp.Attribute("pos") != null)
                                    pos = stp.Attribute("pos").Value;
                                zone.AddNpc(Convert.ToInt32(stp.Attribute("id").Value), cnt, stp.Attribute("respawn").Value, pos);
                                npcs += cnt;
                                break;
                            case "zone":
                                zone.AddPoint(stp.Attribute("loc").Value.Split(' '));
                                break;
                        }
                    }

                    zone.InitZone(); //создаем зону
                    if (territorries.ContainsKey(zone.name))
                        Console.WriteLine("dublicate zone name " + zone.name);
                    else
                        territorries.Add(zone.name, zone);
                }
                else if (m.Name == "spawn")
                {
                    foreach (var stp in m.Elements())
                    {
                        switch (stp.Name.LocalName)
                        {
                            case "npc":
                                {
                                    string respawn = stp.Attribute("respawn").Value;
                                    long value = Convert.ToInt32(respawn.Remove(respawn.Length - 1));
                                    if (respawn.Contains("s"))
                                        value *= 1000;
                                    else if (respawn.Contains("m"))
                                        value *= 60000;
                                    else if (respawn.Contains("h"))
                                        value *= 3600000;
                                    else if (respawn.Contains("d"))
                                        value *= 86400000;

                                    spawns.Add(new L2Spawn(Convert.ToInt32(stp.Attribute("id").Value), value, stp.Attribute("pos").Value.Split(' ')));
                                }
                                npcs++;
                                break;

                        }
                    }
                }
            }
        }

        bool nospawn = true;
        public void Spawn()
        {
            CLogger.extra_info("NpcServer spawn init.");
            if (nospawn)
            {
                CLogger.extra_info("NpcServer spawn done (blocked).");
                return;
            }
            long sp = 0;
            foreach (L2Territory t in territorries.Values)
            {
                sp += t.spawns.Count;
                t.Spawn();
            }

            sp += spawns.Count;
            foreach (L2Spawn s in spawns)
                s.init();

            CLogger.extra_info("NpcServer spawn done, #"+sp+" npcs.");
        }

        public void SunRise(bool y)
        {
            foreach (L2Territory t in territorries.Values)
                t.SunRise(y);

            foreach (L2Spawn s in spawns)
                s.SunRise(y);
        }

        public L2Object spawnOne(int id, int x, int y, int z, int h)
        {
            NpcTemplate template = NpcTable.getInstance().getNpcTemplate(id);

            L2Warrior o = new L2Warrior();
            o.setTemplate(template);
            //switch (template._type)
            //{
            //    case NpcTemplate.L2NpcType.warrior:
            //    case NpcTemplate.L2NpcType.zzoldagu:
            //    case NpcTemplate.L2NpcType.herb_warrior:
            //    case NpcTemplate.L2NpcType.boss:
            //        o = new L2Warrior();
            //        ((L2Warrior)o).setTemplate(template);
            //        break;

            //    default:
            //        o = new L2Citizen();
            //        ((L2Citizen)o).setTemplate(template);
            //        break;
            //}
            o.X = x;
            o.Y = y;
            o.Z = z;
            o.Heading = h;

            o.SpawnX = x;
            o.SpawnY = y;
            o.SpawnZ = z;

            L2World.getInstance().realiseEntry(o, null, true);
            o.onSpawn();

            return o;
        }
    }
}

проверял аргумент Add на Null, думал 1 из них возвращает Null, но вроде все норм! Вот и спрашиваю в чем проблема и как исправить!!!
SkyWard вне форума Отправить сообщение для SkyWard с помощью Skype™ Ответить с цитированием
Непрочитано 15.01.2013, 22:53   #2
Пользователь

По умолчанию Re: Исключение!

а с самой xml то все нормально?
x3k вне форума Ответить с цитированием
Непрочитано 15.01.2013, 22:57   #3
Аватар для SkyWard
Олдфаг

Автор темы (Топик Стартер) Re: Исключение!

ну вроде да, от pts freya!
SkyWard вне форума Отправить сообщение для SkyWard с помощью Skype™ Ответить с цитированием
Непрочитано 15.01.2013, 23:06   #4
Аватар для Deazer

По умолчанию Re: Исключение!

ну отчивидно же , что одинаковые зоны по имени. Поменяй их имя , те которые дублицируются , добавь в конце _1. У тебя "примари кейем" имя зоны , у ПТСки такого нет.
Deazer вне форума Ответить с цитированием
Непрочитано 16.01.2013, 02:07   #5
Аватар для bloodshed
Герой

По умолчанию Re: Исключение!

Проверь получение:
stp.Attribute("id")
stp.Attribute("pos")
__________________
bloodshed вне форума Отправить сообщение для bloodshed с помощью ICQ Отправить сообщение для bloodshed с помощью Skype™ Ответить с цитированием
Непрочитано 16.01.2013, 07:06   #6
Аватар для SkyWard
Олдфаг

Автор темы (Топик Стартер) Re: Исключение!

Цитата:
Сообщение от bloodshed Посмотреть сообщение
Проверь получение:
stp.Attribute("id")
stp.Attribute("pos")
да да, позже проверю....! Спс!
SkyWard вне форума Отправить сообщение для SkyWard с помощью Skype™ Ответить с цитированием
Непрочитано 19.01.2013, 10:58   #7
Аватар для SkyWard
Олдфаг

Автор темы (Топик Стартер) Re: Исключение!

Вроде бы все норм дохожу до создания перса, пишу ник, и тут выдает System.NullReferenceException!
Сама строка куда ссылается
Код:
if (cc.supMethod.Method <= SupMethod.SUB)
и сам класс
Код:
namespace c_game.model.skills2
{
    public class SupMethod
    {
        public byte Method;
        public double Value;

        public const byte ADD = 1;
        public const byte SUB = 2;
        public const byte MUL = 3;
        public const byte DIV = 4;
        public const byte OVR = 5;
    }
}

Последний раз редактировалось SkyWard; 19.01.2013 в 14:03.
SkyWard вне форума Отправить сообщение для SkyWard с помощью Skype™ Ответить с цитированием
Непрочитано 19.01.2013, 12:51   #8
Аватар для Sp1tfire
Участник

По умолчанию Re: Исключение!

Цитата:
Сообщение от KapkapoB Посмотреть сообщение
Вроде бы все норм дохожу до создания перса, пишу ник, и тут выдает System.NullReferenceException!
Сама строка куда ссылается
Код:
if (cc.supMethod.Method <= SupMethod.SUB)
и сам метод
Код:
namespace c_game.model.skills2
{
    public class SupMethod
    {
        public byte Method;
        public double Value;

        public const byte ADD = 1;
        public const byte SUB = 2;
        public const byte MUL = 3;
        public const byte DIV = 4;
        public const byte OVR = 5;
    }
}
какой же это метод? это клас.
проверяй инициализацию cc.
__________________
C# разработчики ваще лютая армия. Сейчас допишу коммент и пойду писать на C# для iOS
Sp1tfire вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


© 2007–2022 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 22:37. Часовой пояс GMT +3.

Вверх