Jump to content
Sign in to follow this  
T-Fest

Апгрейд шмота

Recommended Posts

Всем привет, хочу сделать систему улучшения экипировки, через использование предмета(например свитка улучшения) и выбор предмета(например меча) который нужно улучшить.

Сразу говорю использовать 31 тип (свиток улучшения) и проверять одет ли меч в правую или левую руку  - не интересует.

Так как необходимо передавать в функцию использования такой параметр как Item_Traget.

Такой параметр могут принимать предметы 66 типа.

Начал разбирать подобный функционал на примере Алтаря Черного Дракона. Когда мы клкаем дважды например на Печать Огня, курсор меняеться на молоточек и мы можем выбрать предмет на котором использовать его.

После некоторых манипуляций, стало понятно что 66 тип предмета ( Печати огня, Ангельская Кость и тд) можно использовать только на 65типе предмета(Алтарь Черного Дракона), так как если использовать его на чем то другом, в системный чат валит сообщение с StringSet.txt  - [677]    "Выберите Алтарь Черного Дракона!"

 

Просьба помочь тем кто разобрался в этом, или может кто то знает где имеено нужно хексить гейм.ехе 

Share this post


Link to post
Share on other sites

да, смотрел, там также проверка вшита в гейм.ехе, проверяет на тип предмета(феи)

Share this post


Link to post
Share on other sites

Посмотри как работает улучшение бд сета, завяжи на нпс или предмет, там предмет с одним ид заменяется другим, или же если статы то тупо через таргет, ничего сложного нет, чтобы менялось еще и в апе, то смотри актуальные сборки ( не везде есть ) или в архиве мд там у пастуха пост был

Edited by BETEP/macs509

Share this post


Link to post
Share on other sites

Спасибо за инфу!

Но это немного другое, получается замена одного предмета на другой. пример бс тело + каменьь = дез тело

Я б все таки хотел иметь  возможность (пример: использовать свиток - навести курсор(молоточек) на выбранный эквип, кликнуть и выбраный доспех получил дополнительные статы.

Share this post


Link to post
Share on other sites

Ну так можно с защитой, уклонением, пр, шансом урона, остальные статы не знаю как делать, но вроде ребята обсуждали что тоже возможно, создаешь предмет например увеличение защиты, указываешь типы на который таргет работает допусти только сапоги,шапки,руки,ноги считываешь текущий показатель защиты и добавляешь свой (ну или вычитаешь если неудача)

-- Свиток защиты доспеха 
-- 50% шанс успеха заточки (+10 защиты) 
-- 30% шанс, что ничего не изменится 
-- 15% шанс повреждения доспеха (-10 защиты) 
-- 5% шанс сильного повреждения доспеха (защита становится равной 1 единице) 
function ItemUse_svitup ( role , Item ) 
local body = GetChaItem ( role , 1 , 2 ) 
local Item_DEF = GetItemAttr( body, ITEMATTR_VAL_DEF) 

if body == 0 then 
UseItemFailed ( role ) 
else 
SystemNotice(role ,"Оденьте доспех, который желаете улучшить! ") 
end 

if Item_DEF == 0 then 
UseItemFailed ( role ) 
else 
SystemNotice(role ,"Улучшить можно только доспех или тату! ") 
end 

local rad = math.random ( 1, 100 ) 

if rad <= 50 and rad >= 1 then 
Item_DEF = Item_DEF + 10 
SystemNotice( role ,"Доспех был улучшен, добавлено 10 единиц защиты! ") 
SetItemAttr( body, ITEMATTR_VAL_DEF, Item_DEF) 
RefreshCha ( role ) 
elseif rad <= 80 and rad >= 51 then 
SystemNotice(role ,"Улучшить параметры предмета не удалось! ") 
elseif rad <= 95 and rad >= 81 then 
Item_DEF = Item_DEF - 10 
SystemNotice( role ,"При попытке улучшения доспех был поврежден, характеристики снижены! ") 
SetItemAttr( body, ITEMATTR_VAL_DEF, Item_DEF) 
RefreshCha ( role ) 
elseif rad <= 100 and rad >= 96 then 
SystemNotice( role ,"При попытке улучшения доспех был сильно поврежден, характеристики значительно снижены! ") 
SetItemAttr( body, ITEMATTR_VAL_DEF, 1) 
RefreshCha ( role ) 
end 
end

 

Edited by BETEP/macs509

Share this post


Link to post
Share on other sites

да, я это видел, на крайний случай подойдет.....

проверка стоит одет ли предмет и тд, с мечом еще нужно смотреть в какой руке и тд...

не совсем правильная реализация того что необходимо

Share this post


Link to post
Share on other sites

Ну так, 
 

0000	Книга для доспеха	bat1	10130005	0	0	0	0	0	0	66	0	0	0	0	0	1	1	1	1	99	0	200000	-1	0	-1	0	0	-1	-1	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0,0	0,0	0,0	0,0	0,0	0,0	0,0	0,0	0,0	0,0	0,0	0,0	0,0	0,0	0,0	0,0	0,0	0,0	0,0	0,0	0,0	0,0	0	0,0	0,0	0	0	0	0	0	0	0	0	0	ItemUse_svitup	0	0	0	0,0	0	0	Книга которой можно улучшить защиту вашего доспеха	0																																																																																												
function ItemUse_svitup ( role , Item )
меняешь
function ItemUse_svitup ( role , Item , Item_Traget )
ну и в коде под таргет и проверки ставишь.
Хочешь всё остальное сваь расшриние для работы с mssql и меняй вобще все статы как угодно 

 

Share this post


Link to post
Share on other sites

спасибо большое!

Да, я так и делал 

66 тип принимает Item_Traget но его можно использовать только на 65 типе (Алтаре), в гейм.ехе вшита проверка на это, если знать где это хексить, то можно будет  использовать на любом типе, а уже в функции проверять по айди или по определенным типам

Share this post


Link to post
Share on other sites
12 часов назад, BETEP/macs509 сказал:

Эммм, 66 можно использовать на любом типе, во всяком случае у меня можно

можно с тобой тогда переговорить, что бы понять в чем проблема у меня. Если можно отправь свой скайп в ЛС

Share this post


Link to post
Share on other sites

Привет, @T-Fest!

 

Скинь свой Game.exe из клиента


Share this post


Link to post
Share on other sites

Привет, @T-Fest!

 

Держи. Сделал чтобы можно было использовать 66 тип на любом другом типе предметов. Не тестировал.

  • Like 1

Share this post


Link to post
Share on other sites
11 часов назад, V3ct0r сказал:

Привет, @T-Fest!

 

Держи. Сделал чтобы можно было использовать 66 тип на любом другом типе предметов. Не тестировал.

Спасибо большое, иду тестировать!

Share this post


Link to post
Share on other sites

@V3ct0r Спасибо за работу! Отлично работает!

Просмотрел топики на форуме, но ответа таки нне нашел....

как правильно шмотке добавлять или изменять статты? (атака деф вроде как работают) но другие статы не добавляются.

Использую функции GetItemAttr и SetItemAttr , передаю типы ITEMATTR_VAL_SOMESTAT

 

Просьба подсказать как это правильно реализовать что бы получалось изменять/добавлять статы.

Экипировка находиться в инвентаре.

Share this post


Link to post
Share on other sites
В 31.05.2019 в 08:31, V3ct0r сказал:

Привет, @T-Fest!

 

Держи. Сделал чтобы можно было использовать 66 тип на любом другом типе предметов. Не тестировал.

Подскажи пожалуйста, какая строка в game.exe отвечает за это? 
Что изменить, спасибо.

Share this post


Link to post
Share on other sites

Привет, @Pr10ritet!

 

Открой Game.exe в любом HEX-редакторе. Найди последовательность байт:

66 83 BA 34 01 00 00 41 74 25 68 A5 02 00 00

Замени данные байты на следующие:

66 83 BA 34 01 00 00 41 EB 25 68 A5 02 00 00

Сохрани проделанные изменения в Game.exe.

  • Thanks 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...