Ir para conteúdo
  • 0

[TFS 1.2]Script que reduz skills em % dependendo da vocação


DeCarvalho

Pergunta

Ola, gostaria de saber se alguém pode fazer para mim um script configuravel de npc onde um jogador sem vocação ao escolher a vocação e para onde deseja ir.. o sistema faça uma redução nos skills de acordo com a vocação desejada..

Tal qual acontece quando alguém vai de dawnport para rook..

 

ja cheguei a ficar treinando em dawnport até pegar 60/55 e voltar pra rookgaard com uma enorme redução...

 

Enfim, se puder deixar a configuração de forma clara..

 

possibilidade de adicionar varias cidades (posições)

redução em % da skill configuravel para cada 'elemento' melee(sword/club/axe/fist), distance, shield e magic e de acordo com cada vocação

 

Grato

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

To meio sem tempo porque eu to consertando meu computador mas vou tentar fazer.

Vou fazer um npc.

* So vai ter essa redução se ele for para rook, então para outras cidades ele fica com a skill normal?

 

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

  • 0

To meio sem tempo porque eu to consertando meu computador mas vou tentar fazer.

Vou fazer um npc.

* So vai ter essa redução se ele for para rook, então para outras cidades ele fica com a skill normal?

 

 

Não, é ao sair de rook, eu dei o exemplo de dawnport para evitar algum engraçadinho vindo falar que não tem noção isso que eu pedi.. :)

 

é que o ot que estou montando é possível no vocation usar magia desde level 5, então eu quero evitar (assim como de dawnport pra pra rook) que alguém fique upando skill demasiadamente e depois siga para main..

 

Ex.. o krinha fica lá treinando ml e vai para main como knight, com ml sei lá 30..

 

o sistema irá servir para evitar justamente isso.. e por isso a necessidade de ser configurável por skill.. pois eu posso dar uma pena de redução alta em ml e distance, caso ele saia da newbie island como knight; uma redução média de ml e alta de melee caso ele saia como paladin; uma redução alta de melee, distance, shield caso ele saia como mage.

 

Acho que agora esta mais explicado :D

 

Apesar do foco do projeto ser em no vocation players, claro que não posso fechar meu olho para as outras cosias :)

 

Caso precise de algum detalhe só perguntar, agradeço pela disposição em estar dando uma ajuda de acordo com sua possibilidade :)

 

Grato

04/08//Passando só para saber como andam as coisas :)

05/08// Alguém??!!

07/08//Passando para dar um up para ver se alguém consegue dar uma mão :)

08/08// Eu novamente e mais uma vez.. Sem desistir :) alguém conseguiria esse trem complicado? caso sim aviso que no momento estou sem likes, mas assim que tiver eu curto :)

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

  • 0

@@DeCarvalho,

Posta o seu script atual do npc que sai de rook que eu vou tentar fazer pra você...

 

Deixa eu só entender:

Se o player tiver com skill 30, ao sair de rook ele vai perder 50%, e irá para main com skill 15, é isso?

 

Att.

Link para o comentário
Compartilhar em outros sites

  • 0

@@DeCarvalho,

Posta o seu script atual do npc que sai de rook que eu vou tentar fazer pra você...

 

Deixa eu só entender:

Se o player tiver com skill 30, ao sair de rook ele vai perder 50%, e irá para main com skill 15, é isso?

 

Att.

 

Olá,

 

Eu ainda não tenho um npc/script pronto para isso.. o script do oraculo que tenho é o que vem de padrão no pack que você disponibilizou tfs 1.2

 

 

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

local vocation = {}
local town = {}
local destination = {}

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end

local function greetCallback(cid)
	local level = getPlayerLevel(cid)
	if level < 8 then
		npcHandler:say("CHILD! COME BACK WHEN YOU HAVE GROWN UP!", cid)
		return false
	elseif level > 9 then
		npcHandler:say(getCreatureName(cid) .. ", I CAN'T LET YOU LEAVE - YOU ARE TOO STRONG ALREADY! YOU CAN ONLY LEAVE WITH LEVEL 9 OR LOWER.", cid)
		return false
	elseif getPlayerVocation(cid) > 0 then
		npcHandler:say("YOU ALREADY HAVE A VOCATION!", cid)
		return false
	end
	return true
end

local function creatureSayCallback(cid, type, msg)
	if not npcHandler:isFocused(cid) then
		return false
	elseif msgcontains(msg, "yes") and npcHandler.topic[cid] == 0 then
		npcHandler:say("IN WHICH TOWN DO YOU WANT TO LIVE: {RHYVES}?", cid)
		npcHandler.topic[cid] = 1
	elseif npcHandler.topic[cid] == 1 then
		if msgcontains(msg, "rhyves") then
			town[cid] = 2
			destination[cid] = {x = 159, y = 387, z = 6}
			npcHandler:say("IN RHYVES! AND WHAT PROFESSION HAVE YOU CHOSEN: {KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
			npcHandler.topic[cid] = 2
		else
			npcHandler:say("IN WHICH TOWN DO YOU WANT TO LIVE: {RHYVES}?", cid)
		end
	elseif npcHandler.topic[cid] == 2 then
		if msgcontains(msg, "sorcerer") then
			npcHandler:say("A SORCERER! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", cid)
			npcHandler.topic[cid] = 3
			vocation[cid] = 1
		elseif msgcontains(msg, "druid") then
			npcHandler:say("A DRUID! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", cid)
			npcHandler.topic[cid] = 3
			vocation[cid] = 2
		elseif msgcontains(msg, "paladin") then
			npcHandler:say("A PALADIN! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", cid)
			npcHandler.topic[cid] = 3
			vocation[cid] = 3
		elseif msgcontains(msg, "knight") then
			npcHandler:say("A KNIGHT! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!", cid)
			npcHandler.topic[cid] = 3
			vocation[cid] = 4
		else
			npcHandler:say("{KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
		end
	elseif npcHandler.topic[cid] == 3 then
		if msgcontains(msg, "yes") then
			npcHandler:say("SO BE IT!", cid)
			doPlayerSetVocation(cid, vocation[cid])
			doPlayerSetTown(cid, town[cid])
			local destination = destination[cid]
			npcHandler:releaseFocus(cid)
			doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
			doTeleportThing(cid, destination)
			doSendMagicEffect(destination, CONST_ME_TELEPORT)
		else
			npcHandler:say("THEN WHAT? {KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
			npcHandler.topic[cid] = 2
		end
	end
	return true
end

local function onAddFocus(cid)
	town[cid] = 0
	vocation[cid] = 0
	destination[cid] = 0
end

local function onReleaseFocus(cid)
	town[cid] = nil
	vocation[cid] = nil
	destination[cid] = nil
end

npcHandler:setCallback(CALLBACK_ONADDFOCUS, onAddFocus)
npcHandler:setCallback(CALLBACK_ONRELEASEFOCUS, onReleaseFocus)

npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
 

 

 

 

Bem a ideia do sistema é tal qual funciona quando um jogador tenta ir de dawnport para rook.. o sistema reduz as skils do jogador.. para que ele não volte para rook com skill muito alto

Pensando nisso o que eu gostaria seria um script com redução de skill configurável por vocação.. visto que é possível usar level 5 eu quero evitar que eles escolham vocações qual a base não seja a correta..
Um jogador (A) sem vocação treinando pegar ml 20 e escolher ser knight..
Um jogador (B) sem vocação treinando para ter melee e defesa 80/80 e escolher ser druid/sorcerer
Um jogador © sem vocação treinando para ter ml 20 e escolher ser paladin
Um jogador (D) sem vocação treinando para ter distance e defesa 80/80 , ml 40 e escolher ser knight
Seria problemático né? o sistema vai me dar opção de impor redução em cada skill e eu vou setar na escolha de vocação..
Após escolher a vocação e ser mandado para o local escolhido o sistema iria fazer uma verificação da nova vocação e dependendo da vocação seriam 3 casos..
se knight, então
redução de XXX% em magic level e XXX% em distance
senão se paladin então
redução de XXX% em magic level e XXX em melee
senão se druid/sorcerer então
redução de XXX% em melee, XXX% em distance e XXX% em shield
mensagem "Your skills have changed to fit with your actual vocation!"
onde melee seria = fist/axe/club/sword
Obrigado pela disponibilidade, alguma dúvida?
Link para o comentário
Compartilhar em outros sites

  • 0

Creio que se usar algo estilo as magias dos monstros seja possível, veja:

local condition = Condition(CONDITION_ATTRIBUTES)
condition:setParameter(CONDITION_PARAM_SKILL_DISTANCEPERCENT, 80)  -- onde 80 é igual a % do skill

Você abre a checagem com um if... exemplo:

if player:getVocation(4) then
...
end

Creio que deva funcionar. Foi só uma ideia que partiu de uma magia.

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

  • 0

Creio que se usar algo estilo as magias dos monstros seja possível, veja:

local condition = Condition(CONDITION_ATTRIBUTES)
condition:setParameter(CONDITION_PARAM_SKILL_DISTANCEPERCENT, 80)  -- onde 80 é igual a % do skill

Você abre a checagem com um if... exemplo:

if player:getVocation(4) then
...
end

Creio que deva funcionar. Foi só uma ideia que partiu de uma magia.

 

Tentei de algumas formas mas não consegui a solução que eu queria, não posto aqui o que tentei pois acabei perdendo dados do hd ao tentar refazer a atualziação w10ip 525 junto com o hd.. (estranho) :)

Vou tentar refazer o que eu havia feito baseado no que você indicou e posto aqui para ver se consigo alguma dica do motivo.. ou se realmente não teria como da maneira indicada..

 

Estou fazendo o comentário sem ter algo para evitar qoe o tópico seja fechado por inatividade.. apesar de eu não ter dado notícias antes não quer dizer que eu tenha esquecido desse tópico..

 

Agradeço no momento as ajudas e ideias compartilhadas.. e novamente assim que eu estiver apto novamente (creio que logo após o crepusculo) irei ver se consigo testar novamente..

 

Grato

Link para o comentário
Compartilhar em outros sites

  • 0

Tópico Movido

Este tópico foi movido de "OTServSuporte OTServSuporte Scripting"

para "OTServSuporte OTServSuporte ScriptingPedidos e dúvidas resolvidos - Scripting".

 

 

 

Desculpa ae mas não foi resolvido.. e eu também em 2 posts, onde um eu marquei você, informei que estou meio ausente por problema de pc.. mas não estou 'morto' somente não estou aparecendo pois não quero fazer pedido sem poder testar...

Link para o comentário
Compartilhar em outros sites

  • 0

 

Desculpa ae mas não foi resolvido.. e eu também em 2 posts, onde um eu marquei você, informei que estou meio ausente por problema de pc.. mas não estou 'morto' somente não estou aparecendo pois não quero fazer pedido sem poder testar...

De qualquer forma sua última resposta no tópico foi a 30 dias atrás. Infelizmente, o tópico não será movido novamente por agora. Se necessário quando sua internet ou seu pc estiver normal eu volto para a seção de pedidos.

 

Isso se faz necessário para que a seção fique mais limpa.

Link para o comentário
Compartilhar em outros sites

  • 0

então tá.. se a falta de tato existe mesmo com explicação do motivo e bem anterior.. mostrando que não foi falta de interesse e nem coisa parecida.. fazer o que.. vou começar todo dia a postar, visto que existe limite de 24hrs para up.. para evitar que isso aconteça né.. ja que não existe outra maneira ^^

 

 

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

  • 0

Como o mesmo esta Online e presente no fórum não vejo motivo para o mesmo gerar intrigas. portanto estarei movendo o tópico para Pedidos e Duvidas.

caso o Usuário deseje que o tópico seja movido, entre em contato ou marque como resolvido.


Tópico Movido
para "OTServSuporte OTServSuporte Scripting".

 

 

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

×
×
  • Criar Novo...