1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

[Guide]Iweb работа №3

Тема в разделе 'PW Web', создана пользователем Bozzstalker, 29 мар 2010.

  1. TopicStarter Overlay

    Bozzstalker MmoDev Team Пользователи

    Сообщения:
    15
    Лайки:
    6
    Пол:
    Мужской
    Репутация:
    0
    [​IMG]
    Всем большой привет<_< Мы начинаем нш 3 выпуск "Работы в IWeb". Прошу прощения за задержку, были определенные трудности с местным военкоматом:\ Но тем ни менее я пока еще здесь, и напоминаю, что первый выпуск у нас тут, второй - там, я использую свой IWeb.rus который лежит здесь..

    [Что тут?]

    В этом выпуске я расскажу:
    1. Как в IWeb добавить персонажу крафт-скилы?
    2. Как добавить персонажу скилы другого класса?
    А так же, как обычно, покажу:
    • XML сегодняшнего выпуска

    [С чем мы работаем]
    Как видно на скриншоте ниже - наш персонаж ваабще не имеет крафт-скилов... А прокачивать их так лень:\ Что делать? Работать в IWeb :D
    [​IMG]

    [Теория...]
    Начнем с теории. Скилы персонажа в XML находятся в поле
    Код:
    <variable name="skills" type="Octets">...</variable>
    как вы уже наверно догдались, если хотя бы раз смотрели "что есть в XML". Как видно из названия - это тоже октеты (сразу оговорюсь: ваабще октет - это 8 бит (1 байт) информации, в нащем случае, для удобства счета я называю октетом 8 шестнадцатеричных цифр (4 байта))
    И пусть с первого взгляда эта строка абсолютно нам не понятна, в ней насамом деле все просто как редиска:o
    вот она в моем случае:
    Код:
    [COLOR="Red"]22000000[/COLOR][COLOR="Blue"]0b000000000000000a000000[/COLOR]0f000000000000000a00000010000000000000000100000011000000000000000a00000012000000000000000a00000013000000000000000a00000071000000000000000a00000072000000000000000a00000073000000000000000a00000074000000000000000a00000075000000000000000a00000076000000000000000a00000077000000000000000a00000078000000000000000a0000007900000000000000010000007a00000000000000010000007b00000000000000010000007c00000000000000010000007d000000000000000a0000007e000000000000000a0000007f000000000000000a00000080000000000000000a00000081000000000000000a00000082000000000000000a000000a3000000000000000a000000a70000000000000001000000bd000000000000000a000000be000000000000000a000000bf000000000000000a000000c0000000000000000a000000c1000000000000000a000000c20000000000000001000000e80000000000000001000000e90000000000000001000000
    длинющаяя правда?:P
    Ну дк вот, запоминаем:
    первый октет 22000000 - это количество скилов. В моем случае их 34, что в шестнадцатеричной системе равно 22.
    далее идут 34 скила вида 0b000000000000000a000000
    как видим, один скил - это 3 октета. Рассмотрим его (скил) повнимательнее.
    Код:
    [COLOR="Blue"]0b000000[/COLOR][COLOR="DarkOrange"]00000000[/COLOR][COLOR="Yellow"]0a000000[/COLOR]
    Первый октет 0b000000 - это id скила
    Второй октет 00000000 - используется только для крафт скилов, в остальных случаях нулевой.
    Третий октет 0a000000 - уровень скила. 0a в шестнадцатеричной соответствует 10 в десятичной.
    Думаю теперь вы представляете, что мы будем делать:(

    [Как в IWeb добавить персонажу крафт-скилы?]
    Оч просто. Запомните/запишите id скилов крафта:
    Код:
    9e000000 - Кузнец
    9f000000 - Портной
    a0000000 - Ювелир
    a1000000 - Аптекарь
    Это будет первый октет крафт-скила. Третий октет, как вы наверно уже догадались будет 0а000000 (10 лвл скила). во втором октеты указывается количество вещей которые вы скрафтили. Если помните, если навести мышкой на крафт-скил в игре, то в описании будет написано сколько вещей вы скрафтили, и сколько нужно для следующего уровня. Вот это и есть 2 октет:(
    На десятом уровне скила солидно иметь 200/200 скрафченых вещей, поэтому, столько мы и укажем во втором октете:
    200 в десятичной = с8 в шестнадцатеричной, т.е. 2 октет у нас будет c8000000.
    Теперь нам надо поправить количество скилов (увеличить на 4). В моем случае их станет 38, что в шестнадцатеричной системе исчисления равно 26.
    Теперь, не важно куда(можно в начало, можно в хвост) добавляем строчку с крафт-скилами:
    Код:
    [COLOR="Blue"]9e000000c80000000a000000[/COLOR][COLOR="DarkOrange"]9f000000c80000000a000000[/COLOR][COLOR="Yellow"]a0000000c80000000a000000[/COLOR][COLOR="Red"]a1000000c80000000a000000[/COLOR]
    т.е. поле skills в моем случае будет выглядеть так:
    Код:
    <variable name="skills" type="Octets">26000000[COLOR="Blue"]9e000000c80000000a0000009f000000c80000000a000000a0000000c80000000a000000a1000000c80000000a000000[/COLOR]0b000000000000000a0000000f000000000000000a00000010000000000000000100000011000000000000000a00000012000000000000000a00000013000000000000000a00000071000000000000000a00000072000000000000000a00000073000000000000000a00000074000000000000000a00000075000000000000000a00000076000000000000000a00000077000000000000000a00000078000000000000000a0000007900000000000000010000007a00000000000000010000007b00000000000000010000007c00000000000000010000007d000000000000000a0000007e000000000000000a0000007f000000000000000a00000080000000000000000a00000081000000000000000a00000082000000000000000a000000a3000000000000000a000000a70000000000000001000000bd000000000000000a000000be000000000000000a000000bf000000000000000a000000c0000000000000000a000000c1000000000000000a000000c20000000000000001000000e80000000000000001000000e90000000000000001000000</variable>
    
    и вот он результат:
    [​IMG]
    Как видите, в этом нет ничего сложного:(

    [Как добавить персонажу скилы другого класса?]
    На самом деле - это оч просто:( даже проще чем крафт-скилы:)
    Самое трудное в этом деле - узнать id скила. Его можно узнать опытным путем (создать перса, посмотреть XML, выучить новый скил, посмотреть что изменилось в XML).
    Я знаю, что id 01000000 - это удар тигра:) почему бы нашему жрецу не научиться бить ударом тигра?:) Сказано - делано. Как и в прошлом случае я состряпал 3 октета скила (второй октет, как я уже говорил, заполнен нулями...)
    Код:
    01000000000000000a000000
    и увеличил количество скилов на 1. Получилось нечто такое:
    Код:
    <variable name="skills" type="Octets">27000000[COLOR="Blue"]01000000000000000a000000[/COLOR]9e000000c80000000a0000009f000000c80000000a000000a0000000c80000000a000000a1000000c80000000a0000000b000000000000000a0000000f000000000000000a00000010000000000000000100000011000000000000000a00000012000000000000000a00000013000000000000000a00000071000000000000000a00000072000000000000000a00000073000000000000000a00000074000000000000000a00000075000000000000000a00000076000000000000000a00000077000000000000000a00000078000000000000000a0000007900000000000000010000007a00000000000000010000007b00000000000000010000007c00000000000000010000007d000000000000000a0000007e000000000000000a0000007f000000000000000a00000080000000000000000a00000081000000000000000a00000082000000000000000a000000a3000000000000000a000000a70000000000000001000000bd000000000000000a000000be000000000000000a000000bf000000000000000a000000c0000000000000000a000000c1000000000000000a000000c20000000000000001000000e80000000000000001000000e90000000000000001000000</variable>
    
    и вуаля:
    [​IMG]

    [XML сегодняшнего выпуска]
    Вот XML сегодняшних работ:
    Код:
    <?xml version="1.0" encoding="UTF-8"?><role>
    <base><variable name="version" type="byte">1</variable>
    <variable name="id" type="int">32</variable>
    <variable name="name" type="Octets">БПшка</variable>
    <variable name="race" type="int">5</variable>
    <variable name="cls" type="int">7</variable>
    <variable name="gender" type="byte">0</variable>
    <variable name="custom_data" type="Octets">007000109d72500042004200326984002c00818086808069717980807b807680805e805ca180808080806b013200310030007baa807c8a7d957baa807c8a7d952d00620182497f5d6d9082497f5d6d9029003a005f7c6a7e3900546950004d0053006c6c73803400626291913c0078802b023901ce00ba003d01b101b5010000d4eaf4ffffffffff2b2a2bff8aaae1ff313031ffe5e77cffffffffff00000000d4eaf4ff7a6e716e72800000</variable>
    <variable name="config_data" type="Octets">030000007801e552bd4a0341189c8df15410a3478a8016c107902029149453b0112c7c000b4b8b6bac627182cd4590341aededbcb748a1100b1f4210242888bd24e7ccee9ea4b4b07360f6fb9bfdf6f71a4099144a64c57a80a1158529b2b206e463b0050ea7a4749a2b0a853da6afde45acdaa48fe71410ea2ddc9163edf325360d0c8c8395fc8fe129cf7f73d03eef67d6098b3ba2c52a6fac6c10e2c4449867bdf67195e88174b7ef4137d9612ef40b48a3f731018752d5ce5979e8b56e874e31b3d84d9e87191a2f553fc399c7e50c03e6f5967572baa17c047c851890cd5168d7fd54daeece1a05f6af709fb6500cca4ba1ac5c1dc4c1e6e9def75a359a4336d606e50bdaf77a1a63e13cc6c66e079bdeaaf6da76397d3471ab7d81e65b6afd8351f613a79731144f789db4477b1dabdbbf898b39f56de02c2af91350f377f806ddbe5dab</variable>
    <variable name="custom_stamp" type="int">0</variable>
    <variable name="status" type="byte">1</variable>
    <variable name="delete_time" type="int">1235724759</variable>
    <variable name="create_time" type="int">1235342006</variable>
    <variable name="lastlogin_time" type="int">1238214457</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">99</variable>
    <variable name="level2" type="int">22</variable>
    <variable name="exp" type="int">90015</variable>
    <variable name="sp" type="int">92706551</variable>
    <variable name="pp" type="int">440</variable>
    <variable name="hp" type="int">810</variable>
    <variable name="mp" type="int">1134</variable>
    <variable name="posx" type="float">2638.999</variable>
    <variable name="posy" type="float">252.12392</variable>
    <variable name="posz" type="float">4187.146</variable>
    <variable name="worldtag" type="int">1</variable>
    <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">200000</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">000000001800000069000000010000006a000000010000006b000000010000006c000000010000006d000000010000006e000000010000006f0000000100000072000000010000007300000001000000740000000100000075000000010000007b000000010000007c000000010000007d000000010000007e000000010000007f0000000100000081000000010000008300000001000000e600000001000000e700000001000000e800000001000000e900000001000000ea00000001000000eb000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006900000020000000000000006a00000020000000000000006b00000020000000000000006c00000020000000000000006d00000020000000000000006e00000020000000000000006f00000020000000000000007200000020000000000000007300000020000000000000007400000020000000000000007500000020000000000000007b00000020000000000000007c00000020000000000000007d00000020000000000000007e00000020000000000000007f0000002000000000000000810000002000000000000000830000002000000000000000e60000002000000000000000e70000002000000000000000e80000002000000000000000e90000002000000000000000ea0000002000000000000000eb0000002000000000000000</variable>
    <variable name="dbltime_expire" type="int">0</variable>
    <variable name="dbltime_mode" type="int">0</variable>
    <variable name="dbltime_begin" type="int">1237752000</variable>
    <variable name="dbltime_used" type="int">0</variable>
    <variable name="dbltime_max" type="int">43200</variable>
    <variable name="time_used" type="int">9903</variable>
    <variable name="dbltime_data" type="Octets">0100000000000000759bcd49</variable>
    <variable name="storesize" type="short">0</variable>
    <variable name="petcorral" type="Octets">0000000100</variable>
    <variable name="property" type="Octets">050000000500000005000000050000002a0300006e0400000100000004000000000000409a999940000040400000a0400000000008000000080000001000000000002040000000000000000000000000000000000000000000000000000000000000000000000000000000006300000063000000000000000000000000000000000000000000000001000000000000008f010000</variable>
    <variable name="var_data" type="Octets">0600000000000000736900000100000078181b0a00000000000000001000000000000000ffffffff0000c841820fcb14810fcc143d000000</variable>
    <variable name="skills" type="Octets">2700000001000000000000000a0000009e000000c80000000a0000009f000000c80000000a000000a0000000c80000000a000000a1000000c80000000a0000000b000000000000000a0000000f000000000000000a00000010000000000000000100000011000000000000000a00000012000000000000000a00000013000000000000000a00000071000000000000000a00000072000000000000000a00000073000000000000000a00000074000000000000000a00000075000000000000000a00000076000000000000000a00000077000000000000000a00000078000000000000000a0000007900000000000000010000007a00000000000000010000007b00000000000000010000007c00000000000000010000007d000000000000000a0000007e000000000000000a0000007f000000000000000a00000080000000000000000a00000081000000000000000a00000082000000000000000a000000a3000000000000000a000000a70000000000000001000000bd000000000000000a000000be000000000000000a000000bf000000000000000a000000c0000000000000000a000000c1000000000000000a000000c20000000000000001000000e80000000000000001000000e90000000000000001000000</variable>
    <variable name="storehousepasswd" type="Octets"></variable>
    <variable name="waypointlist" type="Octets">5114e9034d04b1041505dd0509070a070b070c076d07d107350837089908fd08290a8d0af10a550b1d0c490dad0d750ed90eda0edb0e3d0f5d126910cd1031119611f9118913ed13b61419157d15a9160d177117d51739189d18b90b3211b714</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>
    <variable name="timestamp" type="int">88</variable>
    <variable name="money" type="int">77145542</variable>
    <items><variable name="id" type="int">8084</variable>
    <variable name="pos" type="int">0</variable>
    <variable name="count" type="int">1</variable>
    <variable name="max_count" type="int">100</variable>
    <variable name="data" type="Octets"></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">0</variable>
    </items>
    <items><variable name="id" type="int">380</variable>
    <variable name="pos" type="int">1</variable>
    <variable name="count" type="int">1</variable>
    <variable name="max_count" type="int">1</variable>
    <variable name="data" type="Octets">0400ff00050000000000070020030000400600002c000200000000002401000001000000000000000b0000000f000000110000001a0000001000000000004040000000000000000000000000</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>
    </items>
    <items><variable name="id" type="int">8647</variable>
    <variable name="pos" type="int">2</variable>
    <variable name="count" type="int">2</variable>
    <variable name="max_count" type="int">100</variable>
    <variable name="data" type="Octets">280000000a000000983a000000000000</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">0</variable>
    </items>
    <items><variable name="id" type="int">333</variable>
    <variable name="pos" type="int">3</variable>
    <variable name="count" type="int">1</variable>
    <variable name="max_count" type="int">1</variable>
    <variable name="data" type="Octets">0100ff0005000000000000008403000008070000240002000000000000000000050000000000000000000000000000000000000000000000000000000000000000000000</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">2</variable>
    </items>
    <items><variable name="id" type="int">2251</variable>
    <variable name="pos" type="int">4</variable>
    <variable name="count" type="int">1</variable>
    <variable name="max_count" type="int">1</variable>
    <variable name="data" type="Octets">0100ff00050000000000030058050000780500002c00030000000000240100000000000000000000030000000300000005000000060000001000000000004040000000000200000000000000000000000a00000086250000f4010000114500009200000001000000da210000020000008b250000190000001e450000de0000000100000016450000d9000000010000001b450000dd00000001000000bd4100002903000001000000be4100002a03000001000000a7210000fa000000</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>
    </items>
    <items><variable name="id" type="int">14351</variable>
    <variable name="pos" type="int">7</variable>
    <variable name="count" type="int">16</variable>
    <variable name="max_count" type="int">100</variable>
    <variable name="data" type="Octets"></variable>
    <variable name="proctype" type="int">8</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">0</variable>
    </items>
    <variable name="reserved1" type="int">0</variable>
    <variable name="reserved2" type="int">0</variable>
    </pocket>
    <equipment><inv><variable name="id" type="int">11212</variable>
    <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">0100ff0001000000000001003c8601003c8601002c00010000000000000000000f000000000000007f9698007f9698007f9698007f969800000000000000204100c079440300000000000000000000000000000000000000</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>
    <inv><variable name="id" type="int">2096</variable>
    <variable name="pos" type="int">12</variable>
    <variable name="count" type="int">1</variable>
    <variable name="max_count" type="int">1</variable>
    <variable name="data" type="Octets">0100000000000000020000000000000003000000</variable>
    <variable name="proctype" type="int">19</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">4096</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">1010010008000000b004ffffff01025925000000000c0adb0b0000000000000000000000000000003b0700ffffff02542500000000e41ddb0b0000000000000000000000000000003a19ffffff03025925000000006c3fe20a0000000000000000000000000000001b1b02ffffff025125000000000464e20a0000000000000000000000000000007419ffffff05023125000000005406de0a000000000000000000000000000000151b04ffffff021f2500000000941ade0a0000000000000000000000000000007908ffffff0702710a00000000fc3db40b0000000000000000000000000000007b0806ffffff026d0a000000003452b40b0000000000000000000000000000004b07ffffff0902710a000000003c56c20b0000000000000000000000000000004d0708ffffff02490a000000009c6cc20b000000000000000000000000000000520affffff0b02710a000000008c97980b000000000000000000000000000000540a0affffff02450a00000000acb2980b000000000000000000000000000000960cffffff0d02710a00000000bc207e0b0000000000000000000000000000009a0c0cffffff02430a000000006c357e0b0000000000000000000000000000006404ffffff0f02710a0000000034bcdc0b00000000000000000000000000000094070effffff02400a0000000054dadc0b000000000000000000000000000000</variable>
    <variable name="task_complete" type="Octets">060000005f043c193d193e191c1bf120</variable>
    </task>
    </role>
    Ну вот и все на сегодня... Ради интереса - научите вашего танка хилить себя и посмотрите, что из этого получится:)
    Vorobey, aleshaniki и valve22 нравится это.
Черновик сохранён Черновик удалён
Similar Threads
  1. Ex3m
    Ответов:
    8
    Просмотров:
    8.648
  2. Ex3m
    Ответов:
    21
    Просмотров:
    9.624
  3. Печенька
    Ответов:
    124
    Просмотров:
    32.612
  4. Tails
    Ответов:
    6
    Просмотров:
    1.147
  5. Realist
    Ответов:
    3
    Просмотров:
    1.894
Загрузка...

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