Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Выдача предмета всем персам
#21
Так что за сборка всетаки L2J или Овер?Smile
Ответ
#22
linliss Написал:L2ObjectsStorage - хранит всех игроков или только тех которые в онлайне?
Представь себе, что будет, если не удалять игроков при выходе с сервера Wink.
Ответ
#23
Ro_0TT Написал:Представь себе, что будет, если не удалять игроков при выходе с сервера Wink.
ясно, (в l2p исходах я неразбираюсь:redlolSmile тогда ни 1 из выше изложеных способов неподходитSmile

тогда берем ид всех игроков из бд , складываем куда-то, и по списку добавляем предмет(у меня так сделано), кстати это очень тяжелая операция.
Ответ
#24
Kollaps Написал:У себя в AdminCreateItem.java
Есть интересный кусок кода:
Код:
case admin_create_item_all:
                try
                {
                    if(wordList.length < 2)
                    {
                        activeChar.sendMessage("USAGE: create_item [id] [count]");
                        return false;
                    }
                    int item_id = Integer.parseInt(wordList[1]);
                    long item_count = wordList.length < 3 ? 1 : Long.parseLong(wordList[2]);
                    int count = 0;
                    for(L2Player player : L2ObjectsStorage.getAllPlayers())
                    {
                        if (player!=null)
                            if (player.isOnline())
                                createItem(player, player, item_id, item_count);
                        count++;
                    }
                    activeChar.sendMessage("Предметы выданы: " + count + " игрокам.");
                }

int item_id = Integer.parseInt(wordList[1]); - если поменять на 0. То всем по сути предмет выдаться должен?

По-мойму, Вы не читаете, то что Вам пишут Smile
ObjectStorage не хранит offline-игроков - это бессмысленная трата памяти сервера. Следовательно, не получится выдать предмет оффлайн-игрокам через него.
Соответственно:
1.Выбираете всех игроков из БД, что можно выполнить обычным запросом:
[src=sql]SELECT object_id, is_online FROM `characters`[/src]
(названия полей и таблиц - псевдокод, не знаю, под какую Вам сборь, да и не важно это).
2. Если игрок онлайн, выдаете предмет непосредственно ему через ObjectStorage;
3. Иначе просто пишете предмет в БД (см. пример от Anzo).

P.S. Кто спросит: "А зачем мне все игроки из БД, если я могу получить онлайн из ObjectStorage?" - для начала, решите проблему синхронизации состояния игрока online/offline, БД и сервера Smile
// aka Deft
Ответ
#25
Проще делать профилактику и выдавать через БД (привет руофф). Все остальное - не торт.
ps Сейчас еще подумал: можно сделать добавление итема игроку, зашедшему в онлайн и добавляем персонажа в массив. Но это так - извращение.
Ответ
#26
Простите - сборка какая?
Выдача через items_delayed присутствует?
Если да - дам SQL запрос.

Добавлено через 2 минуты
А впрочем - быстрое решение:
1. Выдрать все obj_id
2. Выдать всем вещь через items_delayed
Ответ
#27
items_delayed - присутствует.
Подскажите запрос =)
Ответ
#28
ну тут и понаписали...

все делается простейшим запросом:
Код:
INSERT INTO items_delayed(`owner_id`, `item_id`, `count`) SELECT char_obj_id, <ид предмета>, <количество> FROM character_subclasses WHERE isBase = 1 AND <еще какие нибудь условия для фильтрации игроков по определенным критериям>;
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  как добавить всем мобам резист ко сну? sheg300 1 1,464 06-27-2018, 06:32 PM
Последний пост: Shell
  Помогите разобраться с добавлением предмета aaansideee 2 1,431 10-24-2016, 07:29 PM
Последний пост: aaansideee
  Всем здрасте. Помогите чем сможете Antoniy 6 2,449 09-23-2016, 09:10 AM
Последний пост: Antoniy
  Где хранится атрибут предмета? Aleksey 7 2,113 10-28-2015, 08:38 PM
Последний пост: kolibri
  дроп всем мобам с 74 лвла antoshavivozit 0 1,191 02-22-2015, 07:36 PM
Последний пост: antoshavivozit
  Всем привет (ZG) Помогите) Hunters 20 4,612 08-26-2013, 04:09 PM
Последний пост: LexBlack
  Дроп предмета Time of Gods 3 1,473 11-07-2012, 01:37 PM
Последний пост: Time of Gods
  Авто-Выдача награды по достижению LvL Raikerock 2 2,083 10-30-2012, 11:24 AM
Последний пост: ProDev
  Всем расам любую профу? KR3W 12 2,770 10-04-2012, 04:07 PM
Последний пост: KR3W
  Выдача славы Klinz 5 1,897 03-15-2012, 12:47 AM
Последний пост: linliss

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)