Ir para conteúdo

Posts Recomendados

Ola galera xtibia.

 

Eu resolvi fazer o Trainer OFF 1.0 o antigo trainer off beta tinha algumas limitações.

 

Segue o link do Trainer off beta:

http://www.xtibia.com/forum/topic/199659-trainer-off-sytem-beta-by-caotic/

 

Como o próprio nome diz e um treinamento quando o player está off.

Ele paga uma taxa para treinar uma certa quantidade de horas e depois suas skills são upadas.

 

Na versão superior foi adicionado

 

 

 

1 - Bugs Retirados
2 - Você pode escolher a skill que deseja treinar
3 - Foi adicionado uma lista de tutoriais
4 - Sistema foi totalmente refeito
5 - Foi simplificado para melhor configuração
6 - Todas as mensagens e alertas do sistema foram melhorados

 

 

 

Vamos ao sistema lets go:

 

Crie um arquivo lua chamado de trainer em talkactions e coloque isto:

 

local Train = {
skill = 0,
quant = 0,
time = 0,
vocations = {},
money = 0,
player = 0
}
local table = {
["fist"] = SKILL_FIST,
["sword"] =  SKILL_SWORD,
["axe"] = SKILL_AXE,
["distance"] = SKILL_DISTANCE,
["shild"] = SKILL_SHIELD,
["fishing"] = SKILL_FISHING
}

local x = {"First Skill", "Sword Skill", "Axe Skill", "Distance Skill", "Shild Skill", "Fishing Skill"}

function Train:new(cid, param, vocations, money, quant)
local trainer = {
vocations = {},
param = param,
player = cid,
money = tonumber(money),
quant = tonumber(quant)
}
return setmetatable(trainer, {__index = self})
end

function Train:start()
cid = self.player
local t = string.explode(self.param, ",")
if not t[1] or not isNumeric(t[1])  then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Diga o tempo que você quer treinar") and false
end
self.skill = table[t[2]]
self.time = t[1]*36000*1000
self.money = self.money*t[1]
self.quant = self.quant*t[1]
if not t[2] or not table[t[2]] then
str = "Lista de skills(Diga a sua skill)\nPara dizer e só escrever /treiner (tempo do treiner,skill)\n"
for i = 1, #x do
str = ""..str.."\n"..x[i]..""
end
doShowTextDialog(cid, 1397, str)
return true
end
if isInArray(self.vocations, getPlayerVocation(cid)) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua vocação não permite o trainer") and false
end
if self.money >= getPlayerMoney(cid) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem "..self.money.." de money") and false
end
if self.time <= 36000*1000 then
self.time = 36000*1000
end
exhaustion.set(cid, 44226, self.time)
doPlayerAddSkill(cid, self.skill, self.quant)
doPlayerRemoveMoney(cid, self.money)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Pronto você esta em treinamento")
doRemoveCreature(cid)
end
function onSay(cid, words, param, channel)
local voc = {} ---- Vocações QUE NÃO SE PERMITIDAS TRAINER OFF(Se não tiver deixe sem nenhuma)
local money = 200000 ----- Quanto de money PARA CADA hora
local quant = 4 ------ Quantidade de skill que ele ganha PARA CADA HORA
local trainer = Train:new(cid, param, voc, money, quant)
trainer:start()
return true
end

 

Agora vá em talkactions.xml e coloque esta tag:

 

<talkaction words="/treiner" event="script" value="trainer.lua"/>

 

Agora vá em creaturescripts e crie um arquivo lua chamado de treiner e coloque este codigo:

 

function onLogin(cid)
if exhaustion.get(cid, 44226) then
doPlayerPopupFYI(cid, "Não e permitido logar enquanto esta treinando")
return addEvent(doRemoveCreature, 180, cid)
end
return true
end

 

Registre o evento em login.lua colocando isto antes do ultimo return true:

 

registerCreatureEvent(cid, "treiner")

 

E coloque esta tag em creaturescripts.xml:

 

<event type="login" name="treiner" register = "1" event="script" value="treiner.lua"/>

 

Para treinar diga

/treiner(tempo de treino,skill que quer treinar)

Link para o comentário
Compartilhar em outros sites

Antes de configurar o script.

Eu recomendo algumas dicas.

 

 

 

Deixa bem alto o preço de cada hora assim o player não fica a abusando do sistema.
Anuncie o sistema usando uma mensagem global.
Se quiser que o sistema seja apenas usado dentro de pz coloque isto depois de Train:start

if not getTilePzInfo(getThingPos(cid)) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você só pode usar o trainer dentro de pz") and false
end

 

 

Editado por caotic
Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
×
×
  • Criar Novo...