Histórico de Edições
Please note that revisions older than 15 days are pruned and will no longer show here
Não há histórico de edição para mostrar, ou este comentário foi editado por um moderador.
-
Quem Está Navegando 0 membros estão online
Nenhum usuário registrado visualizando esta página.
-
Conteúdo Similar
-
Por Renato
O que é?
O script é assim, ele conta quantos monstros você já matou até o momento, consultando por [ !monsters ]
Agora com a versão 2.0 você pode consultar monstro específico, pela talk [ !monsters Demon ] por exemplo. SE O MONSTRO ESTIVER CONFIGURADO.
Ahh, e você também configura a recompensa que ele ganhará ao matar X de determinado monstro =p
Vamos lá.
Se você já instalou o Killed Monsters Count 1.0 é só abrir o mesmo arquivo e substituir.
Caso não, vá em server/data/mods ou server/mods crie o arquivo monsterskill.xml e coloque dentro:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Monsters Kill Count and Awards" version="2.0" author="Renato Ribeiro" enabled="yes">
<config name="config-monsterskill"><![CDATA[
local monters = {
['demon'] = { id = 1, qtKill = 250, itemId = xxxx, qtItem = 1 },
['hydra'] = { id = 2, qtKill = 500, itemId = yyyy, qtItem = 1 },
['frost dragon'] = { id = 3, qtKill = 750, itemId = zzzz, qtItem = 1},
}
storage = 1647
killedMonsters = getPlayerStorageValue(cid, storage)
]]></config>
<event type="look" name="monsterLook" event="script"><![CDATA[
domodlib("config-monsterskill")
function onLook(cid, thing, position, lookDistance)
if(isPlayer(thing.uid)) then
doPlayerSetSpecialDescription(thing.uid, "\n Killed Monsters: " .. killedMonsters)
end
return TRUE
end
]]></event>
<event type="kill" name="monsterKill" event="script"><![CDATA[
domodlib("config-monsterskill")
function onKill(cid, target)
if (isMonster(target)) then
setPlayerStorageValue(cid, storage, math.max(1, getPlayerStorageValue(cid, storage) + 1))
end
if (monsters[string.lower(getCreatureName(target))]) then
mName = getCreatureName(target)
mId = monsters[string.lower(mName)].id
mqtKill = monsters[string.lower(mName)].qtKill
mItemId = monsters[string.lower(mName)].itemId
mqtItem = monsters[string.lower(mName)].qtItem
getMStorage = getPlayerStorageValue(cid, storage + mId)
setPlayerStorageValue(cid, storage + mId, math.max(0, getMStorage + 1))
if (getMStorage == mqtKill) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Congratulations! You earned " .. mqtItem .. " " .. getItemNameById(mItemId) .. ".")
adding = doPlayerAddItem(cid, mItemId, mqtItem)
doSetItemSpecialDescription(adding, "\n Reward to " .. getPlayerName(cid) .. " to kill " .. qtKill .. " " .. mName .. "s")
end
end
return TRUE
end
]]></event>
<event type="login" name="monsterLogin" event="script"><![CDATA[
function onLogin(cid)
registerCreatureEvent(cid, "monsterLook")
registerCreatureEvent(cid, "monsterKill")
return TRUE
end
]]></event>
<talkaction words="!monsters" event="script"><![CDATA[
domodlib("config-monsterskill")
function onSay(cid, words, param, channel)
if (monsters[string.lower(param)] or monsters[param]) then
killedMonstersX = getPlayerStorageValue(cid, storage + monsters[string.lower(param)] and monsters[string.lower(param)] or monsters[param])
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have killed " .. killedMonstersX .. " " .. param .. "s at the moment.")
elseif (param) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Do not have a " .. param .. " task.")
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have killed " .. killedMonsters .. " monsters at the moment")
end
return TRUE
end
]]></talkaction>
</mod>
[/code]
[b]Talkactions:[/b]
!monsters - consulta quantos monstros você já matou ao total (também aparece no seu look)
!monsters NOME - consulta quantos monstros 'NOME' você já matou
[b]Pra adicionar novos monstros siga o padrão:[/b]
['frost dragon'] = { id = 3, qtKill = 750, itemId = zzzz, qtItem = 1},
['nome do monstro'] = { o id tem que ser sequencial, ou seja, se o ultimo for 3, o proximo é 4, depois 5 etc. o qtKill é q quantidade que o cara tem que matar pra ganhar o item. itemId é o id do item que o cara ganha e qtItem é a quantidade que ele ganha. Por exemplo você pode por o id da arrow e na qtItem você poe 100, ele ganha 100 arrows. Agora se for um item que não da pra juntar, mesmo você colocando 100 ele só vai ganhar 1. }
[b]Enfim, script não testado, qualquer erro POSTE AQUI![/b]
Abraços.
-
Por Renato
Olá galera,
venho trazer a vocês o StoneCraft system, um sisteminha com iniciativa mais para treino pessoal, mas que ficou bem legal.
Como este 1.0 ainda é simples, não está em mod, só é necessário um action.
Intro >
Vamos lá, o script serve para coletar pedras, no exemplo eu coloquei só algumas como, ancient stone, battle stone, que em meu server (Arcadia) eu usarei para complementar receitas e forjar items, agora vocês usem a criatividade.
é basicamente assim, você usa a pick em alguma pedra que está configurado em sua tabela, ficará usando até quebrar (configurado por breakChance, em porcentagem) a pedra. Quando quebrar você pode 'dropar' uma pedra ou não, depende da sua sorte (configurado por dropChance, em porcentagem). Caso não consiga dropar, vá para outra pedra e tente novamente sua sorte, ou espera a pedra voltar ao seu estado normal em tantos minutos (configurado por respawnTime, em minutos). Caso consiga dropar algo, será de acordo com sua sorte um dos items presentes na array drops da pedra quebrada.
O script é praticamente isso só, caso não entenda, pergunte.
Imagem >
Instalando >
Crie um arquivo lua em actions/scripts com o nome stonecraft.lua, e dentro ponha:
-- Name: StoneMining
-- Version: 1.0
-- Author: Renato Ribeiro
-- Official Forum: www.tibiaking.com
-- About Script: read in (http://tibiaking.com/forum/topic/8998-stonemining-system/) -> brazilian portuguese only
-- Read: GNU General Public License
function createItem(pos, itemid)
doSendMagicEffect(pos, 34)
doCreateItem(itemid, 1, pos)
doSendMagicEffect(pos, 34)
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
stones = { -- time in minutes, chance in percent '%', drops separated by comma (virgula)
[1285] = { breakChance = 35, respawnTime = 3, dropChance = 50, drops = {10549, 10549, 10549, 10549, 12403}},
[3609] = { breakChance = 25, respawnTime = 7, dropChance = 30, drops = {10549, 10549, 12403}},
[3608] = { breakChance = 25, respawnTime = 7, dropChance = 30, drops = {10549, 10549, 12403}},
[3607] = { breakChance = 20, respawnTime = 7, dropChance = 30, drops = {10549, 10549, 12403}},
[3616] = { breakChance = 15, respawnTime = 7, dropChance = 30, drops = {10549, 10549, 12403}},
[3615] = { breakChance = 20, respawnTime = 7, dropChance = 20, drops = {10549, 10549, 10549, 13943, 13943, 11227, 11232}},
[1356] = { breakChance = 20, respawnTime = 15, dropChance = 20, drops = {10549, 10549, 10549, 13943, 13943, 11227, 11232}},
[1355] = { breakChance = 20, respawnTime = 15, dropChance = 20, drops = {10549, 10549, 10549, 13943, 13943, 11227, 11232}},
[1357] = { breakChance = 20, respawnTime = 20, dropChance = 20, drops = {10549, 10549, 13943, 13943, 11227, 11232}},
[1358] = { breakChance = 20, respawnTime = 20, dropChance = 15, drops = {10549, 13943, 13943, 11227, 11232}},
[1359] = { breakChance = 20, respawnTime = 25, dropChance = 15, drops = {13943, 11227, 11232}}
}
if isInArray({0, 65535}, toPosition.x) then
return false
elseif stones[itemEx.itemid] then
stoneEx = stones[itemEx.itemid]
if (math.random(1, 100) < stoneEx.breakChance) then
doRemoveItem(getTileItemById(toPosition, itemEx.itemid).uid)
addEvent(createItem, stoneEx.respawnTime * 60000, toPosition, itemEx.itemid)
if (math.random(1, 100) < stoneEx.dropChance) then
itemDrop = stoneEx.drops[math.random(1, #stoneEx.drops)]
doPlayerAddItem(cid, itemDrop)
doSendMagicEffect(toPosition, 12)
return doPlayerSendCancel(cid, "Your craft sucess, you found " .. getItemArticleById(itemDrop) .. " " .. getItemNameById(itemDrop) ..".")
else
doSendMagicEffect(toPosition, 9)
return doPlayerSendCancel(cid, "Your craft sucess, but they found nothing.")
end
else
doSendMagicEffect(toPosition, 2)
return doPlayerSendCancel(cid, "Your craft fail, try again.")
end
else
return doPlayerSendCancel(cid, "You must craft in a specially stone.")
end
end
[/code] [b]Agora vá em actions/actions.xml e ponha:[/b] [code]
<action itemid="2553" event="script" value="stonecraft.lua">
Adicionando novas pedras >
Siga o exemplo da tabela:
Assim: [iD_DA_PEDRA] = { breakChance = CHANCE_DE_QUEBRAR_A_PEDRA, respawnTime = MINUTOS_PARA_RESPAWN_DA_PEDRA, dropChance = CHANCE_DE_DROPAR_ALGUM_ITEM, drops = {ITEMS_QUE_DROPAM, SEPARADOS_POR_VIRGULA}},
Ficará: [3609] = { breakChance = 25, respawnTime = 7, dropChance = 30, drops = {10549, 10549, 12403}},
Script Funcionando
Testado em: Crystal Server 0.1.5, e TFS 0.4
--
Até a próxima, estou desenvolvento um sistema para fusão de summons (: aguardem!
Abraços.</action>
-
Por Renato
Créditos no script.
Explicação: A talkaction de alguns otservers você não escolhe quantos dias de premium você deseja. E sim é algo pré-configurado no server. Então aqui neste script você escolhe quantos dias de premium você quer pagando 1k por cada dia dizendo !addpremium DIAS.
Exemplo: !addpremium 50 -- comprará 50 dias de p.a
Você não pode possuir mais que 360 dias de p.a então coloquei algumas checagens. Tal como adicionar mais de 360 dias de uma vez e também somando seus dias atuais com o tanto desejado assim se o resultado for maior que 360 aparecerá uma mensagem falando que não é possível junto ao número de dias que você poderá comprar calculado por 360 menos dias atuais.
• Crie um arquivo LUA com o nome addpremium.lua em data/talkactions/scripts e ponha:
-- Author: Renato Ribeiro
-- Thanks for help: thalia, mkalo
-- Url: www.tibiaking.com
function onSay(cid, words, param, channel)
local prm = tonumber(param)
local maxdays = 360
local precopordia = 1000
if (prm == nil) then
doSendMagicEffect(getPlayerPosition(cid), 2)
return doPlayerSendCancel(cid, "Diga quantos dias deseja comprar.")
elseif (prm == 0) then
doSendMagicEffect(getPlayerPosition(cid), 2)
return doPlayerSendCancel(cid, "Você não pode comprar 0 dias de premium.")
elseif (prm > maxdays) then
doSendMagicEffect(getPlayerPosition(cid), 2)
return doPlayerSendCancel(cid, "Você não pode comprar mais que "..maxdays.." dias de premium de uma só vez.")
else
if getPlayerPremiumDays(cid)+prm > maxdays then
doSendMagicEffect(getPlayerPosition(cid), 2)
return doPlayerSendCancel(cid, "Você só pode ter "..maxdays.." dias de premium, no entanto você só poderá comprar no máximo "..maxdays-getPlayerPremiumDays(cid).." dias.")
else
if getPlayerMoney(cid) >= prm*precopordia then
doSendMagicEffect(getPlayerPosition(cid), 12)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você comprou "..prm.." dias de premium account por "..prm*precopordia.." gold coins.")
doPlayerAddPremiumDays(cid, prm)
doPlayerRemoveMoney(cid, prm*precopordia)
return TRUE
else
doSendMagicEffect(getPlayerPosition(cid), 2)
return doPlayerSendCancel(cid, "Você precisa de "..prm*precopordia .." gold coins para comprar "..prm.." dia(s) de premium.")
end
end
end
end[/code] [b]• Depois em data/talkactions/talkactions.xml ponha a tag em qualquer lugar:[/b] [code]<talkaction log="yes" words="!addpremium" access="0" event="script" value="addpremium.lua">
Testado e funcionando!</talkaction>
-
Por Renato
Créditos no script.
Explicação: simples, o player fala !sellvial e ele venderá todos os potions vazios que ele tem por X gps cada um.
• Crie um arquivo LUA com o nome sellvial.lua em data/talkactions/scripts e ponha:
--[Created by Renato Ribeiro to www.TibiaKing.com and others]--
function onSay (cid, words, param, channel)
local preco = 5 -- gold coins
local count = getPlayerItemCount(cid, 7636) + getPlayerItemCount(cid, 7634) + getPlayerItemCount(cid, 7635)
local result = count*preco
if count == 0 then
doSendMagicEffect(getPlayerPosition(cid), 2)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem potions para vender.")
else
doSendMagicEffect(getPlayerPosition(cid), 12)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você vendeu "..count.." potions por "..result.." gold coins.")
doPlayerAddMoney(cid, result)
return TRUE
end
end[/code] Altere o valor de cada potion em [i]local preco = 5 (substuindo 5)[/i] [b]• Depois em [color=#0000FF]data/talkactions/talkactions.xml[/color] ponha a tag em qualquer lugar:[/b] [code]<talkaction log="yes" words="!sellvial" access="0" event="script" value="sellvial.lua">
E prontinho!
OBS: Script não testado</talkaction>
-
Por Renato
Créditos no Script
Explicação: Simples comando pra teleportar o player para qualquer lugar
Exemplo: /tt Renato, 350, 147, 7
Sem bugs! 100%
Vá em data/talkactions/scripts copie qualquer arquivo, renomeie para teleportthing.lua e cole dentro:
--[by Renato Ribeiro to TibiaKing.com]--
function onSay(cid, words, param, channel)
if(param == '') then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "É necessário um paramêtro.")
return TRUE
end
local prm = string.explode(param, ",")
local plr = getPlayerByName(prm[1])
if (plr == nil) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O player está offline ou não existe.")
elseif (prm[4] == nil or prm[4] == '') then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "É necessário todas as coordenadas x, y, z, respectivamente separada por vírgulas.")
else
doTeleportThing(plr, {x=prm[2], y=prm[3], z=prm[4]})
doSendMagicEffect(getCreaturePosition(cid), 10)
return TRUE
end
end
[/code] Va em data/talkactions/talkactions.xml e ponha em gamemaster ou em qualquer lugar: [code]<talkaction log="yes" words="/tt" access="3" event="script" value="teleportthing.lua">
Não retire o acess="3", IMPORTANTE!
Bjundas</talkaction>
-