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

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.

 

Script que tu me mandou pot ultimo:

 

 

 

function onUse(cid, item)
    local door_pos = {x = 93, y = 125, z = 7, stackpos = 1} -- Posição da porta
    local global_storage = 13891 -- Global Storage da lever que remove a porta
    local lever_istorage = 13892 -- Global Storage das levers erradas
    local lever_cstorage = 13893 -- 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(getThingFromPos(door_pos).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)
        doTransformItem(item.uid, item.itemid == lever_pulled and lever_normal or lever_pulled)
    end
return true
end

[/spoiler

Editado por N4K4MUR4
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.

 

 

Rapaz, mas o último fix que postei estava funcionando normalmente. Você deve ter colocado algo errado.

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.

 

 

Rapaz, mas o último fix que postei estava funcionando normalmente. Você deve ter colocado algo errado.

 

 

Simplesmente fiz o que tu mandou amigo.

Link para o comentário
Compartilhar em outros sites

  • 0

 

 

Simplesmente fiz o que tu mandou amigo.

 

 

Na verdade, o último script que te mandei foi esse:

 

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

 

 

 

Substitua seu atual por esse.

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

  • 0

 

 

 

Simplesmente fiz o que tu mandou amigo.

 

 

Na verdade, o último script que te mandei foi esse:

 

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

 

 

 

Substitua seu atual por esse.

 

 

Amigo, de qualquer forma, a terceira alavanca não está puxando ;s

Link para o comentário
Compartilhar em outros sites

  • 0

 

 

Amigo, de qualquer forma, a terceira alavanca não está puxando ;s

 

 

Verifica se configurou tudo certim aqui:

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

 

Se não funcionar, qual versão é seu server?

Link para o comentário
Compartilhar em outros sites

  • 0

 

 

 

Amigo, de qualquer forma, a terceira alavanca não está puxando ;s

 

 

Verifica se configurou tudo certim aqui:

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

Se não funcionar, qual versão é seu server?

 

 

tentei assim, do jeito que tu disse acima /\, e tentei assim:

 

 

function onUse(cid, item)
    local door_pos = {x = 677, y = 1079, 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 = 9118 -- 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

 

 

 

Ambas as opções, não mechem a ultima alavanca, na qual tu mandou eu por ActionID: 19014

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

  • 0

Luck tem como colocar para não usar em arenas?

 

Outra coisa um SCRIPT que blokeia o alvo de usar Qualquer tipo de magia

 

Pra não permitir usar em arenas:

 

 

 

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 getTileInfo(getCreaturePosition(cid)).hardcore then
        doPlayerSendCancel(cid, "Você não pode usar essa magia em arenas.")
        return false
    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
 
function onStepIn(cid, item)
    local storage = getPlayerStorageValue(cid, 18500)
    local pos = {x = string.match(storage, "x = (.-),"), y = string.match(storage, "y = (.-),"), z = string.match(storage, "z = (.-),")}
    doTeleportThing(cid, pos)
return true
end

 

Já o segundo pedido, é impossível sem sources.

Link para o comentário
Compartilhar em outros sites

  • 0

tentei assim, do jeito que tu disse acima /\, e tentei assim:

 

 

function onUse(cid, item)
    local door_pos = {x = 677, y = 1079, 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 = 9118 -- 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

 

 

 

Ambas as opções, não mechem a ultima alavanca, na qual tu mandou eu por ActionID: 19014

 

 

Rapaz, seu server deve estar com algum problema, pois aqui funcionou normalmente. Tente trocar as global storages de novo:

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

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

 

Luck, sobre o sistema, seria possível adicionar experiencia como premio também na tabela? Obs: tentei adicionar expgain =

No aguardo, obrigado denovo.

 

Tá aqui:

 

local monsters = { -- [Nome] = {storage, quantia, recompensa {id, quantia}, experiência ganha},
    ["Troll"] = {storage = 18011, count = 1000, reward = {2160, 10}, exp_gain = 100},
    ["Orc"] = {storage = 18012, count = 700, reward = {2160, 10}, exp_gain = 100},
}
 
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])
            doPlayerAddExp(cid, monsters[getCreatureName(target)].exp_gain)
            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

 

 

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

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