Sim todo ot tem um distro, distro é aquele arquivo .exe pra por o ot online. E não tem como abrir o distro, você precisa ter as sources para modificar ele.
Para isso seria necessario os Sprites do global, porque não tem no 8.6
e se caso consiga eles completos, que acho dificil por enquanto, é só você pegar um Mount System da area de actions e mudar o newtype que o player receberá ao usar por o newtype do seu sprite adicionado. e tambem vale lembrar que para ter akela area 'Mount' no Change Outfit , seria necessario um client proprio ou o client 8.7
Booooas galera! Eu estava com essa idéia na cabeça já faz um tempo, mas ai tava com um problema e não conseguia arrumar. Well, na madrugada passada, eu fui ver o script e descobri um jeito de consertar, assim, eu criei o sistema de alquimia. Então é isso ai, não quero ficar enrolando muito, vamos logo ao script...
Como Funciona: O sistema é composto por uma talkaction e uma action. A talkaction serve para criar novas gemas, ou seja, fundir gemas já existentes e transformá-las em outras. Já a action serve para fundir a arma a gema, sendo que há um hierarquia entre as gemas e armas. A hierarquia é assim:
Há as gemas iniciais, que são pérolas, que podem refinar as armas escolhidas para o set1. Há as gemas secundárias e o gold nugget (item dado na fusão das perolas) que podem refinar armas de set2. Há as gemas terciárias e o small diamond (item dado na fusão dos diamantes) que refinam armas de set3. Há as gemas de nível 4, o life crystal e o crystal o Power, que refinam armas do set4. E por fim, há o gold ingot que refina armas do set5.
Action:
Armas a serem refinadas, facilmente editável.
Quanto irá ser adicionado em cada arma, facilmente editável.
Efeitos.
Talkaction:
Funcionamento.
Efeitos.
Id das gemas editável.
Scripts:
Action:
function onUse(cid, item, fromPosition, itemEx, toPosition)
local itens = {
set1 = {2434, 7430, 2392, 7408, 2432},
set2 = {7437, 7755, 2451, 7380},
set3 = {7427, 7421, 7402, 2393, 2414, 7434},
set4 = {7429, 7414, 8930, 6528, 2454},
set5 = {2421, 8927, 2408, 2390, 2431, 2415}
}
local extra = getItemAttribute(item.uid, "extraattack") == nil and 0 or getItemAttribute(item.uid, "extraattack")
local extrd = getItemAttribute(item.uid, "extradefense") == nil and 0 or getItemAttribute(item.uid, "extradefense")
if isInArray({2143, 2144}, itemEx.itemid) and isInArray(itens.set1, item.itemid) then
if math.random(1, 7) > extra/10 + 1 then
doItemSetAttribute(item.uid, "extraattack", extra+10)
doItemSetAttribute(item.uid, "extradefense", extrd+5)
doSendMagicEffect(getPlayerPosition(cid), math.random(1, 32))
else
doPlayerSendCancel(cid, "Falhou.")
doSendMagicEffect(getPlayerPosition(cid), 2)
end
doRemoveItem(itemEx.uid, 1)
end
if isInArray({2157, 2149, 2146, 2147}, itemEx.itemid) and isInArray(itens.set2, item.itemid) then
if math.random(1, 7) > extra/20 + 2 then
doItemSetAttribute(item.uid, "extraattack", extra+20)
doItemSetAttribute(item.uid, "extradefense", extrd+10)
doSendMagicEffect(getPlayerPosition(cid), math.random(1, 32))
else
doPlayerSendCancel(cid, "Falhou.")
doSendMagicEffect(getPlayerPosition(cid), 2)
end
doRemoveItem(itemEx.uid, 1)
end
if isInArray({2145, 9941, 9942}, itemEx.itemid) and isInArray(itens.set3, item.itemid) then
if math.random(1, 7) > extra/30 + 3 then
doItemSetAttribute(item.uid, "extraattack", extra+30)
doItemSetAttribute(item.uid, "extradefense", extrd+15)
doSendMagicEffect(getPlayerPosition(cid), math.random(34, 55))
else
doPlayerSendCancel(cid, "Falhou.")
doSendMagicEffect(getPlayerPosition(cid), 2)
end
doRemoveItem(itemEx.uid, 1)
end
if isInArray({9980, 7315, 2158, 2153, 2154, 2155, 2156}, itemEx.itemid) and isInArray(itens.set4, item.itemid) then
if math.random(1, 8) > extra/35 + 4 then
doItemSetAttribute(item.uid, "extraattack", extra+35)
doItemSetAttribute(item.uid, "extradefense", extrd+20)
doSendMagicEffect(getPlayerPosition(cid), math.random(34, 55))
else
doPlayerSendCancel(cid, "Falhou.")
doSendMagicEffect(getPlayerPosition(cid), 2)
end
doRemoveItem(itemEx.uid, 1)
end
if itemEx.itemid == 9971 and isInArray(itens.set5, item.itemid) then
if math.random(1, 9) > extra/50 + 5 then
doItemSetAttribute(item.uid, "extraattack", extra+50)
doItemSetAttribute(item.uid, "extradefense", extrd+30)
doSendMagicEffect(getPlayerPosition(cid), 65)
else
doPlayerSendCancel(cid, "Falhou.")
doSendMagicEffect(getPlayerPosition(cid), 2)
end
doRemoveItem(itemEx.uid, 1)
end
return TRUE
end
Se for editar as armas a serem refinadas, edite no script e na tag, pois os ids da tag são os das armas.
Talkaction:
function onSay(cid, words, param)
local tab = {2149, 2146, 2147}
local t = {2158, 2154, 2155, 2156}
local t3 = {{item=7315, msg="Você ganhou um life crystal."}, {item=9980, msg="Você gnhou um crystal of power."}}
local maths = math.random(1, 2)
if param == '' then
doPlayerSendCancel(cid, "Param required.")
doSendMagicEffect(getCreaturePosition(cid), 2)
end
-- PEARL --
if param == 'pearl' then
if getPlayerItemCount(cid, 2143) > 0 and getPlayerItemCount(cid, 2144) > 0 then
doPlayerRemoveItem(cid, 2143, 1)
doPlayerRemoveItem(cid, 2144, 1)
doPlayerAddItem(cid, 2157, 1)
doPlayerSendTextMessage(cid, 4, "Você fez um gold nugget.")
doSendMagicEffect(getPlayerPosition(cid), math.random(1, 32))
else
doPlayerSendCancel(cid, "Você não tem os itens necessários.")
doSendMagicEffect(getCreaturePosition(cid), 2)
end
end
-- DIAMOND --
if param == 'diamond' then
pakaresult = ""
for i, itens in ipairs(tab) do
if getPlayerItemCount(cid, itens) > 0 then
pakaresult = pakaresult ~= "" and pakaresult .. "/" .. itens or "/" .. itens
end
end
local ite = string.explode(pakaresult, "/")
if #ite > 2 then
doPlayerRemoveItem(cid, ite[2], 1)
doPlayerRemoveItem(cid, ite[3], 1)
doPlayerAddItem(cid, 2145, 1)
doPlayerSendTextMessage(cid, 4, "Você fez um small diamond.")
doSendMagicEffect(getPlayerPosition(cid), math.random(34, 55))
else
doPlayerSendCancel(cid, "Você não tem os itens necessários.")
doSendMagicEffect(getCreaturePosition(cid), 2)
end
end
-- CRYSTAL --
if param == 'crystal' then
if getPlayerItemCount(cid, 9941) > 0 and getPlayerItemCount(cid, 9942) > 0 then
doPlayerRemoveItem(cid, 9942, 1)
doPlayerRemoveItem(cid, 9941, 1)
doPlayerAddItem(cid,t3[maths].item, 1)
doPlayerSendTextMessage(cid, 4, t3[maths].msg)
doSendMagicEffect(getPlayerPosition(cid), math.random(34, 55))
else
doPlayerSendCancel(cid, "Você não tem os itens necessários.")
doSendMagicEffect(getCreaturePosition(cid), 2)
end
end
-- GOLD --
if param == 'gold' then
pakoresult = ""
for n, iten in ipairs(t) do
if getPlayerItemCount(cid, iten) > 0 then
pakoresult = pakoresult ~= "" and pakoresult .. "/" .. iten or "/" .. iten
end
end
local ite = string.explode(pakoresult, "/")
if #ite > 2 then
doPlayerRemoveItem(cid, ite[2], 1)
doPlayerRemoveItem(cid, ite[3], 1)
doPlayerAddItem(cid, 9971, 1)
doPlayerSendTextMessage(cid, 4, "Você fez um gold ingot.")
doSendMagicEffect(getPlayerPosition(cid), 65)
else
doPlayerSendCancel(cid, "Você não tem os itens necessários.")
doSendMagicEffect(getCreaturePosition(cid), 2)
end
end
return true
end
Faaala galera! Esses dias um parceiro meu me deu uma idéia e pediu para que eu fizesse um script para ele, assim surgiu o script que irei postar agora.
Eu coloquei o nome de Position Recorder porque o script faz jus ao nome; ele funciona da seguinte maneira: Você tem um item, no caso o 2359 e quando você clica nele, a sua posição é gravada e o item se transforma para o 2356. Ai você pode usar o 2356 que você será teleportado para a posição que você estava quando usou o primeiro item.
Well, como dito no título, eu fiz duas funções para o script funcionar; claro que não era necessário, mas as funções são úteis para outras coisas também. Darei mais exemplos no final. Bom, vamos as funções:
Vá em data/lib, abra o arquivo functions.lua, e cole no final dele estas duas funções:
function doMarkPos(cid, posx, posy, posz)
setPlayerStorageValue(cid, 19000, posx)
setPlayerStorageValue(cid, 19001, posy)
setPlayerStorageValue(cid, 19002, posz)
end
function getMarkPos(cid)
return {x=getPlayerStorageValue(cid, 19000), y=getPlayerStorageValue(cid, 19001), z=getPlayerStorageValue(cid, 19002)}
end
Certo, agora vamos ao script do position recorder.
Opção 1: Apenas vips usam, Kydrai System Vip.
Opção 2: Apenas vips usam, Perfect Vip System.
Opção 3: Qualquer um usa.
Outras possibilidades para as funções adicionadas:
~Quest: Terminar a quest e ganhar acesso a um lugar especial.
Lembrando que o lugar fica gravado no jogador, e não no item. Os itens usados foram 2356 e 2359, no caso; você pode troca-los se souber como. É isso, postem o que acharam, até mais.
Esse é meu primeiro post, fiz um script bobinho mas seria de muito uso em alguns servers. Não sei se já tem, dei uma olhada e não achei, porem se tivesse, dei uma mudada, puis um math.random pra não vim sempre as mesmas foods.
em data/actions/scripts crie um arquivo chamado foodstone.lua e adicione isto
após, vá em actions.xml e adicione esta tag:
Depois só ir no map editor e por uniqueID 9889 em algum objeto (no exemplo, uma pedra).
cor Vermelha - o ID das foods que a pedra dará
cor roxa - mensagem ao player, após clicar na pedra.
Cor Amarela - Quantidade de food que o player recebe a cada 'use with'
Cor azul - o uniqueid adicionado no item para dar a food
Da para fazer varias coisas legais a partir deste script
Esse é meu primeiro post, fiz um script bobinho mas seria de muito uso em alguns servers. Não sei se já tem, dei uma olhada e não achei, porem se tivesse, dei uma mudada, puis um math.random pra não vim sempre as mesmas foods.
em data/actions/scripts crie um arquivo chamado foodstone.lua e adicione isto
após, vá em actions.xml e adicione esta tag:
Depois só ir no map editor e por uniqueID 9889 em algum objeto (no exemplo, uma pedra).
cor Vermelha - o ID das foods que a pedra dará
cor roxa - mensagem ao player, após clicar na pedra.
Cor Amarela - Quantidade de food que o player recebe a cada 'use with'
Cor azul - o uniqueid adicionado no item para dar a food
Da para fazer varias coisas legais a partir deste script
Quando a pessoa desloga, em cima do car... ele continua no mapa. Mas você pode por um decayTo no items.xml, para o carro sumir. tentei arrumar este bug porem nao consegui, mas com o decay ja ajuda =)
Otimo script, sou novo por aqui mas estou adorando essa area
Sou um scripter iniciante, porem eu sei resolver um dos bug ali.
@b0mb3r, para resolver aquele bug de quando dar !car stop ele nao ficar parado, add essa linha
doCreatureSetNoMove(cid, 0)
Aqui ficou assim:
elseif param == "stop" then
if carMove(cid) then
setCarStatus(cid,0)
doCreatureSetNoMove(cid, 0)
Espero ter ajudado