Как выдать предметы через SQL запрос линейдж 2 essence vanguard?

mrk22

Единомышленник
Участник
Сообщения
42
Розыгрыши
0
Репутация
1
Реакции
15
Баллы
148
Хроники
  1. Interlude
Исходники
Присутствуют
Сборка
essence vanguard
Всем привет,подскажите как правильно написать SQL запрос (L2 essence vanguard) для выдачи предметов определенному игроку?
Спасибо))
 
пытался черз запрос:
INSERT INTO `items_delayed` (`owner_id`, `item_id`, `count`) VALUES (char_obj_id, item_id, item_count);
не получилось(.
 
  • Мне нравится
Реакции: kick
INSERT INTO `items_delayed` (`owner_id`, `item_id`, `count`) VALUES (12345, 57, 500);
Мы выдаем игроку "12345" 500 аден.
 
  • Мне нравится
Реакции: kick
Я пытаюсь с удаленки выдать предметы)
вот мои полностью запросы:
USE l2vang
INSERT INTO items VALUES('%username%')
INSERT INTO `items` (`owner_id`, `item_Id`, `count`) VALUES (%username%, 57, 1000000 )

сперва отправил запрос на выбор базы данных вида USE база_данных
После уже обращался к таблицам выбранной базы данных.
 
Я пытаюсь с удаленки выдать предметы)
вот мои полностью запросы:
USE l2vang
INSERT INTO items VALUES('%username%')
INSERT INTO `items` (`owner_id`, `item_Id`, `count`) VALUES (%username%, 57, 1000000 )

сперва отправил запрос на выбор базы данных вида USE база_данных
После уже обращался к таблицам выбранной базы данных.
ТЫ не читаешь то что я тебе ПИШУ какой USERNAME ты указать должен ид персонажа а не его имя.
characters 2 столбец примерно такой формат 268431417 должен быть ид персонажа и вот его надо вписывать.
 
ТЫ не читаешь то что я тебе ПИШУ какой USERNAME ты указать должен ид персонажа а не его имя.
characters 2 столбец примерно такой формат 268431417 должен быть ид персонажа и вот его надо вписывать.
а как можно чтоб не конкретный айди был а через скрипт где айди перса = %username%,чтоб вставил свой ник и автоматом вписался йд персонажа? я через удаленку управляю сервом

Mмне бы правильный запрос к моей бд вставляю id перса все равно ошибка выскакивает

Mмне бы правильный запрос к моей бд вставляю id перса все равно ошибка выскакивает
items_delayed у меня в бд пустая вся запись в таблице items
 
а как можно чтоб не конкретный айди был а через скрипт где айди перса = %username%,чтоб вставил свой ник и автоматом вписался йд персонажа? я через удаленку управляю сервом
Ну значит тебе сначала нужно обратиться в БД где хранится ник-ИД, взять оттуда ИД из ника, а уже потом делать запрос выдачи по полученному из ника ИД.
 
первое из поиска

INSERT INTO stats(totalProduct, totalCustomer, totalOrder)
VALUES((SELECT COUNT(*) FROM products), (SELECT COUNT(*) FROM customers), (SELECT COUNT(*) FROM orders) );
 
Смотреть структуру БД, как это реализовано, в зависимости от реализации в конкретном ядре, написать запрос.
В некоторых сборках нет механизма похожего на "items_delayed", приходится перевыдавать через items, а где-то весь items забирается при старте сервера, и ворочается там (при рестарте сервера просто заменяются все предметы запросами вида REPLACE INTO), и в таких сборках оно тоже работать не будет.
В этом случае, необходимо данную поддержку реализовать со стороны ядра. Один новый класс с шедулером, и старт этого шедулера в GameServer.
 
Можно по полочкам раскидать я пока ток учусь))
прям по полочкам врятли кто то раскидает
эссенсов сборки разные, структура БД может отличаться
тебе просто очень приближенно человек подсказал как это делается
сперва нужно селект делать, что бы достать id
 
делал себе как то скрипт под форму, можно использовать (веб)
PHP:
if(isset($_POST["name"]) && isset($_POST["id"]) && isset($_POST["count"])) {
                    $name = $_POST["name"];
                    $id = $_POST["id"];
                    $count = $_POST["count"];
                    if(empty($name) || empty($id) || empty($count) || !is_numeric($count)) {
                        die ("Заполнены не все поля ёпта#1");
                    }
                    require "../php/db.php";
                    $objId = -1;
                    $result = mysqli_query($db, "SELECT obj_Id FROM characters WHERE LOWER(`char_name`)=LOWER('" . $name . "')");
                    if(mysqli_num_rows($result) == 0) {
                        die ("Персонаж не найден!");
                    }
                    $objId = intval(mysqli_fetch_array($result)[0]);
                    $sql = "INSERT INTO items_delayed (owner_id,item_id,count,description) VALUES(".$objId.",".$id.",".$count.",'WEB ADMIN')";
                    if ($db->query($sql) === true) {
                        die ("Запрос выполнен успешно! " . $sql);
                    }
                } else {
                    die ("Заполнены не все поля ёпта#2");
                }

HTML:
 <h3>Выдать предмет игроку:</h3>
    <form action="" method="POST">
        <input type="text" placeholder="Чар" name="name">
        <input type="text" placeholder="Итем ID" name="item">
        <input type="text" placeholder="Кол-во" name="count">
        <input type="button" value="Выдать" onclick="giveItem(this.parentNode);">
    </form>
    
    <script>
    function giveItem(form) {
        var http = new XMLHttpRequest();
        http.open("POST", "./helper.php", true);
        http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        var values = form.parentNode.getElementsByTagName("input");
        var params = "action=giveitem&name=" + values[0].value + "&id=" + values[1].value + "&count=" + values[2].value;
        http.send(params);
        http.onreadystatechange = function() {
            if(http.readyState == 4 && http.status == 200) {
                alert(http.responseText);
            }
        }
    }
    </script>
 
пытался черз запрос:
INSERT INTO `items_delayed` (`owner_id`, `item_id`, `count`) VALUES (char_obj_id, item_id, item_count);
не получилось(.
На самом деле не совсем понятно, как можно сделать выборку данных или реализовать insert, если мы не знаем структуру таблицы. В принципе, написать любой запрос, это дело 2-х минут, если предварительно все параметры известны, т.к. из информации, которая есть, то это "Essence Vanguard", а причем тут хроники, тоже не совсем понятно. SQL он и в Африке SQL, нужна структура и параметры, дальше исходя из этого форумчане тебе подскажут более точно.
 
Назад
Сверху Снизу