Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Запрос к серверу

Понятия не имею, но могу кинуть шоп
 
Если во время редактирования инвентаря на сайте игрок решит зайти на сервер, может произойти 2 вещи: краш в случае крафтбаккита и кик игрока в случае спайгота, полюбому нужен плагин который хотя бы запрещает подключение к серверу пока игрок редактирует инвентарь на сайте.
Будьте проще, временное хранилище :)
 
Не подскажу, ибо работать с инвентарём игрока не из главного потока - самоубийство, а этот файл вообще из другой программы с файлом собирается работать, весело серверу будет если кто-то зайдёт пока файл открыт где-нибудь ещё.
Апну тему, тоже интересно, как это сделать. Чтобы не было "весело серверу", перед перезаписью надо проверять, онлайн игрок или нет. Так как сделать запись в dat ? С помощью того скрипта выше
 
Апну тему, тоже интересно, как это сделать. Чтобы не было "весело серверу", перед перезаписью надо проверять, онлайн игрок или нет. Так как сделать запись в dat ? С помощью того скрипта выше
Если игрок онлайн, то можно работать напрямую с его инвентарём, координатами и т.д., а если оффлайн, то считывать NBT из .dat, менять данные и производить запись (не забываем про проверку онлайна).
 
Если игрок онлайн, то можно работать напрямую с его инвентарём, координатами и т.д., а если оффлайн, то считывать NBT из .dat, менять данные и производить запись (не забываем про проверку онлайна).
Вот именно. Считывать данные, используя скрипт, который выкладывали в этой теме, из NBT я научился. А как записывать? Считываю я так:

PHP:
$nbt = new NBT();
$pathServer = "ftp://user:pass@host:21/world/players/";
$massiv=$nbt->loadFile($pathServer.$_GET['player'].".dat");
print_r($massiv);
 
Последнее редактирование:
Вот именно. Считывать данные, использую скрипт, который выкладывали в этой теме, из NBT я научился. А как записывать? Считываю я так:

PHP:
$nbt = new NBT();
$pathServer = "ftp://user:pass@host:21/world/players/";
$massiv=$nbt->loadFile($pathServer.$_GET['player'].".dat");
print_r($massiv);
Есть writeTag и writeType.
 
Есть writeTag и writeType.
Можно пример? Когда массив я извлекаю, там ведь сначала идут обычные параметры типа скорости, режима игры, потом уже инвентарь, и в самом инвентаре куча массивов, каждый из которых является отдельным предметом. Как добавить например в слот 2 стак предметов, имеющих ид=5?
 
Можно пример? Когда массив я извлекаю, там ведь сначала идут обычные параметры типа скорости, режима игры, потом уже инвентарь, и в самом инвентаре куча массивов, каждый из которых является отдельным предметом. Как добавить например в слот 2 стак предметов, имеющих ид=5?
Пример кода дать не могу. Чтобы посмотреть на примеры тегов и типов, можно с помощью NBTExplorer открыть любой .dat игрока.
 
Пример кода дать не могу. Чтобы посмотреть на примеры тегов и типов, можно с помощью NBTExplorer открыть любой .dat игрока.
Не знаете или не хотите? В любом случае, спасибо за хоть какую-то помощь. Посмотрю NBTExplorer...

P.S. Может кто еще чем-нибудь помочь? Лучше кодом. Ну или хотя бы подсказать, куда копать
Вот пытаюсь так сделать...
Код:
$newslot=array("id"=>"5","Count"=>"64","Damage"=>"0","Slot"=>"10");
$massiv=$shop->setFile($pathServer."LordBekket.dat","Inventory",$newslot);
$shop->writeFile($pathServer."LordBekket.dat");

Если массив вывести на экран - всё нормально, в инвентаре получается только стак предмета в слоте 10 с ID=5

Но ничего не меняется. Файл остаётся таким же с тем же инвентарём. Мне кажется, надо массив $newslot как-то по-другому определять
UP. То, что я выше указал, вообще не работает, записать не получается, ошибка при перезаписи (пишет типа файл уже открыт). Только чтение. Если есть у кого рабочий код - прошу помощи
 

Поделиться этой страницей

Назад
Верх