Ir para conteúdo
Entre para seguir isso  
Pivizz

Livros especiais

Recommended Posts

Pivizz    1
Pivizz

Nome: Livros especiais

Versão: 8.4x

Tipo do script: Action

Servidor Testado: The Forgotten Server 0.3.3

Autor: Pivigu

Como eu havia postado no post do Skyen, aqui estão os livros especiais. Esses livros quando são usados mudam uma variedade de propriedades do char. Há quatro tipos de livros:

Energy book

Quando o char usar esse livro, a sua manamax e o seu hpmax aumentam por um determinado tempo.

 

Exppo book

Quando o char usar esse livro, sua rate de experiência vai aumentar por um determinado tempo.

 

Habby book

Quando o char usar esse livro, sua velocidade irá aumentar por um determinado tempo

 

Trainning book

Quando o char usar esse livro, a sua segunda maior skill aumentará.

 

Obs: Todos os livros são facilmente configuráveis. Nas configurações deles incluem-se:

Tempo: O tempo que o efeito do livro durará. (exceto o Trainning Book)

Intervalo: Intervalo de tempo para poder usar os livros. O intervalo pré-configurado é um dia.

Prem: Variável para apenas premium poder usar o livro.

Level: Level necessário para utilizar o livro.

expRate: Definir a rate que irá aumentar. (apenas Exppo Book)

 

Obs²: Para configurar o energybook você precisa saber modificar o que há antes da função.

 

Requerimentos

Conhecimento mínimo sobre lua scripting.

 

Scripts

[spoiler=exppo book]

actions/scripts/other/exppo book.lua


function onUse(cid, item, frompos, item2, topos)
local expRate = 5
local prem = TRUE
local level = 100
local tempo = 15
local intervalo = 1*24*60

if getPlayerLevel(cid) < level then
doPlayerSendCancel(cid, "Você não tem level suficiente para usar este livro.")
return FALSE
end
if prem == TRUE and isPremium(cid) == FALSE then
doPlayerSendCancel(cid, "Você precisa ser premium account para usar este livro.")
return FALSE
end
if getPlayerStorageValue(cid, 5103) > os.time(t) then
doPlayerSendCancel(cid, "Você pode usar este item apenas uma vez por dia.")
return FALSE
end
setPlayerExtraExpRate(cid, expRate)
addEvent(setPlayerExtraExpRate, tempo*60*1000, cid, 0)

setPlayerStorageValue(cid, 5103, os.time(t) + intervalo*60*1000)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Você usou o exppo book.")
doRemoveItem(item.uid)
return 1
end

 

 

 

[spoiler=Energy Book]

actions/scripts/other/ energy book.lua


local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, 5*60*1000)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXHEALTH, 200)

local condition2 = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition2, CONDITION_PARAM_TICKS, 10*60*1000)
setConditionParam(condition2, CONDITION_PARAM_STAT_MAXMANA, 750)

function onUse(cid, item, frompos, item2, topos)
local prem = TRUE
local level = 100
local intervalo = 1*24*60

if getPlayerLevel(cid) < level then
doPlayerSendCancel(cid, "Você não tem level suficiente para usar este livro.")
return FALSE
end
if prem == TRUE and isPremium(cid) == FALSE then
doPlayerSendCancel(cid, "Você precisa ser premium account para usar este livro.")
return FALSE
end
if getPlayerStorageValue(cid, 5104) > os.time(t) then
doPlayerSendCancel(cid, "Você pode usar este item apenas uma vez por dia.")
return FALSE
end

if doTargetCombatCondition(0, cid, condition, CONST_ME_MAGIC_RED) == LUA_ERROR and doTargetCombatCondition(0, cid, condition2, CONST_ME_MAGIC_RED) == LUA_ERROR then
return FALSE
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Você usou o energy book.")

setPlayerStorageValue(cid, 5104, os.time(t) + intervalo*60*1000)
doRemoveItem(item.uid)
return 1
end


 

 

[spoiler=Habby Book]

actions/scripts/other/ habby book.lua


function onUse(cid, item, fromPosition, itemEx, toPosition)
local prem = TRUE
local level = 100
local tempo = 15
local intervalo = 1*24*60

if getPlayerLevel(cid) < level then
doPlayerSendCancel(cid, "Você não tem level suficiente para usar este livro.")
return FALSE
end
if prem == TRUE and isPremium(cid) == FALSE then
doPlayerSendCancel(cid, "Você precisa ser premium account para usar este livro.")
return FALSE
end
if getPlayerStorageValue(cid, 5102) > os.time(t) then
doPlayerSendCancel(cid, "Você pode usar este item apenas uma vez por dia.")
return FALSE
end

local lvl = getPlayerLevel(cid)
doChangeSpeed(cid, (getCreatureBaseSpeed(cid) / 2))

addEvent(doChangeSpeed, tempo*60*1000, cid, -(getCreatureSpeed(cid) - getCreatureBaseSpeed(cid)))
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Você usou o habby book.")


setPlayerStorageValue(cid, 5102, os.time(t) + intervalo*60*1000)
return TRUE
end

 

 

 

[spoiler=Trainning Book]

actions/scripts/other/trainning book.lua


function onUse(cid, item, fromPosition, itemEx, toPosition)
local prem = TRUE
local level = 100
local intervalo = 1*24*60

if getPlayerLevel(cid) < level then
doPlayerSendCancel(cid, "Você não tem level suficiente para usar este livro.")
return FALSE
end
if prem == TRUE and isPremium(cid) == FALSE then
doPlayerSendCancel(cid, "Você precisa ser premium account para usar este livro.")
return FALSE
end
if getPlayerStorageValue(cid, 5101) > os.time(t) then
doPlayerSendCancel(cid, "Você pode usar este item apenas uma vez por dia.")
return FALSE
end

local skillid = getSecondStrongSkillId(cid, TRUE)
local require = getPlayerRequiredSkillTries(cid, skillid, getPlayerSkillLevel(cid,

skillid))

doPlayerAddSkillTry(cid, skillid, require + 1)
setPlayerStorageValue(cid, 5101, os.time(t) + intervalo*60*1000)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Você usou

o trainning book.")

doRemoveItem(item.uid)
end

 

 

 

[spoiler=Funções]

lib/functions.lua


function getFirstStrongSkillId(cid, exclude_fish)
local skillid = 0
local toI = 0

if exclude_fish == TRUE then
toI = 5
else
toI = 6
end

skillid = 0
for i = 1, toI do
if getPlayerSkillLevel(cid, i) >= getPlayerSkillLevel(cid, skillid) then
skillid = i
end
end

return skillid

end


function getSecondStrongSkillId(cid, exclude_fish)
local skillid = 0
local toI = 0

if exclude_fish == TRUE then
toI = 5
else
toI = 6
end
skillid = 0
if getFirstStrongSkillId(cid, TRUE) == skillid then
skillid = 1
end
for i = 0, toI do
if getPlayerSkillLevel(cid, i) >= getPlayerSkillLevel(cid, skillid) and i ~= getFirstStrongSkillId(cid, TRUE) then
skillid = i
end
end

return skillid

end

 

 

 

[spoiler=exppo creature.lua]

creaturescripts/scripts/exppo creature.lua


function onLogout(cid)
setPlayerExtraExpRate(cid, 0)
return TRUE
end

 

Instalação

Crie os arquivos dos livros e salve-os em actions/scripts/other/

Adicione em actions.xml


<action itemid="1982" script="other/trainning book.lua"/>
<action itemid="1983" script="other/habby book.lua"/>
<action itemid="1984" script="other/energy book.lua"/>
<action itemid="1985" script="other/exppo book.lua"/>

Coloque o ID que você deseja para ser os dos livros.

Adicione em creaturescripts.xml


<event type="logout" name="exppo book" script="exppo creature.lua" />

Obs: Ignorarei perguntas em que a resposta está no texto e outras, como, por exemplo: 'Funciona no servidor XX 0.001?'.

Leia os requerimentos. Você necessita ter o mínimo de conhecimento sobre lua scripting. É um saco ficar ensinando às pessoas que não tem, como instalar o script. Isso não é um tutorial.

Não tenho interesse em entrar em nenhum team. Já recebi várias propostas e não vou aceitar nenhuma.

 

Créditos

Todos os scripts aqui presentes foram desenvolvidos por mim, Pivigu e não devem ser removidos, caso o script seja postado em outro forum.

 

Bugs

Corrigido bug no exppo book: deixava a extra exp permanente. Obrigado, Skyen.

Corrigido bug no exppo book: função que em alguns servidores era desconhecida.

Editado por Pivizz

Compartilhar este post


Link para o post
Gpwjhlkdcf    21
Gpwjhlkdcf

  • Aprovado e Movido para Download de Ações.

 

Observação: Só tem um erro meio grave no seu script, e eu também cometia esse erro. Se o jogador usar o livro de experiência, por exemplo, e der logout, após passar o 'efeito' do livro, vai dar um erro no console de que o 'cid' não pode ser encontrado, além de não remover o stat quando o jogador sair, ficando com o stat eterno. Uma boa solução para esse problema é criar um Creature Event que remova os 'efeitos' assim que o jogador der logout. Essa é a maneira mais simples, mas pode ser feito de outros jeitos.

Vale ressaltar que, devido à função das Extra Rates, o script só vai funcionar no The Forgotten Server, e só nas versões mais novas.

 

Tirando isso, está muito bom! (Y)

Editado por Skyen Hasus

Compartilhar este post


Link para o post
Luccasmanoel    0
Luccasmanoel

gostei ,

Compartilhar este post


Link para o post
Mock    32
Mock

@pivizz

interessante é o livro de skill, seria burrice o cara usar com 1% to go :s

e esse seu sistema de "exaust" fico otimo.

Compartilhar este post


Link para o post
Sago    0
Sago

Muito boa a idéia

revolucionario esse script acho que

seria muito interessante ver isso em um servidor

:)

Compartilhar este post


Link para o post
Mithz    0
Mithz

Seria interessante por esse items a venda em lojas de cidade vip.

Vou fazer isso no meu serv =p

Realmente muito bom!

Obrigado..

Compartilhar este post


Link para o post
josejunior23    2
josejunior23

boa ideia, gostei (:

 

Parabéns.

Compartilhar este post


Link para o post
Lyon    3
Lyon

Ae Pivizz fantastico esses scripts,parabéns!

Compartilhar este post


Link para o post
Pivizz    1
Pivizz

É, eu pensei em botar em cidade VIP e fazer bastante caro :)

Compartilhar este post


Link para o post
Kaotar    5
Kaotar

Tipo ficou suux esse monte de script vc podia juntar ele e por em um so ne cara. xD

Assim da mto tb kara.

 

Flws

 

4

Compartilhar este post


Link para o post
Bob_Montibeller    0
Bob_Montibeller

Valeu, Gostei mesmo!

Compartilhar este post


Link para o post
Conde2    0
Conde2

Já que o pessoal ta relatando bugs eu acabei de entrar nesse tópico e já vi um erro =O

No Habby book se o player logar no meio do addEvent o speed dele acho que vai ficar aumentado pra sempre =P, além de dar erro no console.

Bom só isso eu ahco.

Muito bom os scripts

Compartilhar este post


Link para o post
joaoporra    0
joaoporra

uma ideia, fassa em "movements" para quando o player equipar o livro ele entrar em uso.. nao quando der "USE" nele... seria mais legal.

Compartilhar este post


Link para o post
Kah~    0
Kah~

É cara, eu gostei desse script ae vei, books que dão efeito, nunca tinha pensado nisso ;)

Compartilhar este post


Link para o post
FakLess    0
FakLess

nunca Tinha pensado²

bem Rox.

^^

 

Compartilhar este post


Link para o post
Dark Billie    0
Dark Billie

Realmente demais...eu nunca teria pensado nisso X:

Aprovo e recomendo!

 

Vai para meu projeto de servidor >8D

Compartilhar este post


Link para o post
Seth Forsaken    0
Seth Forsaken

Realmente muito útil! (Estou revivendo o tópico, mas esse script é excelente demais para ficar esquecido do jeito que está...)

 

Como o Dark Billie disse, vai pro meu projeto também ;]

Parabéns!

 

Yours, Seth~

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×