Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Bom, acredito que muitos procurem por MODs para o Remere's para facilitar na hora de criar os mapas. Muitas vezes procuramos pois não sabemos como fazer. Vou explicar aqui, como criar suas proprias extensões para o remere's. Não será nada muito avançado e/ou detalhado, mas com esse tutorial, você conseguirá personalizar seu Remere's sem muita dificuldade. 

 

Toda extensão do RME é feita com XML. A parte mais importante é localizar onde está sua pasta de extensões do RME. Para localizá-la, existem dois meios: O primeiro, se seu RME é antigo (v 2.2 ou mais antiga) então provavelmente a pasta de extensões está na propria pasta do RME. Procure sua pasta do RME, abra-a e procure por extensions. Caso seu RME seja mais novo, então abra seu menu Iniciar do Windows, depois clique em "Computador". Na área do endereço (topo da tela, onde está escrito "Computador") clique, apague tudo, digite %appdata% e aperte Enter. Uma pasta se abrirá, com o endereço de "Disco Local > Usuarios > (Seu usuario) > App Data > Roaming. Caso abra apenas a App Data e não abra o roaming, basta abrir a pasta roaming e proceguir. Nela você encontrará várias outras pastas. Procure então pela pasta Remere's Map Editor. Abra-a. Você verá dois arquivos: data e extensions. Abra o extensions.

 

Bom, agora a parte chata terminou. Agora começa a parte mais chata ainda hahaha

Vocês notarão que existem vários arquivos XML ai dentro. Copie um, e cole ai mesmo. Renomeio com o nome que quiserem. Abram-no e deletem tudo que há dentro dele. Vou explicar agora como fazer a mágica acontecer.

 

Todo arquivo de extensão de RME, como eu já disse antes, precisa ser XML. Por sua vez, arquivos XML precisam de um cabeçalho. Para esse tipo de arquivo, nosso cabeçalho será o seguinte:

<materialsextension name="extensions by jeff" author="Jeff" description="extensions compilation" client="8.60">

entendendo:

name = nome da sua extensão (não use nomes repetidos, por favor xD)

author = autor da extensão (puro blábláblá)

description = descrição da extensão (mais blábláblá)

client = versões do mapa que a extensão vai "rodar" (Importante: Se você, por exemplo, colocar client version 8.6 e colocar um item de versão maior que 8.6 o rme vai bugar quando você tentar abrir um mapa de versão 8.6)

 

note que, todos os valores devem ser postos entre " " .

Ok, cabeçalho feito, agora vem a parte chata hahaha

Existem 4 tipos de brush: Terrains (pisos/paredes), Doodads (variedades), Items (items, tipo items, saca?) e Creatures (monstros e npcs).

Por agora, ensinarei apenas como adicionar Terrains e Doodads. Os items e Creatures são fáceis, dá pra aprender sozinho só de ver esse tutorial e ver alguma extension de items ou creatures.

 

Vamos lá. Para criar um Doodad: 

Existem 2 tipos de 'tags' para criar um Doodad. O primeiro, deve ser os detalhes sobre o item e como ele vai ser posto no mapa via RME. Seria como um script .lua . O segundo é literalmente a tag que vai registrar aquele item/brush no remeres, como a tag de um arquivo .lua

<brush name="Lamps" type="doodad" server_lookid="4404" draggable="true" on_blocking="true" thickness="10/10">
<item id="4404" chance="30"/>
</brush> 

name = Nome da brush. No exemplo, é Lamps.

 

type = aqui é o tipo da brush/item. Acho que não preciso aprofundar aqui, por enquanto.

 

server_lookid = aqui é como se fosse um looktype. É o look da brush que aparecerá no RME. Use sempre um id que seja sugestivo para a brush. (Seria estranho utilizar o id de uma sword para uma brush que vai colocar grama '-' )

 

draggable = pra ser sincero, não sei bem pra que serve. geralmente deixo "true" e pronto. hahaha

 

on_blocking = No remere's, esse item bloqueia a passagem? (É sempre útil saber onde o player pode passar ou não, logo não seja negligente nessa parte e.e' )

 

thickness = "frequência" na qual o item aparecerá. Quando você pega aquelas small rocks, se você amplia o tamanho da brush, você nota que há alguns espaços vazios. Isso é um exemplo de thickness. Quanto menor a divisão, menos items são randomizados na brush. (Não tenho certeza absoluta se é isso mesmo, mas creio que seja algo parecido)

 

item id e chance = Aqui você põe os id's que você quer e a chance dele aparecer na brush. Nessa brush, coloquei apenas o id 4404 (lamp). Caso queiram adicionar mais items, apenas copiem e colem essa tag e ponham entre o <brush name ...> e o </brush>. Caso queiram mudar o item utilizando o botão z ou x no rme, utilizem a seguinte tag: <alternate> <item id="ID" chance="CHANCE"/> </alternate>

O chance=" " é a chance do item aparecer. Caso usem o <alternate> </alternate> essa chance será ignorada, até porque o item só mudará caso voce aperte x ou z. Se não usarem o <alternate>, os items que você colocar lá serão postos de acordo com a chance deles e de acordo com o thickness da brush.

 

 

Lembram do 2º tipo de tag que precisamos colocar, para registrar no RME? então. Este tipo de tag deve ficar no final do arquivo. Aqui você vai registrar TODAS as tags para aquele tipo de brush. Para os doodads, a tag fica assim:
<tileset name="Jeff Nature Extensions"> 
        <doodad>
        <brush name="Lamps"/>
        </doodad> 
</tileset>

name = Aqui você põe o nome da "pasta" de doodads. Se você colocar um nome 'aleatório', o rme criará aquela pasta e colocará as brush's nela (recomendo, pois assim você separa suas brush's das brush's "custom" e das criadas por outras pessoas). Se você por o nome de uma já existente, então aquelas brush's irão para a pasta já existente.

brush name = Aqui você põe o nome da brush. Lembram, que a minha era "Lamps"? Então, aqui deve ser o mesmo nome. Tipo, DEVE MEEESMO. Caso ponham outro nome, seu rme vai bugar e n vai abrir as brush's editadas. e.e' Caso queiram adicionar mais brush's para uma mesma pasta, basta colocarem-nas entre o <doodad> e o </doodad>.

 

Agora, para criar uma brush do tipo terrain, seja ela uma parede ou um piso:

 

 

<brush name="bamboo wall" type="wall" server_lookid="3424">
        <wall type="horizontal">
            <item id="3424" chance="500"/>
            <item id="3426" chance="100"/>
            <item id="3432" chance="100"/>
        </wall>
        <wall type="vertical">
            <item id="3423" chance="400"/>
            <item id="3428" chance="100"/>
            <item id="3430" chance="100"/>
        </wall>
        <wall type="corner">
            <item id="3427" chance="1000"/>
        </wall>
        <wall type="pole">
            <item id="3425" chance="1000"/>
        </wall>
    </brush>

Bom, aqui vou ser mais breve.

type = Aqui você põe o tipo da brush. Se for uma parede, então ponha wall. Se for piso, a tag muda, vou mostrar depois.

Note aqui que, para cada <wall type e o </wall>, a tag é diferente. Recomendo sempre manter essa estrutura.

Explicando:

Horizontal = Horizontal Hahahaha (Ids da parede que são > - )

Vertical = Vertical e.e' (Ids da parede que são > | )

Corner = Não sei traduzir isso ao pé da letra, mas é aquela parede que é > _| (e.e')

Pole = Pole Dance Aquela parede em forma de "pino".

 

Aqui eu recomendo que vocês deixem as chances nesse mesmo "nivel". Não precisa ficar arrumando muito... 

Para registrar uma parede, você deve fazer o seguinte:

Ponha isso no final do arquivo:

<tileset name="Jeff Walls/Terrains">       
       <terrain>
       <brush name="bamboo wall"/>
       </terrain>
</tileset>

Mesmo "esquema" dos doodads, mudando apenas o <doodad> </doodad> por <terrain> </terrain>

 

Para criar um piso (não ensinarei a por bordas nele, até pra incentivar o uso das bordas pelo raw e evitar o uso do auto-border.)

Vamos lá: a Primeira "tag" é:

<brush name="Dark Common Old Pavement" type="ground" server_lookid="10492" z-order="3401">
<item id="10492" chance="25"/>
<item id="10493" chance="25"/>
<item id="10494" chance="25"/>
<item id="10495" chance="25"/>
<item id="10496" chance="25"/>
<item id="10497" chance="25"/>
<item id="10498" chance="25"/>
</brush>

Notem que o type aqui é ground e existe aquele z-order. Não faço ideia do que o z-order faça, então recomendo que procurem depois (eu também procurarei, hahahahaha)

os ids do piso devem estar entre os <brush name...> e o </brush> como em todos os outros modelos e o chance também é editável. Caso queiram que um id de piso apareça mais que o outro, ponha o chance dele maior e do outro menor.

 

A tag para registrar um piso é:

<tileset name="Nome da pasta"> 
          <terrain> 
          <brush name="Dark Common Old Pavement"/>
          </terrain> 
</tileset>  

Mesmo esquema de todas as outras, se quiser registrar mais pisos, apenas ponham suas tags entre o <terrain> e </terrain>

 

É isso ai. Espero que tenha ajudado um pouco quem não manjava. Desculpem pela falta de paciência no fim do tutorial e por n ter colocado mais cores e tals. Mas espero que tenham entendido tudo. Qualquer erro, duvida ou sugestão, postem aqui. xD

Editado por SoulSarti (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Opa amigo, seu tutorial ficou realmente show de bola, com certeza irá ajudar diversos mappers.

Portanto, muito obrigado pela sua contribuição. Seu tópico foi aprovado, movido e reputado! ;)

Link para o post
Compartilhar em outros sites
  • 1 year later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por Kimoszin
      Informações
      Oque é o Rent System?
      É um sistema feito para os jogadores poderem alugar alguns itens por uma quantia e por um certo tempo.
      Hmmm, legal... mas para que esse sistema seria util?
      Bom, para o jogador antes de comprar algum item vip, por exemplo. Ele poderia testar para ver seus hits.
      Ok, Mas como ele funciona?
      O sistema vai entregar para o player um item, depois do tempo configuravel ele irá remover, não importa onde esteja, ele vai remover.
      Instalação
      \mods\rent.xml
      <?xml version="1.0" encoding="UTF-8"?> <mod name="Rent System" version="1.0" author="Kimoszin" contact="tibiaking.com" enabled="yes"> <config name="rent_config"><![CDATA[ messages = { sucess = MESSAGE_INFO_DESCR, fail = MESSAGE_STATUS_WARNING, } warningStorage = 45768 items = { ["knight armor"] = {id=2476, time=1, price=3000, premium=true, cap=false}, ["demon legs"] = {id=2495, time=3, price=3000, premium=true, cap=true}, ["blue legs"] = {id=7730, time=2, price=3000, premium=true, cap=true}, ["demon shield"] = {id=2520, time=1, price=3000, premium=true, cap=true}, } function doWarningItemWasRemoved(cid) if (getCreatureStorage(cid, warningStorage) > -1) then local item = items[getItemNameById(getCreatureStorage(cid, warningStorage))] doPlayerSendTextMessage(cid, messages.sucess, "Ok, "..item.time..(item.time > 1 and " minutes" or " minute").." has passed, the rent of "..getItemNameById(item.id).." ended.") doCreatureSetStorage(cid, warningStorage, -1) end end ]]></config> <talkaction words="!rent" event="buffer"><![CDATA[ domodlib('rent_config') local item, itemuid = items[param:lower()], math.random(1000, 65535) if (param == "") then return doPlayerSendTextMessage(cid, messages.fail, "Sorry, you need to inform parameters.") end if (param == "list") then local str = "~* Rent System by Kimoszin *~\n\n" for name, iten in pairs(items) do str = str..string.sub(name, 0, 1):upper()..string.sub(name, 2):lower().." - "..iten.price.."gps \n" end str = str .."\n WWW.TIBIAKING.COM" return doPlayerPopupFYI(cid, str) end if not(item) then return doPlayerSendTextMessage(cid, messages.fail, "Sorry, but it is not possible to rent this item.") end if (item.premium and not(isPremium(cid))) then return doPlayerSendTextMessage(cid, messages.fail, "You need a premium account.") end if (item.cap and not(getPlayerFreeCap(cid) >= getItemWeightById(item.id, 1, 1))) then return doPlayerSendTextMessage(cid, messages.fail, "You don't have capacity.") end if not(doPlayerRemoveMoney(cid, item.price)) then return doPlayerSendTextMessage(cid, messages.fail, "Sorry, you do not have any money.") end doItemSetAttribute(doPlayerAddItem(cid, item.id, 1), "uid", itemuid) doPlayerSendTextMessage(cid, messages.sucess, "You rented a "..getItemNameById(item.id).." for "..item.time.. (item.time > 1 and " minutes" or " minute")..".") doCreatureSetStorage(cid, warningStorage, item.id) local player_id = getPlayerGUID(cid) addEvent(function() local player = getPlayerByGUID(player_id) if not(isPlayer(player)) then db.executeQuery("DELETE FROM `player_items` WHERE `player_items`.`player_id` = "..player_id.." AND `itemtype` = "..item.id..";") else doPlayerSendTextMessage(cid, messages.sucess, "Ok, "..item.time..(item.time > 1 and " minutes" or " minute").." has passed, the rent of "..getItemNameById(item.id).." ended.") doCreatureSetStorage(cid, warningStorage, -1) doRemoveItem(itemuid, 1) end end, item.time * 60 * 1000) ]]></talkaction> <creatureevent name="rentLogin" type="login" event="buffer"><![CDATA[ domodlib('rent_config') doWarningItemWasRemoved(cid) ]]></creatureevent> </mod>  
      Explicações
      ♣ Comandos:
      !rent itemname: vai alugar o item !rent list: vai mostrar a lista dos item que são alugaveis. ♣ Variaveis
      id: id do item que vai ser alugado time: tempo do item que vai ser alugado price: preço do item que vai ser alugado premium: vai verificar se o player é premium cap: vai verificar se o player tem capacidade para alugar o item
    • Por GuiAmaro
      ,
       
      Download: Clique Aqui
      Scan: Clique Aqui
      Descrição: Ilha completinha para vocês galera os que quiserem acompanhar o show-off do Mapa segue o video abaixo. Gosto de criar um mapa depois de forjar um RPG curto sobre o local para despertar mais criatividade na hora de criar os locais e nesta cidade eu me baseei na história de Moisés e as 10 pragas do Egito do livro Êxodo da Bíblia onde as caves são locais devastado por um poder Divino que castigou seres que adoravam coisas que não importavam e traziam desgraça aos locais e as pessoas boas que habitavam a Ilha, e o castigo levou tudo isso que danificava o lado bom da ilha ao subsolo dela e o que era bom e gracioso ficou na parte do térreo da Ilha. Eu dei referência a duas das 10 pragas do Egito em um andar e é representada pela praga que torno as águas do Egito em sangue e no andar abaixo o minimap desenha uma Rã que foi uma das pragas que caiu sobre a nação de Ramsés II. 
       
      Acompanhem o video, se puderem compartilhem com os amigos de vocês que se interessem por mapas únicos. Fiz o mapa do zero durante 1 mês nas minhas horas vagas. Dentro do canal vocês encontrarão vídeos de como eu mapeio, outra cidade e uma hunt, quem quiser se inscrever para acompanhar meus conteúdos agradeço. Ficaria mais grato ainda se vocês curtirem e compartilharem o video em outras comunidades que não tenho acesso. Mapeio tem 10 anos e quero enriquecer bastante a área de mapping da comunidade.
       
      REPORTEM BUGS
       

       
       
    • Por Guilherme.
      Mark Of The Assassin












      O Player causa dano e marca a criatura por 10 segundos. Quando o alvo é marcado, ele recebe 50% de dano a mais.











      Entre em data/mods/ e crie um arquivo chamado mark.xml em seguida cole o código abaixo dentro do arquivo, salve e feche.




      <?xml version="1.0" encoding="UTF-8"?> <mod name="Mark of the Assassin" version="1.0" author="Snake Royal" contact="otland.net" enabled="yes"> <instant name="Mark of the Assassin" words="exori sin" lvl="50" mana="140" prem="1" range="5" needtarget="1" blockwalls="1" needweapon="1" exhaustion="7000" needlearn="0" event="script"> <vocation id="4"/> <vocation id="8"/> <![CDATA[ local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, true) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WEAPONTYPE) function onGetFormulaValues(cid, level, skill, attack, factor) local skillTotal, levelTotal = skill + attack, level / 5 return -(skillTotal / 3 + levelTotal), -(skillTotal + levelTotal) end function onTargetCreature(cid, target) registerCreatureEvent(target, "Mark of the Assassin/statschange001") doCreatureSetStorage(target, 1000, os.time() + 10) doCreatureSetStorage(target, 1001, cid) return true end setCombatCallback(combat, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature") setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onCastSpell(cid, var) return doCombat(cid, combat, var) end ]]> </instant> <event type="statschange" name="Mark of the Assassin/statschange001" event="script"><![CDATA[ function onStatsChange(cid, attacker, type, combat, value) if (getCreatureStorage(cid, 1000) > os.time() and getCreatureStorage(cid, 1001) == attacker and type == STATSCHANGE_HEALTHLOSS) then doSendMagicEffect(getThingPosition(cid), CONST_ME_STUN) doCreatureAddHealth(cid, -math.ceil(value * 0.5)) end return true end ]]></event> </mod>




      A configuração é básica assim como toda spell, basta entender um pouquinho de otserv, esse é uma spell/mod feita por Snake Royal

    • Por GuiAmaro
      Estou criando uma cidade para um amigo que deseja adicioná-la a um projeto novo com seus amigos e fiz inspirada na história de Noé e as pragas do Egito.
      Onde suas cavernas são reflexo da ira de Deus sobre os pecadores, história relatada no velho testamento da bíblia já o vilarejo e o que há no Térreo é reflexo da bondade de Deus sobre os que não se deixaram levar pela maldade e pecados dos humanos que habitavam o local antes do acontecido.
      Uma das cavernas retrata a praga que tornou as águas em sangue e logo abaixo uma área cujo o minimap desenha uma Rã retratando mais uma das 10 pragas do Egito, logo a cima dessas áreas existe uma natureza tentando renascer desse Caos causado pelos pecados dessas pessoas mas tudo que nasce morre e é envenenado pelo mal que habitou por ali.
      Já no térreo da cidade cresce montanhas lindas, uma natureza esplendorosa e um vilarejo humilde, organizado sem ganância ou riquezas mas com tudo que é necessário para viver dentro da Ilha. 
       
      Vilarejo







       
      Térreo
       




       
      Cavernas/Tumba














       
       

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo