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

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Серверная часть (https://forum.zone-game.info/forumdisplay.php?f=148)
-   -   Дроп и скрипт для автоивента (https://forum.zone-game.info/showthread.php?t=17894)

Ajax52 27.01.2012 20:15

Дроп и скрипт для автоивента
 
в сборке knights ещё со времен экстремов присутствует автоивент, нпц в нем высавляются следующим образом

PHP код:

            eventnpc[0] = (NpcInstanceService.addNewSpawn(mapId1204510, (float) 505.083, (float) 522.940, (float) 1033.27, (byte103true);
            
eventnpc[1] = (NpcInstanceService.addNewSpawn(mapId1204510, (float) 493.386, (float) 523.142, (float) 1033.27, (byte95true);
            
eventnpc[2] = (NpcInstanceService.addNewSpawn(mapId1204510, (float) 478.550, (float) 522.938, (float) 1033.27, (byte119true);
            
eventnpc[3] = (NpcInstanceService.addNewSpawn(mapId1204510, (float) 494.086, (float) 543.000, (float) 1034.76, (byte29true);
            
eventnpc[4] = (NpcInstanceService.addNewSpawn(mapId1204510, (float) 493.904, (float) 535.081, (float) 1034.75, (byte90true);
            
eventnpc[5] = (NpcInstanceService.addNewSpawn(mapId1204510, (float) 486.043, (float) 522.754, (float) 1033.27, (byte89true);
            
eventnpc[6] = (NpcInstanceService.addNewSpawn(mapId1204510, (float) 515.335, (float) 523.375, (float) 1033.27, (byte91true); 

кто знает возможно ли прописать дроп именно в переменную типа eventnpc[6] помимо стандартного дропа.

PROGRAMMATOR 27.01.2012 22:33

Re: Дроп и скрипт для автоивента
 
Посмотрел, без модели DropList не обойтись (смотрите обработчик AddDrop.java (правда здесь еще и в БД заносит)).

DoYrdenDzirt 28.01.2012 18:29

Re: Дроп и скрипт для автоивента
 
Да, без дописки сервиса далеко здесь не уедешь.
Есть альтернативный вариант - давать игроку пердмет через ItemService при убийстве моба.

Код:

@Override
        public boolean onKillEvent(QuestCookie env)
        {
                Player player = env.getPlayer();
                Npc npc = (Npc) player.getTarget();
               
                for(Npc mob : eventnpc)
                {
                    if(mob.getObjectId() == npc.getObjectId())
                        ItemService.addItem(player, itemId, count);
                }
        }


Ajax52 28.01.2012 18:34

Re: Дроп и скрипт для автоивента
 
а сей скрипт действует на всех eventnpc или можно прописать для каждого номера? отдельно?

DoYrdenDzirt 28.01.2012 18:41

Re: Дроп и скрипт для автоивента
 
На всех. По отдельности можно так:

Код:

        @Override
        public boolean onKillEvent(QuestCookie env)
        {
                Player player = env.getPlayer();
                Npc npc = (Npc) player.getTarget();
               
                if(npc.getObjectId() == eventnpc[0].getObjectId())
                        ItemService.addItem(player, itemId, count);
               
                if(npc.getObjectId() == eventnpc[1].getObjectId())
                        ItemService.addItem(player, itemId, count);
        }


linliss 28.01.2012 18:59

Re: Дроп и скрипт для автоивента
 
Цитата:

Сообщение от DoYrdenDzirt (Сообщение 162142)
На всех. По отдельности можно так:

Код:

        @Override
        public boolean onKillEvent(QuestCookie env)
        {
                Player player = env.getPlayer();
                Npc npc = (Npc) player.getTarget();
               
                if(npc.getObjectId() == eventnpc[0].getObjectId())
                        ItemService.addItem(player, itemId, count);
               
                if(npc.getObjectId() == eventnpc[1].getObjectId())
                        ItemService.addItem(player, itemId, count);
        }


это циклом надо делать

DoYrdenDzirt 28.01.2012 19:38

Re: Дроп и скрипт для автоивента
 
И смысл все усложнять?

Код:

        @Override
        public boolean onKillEvent(QuestCookie env)
        {
                Player player = env.getPlayer();
                Npc npc = (Npc) player.getTarget();
       
                for(int i = 0; i < eventnpc.length; i++)
                        doReward(player, i);
        }
       
        void doReward(Player player, int i)
        {
            switch(i)
            {
                case 0:
                    ItemService.addItem(player, itemId1, count);
                    ItemService.addItem(player, itemId2, count);
                    break;
                case 1:
                    ItemService.addItem(player, itemId3, count);
                    ItemService.addItem(player, itemId4, count);
                    break;
            }
        }


linliss 28.01.2012 20:28

Re: Дроп и скрипт для автоивента
 
Цитата:

Сообщение от DoYrdenDzirt (Сообщение 162146)
И смысл все усложнять?

а смысл говно код писать? если делать, то качественно...

DoYrdenDzirt 28.01.2012 20:47

Re: Дроп и скрипт для автоивента
 
Тоже верно :)

Ajax52 28.01.2012 22:51

Re: Дроп и скрипт для автоивента
 
Ушел переваривать выше сказанное, ели первый вариант я хоть как то понимал, то в последнем вижу что то типа
PHP код:

&#19981;可讀的字符集不可讀的字符集不可讀的字符集不可讀的字符集不可讀的字符集不可讀的字符集 



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

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