quinta-feira, 25 de junho de 2020

Explorando Elsword Offline Parte 2

Esse tópico aqui será só dessa pasta , nela iremos explorar tudo

data003.kom = Arquivos do tipo lua 

Personagens :

- Elsword_SwordMan.lua (Elsword Combo's, Skills, Animation spd...)

- Arme_VioletMage.lua (Aisha Combo's, Skills, Animation spd...)

- Lire_ElvenRanger.lua (Rena Combo's, Skills, Animation spd...)

- RAVEN_FIGHTER.lua (Raven Combo's, Skills, Animation spd...)

- Eve_Nasod.lua (Eve Combo's, Skills, Animation spd...)

- Chung_Iron_Cannon.lua (Chung Combo's, Skills, Animation spd...)



Lista :

- AttribEnchantItem.lua =Attribute light, posion etc.

- DamageEffect.lua = Damage effects, hits etc.

- EffectSet.lua = Skills can be modified or changed)

-DropItemManager.lua = Lista de itens

DropCoinGold",
DropCoinSilver",
DropCoinCopper",
DropItemEgg",

-Enum.lua =  Pelo que entendi é nessa pasta que tem as identificações das coisas no jogo.

ITEM_GRADE = Raridade dos itens

ITEM_GRADE = {
  IG_NONE = 0,
  IG_UNIQUE = 1,
  IG_ELITE = 2,
  IG_RARE = 3,
  IG_NORMAL = 4,
  IG_LOW = 5

UNIT_TYPE = Personagens do jogo

UNIT_TYPE = {
  UT_NONE = 0,
  UT_ELSWORD = 1,
  UT_ARME = 2,
  UT_LIRE = 3,
  UT_RAVEN = 4,
  UT_EVE = 5,
  UT_CHUNG = 6,
  UT_END = 7

UNIT_CLASS = Classes do jogo
Descobri isso depois de reparar no PreTestUnit.lua

UNIT_CLASS = {
  UC_NONE = 0,
  UC_ELSWORD_SWORDMAN = 1,
  UC_ARME_VIOLET_MAGE = 2,
  UC_LIRE_ELVEN_RANGER = 3,
  UC_RAVEN_FIGHTER = 4,
  UC_EVE_NASOD = 5,
  UC_CHUNG_IRON_CANNON = 6,
  UC_ELSWORD_KNIGHT = 10,
  UC_ELSWORD_MAGIC_KNIGHT = 11,
  UC_LIRE_COMBAT_RANGER = 12,
  UC_LIRE_SNIPING_RANGER = 13,
  UC_ARME_HIGH_MAGICIAN = 14,
  UC_ARME_DARK_MAGICIAN = 15,
  UC_RAVEN_SOUL_TAKER = 16,
  UC_RAVEN_OVER_TAKER = 17,
  UC_EVE_EXOTIC_GEAR = 18,
  UC_EVE_ARCHITECTURE = 19,
  UC_ELSWORD_LORD_KNIGHT = 100,
  UC_ELSWORD_RUNE_SLAYER = 101,
  UC_LIRE_WIND_SNEAKER = 102,
  UC_LIRE_GRAND_ARCHER = 103,
  UC_ARME_ELEMENTAL_MASTER = 104,
  UC_ARME_VOID_PRINCESS = 105,
  UC_RAVEN_BLADE_MASTER = 106,
  UC_RAVEN_RECKLESS_FIST = 107,
  UC_EVE_CODE_NEMESIS = 108,
  UC_EVE_CODE_EMPRESS = 109

-ExpTable.lua

g_pkExpTable:AddExpTable_LUA({
  LEVEL = 2,
  NEED_EXP = 1000,
  TOTAL_EXP = 1000
})
g_pkExpTable:AddExpTable_LUA({
  LEVEL = 3,
  NEED_EXP = 1600,
  TOTAL_EXP = 2600
})
...
g_pkExpTable:AddExpTable_LUA({
  LEVEL = 80,
  NEED_EXP = 31501200,
  TOTAL_EXP = 530073770
})

Explicação :
LEVEL = 3, >> Level atual
  NEED_EXP = 1600 >> Experiência necessária pra upar
  TOTAL_EXP = 2600 >> Experiência total
No arquivo o level máximo do jogo está como 80 , mas tem como editar

-GameOption.lua = Opções atuais do jogo

GAME_OPTION_CURRENT = {
  AUTOSET_LEVEL = 0,
  GRAPHIC_UNIT = OPTION_LEVEL.OL_HIGH,
  GRAPHIC_TEXTURE = OPTION_LEVEL.OL_HIGH,
  GRAPHIC_MAP = OPTION_LEVEL.OL_HIGH,
  GRAPHIC_EFFECT = TRUE,
  RESOLUTION_X = 1024,
  RESOLUTION_Y = 768,
  SOUND = TRUE,
  MUSIC = TRUE,
  SOUND_VOLUME = -439,
  MUSIC_VOLUME = -1871,
  DYNAMIC_CAMERA = TRUE,
  DUNGEON_ZOOM_CAMERA = TRUE
}

Explicação :
RESOLUTION_X = Tamanho horizontal da tela
RESOLUTION_Y = Tamanho vertical da tela
SOUND_VOLUME = Efeitos do jogo e seu volume
MUSIC_VOLUME = Música do jogo e seu volume

- Item.lua = Whole List, ID's, Socket effects... of Armor, Weapons, Avatars...

Exemplo :

g_pItemManager:AddItemTemplet({
  m_ItemID = 1,
  m_Name = "\227\130\168\227\131\171\227\130\185\229\159\186\230\156\172\227\131\152\227\130\162",
  m_ModelName = "Mesh_ElSword_Basic_Hair_Sorted.x",
  m_ShopImage = "ElSword_Basic_Hair_Shop.dds",
  m_DropViewer = "DropItemPouch",
  m_UseType = USE_TYPE.UT_SKIN,
  m_UseCondition = USE_CONDITION.UC_ONE_CLASS,
  m_UnitType = UNIT_TYPE.UT_ELSWORD,
  m_UnitClass = UNIT_CLASS.UC_ELSWORD_SWORDMAN,
  m_ItemType = ITEM_TYPE.IT_DEFENCE,
  m_ucMaxSealCount = 0,
  m_fAddMaxMP = 0,
  m_Endurance = 0,
  m_EqipPosition = EQIP_POSITION.EP_DEFENCE_HAIR,
  m_Stat = {},
  m_SpecialAbilityList = {},
  SOCKET_OPTION = {}

Explicação :

ItemID = Identificação do item
Name = não entendi ,
ModelName = modelo no arquivo data001.kom , pelo fato de ser aleatório pode ser qualquer um dos 3
ShopImage = Imagem no arquivo data006.kom
DropViewer = Encontrei só 2 arquivos : tga e y
UseType = não entendi
UseCondition = não entendi
UNIT_TYPE = Identificação + Personagem
UnitClass = Identificação + Classe
ItemType = Identificação + Tipo de item
ucMaxSealCount = não entendi
fAddMaxMP = não entendi
Endurance = não entendi
EqipPosition = Posição do equipamento , no caso é na cabeça
Stat = Atributo ???
SpecialAbilityList = ???
SOCKET_OPTION = ???

-ItemExchangeTable.lua

g_pItemManager:AddItemExchangeData(0, 3, 131412, 206730, 1, 20, {m_iServerGroupID = -1})
g_pItemManager:AddItemExchangeData(0, 3, 131412, 206740, 1, 20, {m_iServerGroupID = -1})
...
g_pItemManager:AddItemExchangeData(40029, 3, 69392, 69134, 1, 20, {m_iServerGroupID = -1})
g_pItemManager:AddItemExchangeData(0, 1, 65000449, 65000454, 1, 100, {m_iServerGroupID = -1})

Explicação :
Não entendi nada

-NPCStat.lua = Monstros e seus atributos

g_pUnitManager:AddNPCStat({
  NPC_ID = NPC_UNIT_ID.NUI_NONE,
  MAX_HP = 310,
  ATK_PHYSIC = 406,
  ATK_MAGIC = 406,
  DEF_PHYSIC = 92,
  DEF_MAGIC = 92,
  HARD_LEVEL = {
    HP = 44.2,
    ATK_PHYSIC = 60.9,
    ATK_MAGIC = 60.9,
    DEF_PHYSIC = 13.8,
    DEF_MAGIC = 13.8,
    EXP = 0
  },
  DAMAGE_TYPE = DAMAGE_TYPE.DT_PHYSIC,
  DEF_RED = 500,
  DEF_BLUE = 500,
  DEF_GREEN = 500,
  DEF_WIND = 500,
  DEF_LIGHT = 500,
  DEF_DARK = 500,
  SCAN_RATE = 0,
  SCAN_NEAR_RANGE = 0,
  ACCURACY = 0,
  AVOIDANCE = 0
})

Explicação :

NPC_ID = Identificação + Monstro
NPC_ID = NPC_UNIT_ID.NUI_NONE,
MAX_HP = Vida Máxima
ATK_PHYSIC = Ataque Físico
ATK_MAGIC = Ataque Mágico
DEF_PHYSIC = Defesa Física
DEF_MAGIC = Defesa Mágica
HARD_LEVEL = {
HP = 44.2,
ATK_PHYSIC = 60.9,
ATK_MAGIC = 60.9,
DEF_PHYSIC = 13.8,
DEF_MAGIC = 13.8,
EXP = 0
  },
  DAMAGE_TYPE = DAMAGE_TYPE.DT_PHYSIC,
  DEF_RED = 500,
  DEF_BLUE = 500,
  DEF_GREEN = 500,
  DEF_WIND = 500,
  DEF_LIGHT = 500,
  DEF_DARK = 500,
  SCAN_RATE = 0,
  SCAN_NEAR_RANGE = 0,
  ACCURACY = 0,
  AVOIDANCE = 0


- OptionItemData.lua = Socket effects

-PD_Monster.lua

  ESCAPE_MOVE = {
    MOVE_SPLIT_RANGE = 500,
    ESCAPE_GAP = 600,
    WALK_INTERVAL = 1.5,
    NEAR_WALK_RATE = 100,
    FAR_WALK_RATE = 100,
    JUMP_INTERVAL = 10,
    UP_JUMP_RATE = 100,
    UP_DOWN_RATE = 30,
    DOWN_JUMP_RATE = 100,
    DOWN_DOWN_RATE = 30

Explicação :
Parece ser um arquivo tipo o Enum.lua pra identificar as ações dos monstros

- PreTestDropTable.lua = Drop Item list & droprate

-PreTestEquip.lua = Equip change



NOW_EQIP_SLOT_ID[" NESI_WEAPON_HAND"],

NOW_EQIP_SLOT_ID.NESI_DEFENCE_BODY

NOW_EQIP_SLOT_ID.NESI_DEFENCE_LEG,

NOW_EQIP_SLOT_ID.NESI_DEFENCE_HAND,



-PreTestUnit.lua = Adicionar , deletar ou mudar personagens

UNIT_CLASS + classe do personagem ( ver Enum.lua )

UNIT_CLASS.UC_ELSWORD_LORD_KNIGHT

-PD_Monster.lua = Animações dos monstros



-PreTestUser.lua = Information about client rank & other stuff

-Quest.lua

g_pQuestManager:AddQuestTemplet_LUA({
  m_iID = 13,
  m_eQuestType = QUEST_TYPE.QT_NORMAL,
  CHANGE_JOB_TYPE = CHANGE_JOB_TYPE.CJT_JOB_NONE,
  m_eStartNPCID = NPC_UNIT_ID.NUI_NONE,
  m_eEndNPCID = NPC_UNIT_ID.NUI_ARIEL,
  m_wstrTitle = "\227\130\162\227\131\170\227\130\168\227\131\171\227\129\174\229\145\188\227\129\179\227\129\139\227\129\145",
  m_bIsPcBang = False,
  m_bIsTimeEvent = False,
  m_iFairLevel = 1,
  m_iFairDungeonID = DUNGEON_ID.DI_NONE,
  m_bRepeat = False,
  m_eRepeatType = QUEST_REPEAT_TYPE.QRT_NORMAL,
  m_wstrMainText = "#CD5D1A\230\179\168\230\132\143 - \227\129\147\227\129\174\227\130\175\227\130\168\227\130\185\227\131\136\227\130\146\232\171\166\227\130\129\227\130\139\229\160\180\229\144\136\227\128\129\229\134\141\229\186\166\227\130\175\227\130\168\227\130\185\227\131\136\227\130\146\229\143\151\227\129\145\227\130\139\228\186\139\227\129\140\227\129\167\227\129\141\227\129\190\227\129\155\227\130\147\227\128\130#CX",
  m_wstrThanksText = "",
  m_wstrDissClearText = " ",
  m_wstrStartScene = "0",
  m_wstrEndScene = "0",
  QuestCondition = {
    m_iEnableVillage = VILLAGE_MAP_ID.VMI_INVALID,
    m_iLevel = 0,
    m_iLimitLevel = -1,
    m_eUnitType = UNIT_TYPE.UT_NONE,
    m_eUnitClass = {
      UNIT_CLASS.UC_NONE
    },
    m_iConditionItemID = 0,
    m_iConditionItemNum = 0,
    m_vecBeforeQuestID = {}
  },
  SHOW_QUEST_ITEM = {},
  m_vecSubQuest = {13},
  Reward = {
    m_bEnable = True,
    m_iEXP = 1100,
    m_iED = 0,
    m_iBuff = 0,
    m_iSP = 0,
    m_eChangeUnitClass = UNIT_CLASS.UC_NONE
  },
  SelectReward = {
    m_iSelectionCount = 1,
    m_vecSelectItem = {
      {
        m_iItemID = 131641,
        m_iQuantity = 1,
        m_iPeriod = 0,
        m_sSocketOption = 0
      },
      {
        m_iItemID = 131642,
        m_iQuantity = 1,
        m_iPeriod = 0,
        m_sSocketOption = 0
      },
      {
        m_iItemID = 131643,
        m_iQuantity = 1,
        m_iPeriod = 0,
        m_sSocketOption = 0
      },
      {
        m_iItemID = 131644,
        m_iQuantity = 1,
        m_iPeriod = 0,
        m_sSocketOption = 0
      },
      {
        m_iItemID = 131645,
        m_iQuantity = 1,
        m_iPeriod = 0,
        m_sSocketOption = 0
      }
    }
  }
})

-StatTable.lua = Tabela de Atributos

StatTable:ReserveMemory(1, 80)
..
StatTable:ReserveMemory(111, 80)
StatTable:SetUnitStat(1, 1, {
  AtkPhysic = 360,
  AtkMagic = 296,
  DefPhysic = 80,
  DefMagic = 66,
  HP = 11250
})
StatTable:SetUnitStat(1, 2, {
  AtkPhysic = 370,
  AtkMagic = 304,
  DefPhysic = 82,
  DefMagic = 68,
  HP = 12937.5
})
...
StatTable:SetUnitStat(111, 80, {
  AtkPhysic = 1134,
  AtkMagic = 979,
  DefPhysic = 278,
  DefMagic = 226,
  HP = 128500
})

Explicação
Não entendi

-TitleTable.lua = Títulos do jogo

TitleManager:AddTitleInfo_LUA({
  m_iTitleID = 10,
  m_iSortNum = 11,
  m_eTitleType = TITLE_TYPE.TT_RUBEN,
  m_TitleName = "\227\130\162\227\131\179\227\129\174\227\131\151\227\131\172\227\130\188\227\131\179\227\131\136",
  m_Description = [[
ã?«ã?¼ã??ã?³æ??ã?®å°?女ã??
ã?¢ã?³ã??ã??æ??ã??è¾¼ã??ã?¦â?¡]],
  m_ParticleName = "TITLE_10",
  m_eUnitType = UNIT_TYPE.UT_NONE,
  m_eUnitClass = UNIT_CLASS.UC_NONE,
  m_iOpenLevel = 1,
  m_bIsSecretTitle = False,
  m_bVisible = True,
  m_iAtkPhysic = 12,
  m_iAtkMagic = 12,
  SOCKET_OPTION = {}
})

Explicação :
iTitleID = Identificação do título , no caso esse é o Annes Gift
iSortNum = Parece ser como descobrir
eTitleType = Identificação + TT ( ??? ) + Região
TitleName = Nome do título
Description = Descrição do título
ParticleName = Tíulo
eUnitTyp = Identificação + None ( quer dizer que não tem restrição de personagem )
eUnitClass = Identificação + None ( quer dizer que não tem restrição de classe )
iOpenLevel = Level mínimo
bIsSecretTitle = False quer dizer que ele não é um título secreto
bVisible = True quer dizer que ele é visível no personagem
iAtkPhysic = Bônus de Ataque Físico
iAtkMagic = Bônus de Ataque Mágico
SOCKET_OPTION = Não entendi

-UnitTemplet.lua = Character Motion editing & Classes

-WorldData.lua = Whole Dungeon UI & other stuffs

g_pWorldManager:AddWorldData({
  worldID = WORLD_ID.WI_SQUARE,
  worldName = "WI_SQUARE",
  dataFileName = "square.lua"

Explicação : Deve ser identificação de dungeon

Abrindo square.lua :

g_pWorld:SetLightPos(-250000, 50000, -500000)
g_pWorld:SetLineMap("Square_linemap.lua")
g_pWorld:SetBGM("Music003_Square.ogg")
g_pSkyDome = g_pWorld:CreateSkyDome()
g_pSkyDome:SetLayer(X2_LAYER.XL_SKY_DOME_0)
g_pSkyDome:SetDomeMesh("SQUARE_SKY.Y")
g_pSkyDome:SetPos(0, 0, 0)
g_pSkyDome:SetRotationSpeed(0)
g_pSkyDome:SetViewTrace(false)
g_pSkyDome:SetAlphaObject(false)
g_pRenderParam = g_pSkyDome:GetRenderParam()
g_pObjectMesh = g_pWorld:CreateObjectMesh()
g_pObjectMesh:SetXMesh("Square_Ground1.Y")
g_pObjectMesh:SetXMeshLOD("Square_Ground1.Y")
g_pObjectMesh:SetLayer(X2_LAYER.XL_SKY_WORLD_BASE_0)
g_pObjectMesh:SetPos(D3DXVECTOR3(0, 0, 0))
g_pObjectMesh:SetColorFactor(D3DXCOLOR(1, 1, 1, 1))
g_pObjectMesh:SetCanHide(false, false)
g_pRenderParam = g_pObjectMesh:GetRenderParam()
g_pObjectMesh = g_pWorld:CreateObjectMesh()
g_pObjectMesh:SetXMesh("Square_Ground2.Y")
g_pObjectMesh:SetXMeshLOD("Square_Ground2.Y")
g_pObjectMesh:SetLayer(X2_LAYER.XL_SKY_WORLD_BASE_0)
g_pObjectMesh:SetPos(D3DXVECTOR3(0, 0, 0))
g_pObjectMesh:SetColorFactor(D3DXCOLOR(1, 1, 1, 1))
g_pObjectMesh:SetCanHide(false, false)
g_pRenderParam = g_pObjectMesh:GetRenderParam()
g_pObjectMesh = g_pWorld:CreateObjectMesh()
g_pObjectMesh:SetXMesh("Square_Mountain.Y")
g_pObjectMesh:SetXMeshLOD("Square_Mountain.Y")
g_pObjectMesh:SetLayer(X2_LAYER.XL_SKY_WORLD_BASE_0)
g_pObjectMesh:SetPos(D3DXVECTOR3(0, 0, 0))
g_pObjectMesh:SetColorFactor(D3DXCOLOR(1, 1, 1, 1))
g_pObjectMesh:SetCanHide(false, false)
g_pRenderParam = g_pObjectMesh:GetRenderParam()
g_pObjectMesh:SetAlphaObject(true)
g_pRenderParam.bAlphaBlend = true
g_pObjectMesh = g_pWorld:CreateObjectMesh()
g_pObjectMesh:SetXMesh("Square_Tent1.Y")
g_pObjectMesh:SetXMeshLOD("Square_Tent1.Y")
g_pObjectMesh:SetLayer(X2_LAYER.XL_SKY_WORLD_BASE_0)
g_pObjectMesh:SetPos(D3DXVECTOR3(0, 0, 0))
g_pObjectMesh:SetColorFactor(D3DXCOLOR(1, 1, 1, 1))
g_pObjectMesh:SetCanHide(false, false)


Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.