コード例 #1
0
ファイル: L2Citizen.cs プロジェクト: gitter-badger/L2dotNET
        public virtual void onDialog(L2Player player, int ask, int reply)
        {
            player.FolkNpc = this;

            AIProcessor.TalkedReply(player, ask, reply);
            return;

            if (ask > 0 && ask < 1000)
            {
                QuestManager.getInstance().onQuestTalk(player, this, ask, reply);
                return;
            }

            AITemplate t = AIManager.getInstance().checkDialogResult(Template.NpcId);

            if (t != null)
            {
                t.onDialog(player, ask, reply, this);
                return;
            }

            switch (ask)
            {
            case -1:
                switch (reply)
                {
                case 8:
                    player.sendPacket(new ExBuySellList_Buy(player.getAdena()));
                    player.sendPacket(new ExBuySellList_Sell(player));
                    break;

                default:
                    NpcData.getInstance().buylist(player, this, (short)reply);
                    break;
                }
                break;

            case -3:
                grandmaster_total.onReply(player, reply, this);
                break;

            case -19:     //нобл запрос
                switch (reply)
                {
                case 0:
                case 1:
                    player.ShowHtm(player.Noblesse == 1 ? "fornobless.htm" : "fornonobless.htm", this);
                    break;
                }
                break;

            case -20:     //нобл запрос
                switch (reply)
                {
                case 2:
                    NpcData.getInstance().RequestTeleportList(this, player, 2);
                    break;
                }
                break;

            case -21:     //нобл запрос
                switch (reply)
                {
                case 2:
                    NpcData.getInstance().RequestTeleportList(this, player, 3);
                    break;
                }
                break;

            case -22:     //нобл запрос
                switch (reply)
                {
                case 2:
                    NpcData.getInstance().RequestTeleportList(this, player, 1);
                    break;
                }
                break;

            case -303:
                MultiSell.getInstance().showList(player, this, reply);
                break;

            case -305:
                switch (reply)
                {
                case 1:
                    //  NpcData.getInstance().multisell(player, this, reply); //TEST
                    break;
                }
                break;

            case -1000:
            {
                switch (reply)
                {
                case 1:
                    //See the lord and get the tax rate information
                    break;
                }
            }
            break;
            }
        }
コード例 #2
0
        public override void run()
        {
            L2Player player = getClient().CurrentPlayer;

            if (_amount < 0)
            {
                _amount = 1;
            }

            if (player.LastRequestedMultiSellId != _listId)
            {
                player.sendMessage("You are not authorized to use this list now.");
                player.sendActionFailed();
                return;
            }

            MultiSellList list = null;

            if (player.CustomMultiSellList != null)
            {
                list = player.CustomMultiSellList;
                if (list.id != _listId)
                {
                    list = MultiSell.getInstance().getList(_listId);
                }
            }
            else
            {
                list = MultiSell.getInstance().getList(_listId);
            }

            if (list == null || list.container.Count < _entryId)
            {
                player.sendSystemMessage(1802);//The attempt to trade has failed.
                player.sendActionFailed();
                return;
            }

            MultiSellEntry entry = list.container[_entryId];

            bool ok = true;

            foreach (MultiSellItem i in entry.take)
            {
                if (i.id > 0)
                {
                    if (!player.hasItem(i.id, i.count))
                    {
                        ok = false;
                        break;
                    }
                }
                else
                {
                    switch (i.id)
                    {
                    case -100:     //pvppoint
                        if (player.Fame < i.count * _amount)
                        {
                            ok = false;
                        }
                        break;
                    }
                }
            }

            if (!ok)
            {
                player.sendSystemMessage(701);//You do not have enough required items.
                player.sendActionFailed();
                return;
            }

            foreach (MultiSellItem i in entry.take)
            {
                if (i.l2item != null)
                {
                    player.Inventory.destroyItem(i.l2item, 1, true, true);
                }
                else
                {
                    if (i.id > 0)
                    {
                        player.Inventory.destroyItem(i.id, i.count, true, true);
                    }
                    else
                    {
                        switch (i.id)
                        {
                        case -100:     //pvppoint
                            break;
                        }
                    }
                }
            }

            foreach (MultiSellItem i in entry.give)
            {
                if (i.id > 0)
                {
                    if (i.l2item != null)
                    {
                        L2Item item = new L2Item(i.template);
                        item.Enchant = i.l2item.Enchant;
                        player.Inventory.addItem(item, true, true);
                    }
                    else
                    {
                        if (i.template.isStackable())
                        {
                            player.Inventory.addItem(i.id, i.count * _amount, i.enchant, true, true);
                        }
                        else
                        {
                            player.Inventory.addItem(i.id, 1, i.enchant, true, true);
                        }
                    }
                }
                else
                {
                    switch (i.id)
                    {
                    case -100:     //pvppoint
                        break;
                    }
                }
            }

            player.sendSystemMessage(1656);//You have successfully traded the item with the NPC.
        }
コード例 #3
0
        public void Start()
        {
            Console.Title = "L2dotNET Gameserver";

            CLogger.form();
            Cfg.init("all");

            CharTemplateTable.Instance.Initialize();

            NetworkBlock.Instance.Initialize();
            GameTime.Instance.Initialize();

            IdFactory.Instance.Initialize();

            L2World.Instance.Initialize();

            MapRegionTable.Instance.Initialize();
            ZoneTable.Instance.Initialize();

            NpcTable.Instance.Initialize();
            NpcData.getInstance();
            //  SpawnTable.getInstance();

            //  TSkillTable.getInstance();
            ItemTable.getInstance();
            ItemHandler.getInstance();
            MultiSell.getInstance();
            Capsule.getInstance();
            RecipeTable.getInstance();

            AIManager.getInstance();

            BlowFishKeygen.GenerateKeys();
            CLogger.info("Generated 20 Blowfish Keys");

            AdminAccess.Instance.Initialize();;

            QuestManager.getInstance();

            AnnouncementManager.Instance.Initialize();

            AllianceTable.getInstance();
            ClanTable.getInstance();

            CLogger.info("NpcServer: ");
            StaticObjTable.Instance.Initialize();
            MonsterRace.Instance.Initialize();
            //  SpawnTable.getInstance().Spawn();
            StructureTable.Instance.Initialize();

            HtmCache.Instance.Initialize();

            AuthThread.Instance.Initialize();

            //   GeoData.getInstance();

            CLogger.extra_info("Listening Gameservers on port " + Cfg.SERVER_PORT);
            _listener = new TcpListener(IPAddress.Any, Cfg.SERVER_PORT);
            _listener.Start();

            TcpClient clientSocket = default(TcpClient);

            while (true)
            {
                clientSocket = _listener.AcceptTcpClient();
                Accept(clientSocket);
            }
        }
コード例 #4
0
ファイル: AA_range.cs プロジェクト: R4zvan/L2dotNET
        protected internal override void use(L2Player admin, string alias)
        {
            //  double dis = Calcs.calculateDistance(admin, admin._currentTarget, true);
            //  admin.sendMessage("dis "+dis);

            //  foreach (L2SkillCoolTime ct in admin._reuse.Values)
            //  {
            //      ct.forcedStop();
            //  }
            //  admin._reuse.Clear();
            //  admin.updateReuse();

            string s = alias.Split(' ')[1];

            if (s == "1")
            {
                admin.AbnormalBitMaskEvent = int.Parse(alias.Split(' ')[2]);
                admin.updateAbnormalEventEffect();
            }
            else if (s == "2")
            {
                int listid = int.Parse(alias.Split(' ')[2]);
                MultiSell.getInstance().showList(admin, null, listid);
            }
            else if (s == "4")
            {
                FortressOfTheDead d = new FortressOfTheDead();
                d.start();
            }
            else if (s == "5")
            {
                if (np == null)
                {
                    int[] x = new int[] { -81166, -80913, -81952, -82554 };
                    int[] y = new int[] { 245118, 246031, 246551, 245619 };
                    np = new ZoneNPoly(x, y, -3727, -3727);
                }

                int count = int.Parse(alias.Split(' ')[2]);

                for (int i = 0; i < count; i++)
                {
                    int[] rloc = this.rndXYZ();
                    // NpcTable.getInstance().spawnNpc("lector", rloc[0], rloc[1], rloc[3], new Random().Next(65000));
                }
            }
            else if (s == "6")
            {
                L2Citizen npc = (L2Citizen)admin.CurrentTarget;
                if (npc.Template.DropData == null)
                {
                    admin.sendMessage("no drops at this npc");
                }
                else
                {
                    npc.Template.DropData.showInfo(admin);
                }
            }
            else if (s == "7")
            {
                L2Citizen npc = (L2Citizen)admin.CurrentTarget;
                if (npc.Template.DropData == null)
                {
                    admin.sendMessage("no drops at this npc");
                }
                else
                {
                    npc.Template.roll_drops(npc, admin);
                }
            }
            else if (s == "8")
            {
                L2Citizen npc = (L2Citizen)admin.CurrentTarget;
                if (npc.Template.DropData == null)
                {
                    admin.sendMessage("no drops at this npc");
                }
                else
                {
                    npc.doDie(admin, false);
                    npc.Template.roll_drops(npc, admin);
                }
            }
            else if (s == "9")
            {
                admin.destx = admin.X + 200;
                admin.desty = admin.Y + 200;
                admin.destz = admin.Z;
                admin.sendPacket(new CharMoveToLocation(admin));
            }
            else if (s == "11")
            {
                admin.Boat.destx   = -121385;
                admin.Boat.desty   = 261660;
                admin.Boat.destz   = -3610;
                admin.Boat.OnRoute = true;
                admin.Boat.broadcastPacket(new VehicleStarted(admin.Boat.ObjID, 1));
                admin.Boat.broadcastPacket(new VehicleDeparture(admin.Boat, 400, 1800));
            }
            else if (s == "12")
            {
                L2Boat boat = new L2Boat();
                boat.X = -96622;
                boat.Y = 261660;
                boat.Z = -3610;

                L2World.Instance.RealiseEntry(boat, null, true);
                boat.onSpawn();
            }
            else if (s == "13")
            {
                MonsterRace.Instance.startRace();
            }
            else if (s == "17")
            {
                admin.Mount(NpcTable.Instance.getNpcTemplate(13146));
            }
            else if (s == "18")
            {
                int count = int.Parse(alias.Split(' ')[2]);
                TransformManager.getInstance().transformTo(count, admin, 30);
            }
            else if (s == "19")
            {
                admin.sstt = int.Parse(alias.Split(' ')[2]);
                admin.broadcastUserInfo();
            }
            else if (s == "20")
            {
                int sx = int.Parse(alias.Split(' ')[2]);
                admin.broadcastPacket(new MagicSkillUse(admin, admin, sx, 1, 0));
            }
            else if (s == "21")
            {
                int sx = int.Parse(alias.Split(' ')[2]);
                admin.broadcastPacket(new MagicSkillUse(admin, admin, 261, 1, 1000, sx));
                adm = admin;
                if (t == null)
                {
                    t          = new System.Timers.Timer();
                    t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
                }

                t.Interval = 900;
                t.Enabled  = true;
            }
            else if (s == "22")
            {
                adm = admin;
                L2Warrior war = (L2Warrior)NpcTable.Instance.spawnNpc(21003, 14107, 182287, -3586, 32500);

                war.destx = 13107;
                war.desty = 182287;
                war.destz = -3586;
                admin.sendPacket(new CharMoveToLocation(war));
                war.dtstart = DateTime.Now;
                admin.ChangeTarget(war);

                if (t == null)
                {
                    t          = new System.Timers.Timer();
                    t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);
                }

                t.Interval = 2000 * 12;
                t.Enabled  = true;
            }
            // admin._privateStoreType = byte.Parse(alias.Split(' ')[1]);
            // admin.broadcastUserInfo();


            // int val = int.Parse(alias.Split(' ')[1]);

            //  StatusUpdate su = new StatusUpdate(admin);
            //  su.add(val, 5000);
            //  admin.sendPacket(su);
        }
コード例 #5
0
        public override void TalkedReply(L2Player talker, int ask, int reply)
        {
            if (ask == -1)
            {
                switch (reply)
                {
                case 0: NpcData.getInstance().buylist(talker, myself, 0);
                    break;

                case 1: NpcData.getInstance().buylist(talker, myself, 1);
                    break;

                case 2: NpcData.getInstance().preview(talker, myself, 2);
                    break;

                case 3: NpcData.getInstance().preview(talker, myself, 3);
                    break;

                case 4: NpcData.getInstance().buylist(talker, myself, 4);
                    break;

                case 5: NpcData.getInstance().buylist(talker, myself, 5);
                    break;

                case 6: NpcData.getInstance().preview(talker, myself, 6);
                    break;

                case 7: NpcData.getInstance().preview(talker, myself, 7);
                    break;

                case 8:
                    talker.sendPacket(new ExBuySellList_Buy(talker.getAdena()));
                    talker.sendPacket(new ExBuySellList_Sell(talker));
                    break;
                }
            }
            else if (ask == -506)
            {
                MultiSell.getInstance().showList(talker, myself, 212);
            }
            else if (ask == -507)
            {
                MultiSell.getInstance().showList(talker, myself, 221);
            }
            else if (ask == -510)
            {
                if (reply == 1)
                {
                    if (talker.Level < 40)
                    {
                        talker.ShowHtm("reflect_weapon_none.htm", myself);
                    }
                    else if (talker.Level >= 40 && talker.Level < 46)
                    {
                        talker.ShowHtm("reflect_weapon_d.htm", myself);
                    }
                    else if (talker.Level >= 46 && talker.Level < 52)
                    {
                        talker.ShowHtm("reflect_weapon_c.htm", myself);
                    }
                    else if (talker.Level >= 52)
                    {
                        talker.ShowHtm("reflect_weapon_b.htm", myself);
                    }
                }
            }
            else
            {
                base.TalkedReply(talker, ask, reply);
            }
        }
コード例 #6
0
ファイル: citizen.cs プロジェクト: gitter-badger/L2dotNET
        public override void TalkedReply(L2Player talker, int ask, int reply)
        {
            if (ask == -1000)
            {
                if (reply == 0)
                {
                    talker.ShowHtm(GetDialog("fnHi"), myself);
                }
                else if (reply == 1)
                {
                    NpcHtmlMessage htm = new NpcHtmlMessage(talker, GetDialog(myself.residenceId > 0 ? "fnFeudInfo" : "fnNoFeudInfo"), myself.ObjID);

                    if (myself.residenceId > 0)
                    {
                        Castle castle = CastleManager.getInstance().get(myself.residenceId);
                        htm.replace("<?my_pledge_name?>", castle.OwningClanName);
                        htm.replace("<?my_owner_name?>", castle.OwningPlayerName);
                        htm.replace("<?current_tax_rate?>", (int)castle.Tax);
                    }

                    htm.replace("<?kingdom_name?>", FString.getInstance().get(myself.residenceId < 7 ? 1001000 : 1001100));
                    htm.replace("<?feud_name?>", FString.getInstance().get(myself.residenceId + 1001000));

                    talker.sendPacket(htm);
                }
            }
            else if (ask == -303)
            {
                if (reply == 579)
                {
                    if (talker.Level > 40 && talker.Level < 46)
                    {
                        MultiSell.getInstance().showList(talker, myself, reply);
                    }
                }
                else if (reply == 580)
                {
                    if (talker.Level >= 46 && talker.Level < 52)
                    {
                        MultiSell.getInstance().showList(talker, myself, reply);
                    }
                }
                else if (reply == 581)
                {
                    if (talker.Level >= 52)
                    {
                        MultiSell.getInstance().showList(talker, myself, reply);
                    }
                }
                else
                {
                    MultiSell.getInstance().showList(talker, myself, reply);
                }
            }
            else if (ask == -503)
            {
                if (reply == 100)
                {
                    ShowVariationMakeWindow(talker);
                }
                else if (reply == 200)
                {
                    ShowVariationCancelWindow(talker);
                }
            }
            else if (ask == -601)
            {
                if (reply == 0)
                {
                    if (!talker.hasAllOfThisItems(8957, 8958, 8959))
                    {
                        talker.ShowHtm("welcomeback003.htm", myself);
                    }
                    else
                    {
                        talker.ShowHtm("welcomeback004.htm", myself);
                    }
                }
                else if (reply == 0)
                {
                    if (!talker.hasAllOfThisItems(8957, 8958, 8959))
                    {
                        talker.ShowHtm("welcome_lin2_cat002.htm", myself);
                    }
                    else
                    {
                        talker.ShowHtm("welcome_lin2_cat004.htm", myself);
                    }
                }
                else if (reply == 2)
                {
                    if (talker.Level < 20)
                    {
                        MultiSell.getInstance().showList(talker, myself, 583);
                    }
                    else if (talker.Level >= 20 && talker.Level < 40)
                    {
                        MultiSell.getInstance().showList(talker, myself, 584);
                    }
                    else if (talker.Level >= 40 && talker.Level < 52)
                    {
                        MultiSell.getInstance().showList(talker, myself, 585);
                    }
                    else if (talker.Level >= 52 && talker.Level < 61)
                    {
                        MultiSell.getInstance().showList(talker, myself, 586);
                    }
                    else if (talker.Level >= 61 && talker.Level < 76)
                    {
                        MultiSell.getInstance().showList(talker, myself, 587);
                    }
                    else if (talker.Level >= 76)
                    {
                        MultiSell.getInstance().showList(talker, myself, 588);
                    }
                }
                else if (reply == 3)
                {
                    if (talker.Level < 20)
                    {
                        MultiSell.getInstance().showList(talker, myself, 589);
                    }
                    else if (talker.Level >= 20 && talker.Level < 40)
                    {
                        MultiSell.getInstance().showList(talker, myself, 590);
                    }
                    else if (talker.Level >= 40 && talker.Level < 52)
                    {
                        MultiSell.getInstance().showList(talker, myself, 591);
                    }
                    else if (talker.Level >= 52 && talker.Level < 61)
                    {
                        MultiSell.getInstance().showList(talker, myself, 592);
                    }
                    else if (talker.Level >= 61 && talker.Level < 76)
                    {
                        MultiSell.getInstance().showList(talker, myself, 593);
                    }
                    else if (talker.Level >= 76)
                    {
                        MultiSell.getInstance().showList(talker, myself, 594);
                    }
                }
                else if (reply == 4)
                {
                    if (talker.Level < 20)
                    {
                        MultiSell.getInstance().showList(talker, myself, 595);
                    }
                    else if (talker.Level >= 20 && talker.Level < 40)
                    {
                        MultiSell.getInstance().showList(talker, myself, 596);
                    }
                    else if (talker.Level >= 40 && talker.Level < 52)
                    {
                        MultiSell.getInstance().showList(talker, myself, 597);
                    }
                    else if (talker.Level >= 52 && talker.Level < 61)
                    {
                        MultiSell.getInstance().showList(talker, myself, 598);
                    }
                    else if (talker.Level >= 61 && talker.Level < 76)
                    {
                        MultiSell.getInstance().showList(talker, myself, 601);
                    }
                    else if (talker.Level >= 76)
                    {
                        MultiSell.getInstance().showList(talker, myself, 600);
                    }
                }
            }
        }