Ir para conteúdo

SoulSarti

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    SoulSarti deu reputação a Cat em Como criar bordas bonitas   
    Como criar bordas mais bonitas
    (não publicar em outro fórum, obrigado)
     
       Olá TibiaKing, essa é a segunda versão de um tutorial antigo meu. Eu vi e vejo até hoje a galera cometer loucuras com bordas, quando na verdade é algo mais simples que parece. A questão é que é preciso de treino para poder aplicar as técnicas mostradas aqui de uma forma ágil e correta, tentei deixar o tutorial com mais imagens do que texto, para facilitar o entendimento de vocês, então abra logo seu editor e treine, brasil está carente de mappers e você pode ser um dos melhores, basta praticar! Se tiver dúvidas pergunte nos comentários que eu ajudarei.
    Está pronto?
     
     
     
    INTRODUÇÃO
       Eu escolhi grass por ser a mais utilizada, treinei dois anos com ela, eu ficava criando os formatos e deletando por insatisfação com o resultado, isso ajudou, porque depois disso o restante das bordas ficavam mais familiares na hora de mapear.
    Isso que vou começar falando é um detalhe muito importante e que define muito o seu estilo de criar bordas. Percebo que a maioria dos mappers que iniciam começam utilizando no mapa muito mais as bordas de B do que de A, veja as imagens:

    Existem dois jeitos simples de usar bordas e isso vai definir em parte como será o resultado, se você usar mais B seu mapa será quadrado, porém utilizando mais o A seu mapa ganhará forma e liberdade. Mas isso não significa que usar mais B seja errado, vai depender do que você precisa fazer, até porque é possível fazer um mapa com formas bonitas utilizando somente itens de B, mas não vou me aprofundar nessa técnica agora, preste atenção em A.
    As imagens abaixo são exemplos de um mapa quadrado e outro com formato aperfeiçoado, veja a quantidade de itens de A e B em cada exemplo.
     

     

     
       Agora você entende que ao fazer bordas deve utilizar em maior quantidade o A se quiser formatos livres e aperfeiçoados, e B para mapas quadrados? Mesmo assim, algumas partes do mapa podem acabar contento mais B, vai depender da proporção e da sua perspectiva, jamais se limite por causa disso!
    A imagem abaixo mostra os tipos de formatos que podem ser utilizados para fazer a curvatura das bordas, existem infinitas possibilidades, algumas muito trabalhosas, mas essas são ótimas para começar. É um exemplo na diagonal com uma direção apenas, você pode dar formatos para várias direções do mapa e não unicamente à direção mostrada abaixo, o importante é que você entenda o impacto que cada tipo de borda acrescenta ao mapa.
     

     
    Veja os exemplos generalizados utilizando as formas acima, faça a mesma coisa, conforme você for treinando vai descobrir habilidades de moldar esses formatos!
     

     
     
     
     
    Outros Exemplos:
     

     
     
     
    COMPLEMENTO
    Para deixar as bordas ainda mais vivas, utilize os recursos disponíveis que completam a temática, veja o exemplo abaixo e descubra o poder de uma borda bem feita:
     


     
    Se gostou ou isso foi útil para você, repute o tópico, isso vai me incentivar a fazer novos tutoriais mais elaborados, pois saberei que estão curtindo!
    Até o próximo tutorial
     
     
     
     
  2. Gostei
    SoulSarti deu reputação a NatsU em [Link Quebrado] All-In-One (10.98)   
    Olá galera, como estão as festas? Muito tempo que não posto nada aqui pois estou meio desligado desse meio, mas venho trazer pra vocês, preguiçosos, um "pacote" All-In-One, com vários programas de edição (já compilados), o cliente 10.98 e um servidor TFS 1.2, VIRGEM. Lembrando que todos esses foram programas testados e alguns compilados em Windows 8.1 (x64), com Visual Studio 2017 RC.
     
    O pacote contém:
     
    Ferramentas:
    Dat_Spr Editor (Object Builder 0.3.3)  Item Editor (0.4)  Pic Editor  Map Editor (RME 3.2)  
    Client:
    Tibia 10.98  
    Server:
    OTX Server 3.7 (TFS 1.2)  
    OBS: Nenhum desses programas são de minha autoria, a maioria é do "Mignari" ou otimizado por ele.
    OBS²:Vou disponibilizar um link de um tutorial de como colocar um servidor online nas versões atuais, ele é bem prático e objetivo: Tutorial
    OBS³: Eu recomendo fortemente vocês extraírem esse pacote no diretório raiz do seu computador (geralmente C:/). 
     
    Download: Mediafire
    Scan: VirusTotal
     
    Obrigado e até um dia!
     
  3. Gostei
    SoulSarti recebeu reputação de Kyllini em (Resolvido)[Pedido] Npc que para quest   
    Hahahahah sou nada  Bem, espero ter ajudado. Precisando, manda inbox, ou marca no post
  4. Curtir
    SoulSarti recebeu reputação de FlavioHulk em [SCRIPT] Adicionar item no chão por x tempo   
    Magina!
  5. Obrigado
    SoulSarti recebeu reputação de kelvyn93 em (Resolvido)[Pedido] Npc que para quest   
    @Kyllini segue o script do npc. Espero que esteja funcional! Abraços!
     
    local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local config = { destino = {x=1553, y=1825, z=4}, -- para onde o player vai ser teleportado storage = 1111, -- storage da quest. lembre-se de por o mesmo storage da quest que voce fez permitir = {1,2,3,4}, --id das vocações que podem ir money = 100000000 -- dinheiro (aqui está custando 100kk) } playerVocInfo = getVocationInfo(getPlayerVocation(cid)) if msgcontains(msg, 'quest') or msgcontains(msg, 'promotion') then if(getPlayerStorageValue(cid, config.storage) ~= 1) and (isInArray(config.permitir, playerVocInfo.id)) then npcHandler:say("Eu posso te levar para a Quest Promotion. Eu cobrarei 100kk para a sua morte chegar! Diga {sim} caso queira desafiar seu destino, ou {nao}, se voce for um covarde!", cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, config.storage) >= 1 then -- caso ja tenha a quest feita npcHandler:say("Desculpe voce ja fez a Quest Promotion. Nao posso permitir que voce pise naquelas terras novamente.", cid) return true elseif not isInArray(config.permitir, playerVocInfo.id) then -- caso nao tenha a vocação permitida npcHandler:say("Desculpe, nao posso permitir que players com a sua voca\çao pisem nessas terras.", cid) return true end elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1 then if doPlayerRemoveMoney(cid, config.money) then npcHandler:say("HAHAHA Ja vou preparando o seu caixao, entao!", cid) doTeleportThing(cid, config.destino) talkState[talkUser] = 0 else npcHandler:say("HAHAHAH! Quer enfrentar desafios mas nao tem nem um centavo no bolso? Saia daqui, charlatao!", cid) talkState[talkUser] = 0 end elseif(msgcontains(msg, 'no') or msgcontains(msg, 'nao')) and talkState[talkUser] > 0 then npcHandler:say("La nao \é lugar para covardes, mesmo! HAHAH", cid) talkState[talkUser] = 0 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())  
  6. Curtir
    SoulSarti recebeu reputação de Kyllini em (Resolvido)[Pedido] Script de bau com mensagem Global   
    Hehe  marca la como melhor resposta e da aquele repzin maroto. Jaja vou trabalhar no script do npc. é rapido, mas eu to trabalhando nos meus projetos ao msm tempo, entao pode demorar um tiquin. mas sai ainda hoje hahaha
  7. Curtir
    SoulSarti recebeu reputação de Kyllini em (Resolvido)[Pedido] Script de bau com mensagem Global   
    tenta assim (sono ta me atrapalhando.. aushausha)
     
    local config = { items = {{12714,1}}, -- aqui vc configura quais items vc quer dar de recompensa. caso for mais de 1, adicione uma virgula e ponha a id e qtd dentro de colchetes --{{2160,3},{2134,1}}, voc = {1}, -- aqui vc poe os ids das vocações que podem abrir o bau. caso sejam mais de 1, basta adicionar uma virgula dps do ultimo numero e por o outro. voc = {5,6}, storage = 5000, -- altere para o storage que você desejar gmessage = true, -- vai mandar mensagem global quando o jogar finalizar a quest? true = sim | false = nao unique = 1000, --uniqueid do bau. caso nao tenha, deixe 0, caso tenha, ponha o valor. teleport = {true, {x = 157, y = 51, z = 7}}, --vai teletransportar o jogar ao finalizar a quest? se sim, mude para true e dps da virgula mude o {} para a posição desejada, ex: --teleport = {true, {x = 2438, y = 2400, z = 9}} nome = "Hellraiser" -- aqui vc poe o nome da sua quest, se tiver. Na mensagem global, aparecerá da seguinte maneira: -- "O player (nomedochar) completou a quest Hellraiser!." Deixe em branco o nome para nao mostrar qual foi a quest feita (isso ainda vai gerar uma mensagem global!) } function onUse(cid, item, frompos, item2, topos) if item.uid == config.unique then if getPlayerStorageValue(cid, config.storage) ~= 1 and isInArray(config.voc, getPlayerVocation(cid)) then if config.gmessage and config.nome ~= "" then doBroadcastMessage("O player "..getCreatureName(cid).." completou a quest ".. config.nome .. "!",MESSAGE_STATUS_WARNING) elseif config.gmessage and config.nome == "" then doBroadcastMessage("O player "..getCreatureName(cid).." completou uma quest!",MESSAGE_STATUS_WARNING) end setPlayerStorageValue(cid, config.storage, 1) for i = 1, #config.items do doPlayerAddItem(cid, config.items[1], config.items[2]) end if config.teleport[1] then tp = config.teleport[2] doTeleportThing(cid, tp) end elseif getPlayerStorageValue(cid, config.storage) == 1 then -- caso ja tenha feito a quest doPlayerSendCancel(cid, "Você já fez essa quest!") elseif not isInArray(config.voc, getPlayerVocation(cid)) then -- caso nao seja da vocação apropriada doPlayerSendCancel(cid, "Você não pode receber a recompensa porque não tem a vocação apropriada!") end end return true end  
  8. Curtir
    SoulSarti recebeu reputação de Kyllini em (Resolvido)[Pedido] Script de bau com mensagem Global   
    UAHEUAHEUAHEUHA foi mal, eu corrigi o teleport mas eu usei uma versao antiga do script, onde eu n tinha modificado os items. 
    onde tem o
    for i = 1, #config.items do doPlayerAddItem(cid, config.items[1], config.items[2]) end  
    substitua por 
     
    for i = 1, #config.items do doPlayerAddItem(cid, config.items[i][1], config.items[i][2]) end  
  9. Curtir
    SoulSarti recebeu reputação de Kyllini em (Resolvido)[Pedido] Npc que para quest   
    @Kyllini segue o script do npc. Espero que esteja funcional! Abraços!
     
    local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local config = { destino = {x=1553, y=1825, z=4}, -- para onde o player vai ser teleportado storage = 1111, -- storage da quest. lembre-se de por o mesmo storage da quest que voce fez permitir = {1,2,3,4}, --id das vocações que podem ir money = 100000000 -- dinheiro (aqui está custando 100kk) } playerVocInfo = getVocationInfo(getPlayerVocation(cid)) if msgcontains(msg, 'quest') or msgcontains(msg, 'promotion') then if(getPlayerStorageValue(cid, config.storage) ~= 1) and (isInArray(config.permitir, playerVocInfo.id)) then npcHandler:say("Eu posso te levar para a Quest Promotion. Eu cobrarei 100kk para a sua morte chegar! Diga {sim} caso queira desafiar seu destino, ou {nao}, se voce for um covarde!", cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, config.storage) >= 1 then -- caso ja tenha a quest feita npcHandler:say("Desculpe voce ja fez a Quest Promotion. Nao posso permitir que voce pise naquelas terras novamente.", cid) return true elseif not isInArray(config.permitir, playerVocInfo.id) then -- caso nao tenha a vocação permitida npcHandler:say("Desculpe, nao posso permitir que players com a sua voca\çao pisem nessas terras.", cid) return true end elseif (msgcontains(msg, 'yes') or msgcontains(msg, 'sim')) and talkState[talkUser] == 1 then if doPlayerRemoveMoney(cid, config.money) then npcHandler:say("HAHAHA Ja vou preparando o seu caixao, entao!", cid) doTeleportThing(cid, config.destino) talkState[talkUser] = 0 else npcHandler:say("HAHAHAH! Quer enfrentar desafios mas nao tem nem um centavo no bolso? Saia daqui, charlatao!", cid) talkState[talkUser] = 0 end elseif(msgcontains(msg, 'no') or msgcontains(msg, 'nao')) and talkState[talkUser] > 0 then npcHandler:say("La nao \é lugar para covardes, mesmo! HAHAH", cid) talkState[talkUser] = 0 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())  
  10. Gostei
    SoulSarti recebeu reputação de Yamborghini em [PEDIDO] NPC Vocation 2   
    voce pode fazer dessa forma:
     
    local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then  return false end   local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local x = {1,2} -- Ids das vocaçoes necessarias pra promote. para adicionar mais, basta por uma virgula dps do ultimo numero e adicionar a id da voc local sto = 4642 -- storage praq ele n faça a promotion novamente local lvl = 8 -- lvl ao resetar local health = 185 -- hp ao resetar local mana = 35  -- mana ao resetar local v = getVocationInfo(getPlayerVocation(cid)) if (msgcontains(msg, 'promotion')) then  if getPlayerStorageValue(cid, sto) == -1 then   if isInArray(x, getPlayerVocation(cid)) then     local playerid = getPlayerGUID(cid)        selfSay('Congratulations! You were promoted', cid)   setPlayerStorageValue(cid, sto, 1)   setPlayerPromotionLevel(cid, v.id + 4) -- aqui o sistema pega a vocação atual e adicona a proxima (v.id + 4). assim, basta adicionar a voc base na variavel x.   setCreatureMaxHealth(cid, health)   setCreatureMaxMana(cid, mana)   db.executeQuery("UPDATE `players` SET `level`="..lvl..",`experience`= 4200 WHERE `players`.`id`= ".. playerid .."") else   selfSay('You do not have the required vocation', cid)   end  else  selfSay('You have already been promoted', cid)  end return true end end    npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())  
    no outro codigo, nao havia a função para promover o jogador e seriam necessarios npcs diferentes pra cada voc. com esse, um unico npc pode promover qlqr personagem desde que a vocação dele seja guardada na variavel x.
  11. Gostei
    SoulSarti recebeu reputação de Yamborghini em [PEDIDO] NPC Vocation 2   
    local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local x = {1,2} -- Ids das vocaçoes necessarias pra promote. para adicionar mais, basta por uma virgula dps do ultimo numero e adicionar a id da voc local sto = 4642 -- storage praq ele n faça a promotion novamente local lvl = 8 -- lvl ao resetar local lvlmin = 500 --lvl para resetar local health = 185 -- hp ao resetar local mana = 35 -- mana ao resetar local v = getVocationInfo(getPlayerVocation(cid)) if (msgcontains(msg, 'promotion')) then if getPlayerStorageValue(cid, sto) == -1 and getPlayerLevel(cid) >= lvlmin then if isInArray(x, getPlayerVocation(cid)) then local playerid = getPlayerGUID(cid) selfSay('Congratulations! You were promoted', cid) setPlayerStorageValue(cid, sto, 1) setPlayerPromotionLevel(cid, v.id + 4) -- aqui o sistema pega a vocação atual e adicona a proxima (v.id + 4). assim, basta adicionar a voc base na variavel x. setCreatureMaxHealth(cid, health) setCreatureMaxMana(cid, mana) db.executeQuery("UPDATE `players` SET `level`="..lvl..",`experience`= 4200 WHERE `players`.`id`= ".. playerid .."") else selfSay('You do not have the required vocation', cid) end else selfSay('You have already been promoted or doesnt have the necessary experience', cid) end return true end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) pronto  só dar aquele rep, se possivel, pra mim e pro sttorm,  por ter criado a base do script hahaha
  12. Gostei
    SoulSarti recebeu reputação de samuelandrade45 em [SCRIPT] Adicionar item no chão por x tempo   
    vc n trocou o codigo, ou pelo menos n citou o correto:
    a alteração esta na funçao removeItem()
    -- item = id do item que vai ser criado na invasão -- time = tempo em segundos para o item em questao ser apagado -- para adicionar mais posições, basta copiar a posição e adicionar depois da ultima. -- lembrando de acrescentar a vírgula na penúltima e deixar a ultima sem, conforme está no modelo. local config = {monster = "fire soldier", item = 1487, time = 60, pos = { {x= 1012, y= 1034, z= 7}, {x= 1016, y= 1030, z= 7}, {x= 1016, y= 1038, z= 7}, {x= 1014, y= 1044, z= 7}, {x= 1012, y= 1047, z= 7}, {x= 1024, y= 1052, z= 7}, {x= 1028, y= 1056, z= 7}, {x= 1022, y= 1061, z= 7}, {x= 1028, y= 1065, z= 7}, {x= 1035, y= 1065, z= 7}, {x= 1040, y= 1058, z= 7}, {x= 1046, y= 1055, z= 7}, {x= 1052, y= 1056, z= 7}, {x= 1049, y= 1051, z= 7}, {x= 1058, y= 1059, z= 7}, {x= 1059, y= 1049, z= 7}, {x= 1059, y= 1044, z= 7}, {x= 1064, y= 1036, z= 7}, {x= 1056, y= 1031, z= 7}, {x= 1072, y= 1038, z= 7}, {x= 1079, y= 1039, z= 7}, {x= 1087, y= 1031, z= 7}, {x= 1092, y= 1038, z= 7}, {x= 1082, y= 1025, z= 7}, {x= 1086, y= 1014, z= 7}, {x= 1086, y= 1004, z= 7}, {x= 1097, y= 1002, z= 7}, {x= 1103, y= 998, z= 7}, {x= 1108, y= 994, z= 7}, {x= 1081, y= 996, z= 7}, {x= 1067, y= 993, z= 7}, {x= 1057, y= 995, z= 7}, {x= 1045, y= 996, z= 7}, {x= 1036, y= 1005, z= 7}, {x= 1034, y= 998, z= 7}, {x= 1021, y= 996, z= 7}, {x= 1015, y= 999, z= 7}, {x= 1008, y= 993, z= 7}, {x= 1008, y= 1009, z= 7}, {x= 1004, y= 1021, z= 7}, {x= 1005, y= 1045, z= 7}, {x= 1065, y= 1024, z= 7}, {x= 1053, y= 1015, z= 7}, {x= 1044, y= 1006, z= 7}, {x= 1048, y= 1024, z= 7}, {x= 1038, y= 1030, z= 7}, {x= 1044, y= 1043, z= 7} }} function removeItem() for k = 1, #config.pos do config.pos[k].stackpos = STACKPOS_TOP_FIELD local t = getThingFromPos(config.pos[k]) if t then doRemoveItem(t.uid, 1) end end end function onSay(cid, words, param) -- Monster for i = 1, #config.pos do doCreateItem(config.item, 1, config.pos[i]) doCreateMonster(config.monster, config.pos[i]) end addEvent(removeItem, config.time * 1000) return true end  
    ponha esse codigo e me diga se o erro persiste.
  13. Gostei
    SoulSarti deu reputação a Vodkart em Boss Mechanics Ideas (All Servers)   
    Boss Mechanics
     
     
    Entendendo o Projeto: O projeto é simples mas muito importante, o intuito é juntar a comunidade para desenvolver códigos voltado á mecânicas de BOSSES.  Já imaginou você numa hunt enfrentando um monstro que seja diferente, que tenha suas próprias habilidades? que seja único! Que tenha toda uma emoção ir caçar com os amigos, ao invés de colocar só o char para atacar e healar, sem graça.

    Como Participar: Todos podem participar, não precisa ser necessariamente um scripter, pode ser um mapper que ajude distribuindo as áreas(mapas) onde os bosses vão ficar, se for um scripter, ajudar a comunidade no desenvolvimento do código, ou participe dando ideias sobre novas mecânicas, feito isso todos terão disponibilidade de usar em seu servidor. Exemplo de código onde existe mecânica: http://www.tibiaking.com/forum/topic/57963-tfs-1x-gazharagoth-heal-magia-teleport/  

     
    Algumas Ideias:
     
    [+] 1° - Spider Boss (Nível: Simples) [+]   ° Quando jogadores aparecem na área, aranha ser teleportada para segundo flow, sumonar diversas aranhas pequenas e jogar poison na área.   ° Aranha ter a mecânica de teleportar para trás do jogador, pegar o jogador e aparecer em outro lugar, fazendo com que o jogador fique parado e não possa atacar até um player dar um hit na aranha     [+] 2° - King Ragnaros Boss (Nível: Intermediário) [+]   ° Monstro ter a mecânica de "plantar" bombas em uma área randômica, feito isso os jogadores tem que destruir essas bombas em "X" segundos.  obs: se não destruir as bombas, elas da uma explosão em área, dando um dano elevado.   ° Monstro deve ser morto dentro de "X" segundos após estar com 10% total da sua vida, caso contrário ele irá se healar 30% total da sua vida. ° Monstro silencia o uso de spells durante algum tempo     [+] 3° The Four Elements Bosses (Nível: Simples) [+]   ° Serão 4 salas com 4 Boss, cada sala um elemento, e só vão conseguir destruir os Boss se todos estiverem com 10% do HP ou menos.     [+] 4° Abyssion Boss  (Nível: intermediário) [+]   ° 3 stages do Boss, cada stage com outfit + magias + hp diferente + mapa diferente ° Monstro silencia o uso de spells durante algum tempo ° Após o Boss morrer, área em torno do Boss ficar piscando durante "X" segundos, depois dar uma explosão com hit mortal caso o jogador estiver na área da explosão.   -----> FIM <-----   É isso ai galera, espero que todos contribuam neste projeto!! caso tenha alguma ideia para aprimorar ou queira ajudar no desenvolvimento do projeto, deixa sua mensagem neste tópico que eu vou editando.
  14. Gostei
    SoulSarti deu reputação a Tadelho em Aumentar o dano de acordo com um storage   
    Há o Critical System do Night Wolf que faz exatamente isso, dá para adaptar. 
     
     
    Bastaria mudar o multiplicador para 10 e adicionar mais uma storage para fazer essa verificação que você quer. Se o dano aumentado ocorrer sempre, tire a verificação de probabilidade e só verifique o valor da storage, como você quer. "Se o valor da storage for tanto, faça o dano x tanto."
     
     
     
    Depois seria necessário registrar o script no creaturescripts.xml e no xml dos monstros.
     
    creaturescript:
     
    monstro.xml:
     
     
    E se você não tiver essas funções... aí sim, uma outra source seria interessante, não imagino como fazer dano crítico sem isso. 
  15. Gostei
    SoulSarti deu reputação a Crypter em Aumentar o dano de acordo com um storage   
    Precisa registrar nos monstros e no player.
  16. Obrigado
    SoulSarti recebeu reputação de Mbbred em Como criar seus proprios MODs para RME   
    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
  17. Gostei
    SoulSarti recebeu reputação de vaas em [LINK OFF][9.60] Azeroth Server V.2.0   
    Arruma link de download, plssss
  18. Gostei
    SoulSarti recebeu reputação de Bluetooth em Extension Pack RME 2.2 - Walls & Terrains p/ 8.6   
    Bom galera, no meu segundo post para a area de mapping, trago para vocês um extension pack praticamente completo com quase todas as grounds/walls/railings até a versão 8.6! Ainda faltam algumas coisinhas, mas no geral está bem bacana. Fiz praticamente sozinho, mas precisei de uma ajudinha de outros extensions packs. Os devidos créditos estão do próprio arquivo .xml
     
    @EDIT: Seguem algumas imagens do pack:
     

     

     

     

     

     
    Bom, chega de lenga lenga, eis o conteúdo para download:
     
     
    http://www.mediafire.com/download/z0uztxyd84kfup7/walls+and+terrains+by+jeff.xml
     
    Scan :
    virus total / site: 
    https://www.virustotal.com/pt/url/66b95f77bf3007a023a952d9f2140412ae1aba4b0154963ceb7e4400829527d8/analysis/1438432748/
    arquivo :
    https://www.virustotal.com/pt/file/f4d3c1d5a3909e4121e7b350406da648fcd3f75f1b8aeb184964da3941aec82e/analysis/1438432851/
     
     
    GG WP
  19. Gostei
    SoulSarti recebeu reputação de ramses82 em como adicionar spell feita no spell creator   
    Seguinte. Vá na pasta do seu OT. Nela, abra a pasta data, depois procure por spells. Abra esta pasta. Você verá duas pastas, uma chamada scripts, outra lib e um arquivo chamado spells.xml . 
    <instant name="teste" words="default" lvl="100" maglv="0" mana="0" exhaustion="30" prem="0" needlearn="0" blockwalls="0" aggressive="1" event="script" value="teste.lua"> </instant> isso é uma tag de xml. Você deve colocá-la no arquivo spells.xml, entre suas magias, entre <spells> e </spells>
     
    O outro script é um arquivo .lua . Você deve entrar na pasta scripts, copiar um arquivo de lá (qualquer um), renomeio para para o mesmo nome que você pôs na tag onde está escrito value="teste.lua"
     
    No caso, o arquivo .lua deve se chamar teste . Abra esse arquivo, delete tudo que existe dentro dele e cole o script que o spell creator gerou:
     



     
     
    Se ajudei, da um rep+ xD Qualquer outra duvida, só postar. 
    EDIT: A propósito, tópico está na sessão errada, por favor algum adm envie pra sessão correta x.x
  20. Gostei
    SoulSarti recebeu reputação de Sematico em Extension Pack RME 2.2 - Walls & Terrains p/ 8.6   
    Bom galera, no meu segundo post para a area de mapping, trago para vocês um extension pack praticamente completo com quase todas as grounds/walls/railings até a versão 8.6! Ainda faltam algumas coisinhas, mas no geral está bem bacana. Fiz praticamente sozinho, mas precisei de uma ajudinha de outros extensions packs. Os devidos créditos estão do próprio arquivo .xml
     
    @EDIT: Seguem algumas imagens do pack:
     

     

     

     

     

     
    Bom, chega de lenga lenga, eis o conteúdo para download:
     
     
    http://www.mediafire.com/download/z0uztxyd84kfup7/walls+and+terrains+by+jeff.xml
     
    Scan :
    virus total / site: 
    https://www.virustotal.com/pt/url/66b95f77bf3007a023a952d9f2140412ae1aba4b0154963ceb7e4400829527d8/analysis/1438432748/
    arquivo :
    https://www.virustotal.com/pt/file/f4d3c1d5a3909e4121e7b350406da648fcd3f75f1b8aeb184964da3941aec82e/analysis/1438432851/
     
     
    GG WP
  21. Gostei
    SoulSarti recebeu reputação de VitorSubhi em Extension Pack RME 2.2 - Walls & Terrains p/ 8.6   
    Bom galera, no meu segundo post para a area de mapping, trago para vocês um extension pack praticamente completo com quase todas as grounds/walls/railings até a versão 8.6! Ainda faltam algumas coisinhas, mas no geral está bem bacana. Fiz praticamente sozinho, mas precisei de uma ajudinha de outros extensions packs. Os devidos créditos estão do próprio arquivo .xml
     
    @EDIT: Seguem algumas imagens do pack:
     

     

     

     

     

     
    Bom, chega de lenga lenga, eis o conteúdo para download:
     
     
    http://www.mediafire.com/download/z0uztxyd84kfup7/walls+and+terrains+by+jeff.xml
     
    Scan :
    virus total / site: 
    https://www.virustotal.com/pt/url/66b95f77bf3007a023a952d9f2140412ae1aba4b0154963ceb7e4400829527d8/analysis/1438432748/
    arquivo :
    https://www.virustotal.com/pt/file/f4d3c1d5a3909e4121e7b350406da648fcd3f75f1b8aeb184964da3941aec82e/analysis/1438432851/
     
     
    GG WP
  22. Gostei
    SoulSarti recebeu reputação de Gordongordon em Extension Pack RME 2.2 - Walls & Terrains p/ 8.6   
    Bom galera, no meu segundo post para a area de mapping, trago para vocês um extension pack praticamente completo com quase todas as grounds/walls/railings até a versão 8.6! Ainda faltam algumas coisinhas, mas no geral está bem bacana. Fiz praticamente sozinho, mas precisei de uma ajudinha de outros extensions packs. Os devidos créditos estão do próprio arquivo .xml
     
    @EDIT: Seguem algumas imagens do pack:
     

     

     

     

     

     
    Bom, chega de lenga lenga, eis o conteúdo para download:
     
     
    http://www.mediafire.com/download/z0uztxyd84kfup7/walls+and+terrains+by+jeff.xml
     
    Scan :
    virus total / site: 
    https://www.virustotal.com/pt/url/66b95f77bf3007a023a952d9f2140412ae1aba4b0154963ceb7e4400829527d8/analysis/1438432748/
    arquivo :
    https://www.virustotal.com/pt/file/f4d3c1d5a3909e4121e7b350406da648fcd3f75f1b8aeb184964da3941aec82e/analysis/1438432851/
     
     
    GG WP
  23. Gostei
    SoulSarti recebeu reputação de Wakon em Extension Pack RME 2.2 - Walls & Terrains p/ 8.6   
    Bom galera, no meu segundo post para a area de mapping, trago para vocês um extension pack praticamente completo com quase todas as grounds/walls/railings até a versão 8.6! Ainda faltam algumas coisinhas, mas no geral está bem bacana. Fiz praticamente sozinho, mas precisei de uma ajudinha de outros extensions packs. Os devidos créditos estão do próprio arquivo .xml
     
    @EDIT: Seguem algumas imagens do pack:
     

     

     

     

     

     
    Bom, chega de lenga lenga, eis o conteúdo para download:
     
     
    http://www.mediafire.com/download/z0uztxyd84kfup7/walls+and+terrains+by+jeff.xml
     
    Scan :
    virus total / site: 
    https://www.virustotal.com/pt/url/66b95f77bf3007a023a952d9f2140412ae1aba4b0154963ceb7e4400829527d8/analysis/1438432748/
    arquivo :
    https://www.virustotal.com/pt/file/f4d3c1d5a3909e4121e7b350406da648fcd3f75f1b8aeb184964da3941aec82e/analysis/1438432851/
     
     
    GG WP
  24. Gostei
    SoulSarti recebeu reputação de Caronte em [CreatureScripts/Moveevents] Items Effect   
    Bom galera, criei esse "sisteminha" esses dias, pois estava brincando com strings, tentando aprender mais sobre elas, e então em meio de alguns testes, me veio a ideia de criar um sistema onde ao equipar determinado item, um efeito sairá da posição de onde o personagem estiver com o primeiro nome do item a cada x segundos (animated text), ex.: equipei a zaoan sword, id 11301. Quando o efeito sair, sairá o nome "zaoan" da posição atual do meu personagem a cada 3 segundos, enquanto o item estiver equipado. Notem que o sistema usa animated text, logo versões de tfs mais novas não rodarão esse sistema. Notem também que como eu estava sem criatividade, eu usei um storagevalue em moveevents para quando o player equipar o item e para quando ele desequipar. Daria pra fazer sem o storage? Sim. Mas, como eu estava com preguiça, deixei do jeito que tava mesmo e pronto.
    Outro ponto a destacar: Fiz o sistema apenas para efeitos de itens equipados NAS MAOS, ou seja, se você adicionar um id de uma legs no sistema, ele não rodará o efeito, a não ser que você ponha a legs na mao, o que seria estranho, hahaha. Como disse, criei o sistema para testar algumas coisas, mas como ficou legalzinho eu resolvi postar. hahaha enfim,
    Eis o sistema:
     
    Em moveevents.xml adicione a seguinte tag:

     


     
     
    Agora crie um arquivo .lua chamado itemseffect.lua (em moveevents!)
    se ele tiver algo dentro, apague e ponha isso:
     


     
    Feito isso, vá para a pasta creaturescripts.
    em creaturescripts.xml adicione a seguinte tag
     



     
    Agora em login.lua, antes do ultimo return true, acrescente a seguinte linha:



     
    Crie então um arquivo .lua e renomei-o para itemeffect.lua 
    Apague tudo que tiver dentro dele (se tiver algo) e ponha o seguinte:
     



     
    Quando eu estiver com menos preguiça eu dou uma "upada" no sistema, aperfeiçoando e tals.
    Espero que tenham gostado! Para servidores Baiak, ou custom high exp esse sistema é bacaninha. hahaha. Sintam-se livres para modificarem-no! E se o fizerem, postem aqui para sabermos o que fizeram de novo, xD Enfim, é isso. hahaha Vlw flw.
  25. Gostei
    SoulSarti recebeu reputação de Alan12 em Como criar seus proprios MODs para RME   
    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

Informação Importante

Confirmação de Termo