Ir para conteúdo
  • Cadastre-se

Normal Clubs com Dano Diferente em Algumas Criaturas


Posts Recomendados

Olá novamente. Estou utilizando um TFS 0.4.0 e gost gostaria de formular um script com o seguinte objetivo: dobrar o dano em determinadas criaturas quando a arma do player for do tipo "club".

 

Pensei em duas hipóteses para resolver o caso:

1) criar um creaturescript e registrá-lo nas criaturas em questão, ou

2) criar um weaponscript, registrar nas armas de club e adicionar manualmente a tabela com o nome das criaturas assim afetadas pela arma.

 

Pergunto para quem já tem mais experiência: conhecendo as funções disponíveis no TFS 0.4.0, qual ideia vocês acham melhor?

E principalmente: poderiam em ajudar na elaboração do script? 

 

Eu tentei criar um script para o caso 1 (creaturescripts)  que me parecia mais fácil e registrei tanto no creaturescript.xml quanto no xml de um demon skeleton para testar, mas não funciona (nenhum erro na distro).

Minha ideia foi:

 

local mult = 2
local arma = getItemWeaponType(uid)

function onStatsChange(cid, attacker, type, combat, value)
	if type == STATSCHANGE_HEALTHLOSS and isCreature(attacker) then
		if arma == 1 then
		dano = math.ceil(dano*(mult))
		doTargetCombatHealth(attacker, cid, combat, -dano, -dano, 255)
		doSendAnimatedText(getCreaturePos(cid), "TESTE", 20)
		return false
		end
	end
return true
end

 

 

 

Mas eu realmente sou leigo em programação como um todo, e não sei se estou utilizando as funções corretamente.

 

Pelo que entendi, o getItemWeaponType(uid) retorna o tipo da arma (0 = fist, 1 = club, etc), é isso? Neste caso, já que estou utilizando club no teste, o dano não deveria estar sendo substituído por esta nova fórmula e soltando uma mensagem de confirmação "TESTE" (que pretendo apagar depois)?

 

Se alguém puder me ajudar a elaborar tal script, seja registrando o weapon e adicionando manualmente o nome das criaturas afetadas ou direto pelo creaturescript, ficarei grato.

Obrigado pela ajuda desde já.

Link para o post
Compartilhar em outros sites

do jeito q tá colocado, vc tá tentando pegar a weapon type de algo q não existe (uid)

As coisas só existem se elas tiverem sido declaradas antes.
 

function onStatsChange(cid, attacker, type, combat, value)

aqui por exemplo a gente declarou a função onStatsChange com esses parametros aí, se no lugar de cid eu colocar 'jose', todas as funções q usam 'cid' como parametro abaixo irão falhar se eu não modificar nelas tb.

Entender isso é o primeiro passo.

Pro segundo, essa função getItemWeaponType ela recebe como parametro o uniqueid de um item então pra poder usar ela primeiro vc tem q identificar qual é o item q vc vai pegar pra depois pegar o .uid dele pra no final poder comparar. Uma forma de fazer isso é pegando o item q tá em determinado slot do player (mão direita, por ex).

Mas vc tem que checar pra esquerda tb.

Assim, tenta começar com um pouco menos do que vc tem aí e vai dando print nas coisas
ex: print(dano) para saber quanto de dano tá ficando (pra ver se tá multiplicando certo)

Depois q vc entender o que é cada coisa, ai vc vai incrementando seu código. Copiar partes de scripts só vai te dar mais trabalho pra entender oque não funciona qnd falhar

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

@xWhiteWolf percebi que eu não conseguiria resolver da maneira que queria pelos motivos que você listou aqui. PORÉM, consegui resolver da minha forma, invertendo a lógica e criando um script para as armas que, para minha surpresa, "funcionou".

 

Criei e registrei devidamente um arquivo.lua com o seguinte script: 

 

 local combat = createCombatObject()
    setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
    setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1)
    setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
    setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1.0, 0, 1.0, 0)
	
 local combat2 = createCombatObject()
	setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
    setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1)
    setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
    setCombatFormula(combat, COMBAT_FORMULA_SKILL, 2.0, 0, 2.0, 0)
	
local creatures = {"Demon Skeleton"}	
	
function onUseWeapon(cid, var)
	local target = getCreatureTarget(cid)
	local nome = getCreatureName(target)
		if (not isInArray (creatures, nome)) then
        doCombat(cid, combat, var)
		doPlayerSendTextMessage (cid,22,"TESTE1")
		else
		doCombat(cid, combat2, var)
		doPlayerSendTextMessage (cid,22,"TESTE2")
		end
end

 

O script funciona perfeitamente, eu obtenho a mensagem "teste1" e "teste2" quando alterno o target entre o demon skeleton e as outras criaturas, mas especificamente o "combat2" não é executado, não ataco a criatura. Alguma ideia do motivo? :p 

Editado por Tadelho (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@Tadelho olha pros seus combats.

 

 local combat = createCombatObject()
    setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
    setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1)
    setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
    setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1.0, 0, 1.0, 0)
	
 local combat2 = createCombatObject()
	setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
    setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1)
    setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
    setCombatFormula(combat, COMBAT_FORMULA_SKILL, 2.0, 0, 2.0, 0)

primeiro vc cria um objeto e de combat e depois define os parametros dele. Até aí nada de errado, mas se vc olhar bem o combat2 tá sem parametro nenhum pq os parametros vc colocou tudo no 'combat' e substituiu os parametros do primeiro xD

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

@xWhiteWolf Há, verdade! Escrevi "combat" ao invés de "combat2" no segundo script. Obrigado, a dúvida foi sanada.

 

Farei um tutorial com algumas ideias para o pessoal depois e atualizo aqui.

 

--- UPDATE: Fiz um tutorial demonstrando como criar diferentes combats para acertar monstros específicos:

 

 

 

Editado por Tadelho (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

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 Jaurez
      .
    • Por Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
      https://tibiaking.com/applications/core/interface/file/attachment.php?id=47333

      Scan: https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
       
    • Por danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
    • Por Vitor Bicaleto
      Galera to com o script do addon doll aqui, quando eu digito apenas "!addon" ele aparece assim: Digite novamente, algo está errado!"
      quando digito por exemplo: "!addon citizen" ele não funciona e não da nenhum erro
       
      mesma coisa acontece com o mount doll.. 
    • Por Ayron5
      Substitui uma stone no serve, deu tudo certo fora  esse  erro ajudem  Valendo  Rep+  Grato  

      Erro: data/actions/scripts/boost.lua:557: table index is nil
       [Warning - Event::loadScript] Cannot load script (data/actions/scripts/boost.lua)

      Script:
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo