Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
[Гайд] Делаем изменяемыми все виды оружия и брони
#1
Здравствуйте уважаемые Админы и ГМы серверов, наверное многие из вас хотели сделать так чтобы изменению поддавались все виды оружия и брони, многие хотели, да не у многих получалось, но сейчас мы это исправим.

Нам пондобятся:
1) AionExtract (прога для распаковки .pak файлов и одновременного декодированя xml файлов которые покоились в .pak) Скачать
2) Notepad++ (ну или любой удобный для вас текстовый редактор)
3) Прямые руки
4) Мозг


К изменению подлежат серверная и клиентская части.

КЛИЕНТ
Редактуре подлежит файлик client_items.xml он находится в items.pak.
Так как мы с вами работаем на клиенте 2.0 распаковывать будем items.pak из папки соответствующей региональному коду который стоит у вас на сервере( 0- Asian 1- europe 7-Russia, насчет азии не уверен). Запускаем AionExtract.exe выбираем путь где лежит items.pak, потом выбираем путь куда все будет распаковано, нажимаем extract, ждем пока программа завершит работу и в итоге мы имеем много-много фалов .dds(это текстуры иконок, но о них в другом гайде), нам же нужен client_items.xml.
Нашли его и открываем нашим текстовым редактором.

Ищем нужную шмотку или оружие, нашли, теперь в его описании ищем такую штуку:
Код:
<cannot_changeskin>0</cannot_changeskin>
это и есть параметр позволяющий менять внешний вид вещи
0- запрещено
1- разрешено
Далее если вы хотите можете запаковать xml файл обратно в .pak, но можно этого и не делать, а просто закинуть файл в папку в которой лежит оригинальный .pak, веди приоритет загрузки ресурсов стоит из папку а не из .pak .


Таким образом настраивается возможность смены внешнего вида в клиенте.



СЕРВЕР
Так же имеется проверка типа вещи и на сервере. Располагается она в сервисе смены вещей, а именно ItemRemodelService.java, в моем ядре этот файл лежит по пути core\src\com\aionemu\gameserver\services\ItemRemodelService.java (у вас путь может отличаться)
Открываем его блокнотом, видим много-много кода, но нам нуден только этот кусок:
Код:
        // Temporary check... I *think* epic and mythic items can *never* be remodeled...
        if (keepItem.getItemTemplate().getItemQuality() == ItemQuality.EPIC ||
            keepItem.getItemTemplate().getItemQuality() == ItemQuality.MYTHIC)
        {
            PacketSendUtility.sendPacket(player, new SM_SYSTEM_MESSAGE(1300478,
                new DescriptionId(keepItem.getItemTemplate().getNameId())));
            return;
        }
        
        // Check for hacks... I *think* epic and mythic items can *never* be remodeled...
        if (extractItem.getItemTemplate().getItemQuality() == ItemQuality.EPIC ||
            extractItem.getItemTemplate().getItemQuality() == ItemQuality.MYTHIC)
        {
            PacketSendUtility.sendPacket(player, new SM_SYSTEM_MESSAGE(1300482,
                new DescriptionId(extractItem.getItemTemplate().getNameId())));
            return;
        }
Здесь находится правило, что если тип вещи эпический или мифический, то не допускать его до изменения внешнего вида вещи.
Мы это исключение изменим, т.к. в запретную зону мы добавим все вещи типа CLOTHES(платья и все другие веселые костюмчики), мы ведь не хотим чтобы какой-нибудь игрок взял да изменил внешний сета рудры на костюм санты... это будет путать других игроков... (Эта часть гада делается по желанию, поэтому вы можете попросту не выполнять её)
Итак, тот код что я указал можно просто заменить на
Код:
        // Temporary check... I *think* clothes items can *never* be remodeled...
        if (keepItem.getItemTemplate().getArmorType() == ArmorType.CLOTHES)
        {
            PacketSendUtility.sendPacket(player, new SM_SYSTEM_MESSAGE(1300478,
                new DescriptionId(keepItem.getItemTemplate().getNameId())));
            return;
        }
        
        // Check for hacks... I *think* clothes items can *never* be remodeled...
        if (keepItem.getItemTemplate().getArmorType() == ArmorType.CLOTHES)
        {
            PacketSendUtility.sendPacket(player, new SM_SYSTEM_MESSAGE(1300482,
                new DescriptionId(extractItem.getItemTemplate().getNameId())));
            return;
        }
Теперь платья не смогут быть изменены, а все остальные предметы могут.

Если появятся вопросы по теме, пишите, отвечу.

На этом наш урок заканчивается, учитесь хорошо, и не прогуливайте наши занятия!
С вас спасибки и поднятие репыWink
До скорого, с вами был XobotyI
Bloomers --> ??? --> Profit
Ответ
#2
проделал все что написано только попробывал статы поменять
выдало SendLog Client


ошибка
Ответ
#3
это вызвано не изменениями, а осью, точнее не так, проблема почти на всех XP SP3... норм клиент чаще всего пашет, а когда изменяешь чето на СП3 постоянно эта лажа вылезает..

P.s. такие большие ошибки ныкай в спойлер..

Добавлено через 1 минуту
в основном проблема из-за того что ось перекрывает доступ к движку CryEngine.. как это исправить я не понимаю..
Bloomers --> ??? --> Profit
Ответ
#4
xobotyi Написал:это вызвано не изменениями, а осью, точнее не так, проблема почти на всех XP SP3... норм клиент чаще всего пашет, а когда изменяешь чето на СП3 постоянно эта лажа вылезает..

P.s. такие большие ошибки ныкай в спойлер..

Добавлено через 1 минуту
в основном проблема из-за того что ось перекрывает доступ к движку CryEngine.. как это исправить я не понимаю..

спасибо огромное за подсказку буду решать проблему может если поставить совместимоть с 2000 то норм будет)
Ответ
#5
xobotyi Ну это уже не красиво..
http://forum.zone-game.info/showthread.p...5%F9%E5%E9

Требую указания авторства идеи

Добавлено через 9 минут
Также по поводу считывания клиентом, документов:

Дело в кодировке.

Для обработки клиентом файла находящегося вне .pak архива
требуется кодировка: ucs-2 little endian

А для файлов в нутри .pak архива: UTF-8 (без BOM)

Для смены кодировок рекомендую notepad++


Также Рег коды и папки:

1 - Использует USA
2 - Использует Europe
7 - Использует Russia
Консоль GameServer не советует:"Вы настраивайте сервер уже 1 час. Советуем вам немного отдохнуть".
Ответ
#6
этот гайд я писал вообще не зная что существует твоя тема, этот метод найден мной 15 августа этого года, так что требуй сколько влезет, если хочешь могу даже пруфы показать..
и дело не в кодировке
Код:
an Access Violation in module CrySystem.dll at 001b:046a68fb.
exception handler called in the AION Server.
start at 2010/11/19 18:49:27
Error occurred at 11/19/2010 18:50:02.
C:\Program Files\4game\Aion\bin32\aion.bin, run by Admin.
2 processor(s), type 586.
1536 MBytes physical memory.
44 percent of memory is in use.
memory history :
virtual addr history :
available mem to commit :
Free Memory [PM: 878864, VM: 939464, AP: 1886364] KBytes
DataServerMemoryUsage : 0 MBytes
ClientLaunchedCount : 1
Write to location 00000000 caused an access violation.
хоть одно слово про кодировку видишь? access violation - переводится как запрет доступа, так что то дело в оси, я уже сталкивался с этой проблемой у игроков моего сервера, и такая ошибка возникает только у пользователей XP SP3

Добавлено через 2 минуты
вот тебе пруф: [Изображение: dab38af03ecbt.jpg]
Bloomers --> ??? --> Profit
Ответ
#7
xobotyi Ну рас так, примите мои извинения
Консоль GameServer не советует:"Вы настраивайте сервер уже 1 час. Советуем вам немного отдохнуть".
Ответ
#8
А как сделать передаваемые все виды?

зы
я так и непонял что надо менять в этих строках?
PHP код:
<?php 
// Temporary check... I *think* epic and mythic items can *never* be remodeled...

if (keepItem.getItemTemplate().getItemQuality() == ItemQuality.EPIC ||

keepItem.getItemTemplate().getItemQuality() == ItemQuality.MYTHIC) {

PacketSendUtility.sendPacket(player, new SM_SYSTEM_MESSAGE(1300478,

new
DescriptionId(keepItem.getItemTemplate().getNameId())));

return;

}


// Check for hacks... I *think* epic and mythic items can *never* be remodeled...

if (extractItem.getItemTemplate().getItemQuality() == ItemQuality.EPIC ||

extractItem.getItemTemplate().getItemQuality() == ItemQuality.MYTHIC) {

PacketSendUtility.sendPacket(player, new SM_SYSTEM_MESSAGE(1300482,

new
DescriptionId(extractItem.getItemTemplate().getNameId())));
return;
}
Если меня посадят в тюрьму, по крайней мере, не надо будет раздавать автографы. © Kurt Cobain
Ответ
#9
мб их вообще убрать
Ответ
#10
Вроде чтоб сделать передаваемые все вещи нужно в клиенте в фаиле итемс изменить и в самом сервере переписать итемы на передачу... Точно непомню давно это тут обсуждалось (Воспользуитесь поиском)
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  [Гайд] GMShop 2.1 Zombie 24 14,636 03-29-2012, 10:53 PM
Последний пост: Anabolik
  Установка 2 гс под 1 лс (Гайд) undertrey 29 15,435 03-15-2012, 09:00 PM
Последний пост: TAG
  [Гайд] Скиллы от А до Я и от A до Z xobotyi 1 4,803 07-08-2011, 03:18 PM
Последний пост: whopper
  [Гайд] Изменение инвентаря на старте wamper 8 3,993 03-10-2011, 10:44 PM
Последний пост: Thieff
  [Гайд] Написание квестов: от и до. ViAl 17 14,497 12-24-2010, 02:31 PM
Последний пост: aspalt
  [Гайд]Создаём апдейтер DoLoD 12 11,792 01-13-2010, 05:05 AM
Последний пост: GoodShadow

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


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