LU
pedido

Fábrica de Scripts

Por LuckOake, 28 de set. de 2013 em Scripts

resolvido
script
166
20.5k
LuckOakeL
28 de setembro de 2013 às 18:15

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

MaenilseM
28 de setembro de 2013 às 18:22

gostaria de um comando, no qual eu exemplo falo, "/resetdatabase". e reseta-se todas as houses/guilds/contas/players. e tive-se a opçao quando fala-se. /resetdatabase. "Voce deseja realmente resetar a database?, ai eu digita-se. yes. ai o ot seria desligado, com a database resetada.

 

espero que de pra fazer, se nao for mt complicado.

 

PS: uso servidor com estrutura, mysql.

Editado Setembro 28 por Maenilse

LuckOakeL
28 de setembro de 2013 às 18:26

gostaria de um comando, no qual eu exemplo falo, "/resetdatabase". e reseta-se todas as houses/guilds/contas/players. e tive-se a opçao quando fala-se. /resetdatabase. "Voce deseja realmente resetar a database?, ai eu digita-se. yes. ai o ot seria desligado, com a database resetada.

 

espero que de pra fazer, se nao for mt complicado.

 

PS: uso servidor com estrutura, mysql.

 

Não é aconselhável fazer isso que você quer, resetar a database com o servidor ligado. Além do que, com ele desligado, não é possível executar scripts.

 

É melhor simplesmente usar o phpMyAdmin mesmo com o servidor desligado.

 

O motivo para não fazer isso com o server ligado é que só remover os valores das tabelas da database não é suficiente pra resetar mesmo. Os players continuariam online, os items continuariam nas houses, etc, aí no próximo server save voltaria tudo.

AlphaLoveA
28 de setembro de 2013 às 18:27

 

 

xi0h.png

 

 

 

Perto das alavancas 1 e 2, tem mais 2, que serão inutilizadas.. O cara chega, tem que puxar as 2 alavancas certas(1 e 2 mostradas na imagem), aí ele da a volta, puxa a alavanca 3 e a porta de pedra some para os players passarem, aí depois de uns 15 segundos ela aparece de novo e fecha a passagem novamente.

(ps: se alguma outra alavanca estiver ativa,além das 3, a porta não abrirá)

Cordenadas das alavancas:

1= {x=669, y=1079, z=7, stackpos=1}

2= {x=669, y=1081, z=7, stackpos=1}

3 = {x=678, y=1081, z=7, stackpos=1}

 

ID da parede: 9118

Editado Setembro 28 por N4K4MUR4

RoksasR
28 de setembro de 2013 às 18:38

#Boa iniciativa LuckOake, destacado e reputado.

s2tibiaxdS
28 de setembro de 2013 às 18:44

queria que você fize-se isso para mim

 

http://www.xtibia.com/forum/topic/221771-alguem-ajuda-aque/

LuckOakeL
28 de setembro de 2013 às 18:58

 

 

xi0h.png

 

 

 

Perto das alavancas 1 e 2, tem mais 2, que serão inutilizadas.. O cara chega, tem que puxar as 2 alavancas certas(1 e 2 mostradas na imagem), aí ele da a volta, puxa a alavanca 3 e a porta de pedra some para os players passarem, aí depois de uns 15 segundos ela aparece de novo e fecha a passagem novamente.

(ps: se alguma outra alavanca estiver ativa,além das 3, a porta não abrirá)

Cordenadas das alavancas:

1= {x=669, y=1079, z=7, stackpos=1}

2= {x=669, y=1081, z=7, stackpos=1}

3 = {x=678, y=1081, z=7, stackpos=1}

 

ID da parede: 9118

 

Acho que isso aqui dá:

 


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

 

 

 

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

 

Tag:

<action actionid="19010;19011;19012;19013;19014" script="xxxx.lua"/>

No lugar de xxxx coloque o nome do script criado.

 

Configurações estão no script. Quaisquer erros, poste aqui.

 

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

queria que você fize-se isso para mim

 

http://www.xtibia.com/forum/topic/221771-alguem-ajuda-aque/

 

Crie um arquivo em data/actions/scripts chamado jester_doll.lua e coloque isso dentro:

 

function onUse(cid, item)
    local doll_id = 9693 -- ID do boneco completo
    local doll_parts = {9694, 9695, 9696, 9697, 9698, 9699} -- Partes do Jester Doll
    
    for a, b in ipairs(doll_parts) do
        if getPlayerItemCount(cid, b) < 1 then
            return doPlayerSendCancel(cid, "Você não possui todas as partes do addon.")
        end
    end
    for a, b in ipairs(doll_parts) do
        doPlayerRemoveItem(cid, b, 1)
    end
    doPlayerAddItem(cid, doll_id)
return true
end

 

 

 

Actions.xml:

<action fromid="9694" toid="9699" script="jester_doll.lua"/>

Editado Setembro 28 por LuckOake

Junior001J
28 de setembro de 2013 às 19:01

Sistema de KAGE ou seja somente 5 players poderão se tornar kage tipo um HOKAGE, 1 MIZUKAGE, 1 RAIKAGE, 1 TSUCHIKAGE e 1 KAZEKAGE.

É o seguinte o player irá ate o hokage da aldeia e falará com ele e somente 1 player se torna kage da aldeia mais isso so ate morrer quando ele morrer o nivel de kage se tornará vago para outro player se tornar ou ate ele msm.

Editado Setembro 28 por Junior001

LuckOakeL
28 de setembro de 2013 às 19:02

Sistema de KAGE ou seja somente 5 players poderão se tornar kage tipo um HOKAGE, 1 MIZUKAGE, 1 RAIKAGE, 1 TSUCHIKAGE e 1 KAZEKAGE.

 

Detalhe mais o funcionamento do sistema.

HeelNoxH
28 de setembro de 2013 às 19:04

Tipo: Spell ou Action


Oque vai ser: Uma Pistola


Descrição:


Gostaria que funciona-se assim, seleciona-se o target e sai-se o distance effect 1 e fise-se tal dano.


Observações:


O Player não vai poder usar sem o item id 2160 ao usar ele ira perder 1 quantidade do 2160 , Se ele não tiver o item 2160 aparece "Você não possui balas" e não solta-se o tiro.



Achei bem legal sua iniciativa mais quero lembrar a você que amanha ou hoje a noite terá varios pedidos e ira virar bagunça .


Editado Setembro 28 por DarkHeel

28 de setembro de 2013 às 19:10

Tipo: Spell


Descrição:


O player usa a magia em outro o player,o player alvo é teleportado para X lugar,para ele sair de la ele precisa entrar no X tp que fica na x y z,quando ele entra no TP,ele volta de onde foi teleportado.


KempaichiK
28 de setembro de 2013 às 19:12

pedido: Neblina

 

script só para o ADM.

Um script, quando o ADM do jogo da um comando, tudo fica com neblina.

ex: quando chove, cai pingos d´água.

 

nome: !neblina

ai tudo fica branco, com 80% da tonalidade da cor branca, na tela do jogo, por um período curto de 5 segundos.

 

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

 

mdr.gif No aguardo.

LuckOakeL
28 de setembro de 2013 às 19:20

 

Tipo: Spell ou Action

Oque vai ser: Uma Pistola

Descrição:

Gostaria que funciona-se assim, seleciona-se o target e sai-se o distance effect 1 e fise-se tal dano.

Observações:

O Player não vai poder usar sem o item id 2160 ao usar ele ira perder 1 quantidade do 2160 , Se ele não tiver o item 2160 aparece "Você não possui balas" e não solta-se o tiro.

Achei bem legal sua iniciativa mais quero lembrar a você que amanha ou hoje a noite terá varios pedidos e ira virar bagunça .

 

 

Crie um arquivo em data/actions/scripts com o nome de pistol.lua e coloque isso dentro:

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
    local need_target = true -- Precisa de target? (true / false) Se false, o sistema utilizará o Use With.
    local bullet_id = 2160 -- ID da munição
    local shots_amount = 1 -- Tiros por vez
    local exhaustion_time = 1 -- Segundos de exhaustion
    local exhaust = 19301 -- Storage da exhaustion
    local dmg_min, dmg_max = -100, -200 -- Dano mínimo, dano máximo
    local shot_effect = 10 -- Efeito do tiro
    local shot_distance_effect = 1 -- Distance effect do tiro
    local damage_type = COMBAT_PHYSICALDAMAGE -- Tipo de dano
    local shots_delay = 200 -- Delay dos tiros (em milissegundos)
    
    if need_target then
        if getCreatureTarget(cid) <= 0 then
            return doPlayerSendCancel(cid, "Selecione um alvo primeiro.")
        elseif getPlayerItemCount(cid, bullet_id) < shots_amount then
            return doPlayerSendCancel(cid, "Você não possui munição.")
        elseif exhaustion.check(cid, exhaust) then
            return doPlayerSendCancel(cid, "Aguarde "..(exhaustion.get(cid, exhaust)).." segundos para usar a arma novamente.")
        end
        
        exhaustion.set(cid, exhaust, exhaustion_time)
        for i = 0, shots_amount-1 do
            addEvent(function()
                    if getCreatureTarget(cid) <= 0 then
                        return true
                    elseif getPlayerItemCount(cid, bullet_id) < 1 then
                        return doPlayerSendCancel(cid, "Você não possui munição.")
                    end
                    doSendDistanceShoot(getCreaturePosition(cid), getCreaturePosition(getCreatureTarget(cid)), shot_distance_effect)
                    doTargetCombatHealth(cid, getCreatureTarget(cid), damage_type, dmg_min, dmg_max, shot_effect)
                    doPlayerRemoveItem(cid, bullet_id, 1)
                end, shots_delay*i)
        end
    else
        if not isCreature(itemEx.uid) then
            return doPlayerSendCancel(cid, "Selecione um alvo primeiro.")
        elseif getPlayerItemCount(cid, bullet_id) < shots_amount then
            return doPlayerSendCancel(cid, "Você não possui munição.")
        elseif exhaustion.check(cid, exhaust) then
            return doPlayerSendCancel(cid, "Aguarde "..(exhaustion.get(cid, exhaust)).." segundos para usar a arma novamente.")
        end
        
        exhaustion.set(cid, exhaust, exhaustion_time)
        for i = 0, shots_amount-1 do
            addEvent(function()
                    if not isCreature(itemEx.uid) then
                        return true
                    elseif getPlayerItemCount(cid, bullet_id) < 1 then
                        return doPlayerSendCancel(cid, "Você não possui munição.")
                    end
                    doSendDistanceShoot(getCreaturePosition(cid), getCreaturePosition(itemEx.uid), shot_distance_effect)
                    doTargetCombatHealth(cid, itemEx.uid, damage_type, dmg_min, dmg_max, shot_effect)
                    doPlayerRemoveItem(cid, bullet_id, 1)
                end, shots_delay*i)
        end
    end
return true
end

 

Actions.xml:

<action itemid="xxxx" script="pistol.lua"/>

 

No lugar de xxxx, coloque o id da arma.

 

Configure aqui:

 

   local need_target = true -- Precisa de target? (true / false) Se false, o sistema utilizará o Use With.
    local bullet_id = 2160 -- ID da munição
    local shots_amount = 1 -- Tiros por vez
    local exhaustion_time = 1 -- Segundos de exhaustion
    local exhaust = 19301 -- Storage da exhaustion
    local dmg_min, dmg_max = -100, -200 -- Dano mínimo, dano máximo
    local shot_effect = 10 -- Efeito do tiro
    local shot_distance_effect = 1 -- Distance effect do tiro
    local damage_type = COMBAT_PHYSICALDAMAGE -- Tipo de dano
    local shots_delay = 200 -- Delay dos tiros (em milissegundos)

 

Se der algum erro, poste aqui.

AlphaLoveA
28 de setembro de 2013 às 19:21

LuckOake, não deu erro nenhum no console, ele simplesmente não funcionou, a porta nao some :/

 

fiz tudo direitinho, coloquei as action ID, configurei a posição da porta e a ID dela no script, mas nada acontece.

LuckOakeL
28 de setembro de 2013 às 19:31

 

Tipo: Spell

Descrição:

O player usa a magia em outro o player,o player alvo é teleportado para X lugar,para ele sair de la ele precisa entrar no X tp que fica na x y z,quando ele entra no TP,ele volta de onde foi teleportado.

 

 

Spell:

 

function onCastSpell(cid, var)
    local tp_pos = {x = 100, y = 100, z = 7}
    if getCreatureTarget(cid) <= 0 then
        doPlayerSendCancel(cid, "Você precisa selecionar um alvo")
        return false
    end
    
    local target = getCreatureTarget(cid)
    doTeleportThing(target, tp_pos)
    setPlayerStorageValue(target, 18500, "x = "..(getCreaturePosition(target).x)..",y = "..(getCreaturePosition(target).y)..",z = "..(getCreaturePosition(target).z)..",")
return true
end

 

 

 

Movement (spell_tp.lua):

 

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

 

 

 

Tag (Movement):

<movevent type="StepIn" actionid="xxxx" script="spell_tp.lua"/>

No lugar do xxxx, coloque o action id do teleport. (OBS: Você deverá criar o teleport no map editor e colocar o action id nele)

 

Na spell, configure a posição do lugar onde o target será teleportado aqui:

local tp_pos = {x = 100, y = 100, z = 7}

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

 

pedido: Neblina

 

script só para o ADM.

Um script, quando o ADM do jogo da um comando, tudo fica com neblina.

ex: quando chove, cai pingos d´água.

 

nome: !neblina

ai tudo fica branco, com 80% da tonalidade da cor branca, na tela do jogo, por um período curto de 5 segundos.

 

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

 

mdr.gif No aguardo.

 

Impossível fazer isso sem OTClient e OPCodes.

Editado Setembro 28 por LuckOake