Меню |
|
 |
Статистика |
|
 |
|
[Предисловие]
Сегодня я хочу рассказать немного о том,как же устроен айвеб и немного пояснить новоиспеченным админам о том,что же он из себя представляет.
Сразу хочу оговориться,что в тексте сего гайда будет использована не только моя информация..более точные коопирайты будут указанны в конце гайда.
Так же благодарю и прошу читателей данного гайда сказать спасибо:
-Maximian и ДиМ@СиЧиК за создание программы octets editor.
-BlackPPoint за перевод и правку кода айвеба,который используется мной.
[Краткое содержание]
Сегодня вы узнаете,как:
-Поменять статы шмота или оружия.
-Поменять статы персонажа.
-Сделать скиллы другой рассы.
-Вытащить застрявшего персонажа.
-Прочие функции айвеб
[Некоторые пояснения]
Предпологается,что у вас уже есть установленный сервер Perfect World и а него установлен айвеб.
Уточню,что также предпологается что вы знаете пароль от айвеба.
Также вам понадобится программа octets editor,её можно скачать тут.
[Приступим]
Для начала запустим сервер,и убедимся,что айвеб загрузился.
Зайдем в игру,и создадим персонажа,который станет жертвой наших сегодняшних опытов:
Оффтоп
Красавиц,не правда ли?)
Итак мы видим,что всё что у него есть - это меч.
Для того,чтобы что то сделать с нашим подопытным в айвебе нам нужно знать его айди. В моем случае это 64...вы же можете узнать его написав что нибудь в чат и нажав ctrl + ПКМ по нику.
Посмотрим статы меча с которыми будем работать:
Не особо внушительные?)
Мы это поправим)
Открываем айвеб...если вы не меняли порты,то найти его можно тут
И видим мы примерно (зависит от версии айвеба) вот такое:
В конце этого гайда вы будете знать,что находится во всех этих подпунктах...
А пока нам нужен меч...
Итак жмем первый пункт с надписью редактор персонажей и видим меню этого подпункта:
Тут вы можете поменять настройки начальных персонажей или же какого нибудь одного,что нам и нужно...в поле айди вводим айди нашего персонажа или точный ник,если незнаем айди и жмем синюю надпись ...
Открывается вот что:

Это XML код персонажа...рассмотрим код моего персонажа,он не должен сильно отличаться от вашего...
Важно!! Для успешного сохранения изменений сделанных в айвебе персонаж должен быть не в игре.
PHP код:
<?xml version="1.0" encoding="UTF-8"?><role> //Кодировка XML прописана тут.
<base><variable name="version" type="byte">1</variable>
<variable name="id" type="int">64</variable> //Здесь айди персонажа прописан.
<variable name="name" type="Octets">CocaineC</variable> //Здесь Ник персонажа
<variable name="race" type="int">0</variable> //Номер расы ( 0 - люди)
<variable name="cls" type="int">0</variable> // Номер класса ( 0 - воин)
<variable name="gender" type="byte">0</variable> //Пол ( 0 -муж. 1 -жен.)
<variable name="custom_data" type="Octets">00700010605f400042004200328984002c006e8086808069716680807b807680805e8068a180808080804a0032005a01300093898080806380938980808063802d00440080808080808080808080808029003a0070806a7b3900806450004d005300b4c040a03400c0c080823b00c0c05602aa01cc0050023d01b10152020000cad2dbff2b3641ff663ed4ffd14a6aff4ad295ffdd9831ff51cd51ff00000000cad2dbff926e646e6e800000</variable>
<variable name="config_data" type="Octets">0300000078014b6160606001e2ff4800c865608262109b1144000188660662901c3f108300482f880f03ec50c672208d64e47f19a066364606460880a91e01f499ffff89f1e57160f8f04014c2c20848331801438c85914188a182d19e4100282ff16e520d28224061fb9a6d728d0b504c086a01480d283e18d980049308588fde91fde50bfe4254704a4fae79f0770583c16311a80e0875426905c30ba0382b90ab00c41c0620717b0686df420c2f80d8e49f10d8de0f2061b0ebc01488034e13407782256004481ca402240a62823c0201607120f3f0fe72092095003418e440101b0440eeb66ccd61106ccf61b0f1ec61b085d220b9676d10313e201b841ddaba184c5eb582d931ff56c0f9ad137318407c504285a9cdf0e901b303a6e6c0f42838323034d833417d00544b3d000049385c2a</variable>
<variable name="custom_stamp" type="int">0</variable>
<variable name="status" type="byte">1</variable>
<variable name="delete_time" type="int">0</variable>
<variable name="create_time" type="int">1256559243</variable> //Время создания.
<variable name="lastlogin_time" type="int">1256559246</variable>
<variable name="help_states" type="Octets">010018009d93a793bb93c593f303f483fd8307841184db87e5872584ef872f84f98703880d881788ab8f2188b58f2b88358893937f80</variable>
<variable name="reserved1" type="int">0</variable> //В этих трех полях вписывается айди мужа или жены.
<variable name="reserved2" type="int">0</variable>
<variable name="reserved3" type="int">0</variable>
</base>
<status><variable name="version" type="byte">1</variable>
<variable name="level" type="int">1</variable> // Здесь уровень персонажа
<variable name="level2" type="int">0</variable>
<variable name="exp" type="int">0</variable> //Опыт
<variable name="sp" type="int">0</variable> //Мана
<variable name="pp" type="int">0</variable>
<variable name="hp" type="int">75</variable> //ХП
<variable name="mp" type="int">45</variable>
<variable name="posx" type="float">1106.8368</variable> //В этих трех полях текущая позиция
<variable name="posy" type="float">219.46352</variable>
<variable name="posz" type="float">4372.3115</variable>
<variable name="worldtag" type="int">1</variable> // Номер мира ( 1 -основной мир)
<variable name="invader_state" type="int">0</variable>
<variable name="invader_time" type="int">0</variable>
<variable name="pariah_time" type="int">0</variable>
<variable name="reputation" type="int">0</variable> // Репутация
<variable name="custom_status" type="Octets"></variable>
<variable name="filter_data" type="Octets">00000000</variable>
<variable name="charactermode" type="Octets"></variable>
<variable name="instancekeylist" type="Octets">000000001800000069000000010000006a000000010000006b000000010000006c000000010000006d000000010000006e000000010000006f0000000100000072000000010000007300000001000000740000000100000075000000010000007b000000010000007c000000010000007d000000010000007e000000010000007f0000000100000081000000010000008300000001000000e600000001000000e700000001000000e800000001000000e900000001000000ea00000001000000eb000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006900000040000000000000006a00000040000000000000006b00000040000000000000006c00000040000000000000006d00000040000000000000006e00000040000000000000006f00000040000000000000007200000040000000000000007300000040000000000000007400000040000000000000007500000040000000000000007b00000040000000000000007c00000040000000000000007d00000040000000000000007e00000040000000000000007f0000004000000000000000810000004000000000000000830000004000000000000000e60000004000000000000000e70000004000000000000000e80000004000000000000000e90000004000000000000000ea0000004000000000000000eb0000004000000000000000</variable>
<variable name="dbltime_expire" type="int">0</variable>
<variable name="dbltime_mode" type="int">0</variable>
<variable name="dbltime_begin" type="int">1256508000</variable>
<variable name="dbltime_used" type="int">0</variable>
<variable name="dbltime_max" type="int">7200</variable>
<variable name="time_used" type="int">4774</variable>
<variable name="dbltime_data" type="Octets">01000000000000008f92e54a</variable>
<variable name="storesize" type="short">0</variable>
<variable name="petcorral" type="Octets">0000000100</variable>
<variable name="property" type="Octets"></variable>
<variable name="var_data" type="Octets">0600000000000000000000000000000038d9570d00000000000000001000000000000000ffffffff00000000000000000000000031000000</variable>
<variable name="skills" type="Octets"></variable> //Октеты Скиллов персонажа
<variable name="storehousepasswd" type="Octets"></variable> //Пароль от банка (в данном примере пароля нет.)
<variable name="waypointlist" type="Octets">3508</variable>
<variable name="coolingtime" type="Octets">ffffffff00000000</variable>
<variable name="reserved1" type="int">0</variable>
<variable name="reserved2" type="int">0</variable>
<variable name="reserved3" type="int">0</variable>
<variable name="reserved4" type="int">0</variable>
</status>
<pocket><variable name="capacity" type="int">32</variable>//Тут начинается перечисление вещей в инвентаре.Вещь начинается тегом <item> и кончается </item> сейчас в инвентаре вещей нет.
<variable name="timestamp" type="int">9</variable>
<variable name="money" type="int">0</variable>//Тут прописывается количество денег
<variable name="reserved1" type="int">0</variable>
<variable name="reserved2" type="int">0</variable>
</pocket>
<equipment><inv><variable name="id" type="int">2097 //Тут написанно айди вещи...в нашем случае это стандартный меч</variable>//Тут начинается список предметов одетых на персонаже. теги <inv> и </inv>
<variable name="pos" type="int">0</variable>
<variable name="count" type="int">1</variable>
<variable name="max_count" type="int">1</variable>
<variable name="data" type="Octets">0100ff000500000005000000f00a0000f00a00002c00030000000000010000000000000000000000030000000500000000000000000000001000000000004040000000000000000000000000</variable> // Это полоса свойств предмета.
<variable name="proctype" type="int">0</variable>
<variable name="expire_date" type="int">0</variable>
<variable name="guid1" type="int">0</variable>
<variable name="guid2" type="int">0</variable>
<variable name="mask" type="int">1</variable>
</inv>
</equipment>
<storehouse><variable name="capacity" type="int">16</variable> // Количество слотов в банке
<variable name="money" type="int">0</variable>
<variable name="reserved1" type="int">0</variable>
<variable name="reserved2" type="int">0</variable>
</storehouse>
<task><variable name="task_data" type="Octets">0000010000000000</variable>
<variable name="task_complete" type="Octets">01000000d101</variable>
</task>
</role>
Смотрим выше пояснения к строкам...так же добавлю,что отсчет места в инвентаре начинается с 0,следовательно если в строке вида
Цитата:
<variable name="pos" type="int">0</variable>
|
стоит цифра 0 то предмет будет в первой ячейке...
Внимание!! строка pos ( англ. сокр. position - местонахождение) в списке вещей одетых на персонаже будет означать не ячейку а совсем другое..так что пока не меняйте эту строку, иначе это может привести к слету базы.
Итак вот и настало время поговорить о слете базы.
Если ваша база слетела,а именно если вам при попытке выбрать персонажа выдает
Цитата:
Link - ошибка входа в систему
|
Значит вы что-то перехимичили и базы упали...первым что надо сделать,это постараться поменять то, что только что изменяли обратно.
После этого нужно остановить сервер,потом остановить MSSQL и вновь запустить..
Опять запускаем сервер и больше пытаемся не ощибаться.
Если при попытке входа персонажем,которого вы меняли до перезагрузки опять падают базы,то забудте про него и делайте нового - вы испортили персонажа.)
Итак,нам нужен меч...ищем в коде вот такие строки..
Цитата:
<inv><variable name="id" type="int">2097 //Тут написанно айди вещи...в нашем случае это стандартный меч</variable>//Тут начинается список предметов одетых на персонаже. теги <inv> и </inv>
<variable name="pos" type="int">0</variable>
<variable name="count" type="int">1</variable>
<variable name="max_count" type="int">1</variable>
<variable name="data" type="Octets">0100ff000500000005000000f00a0000f00a 00002c00030000000000010000000000000000000000030000 00050000000000000000000000100000000000404000000000 0000000000000000</variable> // Это полоса свойств предмета.
<variable name="proctype" type="int">0</variable>
<variable name="expire_date" type="int">0</variable>
<variable name="guid1" type="int">0</variable>
<variable name="guid2" type="int">0</variable>
<variable name="mask" type="int">1</variable>
</inv>
|
Следовательно свойства нашего предмета хранятся тут:
Цитата:
0100ff000500000005000000f00a0000f00a00002c00030000 00000001000000000000000000000003000000050000000000 00000000000010000000000040400000000000000000000000 00
|
Теперь знакомимся с программой octets editor...
Отрываем её и видим вот такое окошечко :

В поле ввода копируем код свойств нашего октета и жмем обработать...
Далее жмем кнопку редактор в левом нижнем углу..
Тут редактируются основные свойства предмета..я думаю всё должно быть ясно тут...
Жмем внизу - дополнительный редактор и видим вот это.

А тут рассмотрим подробнее:
1) Добавление ячеек в пуху или шмот...в бижу нельзя.
2) Дополнительные свойства предмету...
3) Выбираем свойство....
4) Выбираем множитель свойства...на сколько будет умножено его действие...тут можно писать целые числа..
Дальше жмем сохранить,из верхнего поля,куда копировали код снова его копируем,но теперь заменяем его в xml коде нашего персонажа..
Жмем сохранить,заходим в игру и смотрим новые статы меча...тепрь гораздо лучше,не так ли?)
Теперь опять выйдем из игры персонажем и продолжим наше обучение...
Опять откроем:

Введем наш айди,но на сей раз нажмем стандартная информация о персонаже)
И видим...:

Что можно изменить тут?
Во-первых если персонаж где то застрял,вы можете скопировать мои координаты(выше) и вставить ему.Он появится в мире.
Можно поменять количество репутации...тут можете писать сколько хотите..
Можно поменять количество денег и опыта.
Чтобы поменять уровень и не уронить базы нужно прописывать не только уровень но и количество очков для распределения...
Если очки еще не раскидывались,то цифру которую нужно написать в поле очки умений можно найти по формуле
5*(уровень) - 5 = количество очков...тоесть для уровня 150 количество очков будет 745.
Поле культивация отвечает за статус...
Тут может быть
PHP код:
8 - благочестивый
20 - рай1
21 - рай2
22 - рай3
30 - ад1
31 - ад2
32 - ад3
В правом нижнем углу можно менять количество чи.
PHP код:
199 - 1 чи
299 - 2 чи
399 - 3 чи
Теперь скиллы..вернемся к XML коду нашего персонажа...там я отметил такое поле
Цитата:
<variable name="skills" type="Octets">02000000010000000000000001000000a700 00000000000001000000</variable>
|
Значит,что тут
Цитата:
02000000010000000000000001000000a70000000000000001 000000
|
Храниться информация о стандартных скиллах...копируем её в редактор,обрабатываем,реда ктируем и ....:
By CocaineC
|