LU
pedido

Fábrica de Scripts

Por LuckOake, 28 de set. de 2013 em Scripts

resolvido
script
166
21.2k
HeelNoxH
28 de setembro de 2013 às 20:11

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)

2121212
28 de setembro de 2013 às 20:11

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.

LuckOakeL
28 de setembro de 2013 às 20:13

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/

AlphaLoveA
28 de setembro de 2013 às 20:13

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.

LuckOakeL
28 de setembro de 2013 às 20:17

 

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

28 de setembro de 2013 às 20:18

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

HeelNoxH
28 de setembro de 2013 às 20:20

Luck Obrigado , eu criei um novo item no item.xml e no otb não funcionou mais tentei com um existente funcionou perfeitamente lhe adimiro muito sera meu like fera .

LuckOakeL
28 de setembro de 2013 às 20:20

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 Setembro 28 por LuckOake

2121212
28 de setembro de 2013 às 20:24

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 Setembro 28 por 0BoM

OriGMO
28 de setembro de 2013 às 20:25

Luck você sabe me dizer se pra fazer isso aqui é nas sources? Ou dá pra fazer com script? Se der,voce consegue fazer isso?

 

http://www.xtibia.com/forum/topic/221844-monstro-so-atacar-player-a-x-sqm-dele/

28 de setembro de 2013 às 20:29

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
LuckOakeL
28 de setembro de 2013 às 20:32

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 Setembro 28 por LuckOake

2121212
28 de setembro de 2013 às 20:37

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

 

No aguardo.

Editado Setembro 28 por 0BoM

28 de setembro de 2013 às 20:41

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

LuckOakeL
28 de setembro de 2013 às 20:46

 

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 Setembro 28 por LuckOake