Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Vou ensinar a criar um sistema de treinamento offline igual ao global.

Requisitos: Apenas um ot com items.xml e items.otb que possuem as estátuas de treino ^-^

Seguindo.

PastaDoOt/data//lib/ crie um arquivo chamado "103-offline-training.lua" Coloque isso dentro:


-- config, in percent of normal training with 2 trainers and player vocation mana regeneration [by food]

OfflineTraining_rates = {

[SKILL_CLUB] = 100,

[SKILL_SWORD] = 100,

[SKILL_AXE] = 100,

[SKILL_DISTANCE] = 100,

[SKILL_SHIELD] = 100,

[SKILL__MAGLEVEL] = 100

}

-- function that you should edit to make it add other skill etc.

function OfflineTraining_canStartTraining(cid) -- return bool

return getCreatureStorage(cid, 62669) > 0

end

function OfflineTraining_onstartTraining(cid)

-- maybe someone will need

-- to save your time, this: doPlayerPopupFYI(cid, "You started offline training.")

-- NOT WORK 

end

function OfflineTraining_onendTraining(cid)

doCreatureSetStorage(cid, 62669, 0)

end

function OfflineTraining_addTrainedSkills(cid, trainTime) -- time in minutes!

local timeInSeconds = trainTime * 60

local vocInfo = getVocationInfo(getPlayerVocation(cid))

if(getCreatureStorage(cid, 62669) == SKILL_SWORD) then

doPlayerAddSkillTry(cid, SKILL_SWORD, ((timeInSeconds * 1000) / vocInfo["attackSpeed"]) * OfflineTraining_rates[SKILL_SWORD] / 100, true)

elseif(getCreatureStorage(cid, 62669) == SKILL_AXE) then

doPlayerAddSkillTry(cid, SKILL_AXE, ((timeInSeconds * 1000) / vocInfo["attackSpeed"]) * OfflineTraining_rates[SKILL_AXE] / 100, true)

elseif(getCreatureStorage(cid, 62669) == SKILL__MAGLEVEL) then

doPlayerAddSpentMana(cid, ((timeInSeconds / vocInfo["manaGainTicks"]) * vocInfo["manaGain"]) * OfflineTraining_rates[SKILL__MAGLEVEL] / 100, true)

elseif(getCreatureStorage(cid, 62669) == SKILL_CLUB) then

doPlayerAddSkillTry(cid, SKILL_CLUB, ((timeInSeconds * 1000) / vocInfo["attackSpeed"]) * OfflineTraining_rates[SKILL_CLUB] / 100, true)

elseif(getCreatureStorage(cid, 62669) == SKILL_DISTANCE) then

doPlayerAddSkillTry(cid, SKILL_DISTANCE, ((timeInSeconds * 1000) / vocInfo["attackSpeed"]) * OfflineTraining_rates[SKILL_DISTANCE] / 100, true)

end

doPlayerAddSkillTry(cid, SKILL_SHIELD, timeInSeconds * OfflineTraining_rates[SKILL_SHIELD] / 100, true)

end


-- 4 functions to show right values on 'bar' in Tibia 9.6

function OfflineTraining_getTime(cid)

return getCreatureStorage(cid, 62666)

end

function OfflineTraining_setTime(cid, newTime)

-- set values only between 0 - 720 [12 hours]

doCreatureSetStorage(cid, 62666, math.max(0, math.min(newTime, 720)))

-- now code to force server to send 'PlayerStats' (including Offline Time)

-- we must change any stat: hp,mana,stamina,cap,soul,exp,level

doPlayerAddSoul(cid, 1)

doPlayerAddSoul(cid, -1)

end

function OfflineTraining_addTime(cid, addTime)

OfflineTraining_setTime(cid, OfflineTraining_getTime(cid) + addTime)

end

function OfflineTraining_removeTime(cid, removeTime)

OfflineTraining_setTime(cid, OfflineTraining_getTime(cid) - removeTime)

end


-- functions for library to add skills/mlvl

function OfflineTraining_initialize(cid)

if(OfflineTraining_getTime(cid) == -1) then

OfflineTraining_setTime(cid, 720)

OfflineTraining_setLogoutTime(cid) -- block problem with first login 'add time'

end

end

function OfflineTraining_isTraining(cid)

return (getCreatureStorage(cid, 62667) > 0)

end

function OfflineTraining_turnOnTraining(cid)

doCreatureSetStorage(cid, 62667, 1)

end

function OfflineTraining_turnOffTraining(cid)

doCreatureSetStorage(cid, 62667, 0)

end

function OfflineTraining_getOfflineTime(cid)

return math.floor((os.time() - getCreatureStorage(cid, 62668)) / 60)

end

function OfflineTraining_setLogoutTime(cid)

return doCreatureSetStorage(cid, 62668, os.time())

end

[/code]






[color=#000000][b]em Data/actions/actions.xml adicione as seguintes tags[/b][/color]

[code] <action itemid="18492" script="offtrain_statue.lua"/> <action itemid="18491" script="offtrain_statue.lua"/> <action itemid="18490" script="offtrain_statue.lua"/> <action itemid="18489" script="offtrain_statue.lua"/> <action itemid="18488" script="offtrain_statue.lua"/>
Os números 18488 - 18492 são os id's dos objetos a serem os "Treiners offline" ou seja, se vc trocar por exemplo o 18492 por um outro id tipo "1026" ( id de um muro) todos os muros que possui esse id, ao clicarem nele, o player irá deslogar, então prestem atenção e coloquem um id existente e que nao seja "usável" como exemplo, uma estátua. em data/actions/script crie um arquivo chamado "offtrain_statue.lua" Coloque isso dentro:

-- example 'action' when you click on statue:

function onUse(cid, item, fromPosition, itemEx, toPosition)

if(item.itemid == 18488) then -- sword

doCreatureSetStorage(cid, 62669, SKILL_SWORD)

elseif(item.itemid == 18489) then -- axe

doCreatureSetStorage(cid, 62669, SKILL_AXE)

elseif(item.itemid == 18492) then -- mlvl

doCreatureSetStorage(cid, 62669, SKILL__MAGLEVEL)

elseif(item.itemid == 18490) then -- club

doCreatureSetStorage(cid, 62669, SKILL_CLUB)

elseif(item.itemid == 18491) then -- distannce

doCreatureSetStorage(cid, 62669, SKILL_DISTANCE)

end

-- we remove player, so it will execute onLogout(cid) function and save time of training start

doRemoveCreature(cid)

end

../data/creaturescripts/creaturescripts.xml


<event type="login" name="offtrain_PlayerLogin" event="script" value="offtrain_login.lua"/>

<event type="logout" name="offtrain_PlayerLogout" event="script" value="offtrain_logout.lua"/>

../data/creaturescripts/scripts/offtrain_login.lua


-- 0.4 - offline training - login.lua

function onLogin(cid)

OfflineTraining_initialize(cid)

if(OfflineTraining_isTraining(cid)) then

OfflineTraining_turnOffTraining(cid)

-- we add skill/mlvl, we select lower value: time that player was offline OR offline training time [bar in game - 9.6]

OfflineTraining_addTrainedSkills(cid, math.min(OfflineTraining_getTime(cid), OfflineTraining_getOfflineTime(cid)))

-- we remove offline training time [bar in game - 9.6],

-- if player was offline longer then his 'offline training time' it will add him time [like on RL tibia]

-- got '3 hours offline training time', stay logged off for 8 hours, you get skills for 3 hours and on login you got '5 hours offline training time'

OfflineTraining_setTime(cid, math.abs(OfflineTraining_getTime(cid) - OfflineTraining_getOfflineTime(cid)))

OfflineTraining_onendTraining(cid)

else

-- offline training time also regenerate when you are offline, but NOT train

OfflineTraining_setTime(cid, OfflineTraining_getTime(cid) + OfflineTraining_getOfflineTime(cid))

end

return true

end




-- 0.4 - offline training - logout.lua

function onLogout(cid)

if(OfflineTraining_canStartTraining(cid)) then

OfflineTraining_turnOnTraining(cid)

OfflineTraining_onstartTraining(cid)

end

OfflineTraining_setLogoutTime(cid)

return true

end




./data/globalevents/globalevents.xml


<globalevent name="offtrain_add_minutes" interval="60000" event="script" value="offtrain_addMinutes.lua"/>

../data/globalevents/scripts/offtrain_addMinutes.lua


function onThink(interval) -- run it with interval 60 seconds

for _, cid in pairs(getPlayersOnline()) do

OfflineTraining_addTime(cid, 1)

end

return true

end


pronto, seu sistema de treino offline está criado :D

Créditos:

Gesior.pl

LookMe

Editado por Skyligh (veja o histórico de edições)

Att,

Skyligh

Entrada Como Membro 14 / 08 / 2012

Entrada Como Suporte 05 / 12 / 2012

Saída Como Suporte 06 / 01 / 2013

sem_ta28.png

Contato : [email protected] / [email protected]

Link para o post
Compartilhar em outros sites

O script ta tudo bugado com as tags de cor , negrito kkkkkk.

não vai funcionar se copiar e colar

 http://baiakuza.com/
IP: baiakuza.com
TIBIA: 10.96
Baiak Custom [ High Exp Rate ]

 

 

 

 

Link para o post
Compartilhar em outros sites

Arrumado.

Att,

Skyligh

Entrada Como Membro 14 / 08 / 2012

Entrada Como Suporte 05 / 12 / 2012

Saída Como Suporte 06 / 01 / 2013

sem_ta28.png

Contato : [email protected] / [email protected]

Link para o post
Compartilhar em outros sites

Foi testado em 960 nao sei se funciona em versões inferiores

Att,

Skyligh

Entrada Como Membro 14 / 08 / 2012

Entrada Como Suporte 05 / 12 / 2012

Saída Como Suporte 06 / 01 / 2013

sem_ta28.png

Contato : [email protected] / [email protected]

Link para o post
Compartilhar em outros sites
  • 3 years later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por Vodkart
      Mapa BattleField Feito Por AnneMotta :

      Mapa Battlefield.rar

      Scan: https://www.virustot...sis/1346548669/


      Imagens do mapa



      Descrição:

      - O evento é automático e acontece em determinado dia e hora da semana
      - Logo após é aberto um teleport então apenar um número limitado de players entra no evento
      - São formados por dois times, os "Black Assassins" e os "Red Barbarians"
      - Os times são balanceados automaticamente, quando o último jogador entra, esse teleport é fechado e depois de 5 minutos o evento começa, os 5 minutos são para os players ter tempo de planejar um ataque.
      - O sistema tem por finalidade matar todos do time inimigo, e os players que sobreviverem recebem um prêmio.

      Bônus:

      - Durante o evento é mostrado na tela somente dos jogadores que estão no evento um placar de times.

      - Até o último player entrar no evento, ficam mandando broadcast dizendo quanto players faltam para dar inicio ao jogo.

      - Se o evento abrir e não atingir a meta de players colocada, o evento é finalizado e os players voltam para o templo.




      Lembre-se:

      - De colocar Pvp Tool na área
      - De colocar área NoLogout


      Imagens:




      Instalação:

       
      Data > Lib       Data > CreatureScript > Script     Data > GlobalEvents > Scripts       Data > Movements > Script             Configurações do evento
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo