Jump to content
Sign in to follow this  
WVWMK

Самоцветы

Recommended Posts

Для создания или редактирования самоцветов нам понадобятся такие файлы : variable,stoneinfo,iteminfo,scripts.

Пройдемся по каждому файлу.

Variable.lua  - файл лежит на стороне сервера в папке GameServer\resource\scripts\calculate\
В этом файле есть массивы самоцветов:
1.StoneAttrType - массив в котором написано какой стат будет давать\дает самоцвет. Список характеристик можно посмотреть в теме Здесь
2.StoneEff - массив в котором указано какое кол-во характеристики дает самоцвет
3.StoneTpye_ID - массив в котором указан ID самоцвета в Iteminfo.
4.StoneEffType - массив с типами самоцветов (1 - на атаку 2 - на защиту 4 - другое)
5.StoneItemType - массив с типами предметов, куда может быть вставлен самоцвет:

1 - одноручные мечи
2 - двуручные мечи
3 - луки
4 - пистолеты
7 - клинки покорителей морей
9 - посохи
11 - щиты
20 - шапки
22 - доспехи
23 - перчатки
24 - ботинки
27 - тату
 
 
 
Stoneinfo -файл лежит на стороне клиента в формате bin в папке Game\scripts\table
В этом файле у нас лежит список гемов в таком типе:
 
ID | Название | ID в Iteminfo | Куда вставляется | Тип | Хинт
1    Огненный самоцвет     878    1,0,0    1    ItemHint_LieYanS
 
ID - мы берем из массивов Variable.
Название - мы берем из Iteminfo
ID в Iteminfo - ну тут понятно
Куда вставляется - мы берем из  массива StoneItemType в файле Variable
Тип - берем из массива StoneEffType в файле Variable
Хинт - мы пишем свой хинт который потом дублируется в файле scripts.
 
Iteminfo - файл лежит на стороне сервера по адресу GameServer\resource\ и на стороне клиента Game\scripts\table в формате bin
В этом файле находится список всех предметов, так как самоцветы являются предметами то без этого не обойтись.

 

Scripts - файл лежит на стороне клиента по адресу Game\scripts\lua\table

В этом файле хранятся хинты самоцветов, которые служат за отображение того что дает самоцвет:
 
function ItemHint_ABS( Lv )    -- Название хинта
   local eff = Lv * 12         -- Сколько стата дает за уровень
   local Hint ="Самоцвет: Сила +"..eff  -- То что написано у самоцвета
   return Hint   
end
 
 
Чистые файлы из сборкиDayLight Online II

iteminfo.txt

scripts.lua

StoneInfo.txt

Variable.txt

Edited by NMS3RR
  • Like 1

Делай добро и бросай его в воду

Share this post


Link to post
Share on other sites

@NMS3RR Привет, я когда то делал гемы, но сейчас забыл можно как нибудь попоросить тебя пошаговую инструкцию по вводу нового гема к примеру +80 силы, мне что то очень тяжело разобраться и этих файлов я к сожалению не смогу найти у себя (возможно что они называются иначе?)

Share this post


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

@NMS3RR Привет, я когда то делал гемы, но сейчас забыл можно как нибудь попоросить тебя пошаговую инструкцию по вводу нового гема к примеру +80 силы, мне что то очень тяжело разобраться и этих файлов я к сожалению не смогу найти у себя (возможно что они называются иначе?)

Эти файлы у всех одинаковые..

  • Like 1

Share this post


Link to post
Share on other sites

Есть один вопрос по поводу гемов изменил желтый нефрит в шапку до 5к дефа при вставке 6 уровня он дает 30к дефа, а при 7 не дает 35к дефа, а просто обнуляется значение. Аналогичная проблема с красным самоцветом в шапку который поменял на +15к жз, 1 уровень ставлю все ок начинаю ставить 2 одеваю вещь сразу персонаж умирает и жз -20к примерно и так же с камнем на ману сделал его +15к маны при вставке 2 уровня мн -20к вопрос как быть? Все функции проверены ошибок вроде нет. Может ли это быть как то связано с лимитами для вставки самоцветов в шапку этот лимит примерно 36к с чем то при таком раскладе гемы начинают вести себя не адекватно. Заранее спасибо!!! Кто ответит плюсик от меня автоматом!

Share this post


Link to post
Share on other sites

Так же если создаете новый гем нужно обязательно сделать из текстовика 'StoneInfo.txt' бинарник и положить его в папку игры по пути  Клиент\scripts\table с заменой

  • Thanks 1

Share this post


Link to post
Share on other sites
В 08.02.2022 в 23:27, Dimasik сказал:

Есть один вопрос по поводу гемов изменил желтый нефрит в шапку до 5к дефа при вставке 6 уровня он дает 30к дефа, а при 7 не дает 35к дефа, а просто обнуляется значение. Аналогичная проблема с красным самоцветом в шапку который поменял на +15к жз, 1 уровень ставлю все ок начинаю ставить 2 одеваю вещь сразу персонаж умирает и жз -20к примерно и так же с камнем на ману сделал его +15к маны при вставке 2 уровня мн -20к вопрос как быть? Все функции проверены ошибок вроде нет. Может ли это быть как то связано с лимитами для вставки самоцветов в шапку этот лимит примерно 36к с чем то при таком раскладе гемы начинают вести себя не адекватно. Заранее спасибо!!! Кто ответит плюсик от меня автоматом!

Столкнулся с данной проблемой, если узнали как решить дайте знать. Или может кто-то еще поможет

Share this post


Link to post
Share on other sites
54 минуты назад, 3kov сказал:

Столкнулся с данной проблемой, если узнали как решить дайте знать. Или может кто-то еще поможет

Попробуй уменьшить прибавку самоцвета. Слишком большое значение для сервера.

Share this post


Link to post
Share on other sites
5 минут назад, Graf сказал:

Попробуй уменьшить прибавку самоцвета. Слишком большое значение для сервера.

Нашел корень проблемы. В Gameserver.exe на прибавку от самоцветов стоит Short тип данных от -32767 до +32767. Надо хексить ГС и менять тип данных на это. Но как это сделать решения у меня нет.

  • Thanks 1

Share this post


Link to post
Share on other sites
6 минут назад, 3kov сказал:

Нашел корень проблемы. В Gameserver.exe на прибавку от самоцветов стоит Short тип данных от -32767 до +32767. Надо хексить ГС и менять тип данных на это. Но как это сделать решения у меня нет.

И это нужно будет менять не только в 1 месте.. Поэтому и говорю, проще использовать самоцветы с меньшим значением)

  • Thanks 1

Share this post


Link to post
Share on other sites

Распишу на будущее как искать подобные проблемы подсматривая в исходный код. 

При форже LUA вызывают функцию lua_AddItemFinalAttr 

inline int lua_AddItemFinalAttr(lua_State* pLS)
{
...
  long lAttrID = static_cast<int>(lua_tonumber(pLS, 2));
  short sAttr = static_cast<short>(lua_tonumber(pLS, 3));
  if (!pSItem->AddAttr(lAttrID, sAttr)) {
    lua_pushinteger(pLS, 0);
    return 1;
  }
...
}

Тут нам интересна функция AddAttr

inline short SItemGrid::AddAttr(long lAttrID, short sAttr)
{
  if (!CheckAttr())
    return 0;
  return CAttr.AddAttr(short(lAttrID), sAttr);
}

Тут мы видим, что тип аргумента должен быть short

Цитата

short: представляет целое число в диапазоне от –32768 до 32767. Занимает в памяти 2 байта (16 бит).


Для того чтоб все работало нужно изменить аргументы функции и этот массив + все места где он используется. 

class CItemAttr
{
...
private:
	short	m_sAttr[ITEMATTR_MAX_NUM];
...
}


 

  • Thanks 1

Share this post


Link to post
Share on other sites
On 9/16/2022 at 2:45 PM, Kara Online said:

Распишу на будущее как искать подобные проблемы подсматривая в исходный код. 

При форже LUA вызывают функцию lua_AddItemFinalAttr 

inline int lua_AddItemFinalAttr(lua_State* pLS)
{
...
  long lAttrID = static_cast<int>(lua_tonumber(pLS, 2));
  short sAttr = static_cast<short>(lua_tonumber(pLS, 3));
  if (!pSItem->AddAttr(lAttrID, sAttr)) {
    lua_pushinteger(pLS, 0);
    return 1;
  }
...
}

Тут нам интересна функция AddAttr

inline short SItemGrid::AddAttr(long lAttrID, short sAttr)
{
  if (!CheckAttr())
    return 0;
  return CAttr.AddAttr(short(lAttrID), sAttr);
}

Тут мы видим, что тип аргумента должен быть short


Для того чтоб все работало нужно изменить аргументы функции и этот массив + все места где он используется. 

class CItemAttr
{
...
private:
	short	m_sAttr[ITEMATTR_MAX_NUM];
...
}


 

+ все то же самое в Game.exe


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...