Ir para conteúdo
  • Cadastre-se

(Resolvido)pegando key do bau


Ir para solução Resolvido por marcot,

Posts Recomendados

alguem poderia me dizer porq meu script nao funciona?

function onUse(cid, item, frompos, item2, topos)
if getPlayerStorageValue(cid,8123) == -1 then
    key = doPlayerAddItem(cid,2089,1)
    doSetItemActionId(key,3303)
    doPlayerSendTextMessage(cid,25,"You found a cooper key!")
    setPlayerStorageValue(cid,8123,1)
else
    doPlayerSendTextMessage(cid,25,"It's empty.")
end
return 1
end

ele ta aparecendo essa msg

alem disso a chave ta vindo assim e varias vezes repetidamente


 

Screenshot_2.jpg

Screenshot_3.jpg

Link para o post
Compartilhar em outros sites
  • Solução

Ele está te dizendo aí que tentou chamar a função doSetItemActionId e disse que isso é um valor nil, porque se não me engano em LUA tudo que não tá criado é nulo.

Não sei qual base está utilizando, mas a função de setar um action id para o TFS 0.4 é essa:

doItemSetActionId(uid, aid)

Onde uid é o unique id do item e aid possivelmente o id que você quer.

Link para o post
Compartilhar em outros sites
2 minutos atrás, bpm91 disse:

cara muito obrigado, salvou a minha vida.... eu tinha editado antes e tava tudo ok, ai do nada fui testar algumas semanas depoois, essa merda.... fiquei doido

 

Eu recomendo você fazer consultas das funções enquanto estiver programando, porque isso dá uma noção enorme do como você vai fazer o seu código e quais são as limitações do LUA no otserver.

Segue o link abaixo com a documentação do TFS 0.4:

https://github.com/otservme/global860/blob/master/sources/doc/LUA_FUNCTIONS

Editado por marcot (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
10 horas atrás, bpm91 disse:

aproveitando que vc aparenta entender bastante de 0.4 saberia me dizer como faço pro meu exori usar apenas skills e lvl. e remover a arma dele?

 

@bpm91

Segue abaixo o script de exori que estou utilizando:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)

local area = createCombatArea(AREA_SQUARE1X1)
setCombatArea(combat, area)

function onGetFormulaValues(cid, level, skill, attack, factor)
	local skillTotal, levelTotal = skill + attack, level / 5
	return -(skillTotal * 0.5 + levelTotal), -(skillTotal * 1.5 + levelTotal)
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
function onCastSpell(cid, var)
	return doCombat(cid, combat, var)
end

Note que temos ali uma função onGetFormulaValues, onde temos uma tupla sendo atribuida às variáveis skillTotal e levelTotal, que recebem:

skillTotal = skill + attack
levelTotal = level / 5

 

Estou supondo que o parâmetro attack corresponde ao ataque da arma que o jogador tem equipada, então para tirar o ataque dela da fórmula simplesmente troco a função onGetFormulaValues por esta:

function onGetFormulaValues(cid, level, skill, attack, factor)
	local skillTotal, levelTotal = skill, level / 5
	return -(skillTotal * 0.5 + levelTotal), -(skillTotal * 1.5 + levelTotal)
end

 

Teste no meu servidor e a arma, de fato, parou de influenciar no nível, mas é provável que você precise modificar a fórmula de damage.

Editado por marcot (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
1 hora atrás, marcot disse:

@bpm91

Segue abaixo o script de exori que estou utilizando:


local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)

local area = createCombatArea(AREA_SQUARE1X1)
setCombatArea(combat, area)

function onGetFormulaValues(cid, level, skill, attack, factor)
	local skillTotal, levelTotal = skill + attack, level / 5
	return -(skillTotal * 0.5 + levelTotal), -(skillTotal * 1.5 + levelTotal)
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
function onCastSpell(cid, var)
	return doCombat(cid, combat, var)
end

Note que temos ali uma função onGetFormulaValues, onde temos uma tupla sendo atribuida às variáveis skillTotal e levelTotal, que recebem:


skillTotal = skill + attack
levelTotal = level / 5

 

Estou supondo que o parâmetro attack corresponde ao ataque da arma que o jogador tem equipada, então para tirar o ataque dela da fórmula simplesmente troco a função onGetFormulaValues por esta:


function onGetFormulaValues(cid, level, skill, attack, factor)
	local skillTotal, levelTotal = skill, level / 5
	return -(skillTotal * 0.5 + levelTotal), -(skillTotal * 1.5 + levelTotal)
end

 

Teste no meu servidor e a arma, de fato, parou de influenciar no nível, mas é provável que você precise modificar a fórmula de damage.

 

eu tentei mas segue batendo mais forte com a arma, tb fui em spells e tirei o needweapon"1" e coloquei 0

que estranho eu copiei exatamente oq vc me mandou.

Link para o post
Compartilhar em outros sites
23 minutos atrás, bpm91 disse:

eu tentei mas segue batendo mais forte com a arma, tb fui em spells e tirei o needweapon"1" e coloquei 0

que estranho eu copiei exatamente oq vc me mandou.

 

Você poderia postar como ficou o script após a modificação?

Link para o post
Compartilhar em outros sites

fiz como vc disse

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)

local area = createCombatArea(AREA_SQUARE1X1)
setCombatArea(combat, area)

function onGetFormulaValues(cid, level, skill, attack, factor)
    local skillTotal, levelTotal = skill, level / 5
    return -(skillTotal * 0.5 + levelTotal), -(skillTotal * 1.5 + levelTotal)
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
function onCastSpell(cid, var)
    return doCombat(cid, combat, var)
end

Link para o post
Compartilhar em outros sites

Estranho isso, porque aqui funcionou direitinho, você tem certeza que alterou os scripts corretos e deu o reload spells?

 

Sem arma depois da modificação:

image.png

 

Com arma depois da modificação:

image.png

 

Com arma antes da modificação:

image.png

 

Sem arma antes da modificação:

image.png

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

segue imagens com script


local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)

local area = createCombatArea(AREA_SQUARE1X1)
setCombatArea(combat, area)

function onGetFormulaValues(cid, level, skill, attack, factor)
    local skillTotal, levelTotal = skill, level / 5
    return -(skillTotal * 0.5 + levelTotal), -(skillTotal * 1.5 + levelTotal)
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
function onCastSpell(cid, var)
    return doCombat(cid, combat, var)
end
 

Screenshot_2.jpg

Screenshot_3.jpg

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo