obetuno 431 Posted October 31, 2012 Bom dia Cybers ! Vi a algum tempo, tanto aqui quanto em outras comunidades pedidos de um tutorial a respeito. Até mesmo eu durante meses tive problemas com isto me forçando a substituir penteados pelos oficiais para dar certo. Nunca vi um que explique detalhadamente sobre isto, por isso resolvi me dedicar em um. Vamos ver se consigo explicar claramente pra BRs e PTs entendam. Destaco que este tutorial é de minha autoria (obetuno) e de exclusividade da Cyber-Gamers ! Não copie seu conteúdo sem os devidos créditos meus e local da fonte. Para se implementar voce precisa basicamente estas ações: - Ficheiros GR2 e DDS (ou TGA depende da textura que quer implementar), para o Pack "PC" ou "PC2". - Direcionamento nos ficheiros MSM da pack "ROOT" - Implementar no Banco de Dados (ícone que ao clicar muda o penteado). - Desposição do Item também no ITEM_PROTO do cliente. - Quest "hair.quest" PERFEITAMENTE CONFIGURADA ! é o mais importante. - Configuração dos ficheiros SUB da Pack "ICONE" (Na qual mostra a miniatura com o penteado). - Item_List da pack LOCALE, que vai definir o icone do item que vai mudar o cabelo. A maiora dos erros que encontramos está na quest instalada. é nesta quest que iremos dizer ao servidor qual item que ao clicar mudas a textura do cabelo no personagem. Também é nela que se configura algum bonus do cabelo se necessario. Outro erro que encontramos com frequencia está nos ficheiros MSM da root do client. Um pequeno ponto incorreto levas ao não funcionamento, (Penteados brancos sem textura ou até invisiveis). Devido a quantidade de etapas e também ao detalhe das ações que todos encontram tantos erros ao implementar. 1º PASSO - Implementar Ficheiros GR2 e Textura em "PC ou PC2" Estes 2 ficheiros são o penteado em si. O com a terminação GR2 leva sua forma em 3D, caso queiram abri-los para visualizar, utilizem um programa chamado Granny! Muito leve e útil este programa, pois além de visualizar as formas 3D, ele também reproduz ficheiros com dados de movimento e texturas. é essencial que qualquer administrador ou designer de client o tenha como ferramenta. O com a terminação DDS é a textura (no caso a cor). Pode também ter a terminação TGA, BPM e até mesmo JPG em alguns casos. Juntos esses 2 formam o penteado :) Ao terminar de baixar os penteados, provavelmente eles virão somente assim: Primeira coisa a se fazer é colocar os 2 ficheiros nos arquivos "PC" e "PC2" da pasta PACK do client. FATO A SE RECORDAR: Os ficheiros PC e PC2 armazenam várias coisas, por isso é o pack com maior tamanho do client - No PC irão: Armaduras e Penteados de Guerreiro(M) Shura(M) Ninja(F) e Shaman(F), Brilhos, Formas dos Personagens, Designer das Skills, Designer de Ações do Personagem. - No PC2 irão: Armaduras e Penteados de Guerreiro(F) Shura(F) Ninja(M) e Shaman(M), Formas dos Personagens, Designer de Ações do Personagem. Coloque os ficheiros GR2 na pack descompactada em \ymir work\pc\warrior\hair ! Atenção na hora de colocar a textura na pasta! Ela deve estar na pasta que estiver configurada na GR2. Como saber ??? Abram a GR2 na Granny para saberem, vejam: Após colocar os 2 ou mais arquivos, compacte a pack (PC ou PC2) com algum programa de compactação. PS: Não se esqueça de editar as linhas XML com os novos arquivos!!! Se não especificar as linhas com os novos arquivos eles não serão compactados junto dos outros. 2º PASSO - Direcionamento dos Ficheiros MSM na pack "ROOT" Ai que devem prestar atenção, na pack root tem um ficheiro responsável por direcionar as texturas das armaduras e penteados! Cada classe tem um arquivo com seus direcionamentos. vejam um exemplo de um arquivo MSM: Percebam que cada linha tem uma informação sobre a textura e o local onde ela está. Linhas iniciais do ficheiro: *BaseModelFileName = Local onde se encontra a forma do Personagem - Não alteramos nada neste local. *Group HairData { = Marca o inicio da listagem dos penteados. Finaliza com "}" no arquivo - Não se altera nada neste local. *PathName = Local onde estão os penteados da classe do ficheiro. No caso do exemplo, sendo guerreiro(M): "d:/ymir Work/pc/warrior/" - Não convém mexer nesta linha *HairDataCount = Este sim devemos alterar ! é onde as pessoas mais erram ! - Deve colocar aki o numero da quantidade de cabelos que voce tem nesta classe. Por default vem 18 em alguns ficheiros. Recomendo por 28 ! Ou melhor ainda, ponha a quantidade exata que você tem de cabelos (conte todos os Group HairDataXX que vem abaixo contando pelo Group HairData00 que se inicia). Se você colocar errado este local, ou colocar um valor menor que a quantidade de cabelos que voce tem, eles firarão invisíveis no jogo. Linhas representadas por cada penteado: *Group HairData00 = Número do Direcionamento - Pode por qualquer um, desde que não não se repita em outro direcionamento. *HairIndex = Número do Penteado - Este é importante, é a ligação entre o penteado e a quest dos cabelos. Respeite a ordem que ele segue. *Model = Direção da forma em GR2. - Normalmente é no mesmo lugar: "hair/Nome_do_Penteado.gr2" *SourceSkin = Direção da textura principal. - Neste caso, há muitos penteados que têm a mesma forma, só altera a cor. Ai colocamos neste local a direção da textura principal. Se só houver 1 textura para a forma coloque a direção dela mesma. *TargetSkin = Direção da Textura. - Coloque a direção da textura. Em 90% dos casos se encontra junto da forma GR2: "hair/textura_do_pentado.dds" Após configurar os campos corretamente, compacte a root e ponha de volta no client. PS: Você deve fazer isto para cada classe dos penteados! Como disse anteriormente, cada classe possui um arquivo de direcionamentos. 3º PASSO - Impementar no Banco de dados. Claro que para usar um penteado precisamos de um item pra clicar e ele trocar o cabelo do personagem. Existem regras pra esta etapa tambem! Não saia por ai usando querys sem antes ver se estão como voces querem. EXEMPLO DE UMA QUERY PARA PENTEADO: INSERT INTO `item_proto` VALUES ('74001', 0xBFECBCF6BFA120C2F920BCF4C4C628BAD3C0BABBF629, 0x436162656C6F2064652043617368, '18', '10', '0', '1', '106936', '0', '0', '', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '-1', '-1', '-1', '-1', '-1', '-1', '0', '0', '0'); São poucas zonas na query que interessam quando o item é apenas um de uso de cabelos. Vejam os locais que devem prestar atenção nos valores (da esquerda para direita): *Valor "74001" = No caso aqui é o ID do item ! - Muito importante você colocar o ID exato que se encontra na quest "hair.quest" vnum, mais na frente vemos como ela é. *Valor "0xBFECBCF6BFA120C2F920BCF4C4C628BAD3C0BABBF629" = Aqui é o nome do penteado em formato encriptado MySQL5. - Não convém mudar... Não fará diferença a não ser que depois você queira que os penteados sejam dropados de Mobs no jogo. *Valor "0x436162656C6F2064652043617368" = Aqui é o nome proto do item em formato encriptado MySQL5. - No caso, o nome que vai aparecer em menssagem do sistema quando você adquirir o item. Ponha o que desejar. *Valor "18" = Tipo de item ! Type ! - Aqui OBRIGATORIAMENTE tem que ser 18! Colocando este número você especifica para a BD que é um penteado de cabelo e que o item deve sumir depois de clicado. *Valor "10" = Tipo do tipo de item! Subtype - Pode por 0 ou 10. Normalmente os com valor "0" são penteados comuns, os com valor "10" são penteados com bonus, comprados em loja por exemplo. Recomendo por "10" pois sempre usei assim. *Valor "0" = Flag Deixe o valor "0". - Não convém mexer. Deixe sempre ZERO. *Valor "1" = Size, ou quantos espaços ele gasta no inventário. - SEMPRE 1 ! Sempre 1 para penteados. *Valor "106936" = Antiflag, Que classe irá usar o item ou que genero. - Este é o local mais importante de todos! Exite uma regra, na qual posso explicar em outro tutorial que este número especifica que classe, que gênero e quando usa o item. Dependendo do que colocar nessa região, ao clicar aparecerá uma menssagem do sistema dizendo "Sua classe não permite usar este item" ou "Este item só pode ser usado por personagens Masculinos". Vou passar pra vocês os Antiflags corretos para cada penteado, sem especificar genero(Masculinos e femininos da mesma classe poderão usar). GUERREIROS = 106936 NINJAS = 106932 SHURAS = 106924 SHAMANS = 106908 *Valores seguintes = Sempre "0" - Com exceção do GOLD ou SHOP_BUY, pois nesse você especifica os valores de compra e venda nos NPCs. PS: Em GOLD e SHOP_BUY NUNCA DEVE SER "ZERO", coloque "1" se não quiser preço. A não ser que você tenha implementado uma diff no ficheiro game para permitir itens a preço ZERO nas lojas dos NPCs. Tendo colocado a query, você já terá o ID do cabelo que quer mudar. O ID do item que é ligado a quest "hair.quest". 4º PASSO - Adicionar a linha no ITEM_PROTO do client Nesta região não tem segredo. Meta na linha os mesmos valores que você pos na DB. Após o termino ponha na pack do LOCALE e recompacte. 5º PASSO - Quest "Hair.quest" Aqui está a mágica de tudo ! Neste script é onde acontece a referência de cada penteado pra cada item e seu bonus ! Aqui tem um exemplo de uma quest para vocês usarem que possui 22 penteados para cada classe e genero! Vejam os locais onde você pode atribuir o bonus desejado pelo cabelo. quest hair begin state start begin function My_hair_item(vnum,index) hair_list={} -- vnum /hair/ option / howmuch / duration hair_list [74001] = {1001, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74002] = {1002, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74003] = {1003, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74004] = {1004, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74005] = {1005, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74006] = {1006, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74007] = {1007, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74008] = {1008, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74009] = {1009, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74010] = {1010, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74011] = {1011, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74012] = {1012, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74013] = {1013, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74015] = {1014, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74017] = {1015, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74018] = {1016, apply.ATTBONUS_ASSSASSIN, 0, 2592000} hair_list [74019] = {1017, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74020] = {1018, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74021] = {1019, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74022] = {1020, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74023] = {1021, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74024] = {1022, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74251] = {2001, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74252] = {2002, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74253] = {2003, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74254] = {2004, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74255] = {2005, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74256] = {2006, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74257] = {2007, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74258] = {2008, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74259] = {2009, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74260] = {2010, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74261] = {2011, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74262] = {2012, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74263] = {2013, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74265] = {2014, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74267] = {2015, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74268] = {2016, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74269] = {2017, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74270] = {2018, apply.ATTBONUS_NINJA, 0, 2592000} hair_list [74271] = {2019, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74272] = {2020, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74273] = {2021, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74274] = {2022, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74501] = {3001, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74502] = {3002, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74503] = {3003, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74504] = {3004, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74505] = {3005, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74506] = {3006, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74507] = {3007, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74508] = {3008, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74509] = {3009, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74510] = {3010, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74511] = {3011, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74512] = {3012, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74513] = {3013, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74515] = {3014, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74517] = {3015, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74518] = {3016, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74519] = {3017, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74520] = {3018, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74521] = {3019, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74522] = {3020, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74523] = {3021, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74524] = {3022, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74751] = {4001, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74752] = {4002, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74753] = {4003, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74754] = {4004, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74755] = {4005, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74756] = {4006, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74757] = {4007, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74758] = {4008, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74759] = {4009, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74760] = {4010, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74761] = {4011, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74762] = {4012, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74763] = {4013, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74765] = {4014, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74767] = {4015, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74768] = {4016, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [74769] = {4017, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74770] = {4018, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74771] = {4019, apply.ATTBONUS_SHAMAN, 0, 2592000} hair_list [74772] = {4020, apply.ATTBONUS_SURA, 0, 2592000} hair_list [74773] = {4021, apply.ATTBONUS_WARRIOR, 0, 2592000} hair_list [74774] = {4022, apply.ATTBONUS_ASSASSIN, 0, 2592000} hair_list [75001] = {1001, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75002] = {1002, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75003] = {1003, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75004] = {1004, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75005] = {1005, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75006] = {1006, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75007] = {1007, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75008] = {1008, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75009] = {1009, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75010] = {1010, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75011] = {1011, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75012] = {1012, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75013] = {1013, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75015] = {1014, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75017] = {1015, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75018] = {1016, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75019] = {1017, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75020] = {1018, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75021] = {1019, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75022] = {1020, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75023] = {1021, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75024] = {1022, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75201] = {2001, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75202] = {2002, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75203] = {2003, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75204] = {2004, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75205] = {2005, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75206] = {2006, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75207] = {2007, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75208] = {2008, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75209] = {2009, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75210] = {2010, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75211] = {2011, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75212] = {2012, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75213] = {2013, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75215] = {2014, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75217] = {2015, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75218] = {2016, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75219] = {2017, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75220] = {2018, apply.ATTBONUS_NINJA, 10, 2592000} hair_list [75221] = {2019, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75222] = {2020, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75223] = {2021, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75224] = {2022, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75401] = {3001, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75402] = {3002, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75403] = {3003, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75404] = {3004, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75405] = {3005, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75406] = {3006, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75407] = {3007, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75408] = {3008, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75409] = {3009, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75410] = {3010, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75411] = {3011, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75412] = {3012, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75413] = {3013, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75415] = {3014, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75417] = {3015, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75418] = {3016, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75419] = {3017, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75420] = {3018, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75421] = {3019, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75422] = {3020, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75423] = {3021, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75424] = {3022, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75601] = {4001, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75602] = {4002, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75603] = {4003, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75604] = {4004, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75605] = {4005, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75606] = {4006, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75607] = {4007, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75608] = {4008, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75609] = {4009, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75610] = {4010, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75611] = {4011, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75612] = {4012, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75613] = {4013, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75615] = {4014, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75617] = {4015, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75618] = {4016, apply.ATTBONUS_ASSASSIN, 10, 2592000} hair_list [75619] = {4017, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75620] = {4018, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75621] = {4019, apply.ATTBONUS_SHAMAN, 10, 2592000} hair_list [75622] = {4020, apply.ATTBONUS_SURA, 10, 2592000} hair_list [75623] = {4021, apply.ATTBONUS_WARRIOR, 10, 2592000} hair_list [75624] = {4022, apply.ATTBONUS_ASSASSIN, 10, 2592000} return hair_list[vnum][index] end function leave_log(item_vnum) char_log(0, "CHANGE_HAIR", string.format("USE_ITEM(%d)",item_vnum)) -- Set Item log --char_log(0, "CHANGE_HAIR", string.format("SET_HAIR(%d)",item_vnum)) --Set Item log char_log(0, "CHANGE_HAIR", string.format("END_SEC(%d)",get_time()+ hair.My_hair_item(item_vnum,4)) ) -- Duration log --char_log(0, "CHANGE_HAIR", string.format("AFFECT(%s), DURATION:%d)",hair.My_hair_item(item_vnum,2),get_time()+ hair.My_hair_item(item_vnum,4))) -- Effect set log char_log(0, "CHANGE_HAIR", "CHANGE_HAIR_END") -- End log end when 74001.use or 74002.use or 74003.use or 74004.use or 74005.use or 74006.use or 74007.use or 74008.use or 74009.use or 74010.use or 74011.use or 74012.use or 74013.use or 74015.use or 74017.use or 74018.use or 74019.use or 74020.use or 74021.use or 74022.use or 74023.use or 74024.use or 75001.use or 75002.use or 75003.use or 75004.use or 75005.use or 75006.use or 75007.use or 75008.use or 75009.use or 75010.use or 75011.use or 75012.use or 75017.use or 75013.use or 75015.use or 75018.use or 75019.use or 75021.use or 75022.use or 75023.use or 75024.use or 75020.use with pc.get_job()==0 begin pc.set_part(PART_HAIR, hair.My_hair_item(item.vnum,1)) affect.remove_hair() affect.add_hair(hair.My_hair_item(item.vnum,2),hair.My_hair_item(item.vnum,3) , hair.My_hair_item(item.vnum,4)) pc.setqf("limit_time",get_time()+ hair.My_hair_item(item.vnum,4)) hair.leave_log(item.vnum) item.remove() end when 74251.use or 74252.use or 74253.use or 74254.use or 74255.use or 74256.use or 74257.use or 74258.use or 74259.use or 74260.use or 74261.use or 74262.use or 74263.use or 74265.use or 74267.use or 74268.use or 74269.use or 74270.use or 74271.use or 74272.use or 74273.use or 74274.use or 75201.use or 75202.use or 75203.use or 75204.use or 75205.use or 75206.use or 75207.use or 75208.use or 75209.use or 75210.use or 75213.use or 75215.use or 75211.use or 75212.use or 75212.use or 75217.use or 75218.use or 75219.use or 75221.use or 75222.use or 75223.use or 75224.use or 75220.use with pc.get_job()==1 begin pc.set_part(PART_HAIR, hair.My_hair_item(item.vnum,1)) affect.remove_hair() affect.add_hair(hair.My_hair_item(item.vnum,2),hair.My_hair_item(item.vnum,3) , hair.My_hair_item(item.vnum,4)) pc.setqf("limit_time",get_time()+hair.My_hair_item(item.vnum,4)) hair.leave_log(item.vnum) item.remove() end when 74501.use or 74502.use or 74503.use or 74504.use or 74505.use or 74506.use or 74507.use or 74508.use or 74509.use or 74510.use or 74511.use or 74512.use or 74513.use or 74515.use or 74517.use or 74518.use or 74519.use or 74520.use or 74521.use or 74522.use or 74523.use or 74524.use or 75401.use or 75402.use or 75403.use or 75404.use or 75405.use or 75406.use or 75407.use or 75408.use or 75409.use or 75410.use or 75413.use or 75415.use or 75411.use or 75412.use or 75417.use or 75418.use or 75419.use or 75421.use or 75422.use or 75423.use or 75424.use or 75420.use with pc.get_job()==2 begin pc.set_part(PART_HAIR, hair.My_hair_item(item.vnum,1)) affect.remove_hair() affect.add_hair(hair.My_hair_item(item.vnum,2),hair.My_hair_item(item.vnum,3) , hair.My_hair_item(item.vnum,4)) pc.setqf("limit_time",get_time()+hair.My_hair_item(item.vnum,4)) hair.leave_log(item.vnum) item.remove() end when 74751.use or 74752.use or 74753.use or 74754.use or 74755.use or 74756.use or 74757.use or 74758.use or 74759.use or 74760.use or 74761.use or 74762.use or 74761.use or 74763.use or 74765.use or 74767.use or 74768.use or 74769.use or 74770.use or 74771.use or 74772.use or 74773.use or 74774.use or 75601.use or 75602.use or 75603.use or 75604.use or 75605.use or 75606.use or 75607.use or 75608.use or 75609.use or 75610.use or 75611.use or 75613.use or 75615.use or 75612.use or 75617.use or 75618.use or 75619.use or 75621.use or 75622.use or 75623.use or 75624.use or 75620.use with pc.get_job()==3 begin pc.set_part(PART_HAIR, hair.My_hair_item(item.vnum,1)) affect.remove_hair() affect.add_hair(hair.My_hair_item(item.vnum,2),hair.My_hair_item(item.vnum,3) , hair.My_hair_item(item.vnum,4)) pc.setqf("limit_time",get_time()+ hair.My_hair_item(item.vnum,4)) hair.leave_log(item.vnum) item.remove() end end end é importante que esta quest esteja perfeita! Recomendo que use esta que mandei, pois uso ela normal em meu servidor. Salve-a no bloco de notas, renomeie para "hair.quest" e ative a quest no FreeBSD. Dependendo das files tem um jeito diferente, aqui na minha usamos o ./qc "NOME_DA_QUEST.QUEST". Exemplo comandos para files Daroo r1678: # cd /usr/home/game/share/locale/germany/quest [ENTER] # ./qc hair.quest [ENTER] Caso queiram colocar outros penteados, deve acrescentar as seguintes linhas: hair_list [74006] = {1006, apply.ATTBONUS_ASSASSIN, 0, 2592000} ID, Numero do Penteado, Bonus, Valor do Bonus, Tempo do Bonus when 74001.use or Abaixo de todos coloque NUMERO_DO_ITEM.use or ! IMPORTANTE que cada classe tem um local ! Veja esta linha de comando no final do script: with pc.get_job()==0 begin Esta especifica a classe que vai usar, no caso "0" é para guerreiros ! Respeite essa regra. 6º PASSO - Configuração dos ficheiros SUB Não vou me aprofundar muito nesta parte. Somente os penteados oficiais possuem uma miniatura de exemplo pra usar. A não ser que você trabalhe em uma! Caso queirão fazer a propria, sigam o padrão das outras que não tem segredo, siga como os já feitos mudando apenas o ID do item do cabelo. Ao final compacte acrescentando as linhas adicionais do XML. 7º PASSO - Item-List da pasta LOCALE Para finalizar, aqui você especifica o icone que o item do cabelo irá usar. Exemplo: 74001 ETC icon/item/73001.tga Comece pelo ID do item e depois separe a linha com [TAB] ETC = Significa que não é armadura nem arma. é um item comum do jogo. icon/item/73001.tga = Local e nome do icone do cabelo. Normalmente, por default usamos estes IDs dos icones: GUERREIROS = icon/item/73001.tga NINJAS = icon/item/73251.tga SHURAS = icon/item/73501.tga SHAMANS = icon/item/73751.tga Compacte a LOCALE com a item_list com as linhas configuradas. Recomendo que coloque IDs a mais, caso um dia você precise colocar mais penteados! Sei que envolve muitas etapas, mas se seguir a risca com certeza dará certo. Caso precisem de ajuda e eu tiver um tempo posso ajudar ^^ Coloquei as dúvidas neste mesmo tópico e eu respondo. Caso queiram baixar penteados, existem bons aki na comunidade na área de RECURSOS ! Opte por colocar os Oficiais primeiro... São desbugados, texturas de qualidade... As texturas em TGA podem apresentar problemas in game ou baixa qualidade que não sei explicar. Como todos aqui estou aprendendo também. Obrigado, espero que tenha sido claro e que tenha ajudado muita gente. Créditos: OBETUNO - Cyber-Gamers Se lhe foi útil... um clique no http://cyber-gamers.org/public/style_emoticons/default/451960.gif ai do lado e eu estou grato 12 corinthiano, lpmr, ediciusPILL and 9 others reacted to this Share this post Link to post Share on other sites
Guest Henrique Oliveira™ Posted October 31, 2012 Obrigado por partilhares ta mesmo muito bom ja espetei ali um http://cyber-gamers.org/public/style_emoticons/default/451960.gif xD Continua! Share this post Link to post Share on other sites
obetuno 431 Posted October 31, 2012 Obrigado por partilhares ta mesmo muito bom ja espetei ali um http://cyber-gamers.org/public/style_emoticons/default/451960.gif xD Continua! Depois faço te o do Putty ! ;) Share this post Link to post Share on other sites
nicoleroque 59 Posted October 31, 2012 muito bom já ao tempo que esperava por um tópico assim de implementar cabelos já tens o http://cyber-gamers.org/public/style_emoticons/default/451960.gif meu e muito obrigado... Share this post Link to post Share on other sites
obetuno 431 Posted October 31, 2012 muito bom já ao tempo que esperava por um tópico assim de implementar cabelos já tens o http://cyber-gamers.org/public/style_emoticons/default/451960.gif meu e muito obrigado...:Ddenada Share this post Link to post Share on other sites
Guest Henrique Oliveira™ Posted November 1, 2012 Depois faço te o do Putty !;)Obrigado Share this post Link to post Share on other sites
Paulo Junior 2 Posted November 19, 2012 bom tuturial mais entendi NADA Share this post Link to post Share on other sites
รเи√@ℓ 90 Posted November 19, 2012 Tutorial muito bom msm testado 100% funcional, bom tuturial mais entendi NADA Se vc não tem nenhum conhecimento em metin nao intede nada msm não. 1 SINVAL o.O reacted to this Share this post Link to post Share on other sites
BOBE 0 Posted November 25, 2012 mano eu tamben nao entendi nada veynao tem donwlondw nada ai comprica Share this post Link to post Share on other sites
obetuno 431 Posted March 16, 2013 mano eu tamben nao entendi nada vey nao tem donwlondw nada ai comprica Não disponibilizei recursos... E sim como faze-lo. O procedimento é o mesmo para qualquer penteado que queira colocar no serv. Caso queira baixar algum, existem alguns tópicos na comunidade com penteados para baixar. :) Share this post Link to post Share on other sites