Histórico de Curtidas
-
ManoTobira recebeu reputação de bamb00 em [action] Edo Tenseiprimeiro crie os monstros de edo tensei
em actions copie um arquivo e renomeie para edocatch
apague tudo oq tem nele e cole isso
primeiro crie os monstros de edo tensei
em actions copie um arquivo e renomeie para edocatch
apague tudo oq tem nele e cole isso
local mtrs = { ["[Edo Tensei] Madara] = {hp = 50000, maxhp = 50000, corpse = 2936, chance = 100}, ["[Edo Tensei] Sasuke] = {hp = 50000, maxhp = 50000, corpse = 2806, chance = 100}, ["[Edo Tensei] Deidara] = {hp = 50000, maxhp = 50000, corpse = 2879, chance = 100}, } local vocs = {300, 649} local corpos = {2936, 2806, 2879} function onUse(cid, item, frompos, item2, topos) if(not(isInArray(vocs, getPlayerVocation(cid)))) then return doPlayerSendTextMessage(cid, 26, "You cannot use this object.") end if(not(isInArray(corpos, item2.itemid))) then doPlayerPopupFYI(cid, "Para usar o Edo Tensei você deve usar o pergaminho em algum corpo de um jogador.") return true end for pet_name, v in pairs(mtrs) do if item2.itemid == v.corpse then if math.random(0,100) <= v.chance then doSendMagicEffect(topos, 2) doPlayerSendTextMessage(cid, 27, "".. pet_name .. " foi selado nesse pergaminho.") doRemoveItem(item2.uid, 1) doRemoveItem(item.uid, 1) local itemcatch = doPlayerAddItem(cid, 11390, 1) doItemSetAttribute(itemcatch, "namepet", pet_name) doItemSetAttribute(itemcatch, "description", "Neste pergaminho foi selado um ".. pet_name ..".") doItemSetAttribute(itemcatch, "lifepet", v.hp) doItemSetAttribute(itemcatch, "maxlifepet", v.maxhp) else doPlayerSendTextMessage(cid, 27, "Falhou.") end end end return true end
Configuração
azul=nome do monster
verde=hp que o monster vai nasce
azul fraco=id do monster morto
rosa=chance de selar o corpo
amarelo=vocaçoes para usar o edo tensei
vermelho=id do item que solta o edo tensei
agora copie outro arquivo e renomeie para edogo
apague tudo oq tem dentro e cole isso
local config = { percent = 15, --- porcentagem do chakra que perde } function onUse(cid, item, frompos, item2, topos) local health = tonumber(getItemAttribute(item.uid, "lifepet")) local mhp = tonumber(getItemAttribute(item.uid, "maxlifepet")) local lifedraw = math.ceil(getCreatureMaxHealth(cid) * (config.percent)/100) local vocs = {300, 649} local msg0 = [[ Você ssó pode ter 0 summon(s), A seguinte tabela mostra os leveis e o respectivo número de summons que um player terá ao estar nele Level <~> [summons] ~->50[1] ~->150[2] ~->200[2] ~->350[3] ~->450[4] ]] local msg1 = [[ Você ssó pode ter 1 summon(s), A seguinte tabela mostra os leveis e o respectivo número de summons que um player terá ao estar nele Level <~> [summons] ~->50[1] ~->150[2] ~->200[2] ~->350[3] ~->450[4] ]] local msg2 = [[ Você ssó pode ter 2 summon(s), A seguinte tabela mostra os leveis e o respectivo número de summons que um player terá ao estar nele Level <~> [summons] ~->50[1] ~->150[2] ~->200[2] ~->350[3] ~->450[4] ]] local msg3 = [[ Você ssó pode ter 3 summon(s), A seguinte tabela mostra os leveis e o respectivo número de summons que um player terá ao estar nele Level <~> [summons] ~->50[1] ~->150[2] ~->200[2] ~->350[3] ~->450[4] ]] local msg4 = [[ Você ssó pode ter 4 summon(s), A seguinte tabela mostra os leveis e o respectivo número de summons que um player terá ao estar nele Level <~> [summons] ~->50[1] ~->150[2] ~->200[2] ~->350[3] ~->450[4] ]] if(not(isInArray(vocs, getPlayerVocation(cid)))) then return doPlayerSendTextMessage(cid, 26, "You cannot use this object.") end if health <= 0 then return doPlayerSendCancel(cid, "Esse pet esta morto.") end if #getCreatureSummons(cid) == 0 and getPlayerLevel(cid) <= 49 then doPlayerPopupFYI(cid, msg0) return true end if #getCreatureSummons(cid) == 1 and getPlayerLevel(cid) <= 149 then doPlayerPopupFYI(cid, msg1) return true end if #getCreatureSummons(cid) == 1 and getPlayerLevel(cid) <= 199 then doPlayerPopupFYI(cid, msg1) return true end if #getCreatureSummons(cid) == 2 and getPlayerLevel(cid) <= 349 then doPlayerPopupFYI(cid, msg2) return true end if #getCreatureSummons(cid) == 3 and getPlayerLevel(cid) <= 449 then doPlayerPopupFYI(cid, msg3) return true end if #getCreatureSummons(cid) == 4 and getPlayerLevel(cid) >= 450 then doPlayerPopupFYI(cid, msg4) return true end local pet_name = getItemAttribute(item.uid, "namepet") if item.itemid == 11390 then if not getTilePzInfo(getPlayerPosition(cid)) then if #getCreatureSummons(cid) < 1 and getPlayerLevel(cid) > 49 or #getCreatureSummons(cid) < 2 and getPlayerLevel(cid) > 149 or #getCreatureSummons(cid) < 2 and getPlayerLevel(cid) > 199 or #getCreatureSummons(cid) < 3 and getPlayerLevel(cid) > 349 or #getCreatureSummons(cid) < 4 and getPlayerLevel(cid) > 449 then if isCreature(cid) then if getCreatureMaxHealth(cid) then local summon = doSummonCreature(pet_name, topos) doRemoveItem(item.uid, 1) doConvinceCreature(cid, summon) setCreatureMaxHealth(summon, mhp) doCreatureAddHealth(summon, mhp) doCreatureAddHealth(summon, health - mhp) doCreatureAddHealth(cid, -5000) doCreatureAddMana(cid, -5103) doSendMagicEffect(getCreaturePosition(summon), 2) doCreatureSay(cid, "EDO TENSEI!", 19) end else doPlayerSendCancel(cid,'Você não pode invocar uma criatura de uma zona protegida.') end end end end return true end Configuração
local msg=tabela do edo tensei e nessa parte getCreatureSummons(cid) < 1 é a quantidade de summon e nessa getPlayerLevel(cid) > 49 é o level pra usa no caso é 50 porque tem que colocar 1 a menos
agora abra actions.xml e adicione
<!-- Edo Tensei --> <action itemid="11389" event="script" value="edocatch.lua"/> <action itemid="11390" event="script" value="edogo.lua"/> Configuração azul=id do item que captura o edo tensei vermelho=id do item que solta o edo tensei Créditos BananaFight LuckOake MaXwElldEn Gears PsyMcKenzie por terem criado o pet system que usei de base -
ManoTobira deu reputação a Orochi Elf em Perfect Tv System - OrochiElfPerfect Tv System
autor: Tony Araújo (OrochiElf)
Olá pessoal, hoje eu vim mostrar para vocês o meu novo sistema de TV. Sim, isso mesmo, um sistema de televisão completo. Bom, como a maioria sabe, nenhum sistema de televisão disponível foi desenvolvido da "maneira correta".
- Mas como assim, "maneira correta"?
Sem utilizar a tecnica milenar chamada "GAMBIARRA", e a mais famosa delas é o auto teleport by step, ele consiste em teletransportar o telespectador toda vez em que o transmissor der um passo, ou seja, se tiver um canal com 100 pessoas assistindo, e o jogador estiver uma velocidade consideravel (ex: 2-4 passos por segundo), o que seria (120 - 240) passos por minuto, o que levaria então a (1200 - 2400) passos por minuto, por conta de todos os jogadores assistindo. Imaginem só a CPU gritando, é o que acontece, e então milhares de problemas acontecem, quedas por alto consumo da CPU, mass kicks, enfim, este sistema que estou mostrando a vocês foi desenvolvido utilizando a mesma técnica que o SvkE / PxG. É denominado de (compartilhamento de dados), consiste enviar os mesmos pacotes para todos os que estão dentro de uma certa lista / tabela. É simples entender a tecnica, pense o seguinte, quando o jogador vai dar um passo para algum lado, o servidor precisa enviar todas as informações de mapa, criaturas, items que estão na nova posição (que seriam os dados), e esse sistema envia os mesmos dados para todos os jogadores que estão assistindo, fazendo assim, atualizar a tela de todos telespectadores com as imagens do local do transmissor.
Espero que gostem
Obs: Como está escrito no vídeo (Vídeo não oficial), não é a versão final do vídeo, porque eu gravei de ultima hora e a qualidade não ficou boa, as travadas é por conta do meu computador, tinham algumas coisas abertas kkkk (PC lixo é assim mesmo).
-
ManoTobira recebeu reputação de thelifeofpbion em (Resolvido)Alanvanca tpÉ mesmo eu errei kkkkkkk
-
ManoTobira recebeu reputação de thelifeofpbion em (Resolvido)Alanvanca tpNão testei
local config = {
tpos = {x=885, y=1460, z=5}, -- Posição para onde o player será teleportado.
}
function onUse(cid, item, frompos, item2, topos)
if isCreature(cid) then
doTeleportThing(cid, config.tpos)
doPlayerSendTextMessage(cid,20,"You have been teleported.") -- Menssagem que aparecerá para o player ao ser teleportado.
end
return true
end
/\ Acredito que funcione agora /\
-
ManoTobira deu reputação a Rusherzin em [Function] Converter tempoBom, eu estava cansado de ficar fazendo os cálculos para exibir as horas, minutos ou segundos quando faço algum script com cooldown. Então, eu criei essa função simples que converte o valor em segundos para hora, minuto e segundo.
Exemplos:
convertTime(60) retornará "1 minuto"
convertTime(61) retornará "1 minuto e 1 segundo"
convertTime(3600) retornará "1 hora"
convertTime(3601) retornará "1 hora e 1 segundo"
convertTime(3661) retornará "1 hora, 1 minuto e 1 segundo"
E como eu sou babaca perfeccionista, o português também vem correto. Enfim, aqui está a função.
function convertTime(a) if(type(tonumber(a)) == "number" and a > 0) then if (a <= 3599) then local minute = math.floor(a/60) local second = a - (60 * minute) if(second == 0) then return ((minute)..((minute > 1) and " minutos" or " minuto")) else return ((minute ~= 0) and ((minute>1) and minute.." minutos e " or minute.." minuto e ").. ((second>1) and second.." segundos" or second.." segundo") or ((second>1) and second.." segundos" or second.. " segundo")) end else local hour = math.floor(a/3600) local minute = math.floor((a - (hour * 3600))/60) local second = (a - (3600 * hour) - (minute * 60)) if (minute == 0 and second > 0) then return (hour..((hour > 1) and " horas e " or " hora e "))..(second..((second > 1) and " segundos" or " segundo")) elseif (second == 0 and minute > 0) then return (hour..((hour > 1) and " horas e " or " hora e "))..(minute..((minute > 1) and " minutos" or " minuto")) elseif (second == 0 and minute == 0) then return (hour..((hour > 1) and " horas" or " hora")) end return (hour..((hour > 1) and " horas, " or " hora, "))..(minute..((minute > 1) and " minutos e " or " minuto e "))..(second..((second > 1) and " segundos" or " segundo")) end end end Obs: se der algum bug com algum número, é só postar, não testei todas possibilidades (obviamente).
Por fim, sei que fazer o horário no formato 00:00:00 ou retornar o valor de horas, minutos e segundos separadamente me pouparia metade do trabalho e, no segundo caso, deixaria mais fácil para controlar os dados, mas eu queria que viesse nesse formato mesmo. Anyway, espero que seja útil e poupe o trabalho de alguém.
-
ManoTobira recebeu reputação de FabiiioH em [Action] Hiraishin KunaiEsse sistema é o da hiraishin kunai uma kunai que teleporta para position que voce escolhe vamos lá
Em Actions/Scripts/ Copie um Arquivo.lua e renomeie para hiraishin apague tudo e coloque a seguinte script:
em Actions.xml Adicione a seguinte tag:
<action itemid="7382" event="script" value="hiraishin.lua" allowfaruse="1"/> explicando
local vocs = {250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261} --- aqui é o id das voc que pode usar a kunai
local parede = {1030, 1029, 1025, 1026, 1027, 1259, 1028, 1032, 1034, 1033, 1536, 1533, 873, 919, 874, 1037, 4472, 4475, 4471, 3388, 3373, 3363, 3398, 3408, 3417, 3420, 3407, 3368, 2701, 5130, 6170, 6166, 1596}
são as parede que não podem passar etc...
Créditos
Luan Mello
-
ManoTobira recebeu reputação de Gustavo Ntos em [action] Edo Tenseiprimeiro crie os monstros de edo tensei
em actions copie um arquivo e renomeie para edocatch
apague tudo oq tem nele e cole isso
primeiro crie os monstros de edo tensei
em actions copie um arquivo e renomeie para edocatch
apague tudo oq tem nele e cole isso
local mtrs = { ["[Edo Tensei] Madara] = {hp = 50000, maxhp = 50000, corpse = 2936, chance = 100}, ["[Edo Tensei] Sasuke] = {hp = 50000, maxhp = 50000, corpse = 2806, chance = 100}, ["[Edo Tensei] Deidara] = {hp = 50000, maxhp = 50000, corpse = 2879, chance = 100}, } local vocs = {300, 649} local corpos = {2936, 2806, 2879} function onUse(cid, item, frompos, item2, topos) if(not(isInArray(vocs, getPlayerVocation(cid)))) then return doPlayerSendTextMessage(cid, 26, "You cannot use this object.") end if(not(isInArray(corpos, item2.itemid))) then doPlayerPopupFYI(cid, "Para usar o Edo Tensei você deve usar o pergaminho em algum corpo de um jogador.") return true end for pet_name, v in pairs(mtrs) do if item2.itemid == v.corpse then if math.random(0,100) <= v.chance then doSendMagicEffect(topos, 2) doPlayerSendTextMessage(cid, 27, "".. pet_name .. " foi selado nesse pergaminho.") doRemoveItem(item2.uid, 1) doRemoveItem(item.uid, 1) local itemcatch = doPlayerAddItem(cid, 11390, 1) doItemSetAttribute(itemcatch, "namepet", pet_name) doItemSetAttribute(itemcatch, "description", "Neste pergaminho foi selado um ".. pet_name ..".") doItemSetAttribute(itemcatch, "lifepet", v.hp) doItemSetAttribute(itemcatch, "maxlifepet", v.maxhp) else doPlayerSendTextMessage(cid, 27, "Falhou.") end end end return true end
Configuração
azul=nome do monster
verde=hp que o monster vai nasce
azul fraco=id do monster morto
rosa=chance de selar o corpo
amarelo=vocaçoes para usar o edo tensei
vermelho=id do item que solta o edo tensei
agora copie outro arquivo e renomeie para edogo
apague tudo oq tem dentro e cole isso
local config = { percent = 15, --- porcentagem do chakra que perde } function onUse(cid, item, frompos, item2, topos) local health = tonumber(getItemAttribute(item.uid, "lifepet")) local mhp = tonumber(getItemAttribute(item.uid, "maxlifepet")) local lifedraw = math.ceil(getCreatureMaxHealth(cid) * (config.percent)/100) local vocs = {300, 649} local msg0 = [[ Você ssó pode ter 0 summon(s), A seguinte tabela mostra os leveis e o respectivo número de summons que um player terá ao estar nele Level <~> [summons] ~->50[1] ~->150[2] ~->200[2] ~->350[3] ~->450[4] ]] local msg1 = [[ Você ssó pode ter 1 summon(s), A seguinte tabela mostra os leveis e o respectivo número de summons que um player terá ao estar nele Level <~> [summons] ~->50[1] ~->150[2] ~->200[2] ~->350[3] ~->450[4] ]] local msg2 = [[ Você ssó pode ter 2 summon(s), A seguinte tabela mostra os leveis e o respectivo número de summons que um player terá ao estar nele Level <~> [summons] ~->50[1] ~->150[2] ~->200[2] ~->350[3] ~->450[4] ]] local msg3 = [[ Você ssó pode ter 3 summon(s), A seguinte tabela mostra os leveis e o respectivo número de summons que um player terá ao estar nele Level <~> [summons] ~->50[1] ~->150[2] ~->200[2] ~->350[3] ~->450[4] ]] local msg4 = [[ Você ssó pode ter 4 summon(s), A seguinte tabela mostra os leveis e o respectivo número de summons que um player terá ao estar nele Level <~> [summons] ~->50[1] ~->150[2] ~->200[2] ~->350[3] ~->450[4] ]] if(not(isInArray(vocs, getPlayerVocation(cid)))) then return doPlayerSendTextMessage(cid, 26, "You cannot use this object.") end if health <= 0 then return doPlayerSendCancel(cid, "Esse pet esta morto.") end if #getCreatureSummons(cid) == 0 and getPlayerLevel(cid) <= 49 then doPlayerPopupFYI(cid, msg0) return true end if #getCreatureSummons(cid) == 1 and getPlayerLevel(cid) <= 149 then doPlayerPopupFYI(cid, msg1) return true end if #getCreatureSummons(cid) == 1 and getPlayerLevel(cid) <= 199 then doPlayerPopupFYI(cid, msg1) return true end if #getCreatureSummons(cid) == 2 and getPlayerLevel(cid) <= 349 then doPlayerPopupFYI(cid, msg2) return true end if #getCreatureSummons(cid) == 3 and getPlayerLevel(cid) <= 449 then doPlayerPopupFYI(cid, msg3) return true end if #getCreatureSummons(cid) == 4 and getPlayerLevel(cid) >= 450 then doPlayerPopupFYI(cid, msg4) return true end local pet_name = getItemAttribute(item.uid, "namepet") if item.itemid == 11390 then if not getTilePzInfo(getPlayerPosition(cid)) then if #getCreatureSummons(cid) < 1 and getPlayerLevel(cid) > 49 or #getCreatureSummons(cid) < 2 and getPlayerLevel(cid) > 149 or #getCreatureSummons(cid) < 2 and getPlayerLevel(cid) > 199 or #getCreatureSummons(cid) < 3 and getPlayerLevel(cid) > 349 or #getCreatureSummons(cid) < 4 and getPlayerLevel(cid) > 449 then if isCreature(cid) then if getCreatureMaxHealth(cid) then local summon = doSummonCreature(pet_name, topos) doRemoveItem(item.uid, 1) doConvinceCreature(cid, summon) setCreatureMaxHealth(summon, mhp) doCreatureAddHealth(summon, mhp) doCreatureAddHealth(summon, health - mhp) doCreatureAddHealth(cid, -5000) doCreatureAddMana(cid, -5103) doSendMagicEffect(getCreaturePosition(summon), 2) doCreatureSay(cid, "EDO TENSEI!", 19) end else doPlayerSendCancel(cid,'Você não pode invocar uma criatura de uma zona protegida.') end end end end return true end Configuração
local msg=tabela do edo tensei e nessa parte getCreatureSummons(cid) < 1 é a quantidade de summon e nessa getPlayerLevel(cid) > 49 é o level pra usa no caso é 50 porque tem que colocar 1 a menos
agora abra actions.xml e adicione
<!-- Edo Tensei --> <action itemid="11389" event="script" value="edocatch.lua"/> <action itemid="11390" event="script" value="edogo.lua"/> Configuração azul=id do item que captura o edo tensei vermelho=id do item que solta o edo tensei Créditos BananaFight LuckOake MaXwElldEn Gears PsyMcKenzie por terem criado o pet system que usei de base -
ManoTobira recebeu reputação de KotZletY em [Action] Hiraishin KunaiFiz essa versão diferente que pode ser útil pois onde você colocava o id da vocation você coloca o nome agora
function onUse(cid, item, fromPosition, itemEx, toPosition)
local pos = fromPosition
local aqui = getPlayerPosition(cid)
local vocs = {"Minato", "Tobirama"}
local agua = {4610, 4612, 4611, 4664, 4613, 4666, 4646, 4654, 4609, 4665, 4608, 4625, 4665, 4666, 4645}
local parede = {1030, 1029, 1025, 1026, 1027, 1259, 1028, 1032, 1034, 1033, 1536, 1533, 873, 919, 874, 1037, 2700, 2708, 4472, 4475, 4471, 3388, 3373, 3363, 3398, 3408, 3417, 3420, 3407, 3368, 2701, 5130, 6170, 6166, 1596, 3361, 3362, 3363, 3364, 3365, 3366, 3367, 3368, 3369, 3370, 3371, 3372, 3373, 3374, 3375, 3376, 3377, 3378, 3379, 3380, 3381, 3382, 3383, 3384, 3385, 3386, 3387, 3388, 3389, 3390, 3391, 3392, 3393, 3394, 3395, 3396, 3397, 3398, 3399, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3407, 3408, 3409, 3410, 3411, 3412, 3413, 3414, 3415, 3416, 3417, 3418, 3419, 3420, 3421, 3422}
local pedra = {874, 919, 873, 2707, 2784, 2778, 3330, 4471, 4475, 4473, 4472, 4474, 4468, 4478, 4469, 4470, 4479, 2703, 2704, 1534, 2739, 3867, 5324, 5316, 5315, 5317, 1600, 1597, 1601}
if getDistanceBetween(aqui, toPosition) >= 8 then
return doPlayerSendTextMessage(cid, 27, "Está muito longe.")
elseif(not(isSightClear(aqui, toPosition, 1))) then
return doPlayerSendTextMessage(cid, 27, "Isso é impossivel.")
elseif(getTilePzInfo(aqui)) then
return doPlayerSendCancel(cid, "Não pode usar a tecnica Deus Dragão em casas ou areas protegidas.")
elseif(getTilePzInfo(toPosition)) then
return doPlayerSendCancel(cid, "Não pode usar a tecnica Deus Dragão em casas ou areas protegidas.")
elseif(isInArray(agua, itemEx.itemid)) then
return doPlayerSendTextMessage(cid, 27, "voce nao pode usar em agua")
elseif(isInArray(parede, itemEx.itemid)) then
return doPlayerSendTextMessage(cid, 27, "voce nao pode usar em paredes")
elseif(isInArray(pedra, itemEx.itemid)) then
return doPlayerSendTextMessage(cid, 27, "voce nao pode usar em pedras")
elseif(not(isInArray(vocs, getPlayerVocationName(cid)))) then
return doPlayerSendTextMessage(cid, 27, "Desculpe, Você não pode usar a tecnica Deus Dragão.")
end
if(doTeleportThing(cid, toPosition, false)) then
doSendMagicEffect(pos, 24)
doSendMagicEffect(toPosition, 24)
doCreatureSay(cid, "Shunshin", 19)
return doSendDistanceShoot(pos, toPosition, 16)
end
return doPlayerSendCancel(cid, "Desculpe nao foi possivel.")
end
-
ManoTobira recebeu reputação de AllanSilva em SPELL - Hiraishin Jutsu Sealcara eu tenho 1 aki sem tempo pra kunai sumir pq quando eu fiz eu n sabia se tinha tempo ou nao pra sumir
Hiraishin Seal:
local s = {5668,5669,5667} local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) function x(p, d) local t = {{x=p.x,y=p.y-1,z=p.z},{x=p.x+1,y=p.y,z=p.z},{x=p.x,y=p.y+1,z=p.z},{x=p.x-1,y=p.y,z=p.z}} return t[d+1] end function onCastSpell(cid, var) local position1 = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y+1, z=getPlayerPosition(cid).z} local pos = getCreaturePosition(cid) local item = 2335 --id da kunai doCreateItem(item, getCreaturePosition(cid)) local mystr = "return {x=xx,y=yy,z=zz}" local mystr = string.gsub(mystr, "xx", pos.x) local mystr = string.gsub(mystr, "yy", pos.y) local mystr = string.gsub(mystr, "zz", pos.z) local position112 = {x=getPlayerPosition(cid).x, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z} setPlayerStorageValue(cid, s[1], mystr) setPlayerStorageValue(cid, s[2], os.time()+0) setPlayerStorageValue(cid, s[3], 1) for i = 1, 5 do end doCombat(cid, combat, var) return true end Hiraishin no Jutsu: local s = {5668,5669,5667} function onCastSpell(cid, var) local parameters = { cid = cid, var = var} k = getPlayerStorageValue(cid, s[2]) - os.time() if k <= 0 then t = loadstring(getPlayerStorageValue(cid, s[1]))() local position1 = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y+1, z=getPlayerPosition(cid).z} local position2 = {x=t.x+1, y=t.y+1, z=t.z} doTeleportThing(cid, t) doSendMagicEffect(position1, 82) addEvent(doSendMagicEffect, 0, position2,186) addEvent(doSendMagicEffect, 500, t, 131) setPlayerStorageValue(cid, s[3], -1) else doPlayerSendTextMessage(cid, 19, "Aguarde "..k.." segundos.") end return true end
se ajudei +rep
-
ManoTobira recebeu reputação de Zauster em (Resolvido)[pedido] spell izanagivlw era isso mesmo fiz uma spell pra ativar a script
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, 108) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, true) function onCastSpell(cid, var) local target = getCreatureTarget(cid) local waittime1 = 180 -- Tempo de exhaustion local storage1 = 115819 if exhaustion.check(cid, storage1) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde " .. exhaustion.get(cid, storage1) .. " segundos para usar a spell novamente.") return false end doPlayerSetStorageValue(cid, 19332, 1) doPlayerSendTextMessage(cid, 27, "Seu izanagi tem 20 segundos de efeito.") addEvent(doPlayerSetStorageValue, 20000, cid, 19332, 0) addEvent(doPlayerSendTextMessage, 20000, cid, 27, "Seu izanagi perdeu o efeito.") exhaustion.set(cid, storage1, waittime1) return true end -
ManoTobira recebeu reputação de Matheus Reis em [Pedido] Hiraishin Kunaivai em actions/scripts e copie um arquivo e renomeie para hirashin e cole isso nele:
function onUse(cid, item, fromPosition, itemEx, toPosition) local pos = fromPosition local aqui = getPlayerPosition(cid) local vocs = {300, 301, 302, 303, 304, 305, 306, 307} local agua = {4610, 4612, 4611, 4664, 4613, 4666, 4646, 4654, 4609, 4665, 4608, 4625, 4665, 4666, 4645} local parede = {1030, 1029, 1025, 1026, 1027, 1259, 1028, 1032, 1034, 1033, 1536, 1533, 873, 919, 874, 1037, 2700, 2708, 4472, 4475, 4471, 3388, 3373, 3363, 3398, 3408, 3417, 3420, 3407, 3368, 2701, 5130, 6170, 6166, 1596, 3361, 3362, 3363, 3364, 3365, 3366, 3367, 3368, 3369, 3370, 3371, 3372, 3373, 3374, 3375, 3376, 3377, 3378, 3379, 3380, 3381, 3382, 3383, 3384, 3385, 3386, 3387, 3388, 3389, 3390, 3391, 3392, 3393, 3394, 3395, 3396, 3397, 3398, 3399, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3407, 3408, 3409, 3410, 3411, 3412, 3413, 3414, 3415, 3416, 3417, 3418, 3419, 3420, 3421, 3422} local pedra = {874, 919, 873, 2707, 2784, 2778, 3330, 4471, 4475, 4473, 4472, 4474, 4468, 4478, 4469, 4470, 4479, 2703, 2704, 1534, 2739, 3867, 5324, 5316, 5315, 5317, 1600, 1597, 1601} if getDistanceBetween(aqui, toPosition) >= 8 then return doPlayerSendTextMessage(cid, 27, "Está muito longe.") elseif(not(isSightClear(aqui, toPosition, 1))) then return doPlayerSendTextMessage(cid, 27, "Isso é impossivel.") elseif(getTilePzInfo(aqui)) then return doPlayerSendCancel(cid, "Não pode usar a tecnica Deus Dragão em casas ou areas protegidas.") elseif(getTilePzInfo(toPosition)) then return doPlayerSendCancel(cid, "Não pode usar a tecnica Deus Dragão em casas ou areas protegidas.") elseif(isInArray(agua, itemEx.itemid)) then return doPlayerSendTextMessage(cid, 27, "voce nao pode usar em agua") elseif(isInArray(parede, itemEx.itemid)) then return doPlayerSendTextMessage(cid, 27, "voce nao pode usar em paredes") elseif(isInArray(pedra, itemEx.itemid)) then return doPlayerSendTextMessage(cid, 27, "voce nao pode usar em pedras") elseif(not(isInArray(vocs, getPlayerVocation(cid)))) then return doPlayerSendTextMessage(cid, 27, "Desculpe, Apenas Minato pode usar a tecnica Deus Dragão.") end if(doTeleportThing(cid, toPosition, false)) then doSendMagicEffect(pos, 24) doSendMagicEffect(toPosition, 24) doCreatureSay(cid, "Shunshin", 19) return doSendDistanceShoot(pos, toPosition, 16) end return doPlayerSendCancel(cid, "Desculpe nao foi possivel.") end agora em actions.xml vcs add: <action itemid="7382" event="script" value="hiraishin.lua" allowfaruse="1"/> -
ManoTobira recebeu reputação de Fabiano Alberto em [HELP ME +REP] Função para comparar se o player ta atacando monstro ou outro playerse me lembro bem é isso
isMonster(getCreatureTarget(cid)) -- se for monstro o alvo
isPlayer(getCreatureTarget(cid)) -- se for player o alvo
-
ManoTobira deu reputação a kranzix em [Modern Acc] WebSite Otpokemon.com (2014) versão 1.0Iae pessoal blz?
*Sempre procurei um website igualzinho ao do otpokemon.com mas como nunca encontrei então tive a
iniciativa de montar um do "0" deu um trabalhozinho mas valeu a pena!!
+Aqui estão algumas imagens:
___________________________________________________________________________________________________________
Obs: No Otpokemon WebSite 1.0 as configuração do config.lua do seu servidor de poketibia so serão suportadas na versão criptografada Sha1 (Então altere para Sha1 e mysql) Não esqueça tambem de remover as linhas "----" do config.lua do seu servidor para evitar problemas futuros!. Desative o account manager do config.lua também pois se ele permanecer os irá bugar os char's e não vão poder logar no servidor.
A instalação é simples não precisa de senha de administrador, terão que mudar o acesso de pagina direto do banco de dados qualquer duvida comentem! Aconcelhado usar Xampp 1.7.7 pois não tive nenhum problema com ele! ___________________________________________________________________________________________________________
*Bom essa é a versão 1.0 então não está 100% igual ao website do otpokemon.com mas irei fazer o maximo
para que fique 100% igual.
- O WebSite é 100% Editavel so é preciso ter os conhecimentos necessarios.
...É isso ae galera espero que curtam o website!
(Em breve na versão 2.0 mas novidades aguardam)
$-Obs:Caso forem compartilhar esse post, não esqueçam de deixar os creditos-$
Ahh.... Lembrando não esqueça de dar REP+ até
porque deu um trabalhaço!
___________________________________________________________________________________________________________
Download:http://www.mediafire.com/download/cvttts1ae47usrb/WebSite+OTPokemon+1.0+%282014%29.rar
Scan:https://www.virustotal.com/pt/file/3b20e20c6f103fd508de6693abea5e2e16c36aaff139d605124e9db183260edc/analysis/1392469897/
Aviso: A senha para descompactar o WebSite OTPokemon 1.0 (2014).Rar é: (otpokemon!) sem os parenteses.
......................................................................................................................................................................................................................
*- Creditos -*
Modern Acc e (Kranzix).
-
ManoTobira recebeu reputação de SomeBody em [Action] Hiraishin KunaiEsse sistema é o da hiraishin kunai uma kunai que teleporta para position que voce escolhe vamos lá
Em Actions/Scripts/ Copie um Arquivo.lua e renomeie para hiraishin apague tudo e coloque a seguinte script:
em Actions.xml Adicione a seguinte tag:
<action itemid="7382" event="script" value="hiraishin.lua" allowfaruse="1"/> explicando
local vocs = {250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261} --- aqui é o id das voc que pode usar a kunai
local parede = {1030, 1029, 1025, 1026, 1027, 1259, 1028, 1032, 1034, 1033, 1536, 1533, 873, 919, 874, 1037, 4472, 4475, 4471, 3388, 3373, 3363, 3398, 3408, 3417, 3420, 3407, 3368, 2701, 5130, 6170, 6166, 1596}
são as parede que não podem passar etc...
Créditos
Luan Mello
-
ManoTobira recebeu reputação de SomeBody em [Pedido] Hiraishin Kunaivai em actions/scripts e copie um arquivo e renomeie para hirashin e cole isso nele:
function onUse(cid, item, fromPosition, itemEx, toPosition) local pos = fromPosition local aqui = getPlayerPosition(cid) local vocs = {300, 301, 302, 303, 304, 305, 306, 307} local agua = {4610, 4612, 4611, 4664, 4613, 4666, 4646, 4654, 4609, 4665, 4608, 4625, 4665, 4666, 4645} local parede = {1030, 1029, 1025, 1026, 1027, 1259, 1028, 1032, 1034, 1033, 1536, 1533, 873, 919, 874, 1037, 2700, 2708, 4472, 4475, 4471, 3388, 3373, 3363, 3398, 3408, 3417, 3420, 3407, 3368, 2701, 5130, 6170, 6166, 1596, 3361, 3362, 3363, 3364, 3365, 3366, 3367, 3368, 3369, 3370, 3371, 3372, 3373, 3374, 3375, 3376, 3377, 3378, 3379, 3380, 3381, 3382, 3383, 3384, 3385, 3386, 3387, 3388, 3389, 3390, 3391, 3392, 3393, 3394, 3395, 3396, 3397, 3398, 3399, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3407, 3408, 3409, 3410, 3411, 3412, 3413, 3414, 3415, 3416, 3417, 3418, 3419, 3420, 3421, 3422} local pedra = {874, 919, 873, 2707, 2784, 2778, 3330, 4471, 4475, 4473, 4472, 4474, 4468, 4478, 4469, 4470, 4479, 2703, 2704, 1534, 2739, 3867, 5324, 5316, 5315, 5317, 1600, 1597, 1601} if getDistanceBetween(aqui, toPosition) >= 8 then return doPlayerSendTextMessage(cid, 27, "Está muito longe.") elseif(not(isSightClear(aqui, toPosition, 1))) then return doPlayerSendTextMessage(cid, 27, "Isso é impossivel.") elseif(getTilePzInfo(aqui)) then return doPlayerSendCancel(cid, "Não pode usar a tecnica Deus Dragão em casas ou areas protegidas.") elseif(getTilePzInfo(toPosition)) then return doPlayerSendCancel(cid, "Não pode usar a tecnica Deus Dragão em casas ou areas protegidas.") elseif(isInArray(agua, itemEx.itemid)) then return doPlayerSendTextMessage(cid, 27, "voce nao pode usar em agua") elseif(isInArray(parede, itemEx.itemid)) then return doPlayerSendTextMessage(cid, 27, "voce nao pode usar em paredes") elseif(isInArray(pedra, itemEx.itemid)) then return doPlayerSendTextMessage(cid, 27, "voce nao pode usar em pedras") elseif(not(isInArray(vocs, getPlayerVocation(cid)))) then return doPlayerSendTextMessage(cid, 27, "Desculpe, Apenas Minato pode usar a tecnica Deus Dragão.") end if(doTeleportThing(cid, toPosition, false)) then doSendMagicEffect(pos, 24) doSendMagicEffect(toPosition, 24) doCreatureSay(cid, "Shunshin", 19) return doSendDistanceShoot(pos, toPosition, 16) end return doPlayerSendCancel(cid, "Desculpe nao foi possivel.") end agora em actions.xml vcs add: <action itemid="7382" event="script" value="hiraishin.lua" allowfaruse="1"/> -
ManoTobira deu reputação a deivaoo em [MOD] Pokedex Window para base PDABom galera, estive estudando OtClients e decidi fazer uma pokedex semelhante do pxg, mas para PDA...
Versão Atual: 1.6
- Histórico
- Prints
*Obs.: Veja hora/data de cada print [tiro o print quando termino de editar o mod]
-1.0 [Como não é necessária nenhuma edição no servidor, fiz o teste no Pokemon Force]
-1.1
-1.2
-1.3
-1.4
-1.6
- Créditos:
@PXG ~ por criar o original; @david0703 ~ pelo desenvolvimento do mod; @tioj ~ pela idéia da efetividade; @Soulviling ~ pela ideia de fechar a pokedex quando deslogar; - Downloads @ v1.0 @
Bom, é isso...
Espero que tenham gostado...
*Obs¹.: Na versão 2.0 colocarei a tão esperada lista de pokemons.
*Obs².: Quando fui postar a versão 1.3 deu um erro ao editar o tópico e ficou tudo bagunçado, tive que refazer todo o layout do tópico.
*Obs³.: Excluíram as versões anteriores que eu postei... Tá certo! Belo incentivo de postagem de conteúdo!
-
ManoTobira deu reputação a yuricrazk9 em PokeGOD v0.1 - Open SourceEai PokeTibianos ! Trago aqui o PokeGOD um servidor que está sendo desenvolvido de um base antiga o PField Project, Será disponibilizado atualizações aqui semanalmente, Atualmente estamos na v0.1. As sources já vem na pasta do Server na pasta 'src'. Systems do PokeGOD! Bike System: 100% Caught System: 100% Evolution System: 100% Go-Back System: 100% Gerações 1: 100% Gerações 2: 100% Limite de 6 Pokemons na Bag: 100% Moves System: 100% Portrait System: 100% Pokedex System: 100% Ride System: 100% Sem Level System! fly System: 100% Surf System: 100% Teleport System: 100% e etc... Observações Os systems acima apenas afirma que os sistema em si esta em 100%, quero deixa bem claro que nem todos os pokemos então adicionados ao sistemas. Lembrando tambem que possa aparece bugs porque todos os OtServs de Poketibia á Bugs... Mais Caso Ocorra algum por favor me relate que sera rapidamente corrigido. Obrigado por acompanhar nosso projeto, by: YuriAntunes! Prints Downloads PokeGOD PokeGOD v0.1 - Data 15/06/2015 PokeServer v0.1: http://www.mediafire.com/download/ansu4fqtiso9u7v/PokeServer.rar PokeClient v0.1: http://www.mediafire.com/download/trpcexe33nre9t2/PokeClient.rar Scan PokeServer v0.1: https://www.virustotal.com/pt/file/93990c7828eb5747fbc36785ce5fe89f93c7489ce84b7dde29b5c32f4268ba5b/analysis/1434401536/ Scan PokeClient v0.1: https://www.virustotal.com/pt/file/9c24143be6c215c84252722c7115ddb49828a5dcdd44e597a90e24f63ba156ad/analysis/1434402568/
-
ManoTobira deu reputação a MikaelsonTO em [8.54] Pokémon Imperium [V1]Fala galera do TibiaKing, beleza?
Eu estava desenvolvendo o projeto Imperium, porém estou tendo alguns problemas e não vou conseguir terminar. Então vou liberar o avanço do projeto pra vocês.
• Menu:
├ Informações;
├ Edições;
├ Erros;
├ ScreenShots;
├ Download;
└ Créditos.
• Informações:
• Edições:
• Erros:
• ScreenShots:
• Download:
• Créditos:
-
ManoTobira recebeu reputação de Angeles em (Resolvido)[bug] npc não aceita novo din dinprocura no items.xml o item q vc qer q eles aceitem e depois coloque isso
<attribute key="worth" value="10000" />
no lugar de 10000 vc coloca o valor q vc qer q vale o dinheiro
-
ManoTobira deu reputação a Snowsz em [OTC] Manager WindowTestado: Otclient 0.6.7, TFS 0.4
Versão: 1.0
Descrição: Um mod que adiciona um botão, ao lado esquerdo do seu painel, quando clicar irá aparecer uma janela, com comandos.
Autor: Snowsz
Imagem:
Bom, só coloquei os comandos que mais uso, acho que ele seja auto explicativo, mas, vou explicar um pouco...
Em name coloque o nome do player, marque uma caixinha do que será adicionado, e em count coloque o valor que o player deverá ganhar desse determinado skill, após isso, clique em Addskill.
Os dois "X" são para limpar a caixa, assim como o botão, clear, para limpar as caixas dos outros comandos.
Quando clicar em reload, vai aparecer uma lista de opções, clique na que quiser dar reload.
No botão commands, quando clicar, irá aparecer a lista de comandos.
Ele só funciona com players que possuam cargo GM, CM e GOD.
Coloque isto no seu login.lua(para quem não sabe, no seu servidor não no CLIENT!):
if getPlayerAccess(cid) > 3 then doPlayerSendCancel(cid, "$@$Administrador") doPlayerSendCancel(cid, " ") end Download V2:
Link: https://www.dropbox.com/s/axmop6e80mvlfi7/managerwindow.rar?dl=0 (coloque o arquivo na pasta mods)
Scan: https://www.virustotal.com/pt/file/8fbe8b00e272f623bd2ac70c5fa1c39855d5e9c8469efcaae841db2e9eec138a/analysis/1422324181/
Atualizado para versão 2, removido todos os bugs que encontrei e adicionado novos botões, para adicionar mais comandos basta abrir o arquivo lua do mod, procurar por "local uses" e adicionar mais.
(obs: esses comandos do "uses", não podem precisar de parâmetro, ex: /r 10)
-->Change log v2
-Retirado alguns bugs
-Código diminuído e melhor identado
-Adicionado novas funcionalidades
-Adicionado compatibilidade do comando addskill para "skills", como distance, shield e sword, entre o restante. -
ManoTobira deu reputação a Thiago Rulexz em [C++] Attack SpeedRiven para TFS 0.3.6 Utilize este codigo
uint32_t Player::getAttackSpeed() { int32_t SpeedAttack; SpeedAttack = vocation->getAttackSpeed() - (getSkill(SKILL_SWORD, SKILL_LEVEL) * 10); if (SpeedAttack < 500) { return 500; } else { return (uint32_t) SpeedAttack; } } -
ManoTobira recebeu reputação de ZwhiteDog em SPELL - Hiraishin Jutsu Sealcara eu tenho 1 aki sem tempo pra kunai sumir pq quando eu fiz eu n sabia se tinha tempo ou nao pra sumir
Hiraishin Seal:
local s = {5668,5669,5667} local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) function x(p, d) local t = {{x=p.x,y=p.y-1,z=p.z},{x=p.x+1,y=p.y,z=p.z},{x=p.x,y=p.y+1,z=p.z},{x=p.x-1,y=p.y,z=p.z}} return t[d+1] end function onCastSpell(cid, var) local position1 = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y+1, z=getPlayerPosition(cid).z} local pos = getCreaturePosition(cid) local item = 2335 --id da kunai doCreateItem(item, getCreaturePosition(cid)) local mystr = "return {x=xx,y=yy,z=zz}" local mystr = string.gsub(mystr, "xx", pos.x) local mystr = string.gsub(mystr, "yy", pos.y) local mystr = string.gsub(mystr, "zz", pos.z) local position112 = {x=getPlayerPosition(cid).x, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z} setPlayerStorageValue(cid, s[1], mystr) setPlayerStorageValue(cid, s[2], os.time()+0) setPlayerStorageValue(cid, s[3], 1) for i = 1, 5 do end doCombat(cid, combat, var) return true end Hiraishin no Jutsu: local s = {5668,5669,5667} function onCastSpell(cid, var) local parameters = { cid = cid, var = var} k = getPlayerStorageValue(cid, s[2]) - os.time() if k <= 0 then t = loadstring(getPlayerStorageValue(cid, s[1]))() local position1 = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y+1, z=getPlayerPosition(cid).z} local position2 = {x=t.x+1, y=t.y+1, z=t.z} doTeleportThing(cid, t) doSendMagicEffect(position1, 82) addEvent(doSendMagicEffect, 0, position2,186) addEvent(doSendMagicEffect, 500, t, 131) setPlayerStorageValue(cid, s[3], -1) else doPlayerSendTextMessage(cid, 19, "Aguarde "..k.." segundos.") end return true end
se ajudei +rep
-
ManoTobira recebeu reputação de Destroyergbk em [Action] Hiraishin KunaiEsse sistema é o da hiraishin kunai uma kunai que teleporta para position que voce escolhe vamos lá
Em Actions/Scripts/ Copie um Arquivo.lua e renomeie para hiraishin apague tudo e coloque a seguinte script:
em Actions.xml Adicione a seguinte tag:
<action itemid="7382" event="script" value="hiraishin.lua" allowfaruse="1"/> explicando
local vocs = {250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261} --- aqui é o id das voc que pode usar a kunai
local parede = {1030, 1029, 1025, 1026, 1027, 1259, 1028, 1032, 1034, 1033, 1536, 1533, 873, 919, 874, 1037, 4472, 4475, 4471, 3388, 3373, 3363, 3398, 3408, 3417, 3420, 3407, 3368, 2701, 5130, 6170, 6166, 1596}
são as parede que não podem passar etc...
Créditos
Luan Mello
-
ManoTobira deu reputação a leoleo em Admin Mode - Sistema para alternar adm/gameBom este Talkactions que estou postando é baseado em servidores de Samp
Este Talkaction torna possivel que os administradores joguem normalmente como qualquer outro player, e quando se fizer necessário ativar o modo Staff (god, cm, gm, tutor ou qual seja o cargo dele) e desativar sem muitas complicações.
Segue o script:
Talkaction.xml
<talkaction words="/mdt" event="script" value="mdt.lua"/> Talkaction/mdt
Para
ativar: /mdt on
desativar: /mdt off
Bom espero que gostem, pois apensar de não ser nenhum scripter, eu faço com o maior capricho possível.
-
ManoTobira deu reputação a GabrielSapient em Launcher AutoUpdate C#Galera sempre procurei um Launcher AutoUpdate para meu servidor, depois de muita pesquisa e pouco conhecimento consegui fazer um em C#, está ai:
1. Download:
• Download | • Scan
2. Oque ele faz:
• Verifica a existência da versão local na pasta do cliente; • Se a versão do arquivo não existir, ele assume que a versão é "1.0" e cria um arquivo de versão; • Verifica arquivo .xml no servidor de atualização; • Baixar atualizações para todas as versões maiores do que a versão atual do cliente (atualiza tudo em apenas formato de arquivo .zip); • Extrai os arquivos .zip; • Exclui os arquivos .zip após a extração; • Arquiva a versão atualizada na pasta do cliente; • E, finalmente, desbloqueia o botão "Start Game". 3. Como editar: • Abra o arquivo .sln na pasta "VS Project" com o Visual Studio: Procure por: string Server = "http://127.0.0.1/Updates/"; • Altere o http://127.0.0.1/Updates/ para qualquer URL que você estará hospedando suas atualizações.
• Agora vamos procurar por: Process.Start("OTClient PkR DX9.exe", "\\Pokémon Rusty"); • Modifique o OTClient PkR DX9.exe pelo nome do .exe do seu Client.
• \\Pokémon Rusty e a pasta que está seu .exe e vai ficar seu Launcher. (troque sem tirar os "\\")
• No Visual Studio, selecione o controle WebBrowser(Neste caso, o nome "patchNotes") e alterar a url do "http://127.0.0.1/"para o caminho do arquivo index.html, na pasta do host: OBS: Isto á opcional, é apenas um template em .html. Você pode remove-lo e editar da maneira deseja. • Agora apenas jogue o .exe, .dll e o arquivo version da pasta "Launcher\VS Project\Launcher v2\bin\Debug ou Release" para a pasta de seu Client: Pronto! Agora e com o Site. • No host do site, apos colarmos a pasta Updates, editamos o arquivo Updates.xml, para cada atualização adicionamos um <update> fechamos com </update> como no exemplo do arquivo. Colocamos o arquivo atualização em .zip nessa mesma pasta, editando a versão e o nome no arquivo: • No arquivo version.txt colocamos a versão da nova atualização: • Uma dica para o .zip de atualização é colocar em pastas o caminho no client desejado a fazer update. Exemplo: data/things/854 nesta pasta colocaremos os arquivos que será substituído, no exemplo foi Tibia.spr e .dat. Depois compactamos e deixamos na pasta Updates, sem esquecer de colocar o nome no arquivo Updates.xml. 4. Dica • Pronto! Agora e só criar um instalador com o launcher, com atalho na área de trabalho (o launcher é o .exe que você colocou no client). Você pode modificar o launcher do jeito que quiser, o arquivo index.html e etc. Quando abrir o arquivo ele irá atualizar, liberar o botão "Start Game", e quando você clicar vai fechar o Launcher e abrir o Client. 5. Créditos Eu - Pelo launcher e pelo tutorial.