eduardo190696 47 Postado Setembro 23, 2012 Share Postado Setembro 23, 2012 (editado) Treinamento offline, com barra no jogo - Mostra o tempo que tem na barra de skill [tibia 9.6] - Pode configurar as rates - Usa vocation.xml para configurar: - Calcula o ml [ o quanto o food aumenta da mana ] - Calcula club/axe/sword/distance velocidade ganha [ attackspeed da vocação ] Código testado em TFS 0,4, 9,6 (um dos mais recentes revisões). Scripts Lua deve ser usado nas versões TFSes (0.3.6 - 0,4), Mais apenas na versão 9.6 que mostra o quanto tempo tem de treino, e tem as estatuas que se da "use" para treinar off. Como se calcular skills / mlvl? - Sword, axe, club, distance: ele usa multiplicador de config.lua, ele verificação attackSpeed ??da vocação jogador e 'atacar' o mais rápido que puder - Shield: ele usa multiplicador de config.lua, ele adiciona um 'hit' por um segundo offline [como quando você treina com 2 Monks] - magic Level: ele usa multiplicador de config.lua, acrescenta tanto 'mana gasto' [nível mag] como jogador poderia regenerar se ele comer alguma comida No início do 'lib' você tem as configuração básica, aqui você pode reduzir / aumentar a habilidade / mlvl, 100 = 100% do normal [descrita acima]: Lua Code: -- 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 } (abaixo de config são as funções que podem ser modificadas para se você quiser fazê-lo iniciar com outra ação, em seguida, "clique na estátua", exemplo: só começar o treinamento off o player se o player logou em alguma área) Primeiro LUA scripts: ../data/lib/103-offline-training.lua -- 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 ../data/actions/actions.xml XML 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"/> ../data/actions/scripts/offtrain_statue.lua -- 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 XML Code: <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 Lua Code: -- 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 ../data/creaturescripts/scripts/offtrain_logout.lua Lua Code: -- 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 XML Code: <globalevent name="offtrain_add_minutes" interval="60000" event="script" value="offtrain_addMinutes.lua"/> Se você usa o TFS antigo troque os interval 60000 para 60 [60 seconds]. ../data/globalevents/scripts/offtrain_addMinutes.lua Lua Code: function onThink(interval) -- run it with interval 60 seconds for _, cid in pairs(getPlayersOnline()) do OfflineTraining_addTime(cid, 1) end return true end C++ code for TFS 0.4, 9.6 Versão para mostrar o time left 'bar' no client. Em protocolgame.cpp Procure por: msg->put<uint16_t>(720);[/code E Troque por isso [code] // offline training minutes std::string strValue; if(!player->getStorage("62666", strValue)) { // no storage msg->put<uint16_t>(0); } else { msg->put<uint16_t>((uint16_t) atoi(strValue.c_str())); } Ela vai mostrar o valor de armazenamento '62666 'no' bar '. 0 = 0:00, 12:00 720 = [12 horas, Full] - tempo em minutos. SCRIPT FEITO POR Gesior.pl E RETIRADO DO FÓRUM OTLAND. @Edit Tenho lido boatos que pega em ot 8.6 só que não pode adicionar a parte do bar, não testei Editado Setembro 24, 2012 por eduardobean Link para o comentário https://xtibia.com/forum/topic/194835-tfs-04-96-e-alguns-mais-velhos-treinamento-off-line-com-bar-no-jogo/ Compartilhar em outros sites More sharing options...
JustinnoTibianno 71 Postado Setembro 23, 2012 Share Postado Setembro 23, 2012 muito bom, ta na hora de aparecer o trinamento offline nos otservers ( porem acho que a maioria trocaria 100% pelos atuais treiners pois dezenas de jogadores treinam e o ot acaba ficando mais popular por ter mais pessoas online) Link para o comentário https://xtibia.com/forum/topic/194835-tfs-04-96-e-alguns-mais-velhos-treinamento-off-line-com-bar-no-jogo/#findComment-1346994 Compartilhar em outros sites More sharing options...
eduardo190696 47 Postado Setembro 23, 2012 Autor Share Postado Setembro 23, 2012 sim, mais e se você precisa sair e não pode deixar o char com bot ? Link para o comentário https://xtibia.com/forum/topic/194835-tfs-04-96-e-alguns-mais-velhos-treinamento-off-line-com-bar-no-jogo/#findComment-1347015 Compartilhar em outros sites More sharing options...
1579091 109 Postado Setembro 24, 2012 Share Postado Setembro 24, 2012 Cara presta atenção já foi postado um post desse aki no xtibia: Se vc n percebeu, ja fiz um post desse... mais atençao: http://www.xtibia.com/forum/topic/194014-tfs-0496-and-some-older-offline-training-bar-barrinha-1200h-funcionando/page__fromsearch__1 Reportado! Link para o comentário https://xtibia.com/forum/topic/194835-tfs-04-96-e-alguns-mais-velhos-treinamento-off-line-com-bar-no-jogo/#findComment-1347098 Compartilhar em outros sites More sharing options...
eduardo190696 47 Postado Setembro 24, 2012 Autor Share Postado Setembro 24, 2012 Desculpe n tinha visto, mais acho que você postou na área errada, e como n tinha nem um script igual a esse aqui nessa área... Link para o comentário https://xtibia.com/forum/topic/194835-tfs-04-96-e-alguns-mais-velhos-treinamento-off-line-com-bar-no-jogo/#findComment-1347396 Compartilhar em outros sites More sharing options...
1579091 109 Postado Setembro 24, 2012 Share Postado Setembro 24, 2012 Não não, eu postei na area errada daí fui movido para a area correta, essa area acho q nao seria apropiada pra esse tipo de script (nao tenho certeza) Link para o comentário https://xtibia.com/forum/topic/194835-tfs-04-96-e-alguns-mais-velhos-treinamento-off-line-com-bar-no-jogo/#findComment-1347476 Compartilhar em outros sites More sharing options...
caotic 393 Postado Setembro 24, 2012 Share Postado Setembro 24, 2012 Já que existe no forum e o scripts esta em areá Incorreta. Tópico Fechado Link para o comentário https://xtibia.com/forum/topic/194835-tfs-04-96-e-alguns-mais-velhos-treinamento-off-line-com-bar-no-jogo/#findComment-1347487 Compartilhar em outros sites More sharing options...
Posts Recomendados