Ir para conteúdo
  • 0

Fábrica de Scripts


LuckOake

Pergunta

Olá galera.

 

Tava aqui de boa sem o que fazer, aí tive essa ideia de fazer um tópico pros membros pedirem scripts simples.

 

Regrinhas:

  1. NÃO PEÇA EVENTOS AQUI, SÓ SCRIPTS OU SISTEMAS SIMPLES;
  2. NÃO PEÇA SCRIPTS QUE JÁ EXISTEM;
  3. Se você quer algum script que está sendo vendido em algum lugar, poste aqui que eu faço pra você. Nesse tipo de caso, a regra número 1 pode ser desobedecida;
  4. Sem floods, comentários ou conversas no tópico;
  5. Por uma questão de organização, não gostaria que outros usuários sem minha permissão postassem scripts prontos para resolver pedidos aqui. Se quiserem resolver o pedido de um usuário, mande PM pra ele ou crie um tópico e poste;
  6. Faço qualquer tipo de script desde que seja da versão 8.54 até a 9.8;
  7. Não faço scripts para TFS 1.0;
  8. Não peça scripts ou sistemas que envolvam sources;
  9. Somente scripts que envolvam no máximo dois arquivos serão feitos;
  10. Máximo de dois pedidos por vez para cada usuário;
  11. Use um português adequado e detalhe bem seu pedido. Pedidos pouco detalhados ou com português ruim serão ignorados. Se não for bom com português, ao menos TENTE escrever adequadamente.
  12. O Oneshot e o Manoel Neto tem permissão para atender pedidos no tópico. Oneshot trabalha como quer, do jeito que quer e quando quer. Obs: E odeia leechers.

Caso você não entenda o por quê de postar aqui ao invés de criar um tópico, pense no seguinte. Você quer um script bem feito, bem explicado e de fácil configuração ou um que qualquer usuário chega lá e faz? Garanto que todos os scripts que farei nesse tópico serão, no mínimo, de alta qualidade.

 

Abraços e aproveitem a oportunidade. Ao contrários dos outros tópicos de fábrica de scripts, aqui não vou tentar fazer. Se estiver dentro das regras, vou fazer.

Editado por LuckOake
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Ola LuckOake, admiro muito sua competencia e iniciativa de ajudar o pessoal, parabens.

 

Tipo: Creaturescripts

Versão: 8.60

Nivel: Médio

Ideia: Um sistema de task automatico, onde ao configurar determinado monstro, ao mata-lo pela primeira vez começasse uma contagem configuravel tambem, em que seguiria contando até matar o ultimo monstro, após isso receberia um premio configuravel.

 

 

Aguardando.

Link para o comentário
Compartilhar em outros sites

  • 0

Luck fica dando "You Cannot use This Object" , no item.xml devo deixar o item de algum modo ?

 

(Não ta dando erro no console)

 

Você deve ter colocado o id errado no actions.xml ou está usando o item errado. Se não tiver dado erro, é porque o script não está sendo executado.

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

Ola LuckOake, admiro muito sua competencia e iniciativa de ajudar o pessoal, parabens.

 

Tipo: Creaturescripts

Versão: 8.60

Nivel: Médio

Ideia: Um sistema de task automatico, onde ao configurar determinado monstro, ao mata-lo pela primeira vez começasse uma contagem configuravel tambem, em que seguiria contando até matar o ultimo monstro, após isso receberia um premio configuravel.

 

 

Aguardando.

 

Rapaz, esse script já existe aqui no xtibia.

 

http://www.xtibia.com/forum/topic/151636-simple-task-30/

Link para o comentário
Compartilhar em outros sites

  • 0

Luck, continua não puxando a ultima alavanca amigo, creio que seja por que no script não contém a action id 19014 que tu mandou eu por na ultima alavanca.. Não sei se é isso, é somente um palpite, pois não entendo nada de script.

 

 

Nas levers erradas, coloque action id como 19010, e nas certas como 19012. Na lever que abre a porta, 19014.

Link para o comentário
Compartilhar em outros sites

  • 0

 

Luck, continua não puxando a ultima alavanca amigo, creio que seja por que no script não contém a action id 19014 que tu mandou eu por na ultima alavanca.. Não sei se é isso, é somente um palpite, pois não entendo nada de script.

 

 

Nas levers erradas, coloque action id como 19010, e nas certas como 19012. Na lever que abre a porta, 19014.

 

 

Testei aqui e funcionou normalmente. Substitui aí, mudei as global storages:

 

 

function onUse(cid, item)
    local door_pos = {x = 93, y = 125, z = 7, stackpos = 1} -- Posição da porta
    local global_storage = 13895 -- Global Storage da lever que remove a porta
    local lever_istorage = 13896 -- Global Storage das levers erradas
    local lever_cstorage = 13897 -- Global Storage das levers corretas
    local door_id = 1111 -- ID da porta
    local back_time = 15 -- Tempo, em segundos, para a porta reaparecer
    local lever_pulled = 1945 -- ID da lever não puxada
    local lever_normal = 1946 -- ID da lever puxada
    local levers = {
        [19010] = {gstorage = lever_istorage, add = 1, n_aid = 19011},
        [19011] = {gstorage = lever_istorage, add = -1, n_aid = 19010},
        [19012] = {gstorage = lever_cstorage, add = 1, n_aid = 19013},
        [19013] = {gstorage = lever_cstorage, add = -1, n_aid = 19012},
        [19014] = door_pos,
    }
    
    if not levers[item.actionid].gstorage then
        if getGlobalStorageValue(global_storage) == 1 or getGlobalStorageValue(lever_istorage) ~= -1 or getGlobalStorageValue(lever_cstorage) < 1 then return true end
        
        doRemoveItem(getTileItemById(door_pos, door_id).uid, 1)
        setGlobalStorageValue(global_storage, 1)
        addEvent(function()
                    setGlobalStorageValue(global_storage, -1)
                    doCreateItem(door_id, 1, door_pos)
                end, back_time*1000)
    else
        setGlobalStorageValue(levers[item.actionid].gstorage, getGlobalStorageValue(levers[item.actionid].gstorage)+levers[item.actionid].add)
        doItemSetAttribute(item.uid, "aid", levers[item.actionid].n_aid)
    end
    doTransformItem(item.uid, item.itemid == lever_pulled and lever_normal or lever_pulled)
return true
end

Link para o comentário
Compartilhar em outros sites

  • 0

Luck funcionou perfeitamente,porem tem como,colocar um efeito no player que usou e no player que for teleportado?e colocar um exasted

 

A exhaustion você coloca na tag da spells.xml.

 

Quanto ao efeito, tá aqui:

 

function onCastSpell(cid, var)
    local tp_pos = {x = 100, y = 100, z = 7} -- Posição que o target será levado
    local effect_player = 10 -- Efeito que sairá no player
    local effect_target = 15 -- Efeito que sairá no target
    if getCreatureTarget(cid) <= 0 then
        doPlayerSendCancel(cid, "Você precisa selecionar um alvo")
        return false
    end
    
    local target = getCreatureTarget(cid)
    doSendMagicEffect(getCreaturePosition(cid), effect_player)
    doSendMagicEffect(getCreaturePosition(target), effect_target)
    setPlayerStorageValue(target, 18500, "x = "..(getCreaturePosition(target).x)..",y = "..(getCreaturePosition(target).y)..",z = "..(getCreaturePosition(target).z)..",")
    doTeleportThing(target, tp_pos)
return true
end

 

 

 

Configure aqui:

    local tp_pos = {x = 100, y = 100, z = 7} -- Posição que o target será levado
    local effect_player = 10 -- Efeito que sairá no player
    local effect_target = 15 -- Efeito que sairá no target
Editado por LuckOake
Link para o comentário
Compartilhar em outros sites

  • 0

Este que eu estou pedindo não existe pelo menos aqui no xtibia que funcione, ele é automatico!... por isso que pesquisei e vim perguntar para você, eu tenho um semi-pronto aqui na verdade mas nao esta funcionando nem dando erros no console.

Ajude-me por favor.

Editado por 0BoM
Link para o comentário
Compartilhar em outros sites

  • 0

Luck tem como colocar esse tipo de exasted no script :

 

 

local newPos1 = {x = 0, y = 0, z = 0} --pos pra onde sera levado o caster da spell
local newPos2 = {x = 1142, y = 550, z = 7} --pos pra onde sera levado o target
local time = 20 --tempo pra teleporta devolta, em segs
local function teleport(cid, pid, pos, pos2)
if isCreature(pid) then
doTeleportThing(pid, getClosestFreeTile(pid, pos2 or pos))
doSendMagicEffect(getPlayerPosition(pid), 75)
end
end
 
 
function onCastSpell(cid, var)
local target = getCreatureTarget(cid)
if not isCreature(target) or not isPlayer(target) then
return doPlayerSendTextMessage(cid, 27, "Voce so pode usar DAI KAMUI em players")
end
if getPlayerStorageValue(cid, 33333) < os.time () then
local target = getCreatureTarget(cid)
local posCid = getPlayerPosition(cid)
local posTarget = getPlayerPosition(target)
setPlayerStorageValue(cid, 33333, os.time () + 200)
doSendMagicEffect(posCid, 30)
doSendMagicEffect(posTarget, 196)
teleport(cid, target, newPos1, newPos2)
addEvent(teleport, time*1000, cid, target, posCid, posTarget)
else
doPlayerSendCancel(cid, "  VOCE SÓ PODE USAR DAKI A "..getPlayerStorageValue(cid, 33333) - os.time ().." SEGUNDOS ")
end
return true
end
Link para o comentário
Compartilhar em outros sites

  • 0

Este que eu estou pedindo não existe pelo menos aqui no xtibia que funcione, ele é automatico!... por isso que pesquisei e vim perguntar para você, eu tenho um semi-pronto aqui na verdade mas nao esta funcionando nem dando erros no console.

Ajude-me por favor.

 

O seu sistema dará a recompensa após matar o último monstro ou tem que falar com um NPC?

 

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

 

 

Luck tem como colocar esse tipo de exasted no script :

 

local newPos1 = {x = 0, y = 0, z = 0} --pos pra onde sera levado o caster da spell
local newPos2 = {x = 1142, y = 550, z = 7} --pos pra onde sera levado o target
local time = 20 --tempo pra teleporta devolta, em segs
local function teleport(cid, pid, pos, pos2)
if isCreature(pid) then
doTeleportThing(pid, getClosestFreeTile(pid, pos2 or pos))
doSendMagicEffect(getPlayerPosition(pid), 75)
end
end
 
 
function onCastSpell(cid, var)
local target = getCreatureTarget(cid)
if not isCreature(target) or not isPlayer(target) then
return doPlayerSendTextMessage(cid, 27, "Voce so pode usar DAI KAMUI em players")
end
if getPlayerStorageValue(cid, 33333) < os.time () then
local target = getCreatureTarget(cid)
local posCid = getPlayerPosition(cid)
local posTarget = getPlayerPosition(target)
setPlayerStorageValue(cid, 33333, os.time () + 200)
doSendMagicEffect(posCid, 30)
doSendMagicEffect(posTarget, 196)
teleport(cid, target, newPos1, newPos2)
addEvent(teleport, time*1000, cid, target, posCid, posTarget)
else
doPlayerSendCancel(cid, "  VOCE SÓ PODE USAR DAKI A "..getPlayerStorageValue(cid, 33333) - os.time ().." SEGUNDOS ")
end
return true
end

 

 

 

 

Sim, tá aqui:

 

function onCastSpell(cid, var)
    local tp_pos = {x = 100, y = 100, z = 7} -- Posição que o target será levado
    local effect_player = 10 -- Efeito que sairá no player
    local effect_target = 15 -- Efeito que sairá no target
    local exhaustion_time = 2 -- Exhaustion (em segundos)
    local exhaust = 18501 -- Storage da exhaustion
    
    if getCreatureTarget(cid) <= 0 then
        doPlayerSendCancel(cid, "Você precisa selecionar um alvo.")
        return false
    elseif exhaustion.check(cid, exhaust) then
        doSendMagicEffect(getCreaturePosition(cid), 2)
        doPlayerSendCancel(cid, "Aguarde "..(exhaustion.get(cid, exhaust)).." segundos para usar a magia novamente.")
        return false
    end
    
    local target = getCreatureTarget(cid)
    doSendMagicEffect(getCreaturePosition(cid), effect_player)
    doSendMagicEffect(getCreaturePosition(target), effect_target)
    setPlayerStorageValue(target, 18500, "x = "..(getCreaturePosition(target).x)..",y = "..(getCreaturePosition(target).y)..",z = "..(getCreaturePosition(target).z)..",")
    doTeleportThing(target, tp_pos)
    exhaustion.set(cid, exhaust, exhaustion_time)
return true
end

 

 

Editado por LuckOake
Link para o comentário
Compartilhar em outros sites

  • 0

 

O proprio sistema, sem npc , eu tenho um aqui como base quer q eu poste?

No aguardo.

 

 

Fiz um pra você, crie um arquivo em data/creaturescripts/scripts com o nome de task_system.lua e coloque isso dentro:

 

local monsters = { -- [Nome] = {storage, quantia, recompensa {id, quantia}},
    ["Troll"] = {storage = 18011, count = 1000, reward = {2160, 10}},
    ["Orc"] = {storage = 18012, count = 700, reward = {2160, 10}},
}
 
function onKill(cid, target)
    if monsters[getCreatureName(target)] then
        setPlayerStorageValue(cid, monsters[getCreatureName(target)].storage, getPlayerStorageValue(cid, monsters[getCreatureName(target)].storage) == -1 and 1 or getPlayerStorageValue(cid, monsters[getCreatureName(target)].storage)+1)
        local stor = getPlayerStorageValue(cid, monsters[getCreatureName(target)].storage)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getCreatureName(target).." killed: "..stor.."/"..monsters[getCreatureName(target)].count)
        if stor == monsters[getCreatureName(target)].count then
            doPlayerAddItem(cid, monsters[getCreatureName(target)].reward[1], monsters[getCreatureName(target)].reward[2])
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You killed "..getCreatureName(target).." "..(monsters[getCreatureName(target)].count)..". You got "..(monsters[getCreatureName(target)].reward[2]).."x "..(getItemNameById(monsters[getCreatureName(target)].reward[1])).." as a reward.")
            setPlayerStorageValue(cid, monsters[getCreatureName(target)].storage, 0)
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Task reseted.")
        end
    end
return true
end

 

 

 

Creaturescripts.xml:

<event type="kill" name="TaskSystem" script="task_system.lua"/>

Adicione no login.lua antes do último return true:

registerCreatureEvent(cid, "TaskSystem")

Configure aqui:

local monsters = { -- [Nome] = {storage, quantia, recompensa {id, quantia}},
    ["Troll"] = {storage = 18011, count = 1000, reward = {2160, 10}},
    ["Orc"] = {storage = 18012, count = 700, reward = {2160, 10}},
}

Só ir adicionando mais monstros seguindo o modelo.

 

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

 

Gostaria de UM NPC de TASK igual ao do vodkart o Simple TASK,porem não precisa pedir a task para o npc,é so eu ir matar e depois pega o premio

 

Não modifico sistemas de outras pessoas. Peça diretamente para o vodkart.

Editado por LuckOake
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...