DR

[PXG]Mudar outfit automaticamente + npc

Por Drk Shadow, 25 de mai. de 2017 em CreatureScripts e Movements

pokemon
pokémon
pxg
pokexgames
otp
otpokemon
dxp
darkxpokes
darkxpoke
15
9.2k
Drk ShadowD
25 de maio de 2017 às 02:23

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 quis  achar 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:

Spoiler
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:

Spoiler
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:

Spoiler
<?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

Editado Maio 26 por Pokemonultimatetwo

DarkWoreD
25 de maio de 2017 às 17:49

O Fórum está com pouco conteúdo nas arêas de programação lua e C++, Obrigado por Compartilhar.

 

Abraço do Padrinho ^^

Drk ShadowD
25 de maio de 2017 às 23:00
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 ^^

DarkWoreD
25 de maio de 2017 às 23:34
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 ^^

MarshmelloM
28 de maio de 2017 às 11:22
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 quis  achar 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:

  Mostrar conteúdo oculto
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:

  Mostrar conteúdo oculto
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:

  Mostrar conteúdo oculto
<?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

Drk ShadowD
29 de maio de 2017 às 15:41
Em 2017-5-28 at 11:22, Marshmello disse:

Belo Conteudo

Obrigado

1 mês depois...
CaioSilva99C
10 de junho de 2017 às 16:44

Olá meu amigo, no caso para modificarmos para Sandboard e Ski Set qual seriam as modificações necessárias?

Obrigado pelo belo conteúdo.

DeadpoolD
10 de junho de 2017 às 18:14
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

Drk ShadowD
11 de junho de 2017 às 06:43
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

3 semanas depois...
wougoplexW
29 de junho de 2017 às 17:13
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 quis  achar 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:

  Ocultar conteúdo
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:

  Mostrar conteúdo oculto
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:

  Mostrar conteúdo oculto
<?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>

Drk ShadowD
30 de junho de 2017 às 00:22
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

 

 

2 meses depois...
Punchlines NemmoP
14 de agosto de 2017 às 18:57

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 ?

2 meses depois...
PuWP
07 de outubro de 2017 às 02:39

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? :(

5 meses depois...
Darkkrai brD
18 de março de 2018 às 09:48

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:
Spoiler

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

 

 

1 ano depois...
gabrielzikaG
17 de abril de 2019 às 19:04

@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

@PuW