Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа со скриптами (https://forum.zone-game.info/forumdisplay.php?f=37)
-   -   AI скрипт (https://forum.zone-game.info/showthread.php?t=9763)

nikitawasa 22.08.2010 15:33

AI скрипт
 
У меня появилась задумка сделать лестничных мобов т.е. убил моба одного за место его появился моб с другим ид и т.д у меня такая проблема:
1) значения в базе меняются т.е. скрипт работает но в игре при убийстве моба он респится снова со старых значений. Что надо добавить в скрипт, что бы значения из базы в игру обновлялись. (хз мб поможет думаю можно сделать по аналогу //respawnall, но у меня не получилось)

Сборка л2опен эпилог рева 900+(+ скока точно не помню)


Удаление из базы
Код:

        public void DeleteHeader(int spawnId)
        {
                        Connection con = null;
                        try
                        {
                                con = L2DatabaseFactory.getInstance().getConnection();
                                PreparedStatement statement = con.prepareStatement("DELETE FROM `spawnlist` WHERE (`id`=?)");
                                statement.setInt(1, spawnId);
                                statement.execute();
                                statement.close();
                        }
                        catch (Exception e)
                        {
                                _log.log(Level.WARNING, "SpawnTable: Could not store spawn in the DB:" + e.getMessage(), e);
                        }
                        finally
                        {
                                L2DatabaseFactory.close(con);
                        }
        }



Вставка в базу
Код:

        public void InsertHeader(int id, int spawnId)
        {
                        Connection con = null;
                        try
                        {
                                con = L2DatabaseFactory.getInstance().getConnection();
                                PreparedStatement statement = con.prepareStatement("INSERT INTO `spawnlist` (`id`, `location`, `count`, `npc_templateid`, `locx`, `locy`, `locz`, `randomx`, `randomy`, `heading`, `respawn_delay`, `loc_id`, `periodOfDay`) VALUES (?, '', '1', ?, '-82155', '152749', '-3179', '0', '0', '64055', '10', '0', '0')");
                                statement.setInt(1, spawnId);
                                statement.setInt(2, id);
                                statement.execute();
                                statement.close();
                        }
                        catch (Exception e)
                        {
                                _log.log(Level.WARNING, "SpawnTable: Could not store spawn in the DB:" + e.getMessage(), e);
                        }
                        finally
                        {
                                L2DatabaseFactory.close(con);
                        }
        }

onKill
Код:

        public String onKill(L2Npc npc, L2PcInstance player, boolean isPet)
        {
                int npcId = npc.getNpcId();
                int objId = npc.getObjectId();
                if (npcId == LEADER0_1)
                npc.broadcastPacket(new NpcSay(objId, 0, npcId, "I am very sad..."));
                DeleteHeader(6000, 10000);
                InsertHeader(6000, 10000);
                return "";
        }

надеюсь у кого нибудь мысли будут :D

GoodShadow 22.08.2010 16:08

Re: AI скрипт
 
Цитата:

Сообщение от nikitawasa (Сообщение 85029)
У меня появилась задумка сделать лестничных мобов т.е. убил моба одного за место его появился моб с другим ид и т.д у меня такая проблема:
1) значения в базе меняются т.е. скрипт работает но в игре при убийстве моба он респится снова со старых значений. Что надо добавить в скрипт, что бы значения из базы в игру обновлялись. (хз мб поможет думаю можно сделать по аналогу //respawnall, но у меня не получилось)

Сборка л2опен эпилог рева 900+(+ скока точно не помню)


Удаление из базы
Код:

        public void DeleteHeader(int spawnId)
        {
                        Connection con = null;
                        try
                        {
                                con = L2DatabaseFactory.getInstance().getConnection();
                                PreparedStatement statement = con.prepareStatement("DELETE FROM `spawnlist` WHERE (`id`=?)");
                                statement.setInt(1, spawnId);
                                statement.execute();
                                statement.close();
                        }
                        catch (Exception e)
                        {
                                _log.log(Level.WARNING, "SpawnTable: Could not store spawn in the DB:" + e.getMessage(), e);
                        }
                        finally
                        {
                                L2DatabaseFactory.close(con);
                        }
        }



Вставка в базу
Код:

        public void InsertHeader(int id, int spawnId)
        {
                        Connection con = null;
                        try
                        {
                                con = L2DatabaseFactory.getInstance().getConnection();
                                PreparedStatement statement = con.prepareStatement("INSERT INTO `spawnlist` (`id`, `location`, `count`, `npc_templateid`, `locx`, `locy`, `locz`, `randomx`, `randomy`, `heading`, `respawn_delay`, `loc_id`, `periodOfDay`) VALUES (?, '', '1', ?, '-82155', '152749', '-3179', '0', '0', '64055', '10', '0', '0')");
                                statement.setInt(1, spawnId);
                                statement.setInt(2, id);
                                statement.execute();
                                statement.close();
                        }
                        catch (Exception e)
                        {
                                _log.log(Level.WARNING, "SpawnTable: Could not store spawn in the DB:" + e.getMessage(), e);
                        }
                        finally
                        {
                                L2DatabaseFactory.close(con);
                        }
        }

onKill
Код:

        public String onKill(L2Npc npc, L2PcInstance player, boolean isPet)
        {
                int npcId = npc.getNpcId();
                int objId = npc.getObjectId();
                if (npcId == LEADER0_1)
                npc.broadcastPacket(new NpcSay(objId, 0, npcId, "I am very sad..."));
                DeleteHeader(6000, 10000);
                InsertHeader(6000, 10000);
                return "";
        }

надеюсь у кого нибудь мысли будут :D

А в Пагане такой ai ещё не реализован? :rolleyes:

nikitawasa 22.08.2010 20:36

Re: AI скрипт
 
Там такого не заметил, желательно конечно написать кусок кода (мб там слепой и не вижу).


Текущее время: 15:39. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot