Ir para conteúdo

melocom

Campones
  • Total de itens

    38
  • Registro em

  • Última visita

Histórico de Reputação

  1. Upvote
    melocom deu reputação a Nickelback em Editando Aparência Das Criaturas   
    Atualizado dia 10/03/2012
     
    Bom, uma dúvida muito frequente com quem cria um server com monstros editado é: "Como eu mudo a aparência deles?". É bem simples naverdade, você só precisa saber os conceitos básicos. Se você já criou o seu monstro, só leia o tutorial abaixo, agora se você quer saber como se cria um monstro novo, procure tutoriais pelo XTibia. Vamos lá:
     
    ➨ Tio, o que é newtype?
     
    Bom caro gafanhoto, as várias imagens, que em sequência formam o movimento de qualquer coisa em um jogo, são chamadas de sprites. E a junção das sprites, formam um newtype no Tibia. São por exemplo, a Sprite de um rat andando para a esquerda, de um rat andando para a direita, para baixo, pra cima e dele parado, essas sprites juntas, formam o newtype do rat. Cada newtype, é classificado no Tibia por números pra cada uma, pra facilitar a configuração.
     
    ➨ Tio, como se edita um newtype?
     
    Newtypes não podem ser editados. As outfits são excessão, pois dentro do jogo, você pode mudar as cores delas, mas somente porque as sprites te permitem isso, para alterar um newtype, você deve alterar a sprite o que já foge para a parte de design. Existem outros poucos newtypes de monstros que se pode mudar as cores. Como Dwarf, Elf, ArchDemon, Barbarians, Frog e assim vai...
     
    ➨ Tio, onde eu vejo qual número corresponde a qual newtype?
     
    Bom existem várias listas por aí, principalmente no XTibia e como não quero ser processado acusado de roubar trabalho de alguém, eu recomendarei o tópico do usuário MatheusMkalo.
     
    ➨ Lista de Newtypes:
     
     
     
     
    Lembrete: Você já deve ter reparado, que a cada atualização do Tibia, surgem novos bixos com sprites novas. É porque o client é atualizado, ou seja, é modificado e nessa modificação, são adicionados as novas sprites. Por isso só se pode colocar sprites correspondentes a versão, uma sprite adicionada no 8.6 por exemplo, não pode ser colocada em um monstro num servidor 8.57. Essa lista se limita com os newtypes até o 8.6, os newtypes adicionados depois disso não estão nessa lista.
     
    ➨ Tio, agora eu sei os newtypes mais como edito a aparência dos monstros?
     
    Bom se você ainda não criou o monstro, crie um arquivo com a extensão lua dentro da pasta monsters, ou copie um que já existe. Nomeie do nome o qual você quer para o monstro em seguida abra-o. Lembre-se também de colar sua tag no Monsters.xml (existem tutoriais sobre isso aqui no XTibia).
     
    Veja que logo no começo do arquivo do monstro tem isso:
     
     
     
     
    Iremos nos concentrar nessa parte:
     
     
    Coloque onde está "130" o número do newtype desejado.
     
    Aqui são onde se edita as cores, no caso de ser um newtype Outfit, cada cor da tabela de outfit também se corresponde a um número. Então coloque o número da cor entre as aspas sendo:
     
    Head - Cor da cabeça
     
    Body - Cor Primária
     
    Legs - Cor Secundária
     
    Feet - Cor dos pés
     
    Aqui, caso tenha escolhido um newtype de uma outfit, é onde você botará a quantidade de addons. 0 equivale a nenhum, 1 equivale ao primeiro, 2 equivale ao segundo e 3 equivale aos dois juntos.
     
    Aqui você põe o ID do corpo desejado para o seu monstro. Não tenho lista disso, mais procure em listas de ID pelo XTibia ou de look no corpo de um monstro similar com um char GOD.
     
    ➨ Tio onde eu vejo os números das cores?
     
    É, as cores também são divididas em números, e para ver qual cor corresponde a qual número, existe a seguinte lista, também disponibilzada ao XTibia pelo MatheusMkalo.
     
    Tabela:
     



     

    ---------------------------


     

    Quem gostou da REP +

     

    Créditos: Nickelback, MatheusMkalo

  2. Upvote
    melocom deu reputação a TnTSlin em [Talkaction] Script De !buy   
    Iae xtibia !
     
    Sou novo no fórum mas ja fui em outros fóruns e tlz .
     
    Então sou scripter.lua hoje como Meu primeiro dia no fórum resolvi criar um script +- de um shop então vamos la
     
    Va em data / talkactions / scripts / e procure qualquer 1 arquivo.lua e o renome para itens e add isso tudo la dentro
     

     
    dps em talkaction.xml add essa tag la
     

    <talkaction words="!buy" event="script" value="itens.lua"/>
     
    e dps e so o player ir no ot e fala !buy demon helmet ele ganha o demon helmet isso vocês quem edita então e so isso
     
    Se puder da um rep + n custa neh
  3. Upvote
    melocom deu reputação a Gabasudario em [Encerrado] Attack Dos Paladin Bugado   
    na versão 8.60 ele esta assim msm quando heala com a potion , dai tem que healar no exura san só .
  4. Upvote
    melocom deu reputação a jhon992 em [Creaturescript] Simple Reputation System !   
    Troca isso:

    setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)-1) doSendAnimatedText(getThingPos(cid), 'Rep-', 144) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você perdeu 1 ponto de reputação por matar "..getCreatureName(target)..".")
     
    Por isso:

    setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)+1) doSendAnimatedText(getThingPos(cid), 'Rep+', 30) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você ganhou 1 ponto de reputação por matar "..getCreatureName(target)..".")
  5. Upvote
    melocom deu reputação a jhon992 em [Creaturescript] Simple Reputation System !   
    É, desconheço de todas as funções que existem em servidores antigos... Tenta você mesmo adaptar as funções incompatíveis para sua versão.
  6. Upvote
    melocom deu reputação a jhon992 em Pet System   
    Usa esse:
    http://www.xtibia.com/forum/topic/177761-um-pet-system-diferente/page__fromsearch__1
    Adiciona os storages e nomes como vc quiser e apenas troca o arquivo petsystem.lua por esse, o resto faz conforme esta la:

    local petNames = {"RAT","DRAGON","DEMON"} local petStorage = { ["RAT"] = 203105, -- storage do pet 1 ["DRAGON"] = 203106, -- storage do pet 2 ["DEMON"] = 203107 -- storage do pet 3 } local textSay = {"Sim", "Nao", "Talves", "Nao intendi vc poderia repetir?"} function onSay(cid, words, param, channel) local summons = getCreatureSummons(cid) if param == "" then local text = "Você não possui pets!" local o = 0 for i=1, #petNames do if getPlayerStorageValue(cid, petStorage[petNames[i]]) > 0 then o = o + 1 if o == 1 then text = o.." - ".. string.lower(petNames[i]) .."\n" else text = text.. o .." - ".. string.lower(petNames[i]) .."\n" end end end doShowTextDialog(cid,8977,text) return true end if param == "back" then for k = 1, #summons do pet = getCreatureName(summons[k]) doCreatureSay(cid, string.lower(pet) ..", back!", 1) doRemoveCreature(summons[k]) setPlayerStorageValue(cid, petStorage[pet], 1) end return true end local t = string.explode(param, ",") if t[1] == "say" then if #summons > 0 then doCreatureSay(summons[1], t[2], 1) else doPlayerSendCancel(cid,"Você possui Pet sumonado.") end return true end if t[1] == "conversa" then if #summons > 0 then doCreatureSay(summons[1], textSay[math.random(1,#textSay)], 1) else doPlayerSendCancel(cid,"Você possui Pet sumonado.") return true end end param = string.upper(param) if isInArray(petNames, param) then if getPlayerStorageValue(cid, petStorage[param]) == -1 then doPlayerSendCancel(cid,"Você não possui esse Pet.") return true elseif getPlayerStorageValue(cid, petStorage[param]) == 1 then if getTilePzInfo(getCreaturePosition(cid)) == false then x = doSummonCreature(param, getCreaturePosition(cid)) doConvinceCreature(cid, x) doCreatureSay(cid, string.lower(param) ..", go!", 1) doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 2) setPlayerStorageValue(cid, petStorage[param], 2) else doPlayerSendTextMessage(cid, 22, "Você não pode sumonar seu Pet em Pz.") return true end elseif getPlayerStorageValue(cid, petStorage[param]) == 2 and #summons > 0 then doPlayerSendTextMessage(cid, 22, "Seu Pet esta sumonado, fale !pet back.") return true else doPlayerSendTextMessage(cid, 22, "Seu Pet esta morto, fale !petrevive nomedopet para revivelo.") return true end else doPlayerSendCancel(cid,"Esse Pet não existe.") end return true end
  7. Upvote
    melocom deu reputação a jhon992 em [Creaturescript] Simple Reputation System !   
    Estou aqui hoje para trazer um sistema simples que eu criei, porém pode ser até muito útil, o Sistema de Reputação !
    Esse sistema vai funcionar da seguinte forma, você adiciona os monstros que darão Rep+ ao morrer, e a cada monstro desse, o player que o matou conquista +1 ponto de Reputação. Exemplo de monstro que seria legal adicionar: Bosses.
    Outro meio de ganhar Reputação com esse sistema será matando outros players que estejam pk.
    E o único meio de perder Pontos de Reputação é matando players que não estejam pk.
    O Sistema também vem com um rank de Reputação que sera adicionado nas talkactions e listara os tops Reputação e um comando para verificar seus pontos de reputação.

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     
    Para que Esse Sistema pode ser Útil:
    Vamos pensar da seguinte maneira, pontos ao matar. Diminuirá o número de pk's in-game pois mais players vão querer mata-los. (REP +)
    Pontos negativos ao matar players comuns, também contribuirá para diminuição de pk's. (REP -)
    Pontos por matar bosses e outros monstros fortes, vai estimular os player's a matarem monstros mais perigosos. (REP +)

     
    Esse Sistema pode ser útil também para que só players com certa quantidade de Rep+ possam:
     
    -Entrar em lugares;
    -Fazer quests;
    -Usar magias;
    -Usar outras talkactions;
    -E várias outras coisas.
     
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     
    Agora vamos ao que interessa os scripts:
     
    Primeiro vai em "data/creaturescripts/scripts/" duplica um arquivo dessa pasta e renomeia para "repsystem" sem as aspas, nele cole:

    --<Script by jhon992>-- function onKill(cid, target, lastHit) vetMonster = { "Demon", "Morgaroth", "Hydra", "Dragon" } -- adicionar monstros que darão rep+ -- Ao matar monstros do vetMonster, ganhara rep+. for i=0, #vetMonster do if (getCreatureName(target) == vetMonster[i]) then setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)+1) doSendAnimatedText(getThingPos(cid), 'Rep+', 30) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você ganhou 1 ponto de reputação por matar um "..vetMonster[i]..".") return TRUE end end -- Ao matar um pk, ganhara rep+. if (isPlayer(target) == true) then if (getCreatureSkullType(target) > 2) then setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)+1) doSendAnimatedText(getThingPos(cid), 'Rep+', 30) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você ganhou 1 ponto de reputação por matar "..getCreatureName(target)..".") return TRUE end -- Ao matar um player normal, ganhara rep-. setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086)-1) doSendAnimatedText(getThingPos(cid), 'Rep-', 144) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você perdeu 1 ponto de reputação por matar "..getCreatureName(target)..".") return TRUE end return TRUE end
     
    Agora em "data/creaturescripts/creaturescripts.xml" cole a tag:
     

    <event type="kill" name="RepSystem" event="script" value="repsystem.lua"/>
     
    Entre na pasta "data/creaturescripts/scripts" novamente, e abra o arquivo "login.lua" sem as aspas. Nele cole a tag:
     

    -- Verificar se é primeira vez que loga, pois ao usar storage ele ja começa com -1, -- Então vamos zera-lo para que sua Reputação comece do 0. if (getPlayerStorageValue(cid, 102087) ~= 1) then setPlayerStorageValue(cid, 102087, 1) setPlayerStorageValue(cid, 102086, 0) end registerCreatureEvent(cid, "RepSystem")
     
    Terminamos a parte do Sistema e agora vamos para o talkaction de rank.
     
    Vai na pasta "data/talkaction/scripts", duplique um arquivo e remomeie para "rankrep" sem as aspas. Abra-o e cole:
     

    function getPlayerNameByGUID2(n) local c = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..n..";") if c:getID() == -1 then return "SQL_ERROR["..n.."]" end return c:getDataString("name") end function onSay(cid, words, param) if (param == "") then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT,"Você possui "..getPlayerStorageValue(cid, 102086).." pontos de Reputação.") return TRUE end if (param == "rank") then local max = 50 local letters_to_next = 50 local name_now local name = "Highscore for Reputação\n" local rkn = 0 local no_break = 0 name = name.."\n" name = name.."Rank. Pontos | Nome do Jogador\n" local v = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 102086 ORDER BY cast(value as INTEGER) DESC;") local kk = 0 repeat if kk == max or v:getID() == -1 then break end kk = kk+1 name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("player_id"))) space = "" for i=1, letters_to_next-l do space = space.." " end if name_now == nil then name_now = 'sql error['..v:getDataInt("player_id")..']' end name = name..kk..". "..v:getDataInt("value").." | "..name_now..space.." \n" until v:next() == false if name ~= "Highscore\n" then doPlayerPopupFYI(cid, name) end return TRUE else doPlayerSendCancel(cid, "Command valid: !rep, !rep rank.") return TRUE end end
     
    E por último mais não menos importante, abra "data/talkactions/talkacitons.xml" e cole a tag:
     

    <talkaction words="!rep" event="script" value="rankrep.lua"/>
    Pronto, terminamos o nosso Simple Reputation System!
     
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     
    ----- Reputation Door-----
     
    Vai em data/actions/script, duplica um arquivo e nomeia para "repDoor" sem as aspas e nele cole:
     

    function onUse(cid, item, frompos, item2, topos) local quantRep = 30 -- quantidade de reset para entrar na porta newnPosition = {x=784, y=805, z=7} -- onde será teleportado ao clicar na porta if item.actionid == 2085 and getPlayerStorageValue(cid, 102086) >= quantRep then doTeleportThing(cid, newnPosition) doSendMagicEffect(newnPosition, 10) else doCreatureSay(cid, "Voce nao tem reputação suficiente para entrar!", TALKTYPE_ORANGE_1) end return TRUE end
     
    Agora em data/actions/actions.xml cole a tag:
     

    <action actionid="2085" script="repDoor.lua"/>
     
    E por último com seu mapa editor, vai na porta desejada do seu server e coloque o actionid 2085.
     
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     
    Agora para fazer alavancas, baús e etc, basta seguir o exemplo do script acima da repDoor.
     
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     
    ----- Quantidade de Reputação para usar determinado item -----
     
    Vai em data/movements/script e duplica um arquivo dessa pasta e nomeie para "itemRep" sem aspas, abra-o e cole:
     

    local quantRep = 30 -- quantidade de reset para usar determinado item function onEquip(cid, item, slot) if getPlayerStorageValue(cid, 102086) < quantRep then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Apenas players com "..quantRep.." pontos de reputação ou mais, podem usar essa arma!") return FALSE end return TRUE end
     
     
    Agora vai em data/movements/movements.xml abre e adicione a tag:
     

    <movevent type="Equip" itemid="id do seu item" slot="hand" event="script" value="itemRep.lua"/>
     
    Troque os slots na tag acima como desejar, tipos de slots:
     

    head armor legs hand shield ring necklace feet pickupable
     
    Para itens que você for usar com a mesma quantidade de reps que o item anterior, apenas crie uma nova tag no movementes.xml com o itemid diferente. Senão você devera criar um novo script com o nome diferente e mudar a quantRep.
     
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     
    ----- Comprar determinado item com Pontos de Reputação -----
     
    Vai em data/talkactions/scripts, duplique um arquivo e nomeiei para "buyrep" sem as aspas e nele cole:
     

    local itemNames = { {name = "Dragon Shield", pontos = 2}, -- nome do item e pontos que gastara. {name = "Crown Armor", pontos = 8}, {name = "Arbalest", pontos = 25}, {name = "Heroic Axe", pontos = 20}, {name = "Magic Sword", pontos = 30}, {name = "Demon Armor", pontos = 50} } function onSay(cid, words, param, channel) if param == "" then for i=1, #itemNames do if i == 1 then text = "-- Lista de Items --\n" else text = text .. (itemNames[i].name) .." = ".. itemNames[i].pontos .." pontos\n" end end doShowTextDialog(cid,8977,text) return true end param = string.upper(param) for j=1, #itemNames do if (param == string.upper(itemNames[j].name)) then if getPlayerStorageValue(cid, 102086) < tonumber(itemNames[j].pontos) then doPlayerSendCancel(cid,"Você não possui pontos suficientes.") return true else doPlayerAddItem(cid, getItemIdByName(param)) doPlayerSendTextMessage(cid, 22, "Você comprou 1 ".. itemNames[j].name ..".") setPlayerStorageValue(cid, 102086, getPlayerStorageValue(cid, 102086) - itemNames[j].pontos) return true end end end doPlayerSendCancel(cid,"Este item não existe.") return true end
     
    Agora em data/talkactions/talkactions.xml cole a tag:
     

    <talkaction words="!buy" event="script" value="buyrep.lua"/>
     
    Em jogo, ao falar "!buy" aparecera a lista de itens que pode ser comprado e seus determinados custos, conforme foram configurados no arquivo "buyrep.lua".
    Para comprar um item basta ter a quantidade de reputação necessaria e usar o comando "!buy NomeDoItem".
     
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     
    ----- Mostrar Reputação no Look (by Vodkart)-----
     
    Vai em data/creaturescripts/scripts, duplique um arquivo e nomeiei para "showrep" sem as aspas e nele cole:

    function getReps(cid) return getPlayerStorageValue(cid,102086) < 0 and 0 or getPlayerStorageValue(cid,102086) end function onLook(cid, thing, position, lookDistance) if isPlayer(thing.uid) then doPlayerSetSpecialDescription(thing.uid, "\n[Reps: " .. getReps(thing.uid) .."]") end return true end
     
    No creaturescripts.xml cole a tag:

    <event type="look" name="showRep" event="script" value="showrep.lua"/>
     
    E no arquivo login.lua, antes do último return true:

    registerCreatureEvent(cid, "showRep")
     
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     
    ----- Versão 2.0 repsystem.lua -----
    Caso você queira que cada monstro que você matar de pontos diferentes de reputação, voce deve substituir oque tem dentro do seu arquivo inicialmente criado e nomeado como repsystem.lua por isso:
     
     
     
    É isso aew galera, qualquer coisa que precise ser modificado ou dica para melhorar os scripts e o sistema serão bem vindas!
  8. Upvote
    melocom deu reputação a jhon992 em [Pedido] Npc Que Troca Varios Itens Por Apenas Um   
    Cria um npc e poem esse código nele:

    local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local itemNeed = { -- itens que precisa para completar a troca {itemid = 1234, quant = 5}, -- id do item, quantidade {itemid = 4352, quant = 3}, {itemid = 9876, quant = 100}, {itemid = 6719, quant = 15} } local itemGain, quantGain = 2160, 10 -- item que ganhara ao fim da troca 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 if msgcontains(msg, 'trocar') then selfSay('Você deseja trocar '.. itemNeed[1].quant ..''.. getItemNameById(itemNeed[1].itemid) ..', '.. itemNeed[2].quant ..''.. getItemNameById(itemNeed[2].itemid) ..', '.. itemNeed[3].quant ..''.. getItemNameById(itemNeed[3].itemid) ..', '.. itemNeed[4].quant ..''.. getItemNameById(itemNeed[4].itemid) ..', por' .. quantGain ..''.. getItemNameById(itemGain) ..'.', cid) talkState[talkUser] = 2 elseif talkState[talkUser] == 2 then if msgcontains(msg, 'yes') then for i=1, #itemNeed do if getPlayerItemCount(cid, itemNeed[i].itemid) < itemNeed[i].quant then selfSay('Você não possui os item necessarios para troca.', cid) return true end end for i=1, #itemNeed do doPlayerRemoveItem(cid, itemNeed[i].itemid, itemNeed[i].quant) end doPlayerAddItem(cid, itemGain, quantGain) selfSay('A troca esta completa.', cid) else selfSay('Você não desja {trocar}?', cid) end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...