Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Документация (https://forum.zone-game.info/forumdisplay.php?f=149)
-   -   [Гайд] Делаем изменяемыми все виды оружия и брони (https://forum.zone-game.info/showthread.php?t=11184)

xobotyi 19.11.2010 15:03

[Гайд] Делаем изменяемыми все виды оружия и брони
 
Здравствуйте уважаемые Админы и ГМы серверов, наверное многие из вас хотели сделать так чтобы изменению поддавались все виды оружия и брони, многие хотели, да не у многих получалось, но сейчас мы это исправим.

Нам пондобятся:
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\ItemRemod elService.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;
                }

Теперь платья не смогут быть изменены, а все остальные предметы могут.

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

На этом наш урок заканчивается, учитесь хорошо, и не прогуливайте наши занятия!
С вас спасибки и поднятие репы;)
До скорого, с вами был XobotyI

Snion 19.11.2010 18:46

Re: [Гайд] Делаем изменяемыми все виды оружия и брони
 
проделал все что написано только попробывал статы поменять
выдало SendLog Client


ошибка:
Свернуть ↑Развернуть ↓

xobotyi 19.11.2010 19:02

Re: [Гайд] Делаем изменяемыми все виды оружия и брони
 
это вызвано не изменениями, а осью, точнее не так, проблема почти на всех XP SP3... норм клиент чаще всего пашет, а когда изменяешь чето на СП3 постоянно эта лажа вылезает..

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

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

Snion 19.11.2010 22:20

Re: [Гайд] Делаем изменяемыми все виды оружия и брони
 
Цитата:

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

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

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

спасибо огромное за подсказку буду решать проблему может если поставить совместимоть с 2000 то норм будет)

Wolfas 20.11.2010 03:38

Re: [Гайд] Делаем изменяемыми все виды оружия и брони
 
xobotyi Ну это уже не красиво..
http://forum.zone-game.info/showthre...E2%E5%F9%E5%E9

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

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

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

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

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

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


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

1 - Использует USA
2 - Использует Europe
7 - Использует Russia

xobotyi 20.11.2010 05:43

Re: [Гайд] Делаем изменяемыми все виды оружия и брони
 
этот гайд я писал вообще не зная что существует твоя тема, этот метод найден мной 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 минуты
вот тебе пруф: http://s11.radikal.ru/i183/1011/51/dab38af03ecbt.jpg

Wolfas 20.11.2010 22:25

Re: [Гайд] Делаем изменяемыми все виды оружия и брони
 
xobotyi Ну рас так, примите мои извинения

Zombie 12.02.2011 14:21

Re: [Гайд] Делаем изменяемыми все виды оружия и брони
 
А как сделать передаваемые все виды?

зы
я так и непонял что надо менять в этих строках?
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;
        } 


weTr1k 12.02.2011 15:53

Re: [Гайд] Делаем изменяемыми все виды оружия и брони
 
мб их вообще убрать

3EBC 12.02.2011 20:23

Re: [Гайд] Делаем изменяемыми все виды оружия и брони
 
Вроде чтоб сделать передаваемые все вещи нужно в клиенте в фаиле итемс изменить и в самом сервере переписать итемы на передачу... Точно непомню давно это тут обсуждалось (Воспользуитесь поиском)


Текущее время: 13:29. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot