O Fórum está com pouco conteúdo nas arêas de programação lua e C++, Obrigado por Compartilhar.
Abraço do Padrinho ^^
Por Drk Shadow, 25 de mai. de 2017 em CreatureScripts e Movements
info
Grupo: Conde
Registrado: 23/05/17
Posts: 584
Reputação: +113
Gênero: Masculino
Char no Tibia: 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
Grupo: Visconde
Registrado: 07/01/12
Posts: 495
Reputação: +48
Gênero: Masculino
Char no Tibia: 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
Grupo: Conde
Registrado: 23/05/17
Posts: 584
Reputação: +113
Gênero: Masculino
Char no Tibia: 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
Grupo: Conde
Registrado: 21/04/16
Posts: 831
Reputação: +271
Gênero: 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
Grupo: Visconde
Registrado: 07/01/12
Posts: 495
Reputação: +48
Gênero: Masculino
Char no Tibia: Nem Tenho

Em 2017-5-28 at 11:22, Marshmello disse:Belo Conteudo
Obrigado
info
Grupo: Artesão
Registrado: 02/07/15
Posts: 105
Reputação: +28
Gênero: 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
Grupo: Herói
Registrado: 25/10/11
Posts: 2.2k
Reputação: +862
Gênero: Masculino
Char no Tibia: 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
Grupo: Visconde
Registrado: 07/01/12
Posts: 495
Reputação: +48
Gênero: Masculino
Char no Tibia: 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.
Editado Junho 11 por Pokemonultimatetwo
info
Grupo: Cavaleiro
Registrado: 22/07/16
Posts: 189
Reputação: +27
Gênero: Masculino

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
Grupo: Visconde
Registrado: 07/01/12
Posts: 495
Reputação: +48
Gênero: Masculino
Char no Tibia: 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
Grupo: Campones
Registrado: 17/05/16
Posts: 72
Reputação: +85
Gênero: Masculino
Char no Tibia: 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
Grupo: Campones
Registrado: 14/04/17
Posts: 3
Reputação: 0
Gênero: 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
Grupo: Campones
Registrado: 20/06/15
Posts: 92
Reputação: +29
Gênero: 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
Grupo: Visconde
Registrado: 07/01/12
Posts: 495
Reputação: +48
Gênero: Masculino
Char no Tibia: 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
Editado Maio 26 por Pokemonultimatetwo