Ir para conteúdo
  • 0

Treinamento Offline


Sofft

Pergunta

Xtibianos,

 

Gostaria que alguém pudesse desenvolver e disponibilizar, um Sistema de Treinamento Offline, como o inserido no global.

 

Especificações:

# Limite de Treinamento - Por exemplo, treina só por 1h depois de deslogar. E para começar a treinar denovo esperar 24h.

# Para começar o treinamento, assim como no Global clicar em um Item, o char desloga e treina.

# Treinar METADE do que se estivesse treinando em Monk...etc...etc

# As seguintes combinações de treino: Axe+Shield, Club+Shield, Sword+Shield, Distance+Shield, Magic Level+Shield

 

Tenho uma ideia de como seria o script, mas não consigo fazer, Usando Eventos e Storages.

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

estava pesquisando sobre o sistema, só começa a treinar 10 minutos após o char deslogar, outra coisa é pensar como vai ser feito o sistema, talvez dê para fazer por querys em LUA.

 

Você sabe se por exemplo, eu cliquei no item e desloguei, ai resolvi logar de novo durante o treino... se se eu deslogar de nova a contagem do tempo é a mesma ou caso eu logue durante o treinamento offline, tem que esperar 24 hrs de novo

Link para o comentário
Compartilhar em outros sites

  • 0

@Vodkart,

 

O global é assim, por exemplo:

você tem 1h de treinamento, se porventura você logar apos 30 min, você pode por novamente para treinar, não é necessário esperar 24h no global, aumenta como STAMINA, se você acabou com as horas de treinamento, e esperar aumenta 1min e desloga, vai treinar 1 min.

 

Deu pra entender ?? poderia ser desse jeito também o SCRIPT, não precisaria de 24h de descanso.

 

 

Aproveitando que você está aqui dê uma olhada nesse tópico aqui, e vê se consegue me ajudar.

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

  • 0

mas isso só vai funcionar se os jogadores estiverem online...

teria que ter uma formula especifica pra no caso por exemplo a cada "X" tempo aumentar tanto de "amount" skill

outra coisa é checar se o jogador usou o item, porque se você usar a função para checar qualquer coisa e o jogador estiver offline, vai retornar erro no distro.

talvez de para usar globalevent e a cada "x" segundo aumenta a skill dos player que usaram esse item, mas tudo enquanto o jogador estiver offline, ou seja por db.

Link para o comentário
Compartilhar em outros sites

  • 0

@Vodkart, pensei em outra possibilidade aqui agora!

 

O player usa o item X, ai setStorage Y=1 e desloga.

Quando o player logar adiciona um evento que pega o tempo que o player ficou offline, ou pegue a hora do logoff,

e para cada 2 segundos doPlayerAddSkillTry...e setStorage Y=0

 

basicamente isso, agora é tratamento de exceção.

e... eu não sei uma função que retorne o tempo offline, nem a hora do logoff.

Link para o comentário
Compartilhar em outros sites

  • 0

Vodkart, se precisar tenho todos os códigos nas sources =P

Essa semana ou na outra o Talaturen já vai adicionar o sistema inteiro...

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

  • 0

onUse(cid)
  setPlayerStorageValue(cid, 7123, os.time())
  return doRemoveCreature(cid)

 


function getTime(s)
	local h = math.floor(s/3600)
	local m = math.floor((s - h * 3600) / 60)
	return h, m, (s - h * 3600) - m * 60
end

function onLogin(cid)
	local secs_off = os.time() - getPlayerStorageValue(cid, 7123)

	if (secs_off > 0) then
			local tim = {getTime(secs_off)}
			local h, m, s = (tim[1] > 0) and tim[1] .. " hora" or "", (tim[2] > 0) and tim[2] .." minuto " or "", (tim[3] > 0) andtim[3] .. " segundo " or ""
			local h, m, s = (tim[1] > 1) and tim[1] .. " horas" or h, (tim[2] > 1) and tim[2] .." minutos " or m, (tim[3] > 1) andtim[3] .. " segundos " or s

			local timz = h

			if (m ~= "") then
					if (h ~= "" and s ~= "") then
							timz = timz .. ", ".. m .. "e "
					elseif(s ~= "") then
							timz = timz .. m .."e "
					else
							timz = timz .. m
					end

			end

			doPlayerSendTextMessage(cid, 19, "Durante sua ausência você treinou por ".. timz .. s .. ".")
			setPlayerStorageValue(cid, 7123, -1)
			--addSkillEquivalenteAoTimeOff(tim)
	end

	return true
end

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

  • 0

Fiz um sistema aqui usando o que o amigo MaXwEllDeN postou ali em cima, NÃO esta pronto ainda, tem que testar!

 

Fiz um sistema usando 3 Storages, 1 para testar o tempo que o player tem disponível para treinar, 1 para ver o tempo que ele gastou treinando, 1 para interagir as outras 2 storages.

 

onUse(cid)
local rec = os.time() - getPlayerStorageValue(cid, 7124) --- Subtrai a hora do ultimo treinamento da hora atual
local recrate = 2 --- Taxa de recarga, ex: 2 = a cada 2 minutos sem treinar aumenta 1 para poder treinar

setPlayerStorageValue(cid, 7125, getPlayerStorageValue(cid, 7125) + (rec/recrate)) --- adiciona o tempo de treinamento
setPlayerStorageValue(cid, 7123, os.time())
setPlayerStorageValue(cid, 7124, -1)
return doRemoveCreature(cid)

 

function getTime(s)
			local h = math.floor(s/3600)
			local m = math.floor((s - h * 3600) / 60)
			return h, m, (s - h * 3600) - m * 60
end
function onLogin(cid)
			local secs_off = os.time() - getPlayerStorageValue(cid, 7123)
 local skilltime = getPlayerStorageValue(cid, 7125) --- Tempo de treinamento disponivel
 local skillrate = 1 --- Taxa com quem o skill passará
 if(secs_off > skilltime) then local secs_off = skilltime end --- Limita o treino
			if (secs_off > 0) then
							local tim = {getTime(secs_off)}
							local h, m, s = (tim[1] > 0) and tim[1] .. " hora" or "", (tim[2] > 0) and tim[2] .." minuto " or "", (tim[3] > 0) andtim[3] .. " segundo " or ""
							local h, m, s = (tim[1] > 1) and tim[1] .. " horas" or h, (tim[2] > 1) and tim[2] .." minutos " or m, (tim[3] > 1) andtim[3] .. " segundos " or s
							local timz = h
							if (m ~= "") then
											if (h ~= "" and s ~= "") then
															timz = timz .. ", ".. m .. "e "
											elseif(s ~= "") then
															timz = timz .. m .."e "
											else
															timz = timz .. m
											end
							end
 elseif (m <= 10) then --- Só apos 10 minutos depois de deslogado começa a treinar
doPlayerSendTextMessage(cid, 19, "O treinameto só ativa depois de 10 minutos.")
 elseif (h >= 1) then --- Limita o treino a 1 hora
doPlayerSendTextMessage(cid, 19, "Durante sua ausência você treinou por 1 hora.")
doPlayerAddSkillTry(cid,1,skillrate*1200)
doPlayerAddSkillTry(cid,5,skillrate*1200)

 elseif (h < 1 and m >= 10) then --- Adiciona o tanto de skill referente ao tempo de treino
							doPlayerSendTextMessage(cid, 19, "Durante sua ausência você treinou por ".. timz .. s .. ".")
doPlayerAddSkillTry(cid,1,skillrate*(tim-600)/2) --- raciocinio: skillrate * (tempo de treino - 10 minutos) / por padrão o HITs são a cada 2 segundos
doPlayerAddSkillTry(cid,5,skillrate*(tim-600)/2)
 end
							setPlayerStorageValue(cid, 7123, -1)
setPlayerStorageValue(cid, 7125, getPlayerStorageValue(cid, 7125) - (secs_off)) --- remove o tempo de treinamento
setPlayerStorageValue(cid, 7124, os.time())
end
return true

 

Falta limitar a Storage 7125 para que o máximo de tempo treinável seja 1 hora.

Conto com a ajuda de vocês MaXwEllDeN e Vodkart.

 

EDIT----------------------------------

EI!!!!!!! me ajudem por favor! confiram as funções, porque eu não sei se estão usadas de maneiras corretas!!!

VODKART MAXWELLDEN por favor. =/

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

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...