O Fórum está com pouco conteúdo nas arêas de programação lua e C++, Obrigado por Compartilhar.
Abraço do Padrinho ^^
By Drk Shadow, 25 de mai. de 2017 in CreatureScripts e Movements
info
Group: Conde
Joined: 23/05/17
Posts: 584
Reputation: +113
Gender: Masculino
Tibia Character: Não Tenho

O Fórum está com pouco conteúdo nas arêas de programação lua e C++, Obrigado por Compartilhar.
Abraço do Padrinho ^^
info
Group: Visconde
Joined: 07/01/12
Posts: 495
Reputation: +48
Gender: Masculino
Tibia Character: Nem Tenho

5 horas atrás, DarkWore disse:O Fórum está com pouco conteúdo nas arêas de programação lua e C++, Obrigado por Compartilhar.
Abraço do Padrinho ^^
Obrigado haha, é sempre bom ajudar, o fórum está meio parado mesmo ^^
info
Group: Conde
Joined: 23/05/17
Posts: 584
Reputation: +113
Gender: Masculino
Tibia Character: Não Tenho

23 minutos atrás, Pokemonultimatetwo disse:Obrigado haha, é sempre bom ajudar, o fórum está meio parado mesmo ^^
Estou meio sem tempo para postar conteúdo por estar fazendo meu servidor de pokémon do zero e todos os sistemas zerados em um Console Zerado então fica meio difícil assim que possível trago conteúdo á sessão de programação c++.
Abraço do Padrinho ^^
info
Group: Conde
Joined: 21/04/16
Posts: 831
Reputation: +271
Gender: Masculino

Em 25/05/2017 at 02:23, Pokemonultimatetwo disse:Eae galera, hoje eu venho postar para vocês um script antigo que eu tenho jogado aqui que eu não uso mais, eu usava ele a algum tempo no meu servidor, e como não uso mais e achei ele jogado aqui na pasta, decidi compartilhar com vocês. É Aquele sistema da pokexgames, que ao você passar por alguma area underwater você ganha o outfit de mergulhador automaticamente, e seus pokémons e pokémons selvagens ganham velocidade de movimento. OBS: A formula de velocidade está partindo do 0, então não tem diferença de velocidade entre um kingdra e um krabby por exemplo. Sim, fica feio. Mas não consegui
e nem quisachar uma formula mais correta para usar. Junto com esse movement vem também o npc da quest, que troca os 3 itens (fish fin, diving mask e air tank) pelo outfit. O script é de fácil configuração, você apenas precisa configurar oque quiser na tabela configuration. Vamos la:
Em data/movements/scripts, crie um arquivo.lua e coloque isso la dentro:
local configuration = {storage = 41651651, -- storage necessária para o script funcionar, aquele do npc.id_outfit_male = 510, -- looktype da outfit normal (male)id_outfit_female = 511, -- looktype da outfit normal(female)id_mergulhador_male = 1034, -- looktype da outfit de mergulhador (male)id_mergulhadora_female = 1035, -- looktype da outfit de mergulhador (female)more_player_speed = 300, -- velocidade do player + bonus de velocidadespeed_normal = 320, -- speed ao voltar ao normal, aconselho a por o padrão do seu servidor que provavelmente está em data/lib/configurationmore_pokemon_speed = 350, -- velocidade dos pokémons dos elementos escolhidosless_speed = 100, -- speed que pokémons que não são dos tipos escolhidos ficarão, e que players que não possuem o storage ficarão}local random = math.random(1, 150) -- para randomizar a cor dos outfits.function onStepIn(cid)if isRiderOrFlyOrSurf(cid) thendoChangeSpeed(cid,(getCreatureSpeed(cid)-configuration.less_speed))endif(isPlayer(cid)) thenif getPlayerSex(cid) == 1 and isPlayer(cid) thendoSetCreatureOutfit(cid, {lookType = configuration.id_mergulhador_male, lookHead = random, lookBody = random, lookLegs = random, lookFeet = random}, -1)elseif getPlayerSex(cid) == 0 and isPlayer(cid) then doSetCreatureOutfit(cid, {lookType = configuration.id_mergulhadora_female, lookHead = random, lookBody = random, lookLegs = random, lookFeet = random}, -1)return trueendif getCreatureOutfit(cid).lookType == configuration.id_mergulhador_male or getCreatureOutfit(cid).lookType == configuration.id_mergulhadora_female thendoChangeSpeed(cid, getCreatureSpeed(cid)+configuration.more_player_speed)elsedoChangeSpeed(cid,(getCreatureSpeed(cid))-configuration.less_speed)endendif isWild(cid)or isSummon(cid) thenpoketype1 = pokes[getCreatureName(cid)].type poketype2 = pokes[getCreatureName(cid)].type2if poketype1 == "water" or poketype2 == "water" or poketype1 == "ice" or poketype2 == "ice" then -- coloque aqui os tipos de pokémon que ganham velocidade na aguadoChangeSpeed(cid, -getCreatureSpeed(cid)+configuration.more_pokemon_speed)elsedoChangeSpeed(cid, -getCreatureSpeed(cid)+configuration.less_speed)endendreturn trueendfunction onStepOut(cid)if(isPlayer(cid)) thenif getPlayerSex(cid) == 1 and isPlayer(cid) thendoSetCreatureOutfit(cid, {lookType = configuration.id_outfit_male, lookHead = random, lookBody = random, lookLegs = random, lookFeet = random}, -1)doChangeSpeed(cid,(-getCreatureSpeed(cid))+configuration.speed_normal)elseif getPlayerSex(cid) == 0 and isPlayer(cid) then doSetCreatureOutfit(cid, {lookType = configuration.id_outfit_female, lookHead = random, lookBody = random, lookLegs = random, lookFeet = random}, -1)doChangeSpeed(cid,(-getCreatureSpeed(cid))+configuration.speed_normal)return trueendendif isWild(cid)or isSummon(cid) thenpoketype1 = pokes[getCreatureName(cid)].type poketype2 = pokes[getCreatureName(cid)].type2velocidade = pokes[getCreatureName(cid)].agilityif poketype1 == "water" or poketype2 == "water" or poketype1 == "ice" or poketype2 == "ice" then -- coloque aqui os tipos de pokémon que ganham velocidade na aguadoChangeSpeed(cid, velocidade-configuration.more_pokemon_speed)elsedoChangeSpeed(cid, velocidade-configuration.less_speed)endendreturn trueend
Não esqueça da tag em movements:
<movevent type="StepIn" itemid="fromid-toid" event="script" value="arquivo.lua"/><movevent type="StepOut" itemid="fromid-toid" event="script" value="arquivo.lua"/>
Acho que nem precisa explicar né ? Agora vamos ao npc:
data/npc/scripts:
local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function doBuyPokemonWithCasinoCoins(cid, poke) npcHandler:onSellpokemon(cid) endfunction onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction creatureSayCallback(cid, type, msg)if(not npcHandler:isFocused(cid)) thenreturn falseendlocal config = {item1 = {17631, 1}, -- id do item 1, quantidadeitem2 = {17632, 1}, -- id do item 2, quantidadeitem3 = {17633, 1}, -- id do item 3, quantidadestorageSystem = 646181, -- storage para não fazer a quest 2xstorageSystem2 = 41651651, -- storage necessária no outro script, para habilitar o outfit.}if msgcontains(msg, 'mission') or msgcontains(msg, 'missao') or msgcontains(msg, 'help') then if getPlayerStorageValue(cid, config.storageSystem) >= 1 then selfSay("Você já fez essa quest!", cid) else selfSay("Você gostaria de ganhar um outfit de mergulho? Para isso preciso de 1 air tank, um diving mask e 1 fin.", cid) talkState[cid] = 1 return true endelseif msgcontains(msg, 'yes') or msgcontains(msg, 'Yes') and talkState[cid] == 1 then if getPlayerStorageValue(cid, config.storageSystem) >= 1 then selfSay("Você já fez essa quest!", cid) return true end if doPlayerRemoveItem(cid, config.item1[1], config.item1[2]) and doPlayerRemoveItem(cid, config.item2[1], config.item2[2]) and doPlayerRemoveItem(cid, config.item3[1], config.item3[2]) then selfSay("Parabens, agora você pode usar o outfit do mergulho para se mover mais rapido embaixo da agua!", cid) setPlayerStorageValue(cid, config.storageSystem2, 5) setPlayerStorageValue(cid, config.storageSystem, 1) talkState[cid] = 0 return true else selfSay("Você não tem os itens necessários!", cid) talkState[cid] = 0 return true endendreturn trueendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new())
NPC.xml:
<?xml version="1.0" encoding="UTF-8"?><npc name="NPC Name" script="npc.lua" walkinterval="0" floorchange="0" speed="50"><health now="150" max="150"/><look type="505" head="114" body="119" legs="114" feet="114" corpse="2212"/> <parameters> <parameter key="message_greet" value="Welcome |PLAYERNAME|, you want some {mission}?"/> </parameters></npc>
Bom galera, é isso, eu testei e está funcionando certinho, qualquer dúvida ou erro postem aqui que eu tento corrigir pra vocês.
OBS: Vocês podem usar esse script de base para fazer também o snowboard, o sandboard e até o meucuboard se vocês quiserem!
Créditos: Eu e.e
Belo Conteudo
info
Group: Visconde
Joined: 07/01/12
Posts: 495
Reputation: +48
Gender: Masculino
Tibia Character: Nem Tenho

Em 2017-5-28 at 11:22, Marshmello disse:Belo Conteudo
Obrigado
info
Group: Artesão
Joined: 02/07/15
Posts: 105
Reputation: +28
Gender: Masculino

Olá meu amigo, no caso para modificarmos para Sandboard e Ski Set qual seriam as modificações necessárias?
Obrigado pelo belo conteúdo.
info
Group: Herói
Joined: 25/10/11
Posts: 2.2k
Reputation: +862
Gender: Masculino
Tibia Character: Sociopata

1 hora atrás, CaioSilva99 disse:Olá meu amigo, no caso para modificarmos para Sandboard e Ski Set qual seriam as modificações necessárias?
Obrigado pelo belo conteúdo.
mudar os itens. Alias, depende como você quer que os players consigam as outfit..
você precisa alterar os ID dos tiles no movements.xml também ^^
Muito bom, do jeito que eu ensinei em @Pokemonultimatetwo
info
Group: Visconde
Joined: 07/01/12
Posts: 495
Reputation: +48
Gender: Masculino
Tibia Character: Nem Tenho

12 horas atrás, Deadpool disse:mudar os itens. Alias, depende como você quer que os players consigam as outfit..
você precisa alterar os ID dos tiles no movements.xml também ^^
Muito bom, do jeito que eu ensinei em @Pokemonultimatetwo
Você que me ensinou essa gambiarra ai ? kkkkkkkkkkk <3
13 horas atrás, CaioSilva99 disse:Olá meu amigo, no caso para modificarmos para Sandboard e Ski Set qual seriam as modificações necessárias?
Obrigado pelo belo conteúdo.
Como o deadpool falou, tudo depende de como você quer o sistema, mas se for parecido com esse, é só mudar os ids dos outfits, e se não quiser bonus de velocidade pros pokémons na areia retirar as linhas que mudam a velocidade do pokémon, ai vai ficar só mudando o seu outfit quando passar na areia e na neve.
Edited Junho 11 by Pokemonultimatetwo
Em 2017-5-25 at 02:23, Pokemonultimatetwo disse:Eae galera, hoje eu venho postar para vocês um script antigo que eu tenho jogado aqui que eu não uso mais, eu usava ele a algum tempo no meu servidor, e como não uso mais e achei ele jogado aqui na pasta, decidi compartilhar com vocês. É Aquele sistema da pokexgames, que ao você passar por alguma area underwater você ganha o outfit de mergulhador automaticamente, e seus pokémons e pokémons selvagens ganham velocidade de movimento. OBS: A formula de velocidade está partindo do 0, então não tem diferença de velocidade entre um kingdra e um krabby por exemplo. Sim, fica feio. Mas não consegui
e nem quisachar uma formula mais correta para usar. Junto com esse movement vem também o npc da quest, que troca os 3 itens (fish fin, diving mask e air tank) pelo outfit. O script é de fácil configuração, você apenas precisa configurar oque quiser na tabela configuration. Vamos la:
Em data/movements/scripts, crie um arquivo.lua e coloque isso la dentro:
local configuration = {storage = 41651651, -- storage necessária para o script funcionar, aquele do npc.id_outfit_male = 510, -- looktype da outfit normal (male)id_outfit_female = 511, -- looktype da outfit normal(female)id_mergulhador_male = 1034, -- looktype da outfit de mergulhador (male)id_mergulhadora_female = 1035, -- looktype da outfit de mergulhador (female)more_player_speed = 300, -- velocidade do player + bonus de velocidadespeed_normal = 320, -- speed ao voltar ao normal, aconselho a por o padrão do seu servidor que provavelmente está em data/lib/configurationmore_pokemon_speed = 350, -- velocidade dos pokémons dos elementos escolhidosless_speed = 100, -- speed que pokémons que não são dos tipos escolhidos ficarão, e que players que não possuem o storage ficarão}local random = math.random(1, 150) -- para randomizar a cor dos outfits.function onStepIn(cid)if isRiderOrFlyOrSurf(cid) thendoChangeSpeed(cid,(getCreatureSpeed(cid)-configuration.less_speed))endif(isPlayer(cid)) thenif getPlayerSex(cid) == 1 and isPlayer(cid) thendoSetCreatureOutfit(cid, {lookType = configuration.id_mergulhador_male, lookHead = random, lookBody = random, lookLegs = random, lookFeet = random}, -1)elseif getPlayerSex(cid) == 0 and isPlayer(cid) then doSetCreatureOutfit(cid, {lookType = configuration.id_mergulhadora_female, lookHead = random, lookBody = random, lookLegs = random, lookFeet = random}, -1)return trueendif getCreatureOutfit(cid).lookType == configuration.id_mergulhador_male or getCreatureOutfit(cid).lookType == configuration.id_mergulhadora_female thendoChangeSpeed(cid, getCreatureSpeed(cid)+configuration.more_player_speed)elsedoChangeSpeed(cid,(getCreatureSpeed(cid))-configuration.less_speed)endendif isWild(cid)or isSummon(cid) thenpoketype1 = pokes[getCreatureName(cid)].type poketype2 = pokes[getCreatureName(cid)].type2if poketype1 == "water" or poketype2 == "water" or poketype1 == "ice" or poketype2 == "ice" then -- coloque aqui os tipos de pokémon que ganham velocidade na aguadoChangeSpeed(cid, -getCreatureSpeed(cid)+configuration.more_pokemon_speed)elsedoChangeSpeed(cid, -getCreatureSpeed(cid)+configuration.less_speed)endendreturn trueendfunction onStepOut(cid)if(isPlayer(cid)) thenif getPlayerSex(cid) == 1 and isPlayer(cid) thendoSetCreatureOutfit(cid, {lookType = configuration.id_outfit_male, lookHead = random, lookBody = random, lookLegs = random, lookFeet = random}, -1)doChangeSpeed(cid,(-getCreatureSpeed(cid))+configuration.speed_normal)elseif getPlayerSex(cid) == 0 and isPlayer(cid) then doSetCreatureOutfit(cid, {lookType = configuration.id_outfit_female, lookHead = random, lookBody = random, lookLegs = random, lookFeet = random}, -1)doChangeSpeed(cid,(-getCreatureSpeed(cid))+configuration.speed_normal)return trueendendif isWild(cid)or isSummon(cid) thenpoketype1 = pokes[getCreatureName(cid)].type poketype2 = pokes[getCreatureName(cid)].type2velocidade = pokes[getCreatureName(cid)].agilityif poketype1 == "water" or poketype2 == "water" or poketype1 == "ice" or poketype2 == "ice" then -- coloque aqui os tipos de pokémon que ganham velocidade na aguadoChangeSpeed(cid, velocidade-configuration.more_pokemon_speed)elsedoChangeSpeed(cid, velocidade-configuration.less_speed)endendreturn trueend
Não esqueça da tag em movements:
<movevent type="StepIn" itemid="fromid-toid" event="script" value="arquivo.lua"/><movevent type="StepOut" itemid="fromid-toid" event="script" value="arquivo.lua"/>
Acho que nem precisa explicar né ? Agora vamos ao npc:
data/npc/scripts:
local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function doBuyPokemonWithCasinoCoins(cid, poke) npcHandler:onSellpokemon(cid) endfunction onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction creatureSayCallback(cid, type, msg)if(not npcHandler:isFocused(cid)) thenreturn falseendlocal config = {item1 = {17631, 1}, -- id do item 1, quantidadeitem2 = {17632, 1}, -- id do item 2, quantidadeitem3 = {17633, 1}, -- id do item 3, quantidadestorageSystem = 646181, -- storage para não fazer a quest 2xstorageSystem2 = 41651651, -- storage necessária no outro script, para habilitar o outfit.}if msgcontains(msg, 'mission') or msgcontains(msg, 'missao') or msgcontains(msg, 'help') then if getPlayerStorageValue(cid, config.storageSystem) >= 1 then selfSay("Você já fez essa quest!", cid) else selfSay("Você gostaria de ganhar um outfit de mergulho? Para isso preciso de 1 air tank, um diving mask e 1 fin.", cid) talkState[cid] = 1 return true endelseif msgcontains(msg, 'yes') or msgcontains(msg, 'Yes') and talkState[cid] == 1 then if getPlayerStorageValue(cid, config.storageSystem) >= 1 then selfSay("Você já fez essa quest!", cid) return true end if doPlayerRemoveItem(cid, config.item1[1], config.item1[2]) and doPlayerRemoveItem(cid, config.item2[1], config.item2[2]) and doPlayerRemoveItem(cid, config.item3[1], config.item3[2]) then selfSay("Parabens, agora você pode usar o outfit do mergulho para se mover mais rapido embaixo da agua!", cid) setPlayerStorageValue(cid, config.storageSystem2, 5) setPlayerStorageValue(cid, config.storageSystem, 1) talkState[cid] = 0 return true else selfSay("Você não tem os itens necessários!", cid) talkState[cid] = 0 return true endendreturn trueendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new())
NPC.xml:
<?xml version="1.0" encoding="UTF-8"?><npc name="NPC Name" script="npc.lua" walkinterval="0" floorchange="0" speed="50"><health now="150" max="150"/><look type="505" head="114" body="119" legs="114" feet="114" corpse="2212"/> <parameters> <parameter key="message_greet" value="Welcome |PLAYERNAME|, you want some {mission}?"/> </parameters></npc>
Bom galera, é isso, eu testei e está funcionando certinho, qualquer dúvida ou erro postem aqui que eu tento corrigir pra vocês.
OBS: Vocês podem usar esse script de base para fazer também o snowboard, o sandboard e até o meucuboard se vocês quiserem!
Créditos: Eu e.e
[29/06/2017 17:04:17] [Error - MoveEvents Interface]
[29/06/2017 17:04:17] data/movements/scripts/mergulhador.lua:onStepIn
[29/06/2017 17:04:17] Description:
[29/06/2017 17:04:17] data/movements/scripts/mergulhador.lua:15: attempt to call global 'isRiderOrFlyOrSurf' (a nil value)
[29/06/2017 17:04:17] stack traceback:
[29/06/2017 17:04:17] data/movements/scripts/mergulhador.lua:15: in function <data/movements/scripts/mergulhador.lua:14>
info
Group: Visconde
Joined: 07/01/12
Posts: 495
Reputation: +48
Gender: Masculino
Tibia Character: Nem Tenho

6 horas atrás, wougoplex disse:[29/06/2017 17:04:17] [Error - MoveEvents Interface]
[29/06/2017 17:04:17] data/movements/scripts/mergulhador.lua:onStepIn
[29/06/2017 17:04:17] Description:
[29/06/2017 17:04:17] data/movements/scripts/mergulhador.lua:15: attempt to call global 'isRiderOrFlyOrSurf' (a nil value)
[29/06/2017 17:04:17] stack traceback:
[29/06/2017 17:04:17] data/movements/scripts/mergulhador.lua:15: in function <data/movements/scripts/mergulhador.lua:14>
Seu servidor não tem a função isRiderOrFlyOrSurf, vou te passar ela, mas não garanto que as storages são as mesmas no seu sistema de fly/ride/surf.
function isRiderOrFlyOrSurf(cid) if getPlayerStorageValue(cid, orderTalks["surf"].storage) == 1 or getPlayerStorageValue(cid, orderTalks["ride"].storage) == 1 or getPlayerStorageValue(cid, orderTalks["fly"].storage) == 1 then return true end return falseend
info
Group: Campones
Joined: 17/05/16
Posts: 72
Reputation: +85
Gender: Masculino
Tibia Character: Walox®

eae manin blz ?? bom primeiramente belo conteudo hehehe :3
eu instalei aqui no meu servidor e tive 2 problemas o primeiro é que quando esta na agua ele ativa altomaticamente o segundo é que a velocidade não esta almentando de acordo com o piso vamos supor a velocidade normal é 350 coloquei 600 na agua mas nao mudou sera que pode da um help ?
quando estou de sandboard na areia e uso o fly e dou um passo pro lado o outfit do fly some e eu fico como se tivesse de sandboard andando rápido porém sem a outfit e ainda de fly sem a outfit também, como resolvo? ![]()
info
Group: Campones
Joined: 14/04/17
Posts: 3
Reputation: 0
Gender: Masculino

Alguem pode me passa esse sistema ou pode me ajuda a add no meu servidor?
Em 25/05/2017 at 02:23, Drk Shadow disse:Em 25/05/2017 at 02:23, Drk Shadow disse:Spoilerlocal configuration = {storage = 41651651, -- storage necessária para o script funcionar, aquele do npc.id_outfit_male = 510, -- looktype da outfit normal (male)id_outfit_female = 511, -- looktype da outfit normal(female)id_mergulhador_male = 1034, -- looktype da outfit de mergulhador (male)id_mergulhadora_female = 1035, -- looktype da outfit de mergulhador (female)more_player_speed = 300, -- velocidade do player + bonus de velocidadespeed_normal = 320, -- speed ao voltar ao normal, aconselho a por o padrão do seu servidor que provavelmente está em data/lib/configurationmore_pokemon_speed = 350, -- velocidade dos pokémons dos elementos escolhidosless_speed = 100, -- speed que pokémons que não são dos tipos escolhidos ficarão, e que players que não possuem o storage ficarão}local random = math.random(1, 150) -- para randomizar a cor dos outfits.function onStepIn(cid)if isRiderOrFlyOrSurf(cid) thendoChangeSpeed(cid,(getCreatureSpeed(cid)-configuration.less_speed))endif(isPlayer(cid)) thenif getPlayerSex(cid) == 1 and isPlayer(cid) thendoSetCreatureOutfit(cid, {lookType = configuration.id_mergulhador_male, lookHead = random, lookBody = random, lookLegs = random, lookFeet = random}, -1)elseif getPlayerSex(cid) == 0 and isPlayer(cid) then doSetCreatureOutfit(cid, {lookType = configuration.id_mergulhadora_female, lookHead = random, lookBody = random, lookLegs = random, lookFeet = random}, -1)return trueendif getCreatureOutfit(cid).lookType == configuration.id_mergulhador_male or getCreatureOutfit(cid).lookType == configuration.id_mergulhadora_female thendoChangeSpeed(cid, getCreatureSpeed(cid)+configuration.more_player_speed)elsedoChangeSpeed(cid,(getCreatureSpeed(cid))-configuration.less_speed)endendif isWild(cid)or isSummon(cid) thenpoketype1 = pokes[getCreatureName(cid)].type poketype2 = pokes[getCreatureName(cid)].type2if poketype1 == "water" or poketype2 == "water" or poketype1 == "ice" or poketype2 == "ice" then -- coloque aqui os tipos de pokémon que ganham velocidade na aguadoChangeSpeed(cid, -getCreatureSpeed(cid)+configuration.more_pokemon_speed)elsedoChangeSpeed(cid, -getCreatureSpeed(cid)+configuration.less_speed)endendreturn trueendfunction onStepOut(cid)if(isPlayer(cid)) thenif getPlayerSex(cid) == 1 and isPlayer(cid) thendoSetCreatureOutfit(cid, {lookType = configuration.id_outfit_male, lookHead = random, lookBody = random, lookLegs = random, lookFeet = random}, -1)doChangeSpeed(cid,(-getCreatureSpeed(cid))+configuration.speed_normal)elseif getPlayerSex(cid) == 0 and isPlayer(cid) then doSetCreatureOutfit(cid, {lookType = configuration.id_outfit_female, lookHead = random, lookBody = random, lookLegs = random, lookFeet = random}, -1)doChangeSpeed(cid,(-getCreatureSpeed(cid))+configuration.speed_normal)return trueendendif isWild(cid)or isSummon(cid) thenpoketype1 = pokes[getCreatureName(cid)].type poketype2 = pokes[getCreatureName(cid)].type2velocidade = pokes[getCreatureName(cid)].agilityif poketype1 == "water" or poketype2 == "water" or poketype1 == "ice" or poketype2 == "ice" then -- coloque aqui os tipos de pokémon que ganham velocidade na aguadoChangeSpeed(cid, velocidade-configuration.more_pokemon_speed)elsedoChangeSpeed(cid, velocidade-configuration.less_speed)endendreturn trueend
info
Group: Campones
Joined: 20/06/15
Posts: 92
Reputation: +29
Gender: Masculino

@Drk Shadow coloca na publicação para as pessoas que não tem essas funções bro:
function isRiderOrFlyOrSurf(cid) return getPlayerStorageValue(cid, 17001) > 0 or getPlayerStorageValue(cid, 17000) > 0 or getPlayerStorageValue(cid, 63215) > 0 end function isWild(cid) return isMonster(cid) and not isSummon(cid) end
info
Group: Visconde
Joined: 07/01/12
Posts: 495
Reputation: +48
Gender: Masculino
Tibia Character: Nem Tenho
Eae galera, hoje eu venho postar para vocês um script antigo que eu tenho jogado aqui que eu não uso mais, eu usava ele a algum tempo no meu servidor, e como não uso mais e achei ele jogado aqui na pasta, decidi compartilhar com vocês. É Aquele sistema da pokexgames, que ao você passar por alguma area underwater você ganha o outfit de mergulhador automaticamente, e seus pokémons e pokémons selvagens ganham velocidade de movimento. OBS: A formula de velocidade está partindo do 0, então não tem diferença de velocidade entre um kingdra e um krabby por exemplo. Sim, fica feio. Mas não consegui
e nem quisachar uma formula mais correta para usar. Junto com esse movement vem também o npc da quest, que troca os 3 itens (fish fin, diving mask e air tank) pelo outfit. O script é de fácil configuração, você apenas precisa configurar oque quiser na tabela configuration. Vamos la:Em data/movements/scripts, crie um arquivo.lua e coloque isso la dentro:
local configuration = {storage = 41651651, -- storage necessária para o script funcionar, aquele do npc.id_outfit_male = 510, -- looktype da outfit normal (male)id_outfit_female = 511, -- looktype da outfit normal(female)id_mergulhador_male = 1034, -- looktype da outfit de mergulhador (male)id_mergulhadora_female = 1035, -- looktype da outfit de mergulhador (female)more_player_speed = 300, -- velocidade do player + bonus de velocidadespeed_normal = 320, -- speed ao voltar ao normal, aconselho a por o padrão do seu servidor que provavelmente está em data/lib/configurationmore_pokemon_speed = 350, -- velocidade dos pokémons dos elementos escolhidosless_speed = 100, -- speed que pokémons que não são dos tipos escolhidos ficarão, e que players que não possuem o storage ficarão}local random = math.random(1, 150) -- para randomizar a cor dos outfits.function onStepIn(cid)if isRiderOrFlyOrSurf(cid) thendoChangeSpeed(cid,(getCreatureSpeed(cid)-configuration.less_speed))endif(isPlayer(cid)) thenif getPlayerSex(cid) == 1 and isPlayer(cid) thendoSetCreatureOutfit(cid, {lookType = configuration.id_mergulhador_male, lookHead = random, lookBody = random, lookLegs = random, lookFeet = random}, -1)elseif getPlayerSex(cid) == 0 and isPlayer(cid) then doSetCreatureOutfit(cid, {lookType = configuration.id_mergulhadora_female, lookHead = random, lookBody = random, lookLegs = random, lookFeet = random}, -1)return trueendif getCreatureOutfit(cid).lookType == configuration.id_mergulhador_male or getCreatureOutfit(cid).lookType == configuration.id_mergulhadora_female thendoChangeSpeed(cid, getCreatureSpeed(cid)+configuration.more_player_speed)elsedoChangeSpeed(cid,(getCreatureSpeed(cid))-configuration.less_speed)endendif isWild(cid)or isSummon(cid) thenpoketype1 = pokes[getCreatureName(cid)].type poketype2 = pokes[getCreatureName(cid)].type2if poketype1 == "water" or poketype2 == "water" or poketype1 == "ice" or poketype2 == "ice" then -- coloque aqui os tipos de pokémon que ganham velocidade na aguadoChangeSpeed(cid, -getCreatureSpeed(cid)+configuration.more_pokemon_speed)elsedoChangeSpeed(cid, -getCreatureSpeed(cid)+configuration.less_speed)endendreturn trueendfunction onStepOut(cid)if(isPlayer(cid)) thenif getPlayerSex(cid) == 1 and isPlayer(cid) thendoSetCreatureOutfit(cid, {lookType = configuration.id_outfit_male, lookHead = random, lookBody = random, lookLegs = random, lookFeet = random}, -1)doChangeSpeed(cid,(-getCreatureSpeed(cid))+configuration.speed_normal)elseif getPlayerSex(cid) == 0 and isPlayer(cid) then doSetCreatureOutfit(cid, {lookType = configuration.id_outfit_female, lookHead = random, lookBody = random, lookLegs = random, lookFeet = random}, -1)doChangeSpeed(cid,(-getCreatureSpeed(cid))+configuration.speed_normal)return trueendendif isWild(cid)or isSummon(cid) thenpoketype1 = pokes[getCreatureName(cid)].type poketype2 = pokes[getCreatureName(cid)].type2velocidade = pokes[getCreatureName(cid)].agilityif poketype1 == "water" or poketype2 == "water" or poketype1 == "ice" or poketype2 == "ice" then -- coloque aqui os tipos de pokémon que ganham velocidade na aguadoChangeSpeed(cid, velocidade-configuration.more_pokemon_speed)elsedoChangeSpeed(cid, velocidade-configuration.less_speed)endendreturn trueendNão esqueça da tag em movements:
Acho que nem precisa explicar né ? Agora vamos ao npc:
data/npc/scripts:
local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function doBuyPokemonWithCasinoCoins(cid, poke) npcHandler:onSellpokemon(cid) endfunction onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction creatureSayCallback(cid, type, msg)if(not npcHandler:isFocused(cid)) thenreturn falseendlocal config = {item1 = {17631, 1}, -- id do item 1, quantidadeitem2 = {17632, 1}, -- id do item 2, quantidadeitem3 = {17633, 1}, -- id do item 3, quantidadestorageSystem = 646181, -- storage para não fazer a quest 2xstorageSystem2 = 41651651, -- storage necessária no outro script, para habilitar o outfit.}if msgcontains(msg, 'mission') or msgcontains(msg, 'missao') or msgcontains(msg, 'help') then if getPlayerStorageValue(cid, config.storageSystem) >= 1 then selfSay("Você já fez essa quest!", cid) else selfSay("Você gostaria de ganhar um outfit de mergulho? Para isso preciso de 1 air tank, um diving mask e 1 fin.", cid) talkState[cid] = 1 return true endelseif msgcontains(msg, 'yes') or msgcontains(msg, 'Yes') and talkState[cid] == 1 then if getPlayerStorageValue(cid, config.storageSystem) >= 1 then selfSay("Você já fez essa quest!", cid) return true end if doPlayerRemoveItem(cid, config.item1[1], config.item1[2]) and doPlayerRemoveItem(cid, config.item2[1], config.item2[2]) and doPlayerRemoveItem(cid, config.item3[1], config.item3[2]) then selfSay("Parabens, agora você pode usar o outfit do mergulho para se mover mais rapido embaixo da agua!", cid) setPlayerStorageValue(cid, config.storageSystem2, 5) setPlayerStorageValue(cid, config.storageSystem, 1) talkState[cid] = 0 return true else selfSay("Você não tem os itens necessários!", cid) talkState[cid] = 0 return true endendreturn trueendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new())NPC.xml:
Bom galera, é isso, eu testei e está funcionando certinho, qualquer dúvida ou erro postem aqui que eu tento corrigir pra vocês.
OBS: Vocês podem usar esse script de base para fazer também o snowboard, o sandboard e até o meucuboard se vocês quiserem!
Créditos: Eu e.e
Edited Maio 26 by Pokemonultimatetwo