Подскажите как выдать предмет игроку не заходя в клиент?

Shtebon

Единомышленник
Пользователь
Сообщения
61
Розыгрыши
0
Репутация
0
Реакции
1
Баллы
115
Хроники
  1. Chaotic Throne: High Five
Исходники
Присутствуют
Сборка
Rebellion
Есть какие-нибуть программы для управления сервером, в котором это реализовано? Или можно как-то через telnet консоль выдать командой?
 
Решение
пасиб. а есть исходник TelnetItems? а то у меня нету такого
я скачал компиль отсюда Компил - Rebellion-Team

пришлось декомпельнуть
Java:
package l2r.gameserver.network.telnet.commands;

import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
import l2r.gameserver.model.GameObjectsStorage;
import l2r.gameserver.model.Player;
import l2r.gameserver.model.items.ItemInstance;
import l2r.gameserver.network.serverpackets.SystemMessage2;
import l2r.gameserver.network.telnet.TelnetCommand;
import l2r.gameserver.network.telnet.TelnetCommandHolder;
import l2r.gameserver.utils.ItemFunctions;
import l2r.gameserver.utils.Log;

public class TelnetItems implements TelnetCommandHolder {
    private...
Есть какие-нибуть программы для управления сервером, в котором это реализовано? Или можно как-то через telnet консоль выдать командой?
Запросом в базу можно сделать.
 
Последнее редактирование модератором:
  • Facepalm
Реакции: raz
В чём вопрос то? В выдаче предмета? Или в управлении сервером удалёно? Две разные вещи.

Предмет выдаётся запросом в базу, деливери, как-то так, если реализовано.

Управление - телнет, как говорят выше.
 
1692533631128.png

стало быть команды для телнета следующие:
  • add_item <char name> <itemId> <count> - выдача предмета персонажу
  • add_item_all <itemId> <count> - выдача всем персонажам
  • add_pcp <char name> <count> - выдача персонажу PcBangPoints
  • add_pp <char name> <count> - выдача персонажу PremiumPoints
открываем командную строку (WIN + R -> cmd) и вводим команду telnet {BindAddress} {Port}

исходя из следующих настроек
Код:
# Telnet по умолчанию выключен. Установите на True для включения.
EnableTelnet = true

# Кодировка по-умолчанию
TelnetEncoding = UTF-8

# На каком адресе слушать подключения, укажите * для всех доступных
BindAddress = 127.0.0.1

# Порт для входящих соединения
Port = 12345

# Пароль можно не указывать, в таком случае следует закрыть доступ по ip
Password = 12345678
команда для подключения к телнет будет выглядеть вот так
Код:
telnet 127.0.0.1 12345
потребуется ввод пароля (в данном случае 12345678)

ну и команда на выдачу предмета
Код:
add_item Shtebon 57 1000000

p.s. - вместо командной строки возможно подойдет такой софт как putty и подобные
 
Посмотреть вложение 54593

стало быть команды для телнета следующие:
  • add_item <char name> <itemId> <count> - выдача предмета персонажу
  • add_item_all <itemId> <count> - выдача всем персонажам
  • add_pcp <char name> <count> - выдача персонажу PcBangPoints
  • add_pp <char name> <count> - выдача персонажу PremiumPoints
открываем командную строку (WIN + R -> cmd) и вводим команду telnet {BindAddress} {Port}

исходя из следующих настроек
Код:
# Telnet по умолчанию выключен. Установите на True для включения.
EnableTelnet = true

# Кодировка по-умолчанию
TelnetEncoding = UTF-8

# На каком адресе слушать подключения, укажите * для всех доступных
BindAddress = 127.0.0.1

# Порт для входящих соединения
Port = 12345

# Пароль можно не указывать, в таком случае следует закрыть доступ по ip
Password = 12345678
команда для подключения к телнет будет выглядеть вот так
Код:
telnet 127.0.0.1 12345
потребуется ввод пароля (в данном случае 12345678)

ну и команда на выдачу предмета
Код:
add_item Shtebon 57 1000000

p.s. - вместо командной строки возможно подойдет такой софт как putty и подобные
пасиб. а есть исходник TelnetItems? а то у меня нету такого 1692535761670.png
 
пасиб. а есть исходник TelnetItems? а то у меня нету такого
я скачал компиль отсюда Компил - Rebellion-Team

пришлось декомпельнуть
Java:
package l2r.gameserver.network.telnet.commands;

import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
import l2r.gameserver.model.GameObjectsStorage;
import l2r.gameserver.model.Player;
import l2r.gameserver.model.items.ItemInstance;
import l2r.gameserver.network.serverpackets.SystemMessage2;
import l2r.gameserver.network.telnet.TelnetCommand;
import l2r.gameserver.network.telnet.TelnetCommandHolder;
import l2r.gameserver.utils.ItemFunctions;
import l2r.gameserver.utils.Log;

public class TelnetItems implements TelnetCommandHolder {
    private Set<TelnetCommand> _commands = new LinkedHashSet<>();

    public TelnetItems() {
        _commands.add(new TelnetCommand("add_item") {
            public String getUsage() {
                return "add_item <char name> <itemId> <count>";
            }

            public String handle(String[] args) {
                if (args.length == 0 || args[0].isEmpty() || args[1].isEmpty() || args[2].isEmpty())
                    return null;

                Player player = GameObjectsStorage.getPlayer(args[0]);
                int itemID = Integer.parseInt(args[1]);
                long itemCount = Integer.parseInt(args[2]);

                if (player != null) {
                    TelnetItems.createItem(player, itemID, itemCount);
                    return "Player " + player.getName() + " give item " + itemID + " count " + itemCount + ".\n\r";
                }

                return "Player not found.\n\r";
            }
        });
        _commands.add(new TelnetCommand("add_item_all") {
            public String getUsage() {
                return "add_item_all <itemId> <count>";
            }

            public String handle(String[] args) {
                if (args.length == 0 || args[0].isEmpty() || args[1].isEmpty())
                    return null;

                int item_id = Integer.parseInt(args[0]);
                long item_count = Integer.parseInt(args[1]);
                Iterator<Player> iterator = GameObjectsStorage.getAllPlayersForIterate().iterator();

                if (iterator.hasNext()) {
                    Player player = iterator.next();
                    TelnetItems.createItem(player, item_id, item_count);
                    return "All Players give item " + item_id + " count " + item_count + ".\n\r";
                }

                return "";
            }
        });
        _commands.add(new TelnetCommand("add_pcp") {
            public String getUsage() {
                return "add_pcp <char name> <count>";
            }

            public String handle(String[] args) {
                if (args.length == 0 || args[0].isEmpty() || args[1].isEmpty())
                    return null;

                Player player = GameObjectsStorage.getPlayer(args[0]);
                int itemCount = Integer.parseInt(args[1]);

                if (player != null) {
                    player.addPcBangPoints(itemCount, false);
                    return "Player " + player.getName() + " give item PCPoints count " + itemCount + ".\n\r";
                }

                return "Player not found.\n\r";
            }
        });
        _commands.add(new TelnetCommand("add_pp") {
            public String getUsage() {
                return "add_pp <char name> <count>";
            }

            public String handle(String[] args) {
                if (args.length == 0 || args[0].isEmpty() || args[1].isEmpty())
                    return null;
                Player player = GameObjectsStorage.getPlayer(args[0]);
                int itemCount = Integer.parseInt(args[1]);
                if (player != null) {
                    player.reducePremiumPoints(itemCount);
                    return "Player " + player.getName() + " give premium items count " + itemCount + ".\n\r";
                }
                return "Player not found.\n\r";
            }
        });
    }

    private static ItemInstance createItem(Player player, int itemId, long count) {
        ItemInstance createditem = ItemFunctions.createItem(itemId);
        createditem.setCount(count);
        Log.LogItem(player, "Create", createditem);
        player.getInventory().addItem(createditem);
        if (!createditem.isStackable()) {
            long i;
            for (i = 0L; i < count - 1L; i++) {
                createditem = ItemFunctions.createItem(itemId);
                Log.LogItem(player, "Create", createditem);
                player.getInventory().addItem(createditem);
            }
        }
        player.sendPacket(SystemMessage2.obtainItems(itemId, count, 0));

        return createditem;
    }

    public Set<TelnetCommand> getCommands() {
        return _commands;
    }
}

ну и не забываем подключить/зарегистрировать команду в TelnetServerHandler.java
Java:
        addHandler(new TelnetDebug()); // line 71
        addHandler(new TelnetItems()); // added
        addHandler(new TelnetPerfomance());
 
Решение
я скачал компиль отсюда Компил - Rebellion-Team

пришлось декомпельнуть
Java:
package l2r.gameserver.network.telnet.commands;

import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
import l2r.gameserver.model.GameObjectsStorage;
import l2r.gameserver.model.Player;
import l2r.gameserver.model.items.ItemInstance;
import l2r.gameserver.network.serverpackets.SystemMessage2;
import l2r.gameserver.network.telnet.TelnetCommand;
import l2r.gameserver.network.telnet.TelnetCommandHolder;
import l2r.gameserver.utils.ItemFunctions;
import l2r.gameserver.utils.Log;

public class TelnetItems implements TelnetCommandHolder {
    private Set<TelnetCommand> _commands = new LinkedHashSet<>();

    public TelnetItems() {
        _commands.add(new TelnetCommand("add_item") {
            public String getUsage() {
                return "add_item <char name> <itemId> <count>";
            }

            public String handle(String[] args) {
                if (args.length == 0 || args[0].isEmpty() || args[1].isEmpty() || args[2].isEmpty())
                    return null;

                Player player = GameObjectsStorage.getPlayer(args[0]);
                int itemID = Integer.parseInt(args[1]);
                long itemCount = Integer.parseInt(args[2]);

                if (player != null) {
                    TelnetItems.createItem(player, itemID, itemCount);
                    return "Player " + player.getName() + " give item " + itemID + " count " + itemCount + ".\n\r";
                }

                return "Player not found.\n\r";
            }
        });
        _commands.add(new TelnetCommand("add_item_all") {
            public String getUsage() {
                return "add_item_all <itemId> <count>";
            }

            public String handle(String[] args) {
                if (args.length == 0 || args[0].isEmpty() || args[1].isEmpty())
                    return null;

                int item_id = Integer.parseInt(args[0]);
                long item_count = Integer.parseInt(args[1]);
                Iterator<Player> iterator = GameObjectsStorage.getAllPlayersForIterate().iterator();

                if (iterator.hasNext()) {
                    Player player = iterator.next();
                    TelnetItems.createItem(player, item_id, item_count);
                    return "All Players give item " + item_id + " count " + item_count + ".\n\r";
                }

                return "";
            }
        });
        _commands.add(new TelnetCommand("add_pcp") {
            public String getUsage() {
                return "add_pcp <char name> <count>";
            }

            public String handle(String[] args) {
                if (args.length == 0 || args[0].isEmpty() || args[1].isEmpty())
                    return null;

                Player player = GameObjectsStorage.getPlayer(args[0]);
                int itemCount = Integer.parseInt(args[1]);

                if (player != null) {
                    player.addPcBangPoints(itemCount, false);
                    return "Player " + player.getName() + " give item PCPoints count " + itemCount + ".\n\r";
                }

                return "Player not found.\n\r";
            }
        });
        _commands.add(new TelnetCommand("add_pp") {
            public String getUsage() {
                return "add_pp <char name> <count>";
            }

            public String handle(String[] args) {
                if (args.length == 0 || args[0].isEmpty() || args[1].isEmpty())
                    return null;
                Player player = GameObjectsStorage.getPlayer(args[0]);
                int itemCount = Integer.parseInt(args[1]);
                if (player != null) {
                    player.reducePremiumPoints(itemCount);
                    return "Player " + player.getName() + " give premium items count " + itemCount + ".\n\r";
                }
                return "Player not found.\n\r";
            }
        });
    }

    private static ItemInstance createItem(Player player, int itemId, long count) {
        ItemInstance createditem = ItemFunctions.createItem(itemId);
        createditem.setCount(count);
        Log.LogItem(player, "Create", createditem);
        player.getInventory().addItem(createditem);
        if (!createditem.isStackable()) {
            long i;
            for (i = 0L; i < count - 1L; i++) {
                createditem = ItemFunctions.createItem(itemId);
                Log.LogItem(player, "Create", createditem);
                player.getInventory().addItem(createditem);
            }
        }
        player.sendPacket(SystemMessage2.obtainItems(itemId, count, 0));

        return createditem;
    }

    public Set<TelnetCommand> getCommands() {
        return _commands;
    }
}

ну и не забываем подключить/зарегистрировать команду в TelnetServerHandler.java
Java:
        addHandler(new TelnetDebug()); // line 71
        addHandler(new TelnetItems()); // added
        addHandler(new TelnetPerfomance());
1692538792453.png
 
нуебатькопать :Hahaha: импорт то кто будет добавлять?

заменить
Java:
import l2r.gameserver.network.telnet.commands.TelnetBan;
import l2r.gameserver.network.telnet.commands.TelnetConfig;
import l2r.gameserver.network.telnet.commands.TelnetDebug;
import l2r.gameserver.network.telnet.commands.TelnetPerfomance;
import l2r.gameserver.network.telnet.commands.TelnetSay;
import l2r.gameserver.network.telnet.commands.TelnetServer;
import l2r.gameserver.network.telnet.commands.TelnetStatus;
import l2r.gameserver.network.telnet.commands.TelnetWorld;
на следующее
Java:
import l2r.gameserver.network.telnet.commands.*;

или же просто добавить
Java:
import l2r.gameserver.network.telnet.commands.TelnetItems;
 
  • Мне нравится
Реакции: KATE
нуебатькопать :Hahaha: импорт то кто будет добавлять?

заменить
Java:
import l2r.gameserver.network.telnet.commands.TelnetBan;
import l2r.gameserver.network.telnet.commands.TelnetConfig;
import l2r.gameserver.network.telnet.commands.TelnetDebug;
import l2r.gameserver.network.telnet.commands.TelnetPerfomance;
import l2r.gameserver.network.telnet.commands.TelnetSay;
import l2r.gameserver.network.telnet.commands.TelnetServer;
import l2r.gameserver.network.telnet.commands.TelnetStatus;
import l2r.gameserver.network.telnet.commands.TelnetWorld;
на следующее
Java:
import l2r.gameserver.network.telnet.commands.*;

или же просто добавить
Java:
import l2r.gameserver.network.telnet.commands.TelnetItems;
пасибо) компильнул)
 
нуебатькопать :Hahaha: импорт то кто будет добавлять?

заменить
Java:
import l2r.gameserver.network.telnet.commands.TelnetBan;
import l2r.gameserver.network.telnet.commands.TelnetConfig;
import l2r.gameserver.network.telnet.commands.TelnetDebug;
import l2r.gameserver.network.telnet.commands.TelnetPerfomance;
import l2r.gameserver.network.telnet.commands.TelnetSay;
import l2r.gameserver.network.telnet.commands.TelnetServer;
import l2r.gameserver.network.telnet.commands.TelnetStatus;
import l2r.gameserver.network.telnet.commands.TelnetWorld;
на следующее
Java:
import l2r.gameserver.network.telnet.commands.*;

или же просто добавить
Java:
import l2r.gameserver.network.telnet.commands.TelnetItems;
ЗАРАБОТАЛО))) 1692541033461.png
1692541067925.png
 
Делаем запрос в базу
-- Получаем owner_id из таблицы characters
Код:
SELECT owner_id FROM characters WHERE _char_name = 'тут_ник_игрока';

-- Используем полученное owner_id для вставки данных в таблицу items_delayed
Код:
INSERT INTO items_delayed (owner_id, item_id, count) VALUES ('ПОЛУЧЕННЫЙ_OWNER_ID', 'ИД_ИТЕМА', 'КОЛИЧЕСТВО');
 
Назад
Сверху Снизу