Olá a todos!
Estou aqui para mostrar um script aonde será bem útil a servidores de Pokémon.
Não é nada mais do quem um SHOP in-game.
Como assim?
Com estes 3 comandos será possível comprar Revives, Hyper Potions, Ultra Balls, trocar de nome pelo jogo e até mesmo comprar o Ditto.
Detalhe o tipo de moeda que utilizei foi Small Diamonds, caso queria modificar leia passo a passo.
Como se percebe, a maioria de servidores hoje em dia vende apenas estes items e outros, mais esses são os padrões.
Chega de enrolação e vamos direto ao script.
Changename Script:
Primeiramente crie um arquivo em otserv/talkactions/scripts chamado changename.lua e adicione isso em seu arquivo.
(Este script serve para modificar o nome do jogador pelo jogo).
-- Creditos a Doughell
function onSay(cid, words, param)
local maxLen = 15 -- tamanho maximo do nome
local itemid = 2145 ------ Numero do Item que será removido
local proibido = [{"!","@","*"}-- simbolos proibidos
for i = 1, #proibido do
if string.find(tostring(param), proibido) then
doPlayerSendCancel(cid,"[AUTO SHOP] You can not use symbols in their name.")
return TRUE
end
end
if tostring(param) == "" then -- checkar se não é nome vazio
doPlayerSendCancel(cid, "[AUTO SHOP] Choose a name to make the change of his surname.")
return TRUE
end
if string.len(tostring(param)) > maxLen then
doPlayerSendCancel(cid, "[AUTO SHOP] You can use a maximum of " .. maxLen .. " letters.")
return TRUE
end
if not getTilePzInfo(getCreaturePosition(cid)) then
doPlayerSendCancel(cid,"[AUTO SHOP] Can only be used in Protection Zone.")
return TRUE
end
if getPlayerItemCount(cid, itemid) >= 1 then
doPlayerRemoveItem(cid, itemid, 5)
db.executeQuery("UPDATE `players` SET `name` = '"..param.."' WHERE `id` = "..getPlayerGUID(cid)..";")
doPlayerSendTextMessage(cid,25,"[AUTO SHOP] You will be logged out in 5 seconds for the changes to be made.")
addEvent(doRemoveCreature, 5*1000, cid, true)
else
doPlayerSendCancel(cid,"[AUTO SHOP] You don't have " .. getItemNameById(itemid) .. " to make the purchase of changename.")
end
return TRUE
end
Agora em talkactions.xml adicione em Players:
<talkaction words="!changename" event="script" value="changename.lua"/>
-- Explicação do Script (Changename):
local maxLen = 15 -- tamanho maximo do nome
O número 15 e a quantidade máxima de caracteres que poderá ser utilizado na troca de nome.
local itemid = 2145 ------ Numero do Item que será removido
Este e o ID do item que será removido, no caso do 2145 e Small Diamonds (moeda principal do PokeXGames). Aconselho a usar Small Diamonds.
local proibido = {"!","@","*"} -- simbolos proibidos
Estes e os símbolos proibidos, caso queria adicionar mais faça o seguinte:
{"!","@","*","?"}
adicionando dessa seguinte maneira:
,"?"}
Ditto Script:
Crie um arquivo em otserv/talkactions/scripts com o nome de ditto2.lua e adicione isso em seu arquivo:
(Este script serve para adicionar a caixa do Ditto no jogador).
function onSay(cid,words,param)
if doPlayerRemoveItem(cid,2145,10) == TRUE then
doPlayerAddItem(cid,1738,1)
doCreatureSay(cid,"[AUTO SHOP] You bought your Pokemon Ditto, it cost 10 diamonds.",TALKTYPE_ORANGE_1)
else
doCreatureSay(cid,"[AUTO SHOP] You do not have two diamonds to make the purchase.",TALKTYPE_ORANGE_1)
end
end
Agora em talkactions.xml adicione em Players:
<talkaction words="!buyditto" event="script" value="ditto2.lua"/>
A segunda parte do script você precisa ir otserv/actions/scripts crie um arquivo chamado ditto_.lua e adicione o seguinte:
(Este script serve para o id da caixa ser usado para conseguir o Ditto)
function onUse(cid, item, frompos, item2, topos)
if getPlayerStorageValue(cid, 15215) <= 100 then
doPlayerSendTextMessage(cid, 20,"[AUTO SHOP] Thank donations.")
setPlayerStorageValue(cid, 15215, 1)
local pox = getTownTemplePosition(1)
local health = 325
local maxhealth = 325
local description = "Contains a Ditto."
local poke1 = "This is Ditto's pokeball. HP = ["..health.."/"..maxhealth.."]"
item = doCreateItemEx(2219)
doItemSetAttribute(item, "poke", poke1)
doItemSetAttribute(item, "nome", "Ditto")
doItemSetAttribute(item, "apelido", "Ditto")
doItemSetAttribute(item, "description", description)
doPlayerAddItemEx(cid, item, true)
doTransformItem(item, 2222)
doPlayerSendTextMessage(cid, 27, "[AUTO SHOP] You just get the Pokemon Ditto.")
doPlayerSendTextMessage(cid, 27, "Do not forget to donate this item has a cost of 10 diamonds, and you can not get this Pokemon through quests / npcs / catchs.")
doTeleportThing(cid, pox)
doSendMagicEffect(pox, 21)
doPlayerAddSoul(cid, 1)
doPlayerRemoveItem(cid,1738,1)
setPlayerStorageValue(cid, 54842, "Ditto, ")
return TRUE
else
doPlayerSendTextMessage(cid, 20, "Have you got this Pokemon.")
end
end
Agora em actions.xml adicione:
<action itemid="1738" event="script" value="ditto_.lua"/> -- Explicação do Script (Ditto):
PARTE DAS TALKACTIONS
if doPlayerRemoveItem(cid,2145,10) == TRUE then
O número 2145 e o id da Small Diamonds, já o número 10 e a quantidade de Small Diamonds que precisa para comprar o Ditto.
doPlayerAddItem(cid,1738,1)
O número 1738 e o id da box, caso modificar este número modifique tambem em actions.xml!
PARTE DAS ACTIONS
doSendMagicEffect(pox, 21)
O número 21 e o número do efeito que vai ser utilizado ao abrir a box, pode ser modificado em qual você preferir.
doPlayerAddSoul(cid, 1)
Será adicionado 1 de soul, como se fosse 1 de catch (dependendo de alguns servidores) se preferir retire a linha inteira.
doPlayerRemoveItem(cid,1738,1)
Este e o id da box, caso você muda-lá na talkactions, e na actions.xml mude aqui tambem.
Kit Script:
Crie um arquivo em otserv/talkactions/scripts chamado kit.lua e adicione isso dentro dele:
(Este script serve para receber Revives, Ultra Balls e Hyper Potions).
function onSay(cid,words,param)
if doPlayerRemoveItem(cid,2145,2) == TRUE then
doPlayerAddItem(cid,2269,100)
doPlayerAddItem(cid,2275,100)
doPlayerAddItem(cid,2146,100)
doCreatureSay(cid,"[AUTO-SHOP]: You just buy ultra ball 100x, 100x revive and 100x hyper potion. All this will cost 2 diamonds!",TALKTYPE_ORANGE_1)
else
doCreatureSay(cid,"[AUTO-SHOP]: You do not have two diamonds to make the purchase.",TALKTYPE_ORANGE_1)
end
end
Agora em talkactions.xml adicione:
<talkaction words="!buykit" event="script" value="kit.lua"/> -- Explicação do Script (Kit):
if doPlayerRemoveItem(cid,2145,2) == TRUE then
O id 2145 e o Small Diamonds e o número 2 e a quantidade que será retirada para a realização da compra do kit.
doPlayerAddItem(cid,2269,100)
O id 2269 e o da Ultra Ball e o número 100 e a quantidade que o player receberá de Ultra Balls.
doPlayerAddItem(cid,2275,100)
O id 2275 e o do Revive, e o número 100 e a quantidade que o player receberá de Revives.
doPlayerAddItem(cid,2146,100)
O id 2146 e o da Hyper Potion, e o número 100 e a quantidade que o player receberá de Hyper Potions.
Bom, estes são os scripts prometido, mas se alguém quiser coloca outras talkactions como a !buykit vou colocar abaixo o que poderam usar de base:
function onSay(cid,words,param)
if doPlayerRemoveMoney(cid,10000) == TRUE then
doPlayerAddItem(cid,2173,1)
doCreatureSay(cid,"Mensagem que ele conseguiu comprar o item.",TALKTYPE_ORANGE_1)
else
doCreatureSay(cid,"Mensagem quando não possui dinheiro ou diamantes suficientes.",TALKTYPE_ORANGE_1)
end
end
if doPlayerRemoveMoney(cid,10000) == TRUE then
Essa função diz que irá remover 10k para comprar o item, se você quiser que remova outra coisa por exemplo um shield você adiciona a seguinte função no lugar dessa:
doPlayerRemoveItem(cid,1738,1)
ficando assim:
doPlayerRemoveItem(cid,1738,1) = TRUE then
O id do shield você modifica no 1738 e a quantidade no número 1.
doPlayerAddItem(cid,2173,1)
Esas função adiciona o item e a quantidade no jogador, exemplo:
2173 e o ID do item, e o número 1 e a quantidade só modificar do seu gosto.
O que você pode adicionar em um script?
Efeitos, para adicionar um efeito basta colocar essa função:
doSendMagicEffect(getThingPos(cid), 132)
O número 132 e o número do efeito, para pesquisar mais procure pelo jogo no GOD o seguinte:
/z 1, /z 2, /z 3 até o seu limite.
Bom Galera e isso.. Eu Ainda nao sei por Aquela paradinha de abri e feixa pra fica mais Organizado..