Aplicativos utilizados:
Observações:
ALGUMAS FUNÇÕES PODEM SER DIFERENTES DO BGC PARA A SEASON 1, OU SEJA, SERÁ NECESSARIO REMOVE-LAS ( COMENTA-LAS ) ou ACHAR ALGUMA FUNÇÃO SIMILAR E UTILIZA-LÁ.
- Os procedimentos abaixo feitos foram realizados em um servidor caseiro com cliente season 1 inalterado, ou seja os arquivos a serem editados podem variar, caso o cliente que você utilize esteja com os arquivos editados no main.exe.
- Existem mascotes como o Chester que possuem efeitos que devem ser colocados no pettemplate, cujo não irei explicar no tutorial, mas explorando será facil para você por.
- Existem mascotes como o Catbot que são bastantes complexos e não basta apenas adapta-los simplesmente, sendo que possa ser necessario fazer gambiarras no petaction.lua para o mesmo funcionar quase que perfeitamente.
- Isso é apenas um tutorial, vocês terão que ir estudando e testando seus mascotes por que não é tão facil quanto pode parecer.
- Crie um arquivo de texto em branco para adicionar informaçoes cruciais durante a edição.
- Após uma recente mudança, criar mascotes ficou mais complexo, como é demonstrado no tutorial abaixo já que é necessario fazer mais edições.
- Descobrir o nome original do mascote e seu codinome, é questão de logica e busca.
- É necessario pegar as imagens das cartas/skills e particulas nos arquivos de textura do cliente.
• Particulas:
- Arquivos Texture\particle\particleX.kom
• Cartas:
- Arquivos Texture\sbtaXX.kom
Arquivos manipulados ( cliente season 1 ):
Stage\str_p.stg ( arquivo de texto )
Stage\gcnewmapparticle.stg
Stage\script.kom:
- datafiles.lua
- enum.stg
- fireinfo.stg
- sort_p.stg
- petaction.lua
- pettemplate.stg
- sound.stg
E claro, os arquivos do pet.
Arquivos manipulados ( cliente season xaus / hiro ):
Stage\str_br.stg ( arquivo de texto )
Stage\char_script.kom:
- DamageOld.stg
Stage\script.kom:
- sound.stg
Stage\particle_script.kom:
- gcnewmappartie.stg ou arquivo do pet.
Stage\pettemplate.kom:
- Arquivo do pet.
ResSet ou Sound:
- Todos arquivos ( para os sons do pet )
Texture\particle\:
- Todos arquivos.
E claro, os arquivos do pet².
Tutorial:
0 - Antes de tudo, crie uma pasta com o nome do pet, e nesta pasta você deverá colocar os arquivos do pet que você irá coletar tais como: texturas, esqueletos, frames, arquivos de som e particulas.
1 - ID do Pet, Template ( pettemplate.stg ):
1.1. Todo Pet possui um id de sistema que pode ser definido pelo usuario, esse id serve para estabelecer o 'template' e 'ações' do mascote junto ao cliente, você deve estabelecer o id de acordo à ordem ja existente no pettemplate.stg, como segue na imagem abaixo:
1.2. A Template é referente aos dados do mascote tais como descrição, nome, modo de apresentação, mesh's, texturas, frames e etc..., abaixo segue o template do Mascote Diabinho em uma imagem comentada e o codigo do mesmo Pet no BGC construido de maneira diferente é claro.
1.2. Enquanto no BGC o arquivo pet_devil.stg ( encontrado no pettemplate.kom ) possui uma estrutura bem diferente, que terá que ser adaptada ( obvio ), com a mesma estrutura que foi apresentada acima do Mascote Diabinho, mas com todos valores e dados editados em relação ao mascote em questão a ser adicionado.
PetTemplate[17] = {};template = SPetTemplate();template.iPetID = 17;template.iPromotion = 13879; template.fScale = 0.55;0;template.dwGoodsID =template.fDistX = 0.15; templat e.fNameHeight = -0.07; template.iNameID = 3954;.fDistY = 0.1;templatetemplate:AddDesc( PET_DESC_SHOP, 3961 ); templa tate.fResultScale = 0.15; template:SetAxisCorrectionX( 0.0 );e:AddDesc( PET_DESC_FIRST, 3962 );templtemplate:SetAxisCorrectionY( 0.0 ); template:SetAxisCorrectio nel = 0; template.iItemDescID = -1; template:AddMent( PET_MENT_HUNGRY, 500, 3958 );Z( 0.0 );template.iMaxEvolutionLevtemplate:AddMent( PET_MENT_MYINFO, 500, 3955 ); template:AddMent( PET_MENT_MYINFO, 5500, 3957 ); template:AddMent( PET_MENT_ROOM, 500, 3955 ); template:AddMent( PET_MENT_ROOM, 500, 3956 );00, 3956 );template:AddMent( PET_MENT_MYINFO,template:AddMent( PET_MENT_ROOM, 500, 3957 ); template:AddMent( PET_MENT_SHOP, 500, 3961 ); template:AddM eate:AddMent( PET_MENT_FEEDING_6000, 500, 1730 ); template:AddMent( PET_MENT_HUNGRY_ZERO, 500, 3959 ); template:AddMent( PET_MENT_LEVELUP, 500, 3960 );nt( PET_MENT_FEEDING_3000, 500, 1730 );templ, "pet_tex017_0_devil.dds", "pet_tex017_0_showroom.ddtemplate:AddMent( PET_MENT_CHAR_LEVELUP, 500, 1713 ); template:AddMent( PET_MENT_FIRST_MEETING, 500, 3962 ); template:PushMeshInfo( "pet017_0_devil.p3m "s", CARTOON_PETS ); template:PushSoundInfo( 293 ); template:PushSoundInfo( 292 ); template:PushSoundInfo( 36 ); template:PushSoundInfo( 665 ); template:PushSoundInfo( 666 ); template.SkillGP = 13880;Motion = "pet017_0_08.frm",template.SkillCash = 13881; PetTemplate[17][0] = {}; PetTemplate[17][0]._class = template; PetTemplate[17][0]._skill = { [13881] = 13880, [13880] = { [PetMotion.ATTACK] = { Action = function ( iPlayer, iFrame ) local Pet = g_MyD3D:GetPet(iPlayer, 0); --Ŭ·¡½º¸¦ ¹Þ¾Æ¿É´Ï´Ù. if( iFrame == 45 ) then Pet:PlaySound( 11, 0 );Pet:AddDamage( DT_DEVILPET, 0 , 0.1, 0); end end }, [PetMotion.TELEPORT_READY] = { Motion = "pet017_0_10.frm", Action = function (t(iPlayer, 0); --Ŭ·¡½º¸¦ ¹Þ¾Æ¿É´Ï´Ù. local dwMaxFrame = Pet:GetNumFrame(Pet.iMotion); if( Pet.iFrame == dwMaxFrame - 10 ) then Pet:AddParticle( "pet-teleport_1", 0, 0 );iPlayer, iFrame )local Pet = g_MyD3D:GetPePet:AddParticle( "pet-teleport_2", 0, 0 ); Pet:PlaySound( 293, 0 ); end end }, [PetMotion.TELEPORT_ARRIVE] = { Motion = "pet017_0_11.frm", Actio nMyD3D:GetPet(iPlayer, 0); --Ŭ·¡½º¸¦ ¹Þ¾Æ¿É´Ï´Ù. if( Pet.iFrame == 1 ) then Pet:PlaySound( 292, 0 ); end end }, },= function ( iPlayer, iFrame )local Pet = g_}
1.3. Salve o arquivo e mantenha-o aberto.
2 - Sons do mascote:
2.1. Primeiramente, abra o sound.stg do BGC, e então procure pelos arquivos de som tendo como referencia os ids que estão nopet_devil.stg ( NO CASO DO PET USADO NESSE TUTORIAL ) e copie as linhas para um arquivo de texto a parte:
Código:
Exemplo do arquivos de som usados pelo Diabinho como demonstrado no pet_devil.stg:template:PushSoundInfo( 293 ); template:PushSoundInfo( 292 );mplate:PushSoundInfo( 666 );template:PushSoundInfo( 36 ); template:PushSoundInfo( 665 ); te
2.2. Abaixo segue um exemplo de como estará o 'arquivo a parte' após coletar todas informações referentes para o arquivo de texto:
Código:
{ ID = "293", FILENAME = "Pet_Teleport_Out_Effect.wav", },{ ID = "292", FILENAME = "Pet_Teleport_In_Effect.wav", },{ ID = "36", FILENAME = "MDash.wav", }, { ID = "665",FILENAME = "Cupid_Atk1.wav", },{ ID ="666", FILENAME = "Cupid_Boom.wav", },
2.3. Agora que ja temos o nome de arquivo, iremos verificar se os mesmos ja existem no sound.stg do nosso cliente cujo qual o mascote esta sendo adicionado, caso o arquivo ja exista, não iremos adiciona-lo novamente e iremos remover do arquivo à parte os dados referentes ao som, deixando apenas o seguinte como mostra o exemplo, pois os ids dos sons deverão ser mudados nos arquivos que contem os ids como se fossem do BGC:
Código:
id bgc = meu novo id para o som no meu cliente36 = 36
2.4. Agora iremos somar os novos ids ao total do nosso sound.stg:
2.5. Agora iremos adicionar os arquivos ao sound.stg, sendo que os ids deverão ser em ordem crescente,:
Código:
No caso, adicionei assim ao final do arquivo:SOUND671 = { FILENAME = "Pet_Teleport_Out_Effect.wav", }SOUND672 = { FILENAME = "Pet_Teleport_In_Effect.wav", }{ FILENAME = "Cupid_Boom.wav", }SOUND673 = { FILENAME = "Cupid_Atk1.wav", } SOUND674=
2.6. Como os ids mudaram, é claro que terei que substituir os mesmos no pettemplate.stg e os demais arquivos que serão editados, colocando os novos ids, levando em consideração o id anterior referente ao mesmo arquivo de som, ou seja os ids ficarão ( exemplo no pettemplate.stg ):
Código:
De:Sound ={Para: Sound = {293, 292, 36, 665, 666,};671, 672, 36, 673, 64,};7
2.7. Salve o arquivo e mantenha-o aberto.
3. PetSkill.lua:
3.1. A parte do PetSkill.lua é bastante simples como mostra a imagem abaixo, sendo que você só terá que adicionar os mesmos referentes aos ids dos ataques do mascote, sim, aqueles que tem no pettemplate.stg.
3.2. Salve o arquivo e feche-o.
4. PetAction.lua:
4.1. Cada pet possui 17 conjuntos de frames, sendo que esses conjuntos de frames são referentes a ações, e essas ações são designadas no arquivo PetAction.lua que serve para definir ataques e etc como mostra a imagem:
4.2. Abaixo segue uma lista das ações e seus id's que tambem podem ser encontradas no petaction.lua:
Código:
WAIT = 0;MOVE = 1;JUMP_READY = 2 3; JUMP_DOWN = 4;;JUMP_UP =START = 5; WIN SE = 7; ATTACK = 8;= 6;LOMAGIC = 9; TELEPORT_READY = 111; ROOM = 12; SHOP = 13;0;TELEPORT_ARRIVE =JUMP_LAND = 14; GAME_LOADING = 15; SHO_ACTION = 16;MOVEP_END = 17;
4.3. Para construir as ações do seu mascote, basta ir no template do seu mascote no bgc, copiar as ações e em um arquivo a parte, colar e adapta-lo, abaixo segue um exemplo.
De:
Código:
[PetMotion.ATTACK] = {Motion = "pet017_0_08.frm",Action = function ( iPlayer, iFrame )local Pet = g_MyD3D:GetPet(iPlayer, 0); --Ŭ·¡½º¸¦ ¹Þ¾Æ¿É´Ï´Ù.if( iFrame == 45 ) thenPet:PlaySound( 11, 0EVILPET, 0 , 0.1, 0); end end },);Pet:AddDamage( DT_D[PetMotion.TELEPORT_READY] = { Motion = "pet017_0 _ ( iPlayer, iFrame ) local Pet = g_MyD3D:GetPet(iPlayer, 0); --Ŭ·¡½º¸¦ ¹Þ¾Æ¿É´Ï´Ù.10.frm",Action = functionif( Pet.ilocal dwMaxFrame = Pet:GetNumFrame(Pet.iMotion); Frame == dwMaxFrame - 10 ) then Pet:AddParticle( "pet-teleport_1", 0, 0 );Pet:AddParticle( "pet-teleport_2", 0, 0 ); Pet:PlaySoun d [PetMotion.TELEPORT_ARRIVE] = { Motion = "pet017_0_11.frm", Action = function ( iPlayer, iFrame )( 293, 0 );endend},local Pet = g_MyD3D:GetPet(iPlayer, 0); --Ŭ·¡½º¸¦ ¹Þ¾Æ¿É´Ï´Ù. if( Pet.iFrame == 1 ) then endPet:PlaySound( 292, 0 );end},
Para:
Código:
function Pet_Action14_0_8(iPlayer, iFrame)local Pet = g_MyD3D:GetPet(iPlayer, 0); --Ŭ·¡½º¸¦ ¹Þ¾Æ¿É´Ï´Ù.if( iFrame == 45 ) thenPet:PlaySound( 11, 0EVILPET, 0 , 0.1, 0); end end);Pet:AddDamage( DT_Dfunction Pet_Action14_0_10(iPlayer, iFrame) ayer, 0); --Ŭ·¡½º¸¦ ¹Þ¾Æ¿É´Ï´Ù.local Pet = g_MyD3D:GetPet(iPllocal dwMaxFrame = Pet:GetNumFram eMaxFrame - 10 ) then Pet:AddParticle( "pet-teleport_1", 0, 0 );(Pet.iMotion);if( Pet.iFrame == dwPet:AddParticle( "pet-teleport_2", 0, 0 ); P e function Pet_Action14_0_11(iPlayer, iFrame) local Pet = g_MyD3D:GetPet(iPlayer, 0); --Ŭ·¡½º¸¦ ¹Þ¾Æ¿É´Ï´Ù.t:PlaySound( 293, 0 );endendendif( Pet.iFrame == 1 ) then Pet:PlaySound( 292, 0 ); endend
4.4. Agora copie o que foi adaptado, vá e cole no fim do petacion.lua, logo apos caso falte alguma ação, pegue em outro mascote as ações restantes ( com o mesmo numero de ação ) e mude o id e coloque em ordem junto ao que foi adaptado.
4.5. Lembre-se de mudar os sons de acordo ao id dos novos sons equivalentes ( olhe a função PlaySound, e veja que tem o mesmo id, então é só substituir caso seja necessário ).
4.6. Salve o arquivo e mantenha-o aberto.
5. Enum.stg:
5.1. O enum.stg tem a utilidade de enumerar diversos valores do jogo, mas isso não vou explicar aqui, o importante é que os danos do mascotes ( como será mostrado na imagem abaixo ), primeiramente devem ser adicionados nesse arquivo, levando em consideração a ordem crescente de numeros.
5.2. Mas como indentificar os danos? é bem simples, basta no petaction do mascote em questão verificar as palavras que sejam relacionadas a uma função que contenha damage ( ex: AddDamage ) e essa constante comece com DT.
5.3. Salve o arquivo e mantenha-o aberto.
6. FireInfo.stg:
6.1. Primeiramente iremos alterar o valor do MAX_DAMAGE_NUM para o novo valor total, acrescentado o valor dos damages novos (no meu caso é 1 ).
Exemplo:
Código:
De:ireInfo =F{MAX_DAMAGE_NUM = 753,MAX_DAMAGE_TEX_NUM = 194,} Para: FireInfo = {MAX_DAMAGE_NUM =NUM = 194,754,MAX_DAMAGE_TEX_}
6.2. Agora vá até o final do arquivo e crie o seguinte codigo ( no meu caso é FireInfo753 por que o id do unico damage do diabinho é 753 ):
Código:
FireInfo753 ={}
6.3. Agora no DamageOld.stg do BGC iremos procurar pelo dano do pet, tendo como referencia o nome dele, no caso do diabinho tive o seguinte resultado:
Código:
Damage[DT_DEVILPET] = {--DT_DevilPetSTART_LIFE = 2 = TRUE,55,ENABLE_DAMAGESTART_SCAL ER_X = 0.5, START_LOCATE_X = 0.1,_X = 0.07,SCALE_Y_PESTART_LOCATE_Y = 0, SPEE D DAMAGE_SOUND = 6,_X = 0.0250000,DAMAGE_FLAG = DA_HIT_LIGHT + DIC_TIME = 2.0, TEXTURE = 210, DAMAGETO_MONSTER = -24,A_ONETIME_DAMAGE,AGIC_EFF = 108,MMAGATTACK_TYPE_TO_MONSTER = ATTACKTYPE_NORMAL, ATTACK_DIR_TO_MONSTER = APUSH_Y_TO_MONSTER = 0.0,TTACKDIR_UP,PUSH_X_TO_MONSTER = 0.01,}
6.4. Agora iremos montar esse codigo dentro do fireinfo como mostra abaixo:
Código:
FireInfo753 ={--DT_DevilPetSTART_LIFE = 255,ENABLE_DAMAGE = TRUE,SSCALE_Y_PER_X = 0.5,TART_SCALE_X = 0.07,START_LOCATE_X = 00, SPEED_X = 0.0250000,.1,START_LOCATE_Y =DAMAGE_FLAG = DA_HIT_LIGHT +DAMAGE_SOUND = 6, DA_ONETIME_DAMAGE, MAGIC_EFF = 108, MAGIC_TIME = 2.0,ATTACK_TTEXTURE = 210, DAMAGETO_MONSTER = -0.024, YPE_TO_MONSTER = ATTACKTYPE_NORMAL,ATTACK_DIR_TO_MONSTER = ATTACKDI RSH_Y_TO_MONSTER = 0.0,_UP,PUSH_X_TO_MONSTER = 0.01,PU}
6.5. Salve o arquivo e mantenha-o aberto.
7. str_p.stg:
7.1. Copie os valores do sort_br.stg do BGC referente aos valores de texto do mascote do pettemplate.stg
7.2. Salve o str_p.stg e feche-o.
8. sort_p.stg:
8.1. Adicione ao sort a carta e as tecnicas especiais do mascote.
8.2. Salve o sort e feche-o.
9. gcnewmapparticle.stg:
9.1. Você deverá coletar os nomes das particulas que o pet utiliza, mas como identificar? basta no petaction e no fireinfo do mascote em questão verificar as palavras que sejam relacionadas a uma função que contenha particle ( ex: AddParticle ).
9.2. Agora verifique no gcnewmapparticle.stg do seu Grand Chase se as particulas em questão existem, caso não voce deverá repassar os particle info do gcnewmapparticle.stg do bgc ( ou do particle file script do pet ) para o seu gcnewmapparticle.stg.
9.3. Salve o arquivo e feche-o.
10. Arquivos:
10.1. Agora você deverá coletar os arquivos de som, os arquivos de particula e os arquivos de pets e colar na pasta cuja qual será criada o kom a partir dessa pasta que conterá os arquivo do pet.
10.2. Você deverá renomear os arquivos do pet que contenham a extensão frm, exemplo:
Código:
pet017_0_09.frm para pet0ID_0_09.frmexemplo do diabinho:pet017_0_09.frm parapet014_0_09.frm
10.2. Adicione no DataFiles.lua o caminho do arquivo kom que contem os arquivos do mascote.
10.3. Comprima o script.kom e o arquivo kom do pet, coloque-o em seus respectivos diretorios.
10.4. Enjoy.
Creditos:
Yondaime12
Nenhum comentário:
Postar um comentário