Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Galera eu criei este Weapon

Spoiler

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

function onGetFormulaValues(cid, weapon, sword, level)
min = -(((weapon*2.0) + (((sword/5)*16.0)) + (level*6.0)))
max = -(((weapon*2.0) + (((sword/5)*16.0)) + (level*6.0)))
return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
 
function onUseWeapon(cid, var)
    local ret = doCombat(cid, combat, var)
    if(ret == LUA_ERROR) then
        return LUA_ERROR
    end
    return true
end

 

Porem quando eu ataco um Dragon eu hito 570 ou 575

e quando eu ataco um player, mesmo ele estando sem nenhum equipe.. eu bato 280 - 290

tem algum lugar que de pra configurar...ou o monstro apanha menos.. ou o player apanha mais pra nivelar os hits???

Link para o post
Compartilhar em outros sites
2 horas atrás, robi123 disse:

Galera eu criei este Weapon

  Ocultar conteúdo

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

function onGetFormulaValues(cid, weapon, sword, level)
min = -(((weapon*2.0) + (((sword/5)*16.0)) + (level*6.0)))
max = -(((weapon*2.0) + (((sword/5)*16.0)) + (level*6.0)))
return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
 
function onUseWeapon(cid, var)
    local ret = doCombat(cid, combat, var)
    if(ret == LUA_ERROR) then
        return LUA_ERROR
    end
    return true
end

 

Porem quando eu ataco um Dragon eu hito 570 ou 575

e quando eu ataco um player, mesmo ele estando sem nenhum equipe.. eu bato 280 - 290

tem algum lugar que de pra configurar...ou o monstro apanha menos.. ou o player apanha mais pra nivelar os hits???

Normal, qualquer magia/arma bate menos em jogadores, mesmo sem itens. Em todos os servidores/distros...

Provavelmente isso consta nas sources, mas não sei exatamente onde, posso procurar.

asdukeeh.jpg

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

Normal, qualquer magia/arma bate menos em jogadores, mesmo sem itens. Em todos os servidores/distros...

Provavelmente isso consta nas sources, mas não sei exatamente onde, posso procurar.

 

 

Eae @DukeeH

Se vc achar me da um toque ai ;) o/

 

vlw

Link para o post
Compartilhar em outros sites
29 minutos atrás, robi123 disse:

 

 

Eae @DukeeH

Se vc achar me da um toque ai ;) o/

 

vlw

Testa algo assim:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1)
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

function onGetFormulaValues(cid, weapon, sword, level)
	min = -(((weapon*2.0) + (((sword/5)*16.0)) + (level*6.0)))
	max = -(((weapon*2.0) + (((sword/5)*16.0)) + (level*6.0)))
	local dobromin = min
	local dobromax = max
	return min, max
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
 
function onTargetCreature(cid, target)
  if(isPlayer(target)) then
      doTargetCombatHealth(cid, target, COMBAT_PHYSICALDAMAGE, dobromin, dobromax, CONST_ME_NONE)
  end
  return true
end 
 
function onUseWeapon(cid, var)
	return doCombat(cid, combat, var)
end

Ele vê se o alvo é player e dobra o dano, mas se quiser em todas as armas e tal, o melhor seria sources.

Vou procurar sobre.

 

Edit.

Outra idéia seria fazer um creaturescript pra cada dano que um jogador recebe, se for de outro jogador, multiplicar por 2.

Funcionaria para ataque e magia e não precisaria editar tudo.

 

creaturescripts/creaturescripts.xml

<event type="statschange" name="danoplayers" event="script" value="danoplayers.lua"/>

creaturescripts/scripts/danoplayers.lua

function onStatsChange(cid, attacker, type, combat, value)
	if isPlayer(attacker) and isPlayer(cid) and type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS then
		doTargetCombatHealth(attacker, cid, combat, -value*2, -value*2, 255)
	end
	return true
end

creaturescripts/scripts/login.lua

registerCreatureEvent(cid, "danoplayers")

 

Editado por DukeeH (veja o histórico de edições)

asdukeeh.jpg

Link para o post
Compartilhar em outros sites

@DukeeH Cara voce é fera, vou testar aqui ja te digo ;D

@DukeeH

eu deixei assim ó -- agora ta batendo um pouco menos que de dragon o/

se acha que se mudar na source poderia ficar melhor no sistema.. do server não ficar muito pesado calculando todas essas informações em scripts?

 

function onStatsChange(cid, attacker, type, combat, value)
	if isPlayer(attacker) and isPlayer(cid) and type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS then
		doTargetCombatHealth(attacker, cid, combat, -value*0.9, -value*0.9, 255)
	end
	return true
end

 

Link para o post
Compartilhar em outros sites
12 minutos atrás, robi123 disse:

@DukeeH Cara voce é fera, vou testar aqui ja te digo ;D

@DukeeH

eu deixei assim ó -- agora ta batendo um pouco menos que de dragon o/

se acha que se mudar na source poderia ficar melhor no sistema.. do server não ficar muito pesado calculando todas essas informações em scripts?

 


function onStatsChange(cid, attacker, type, combat, value)
	if isPlayer(attacker) and isPlayer(cid) and type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS then
		doTargetCombatHealth(attacker, cid, combat, -value*0.9, -value*0.9, 255)
	end
	return true
end

 

O problema do "um pouquinho menos" é porque nas versões mais velhas, essa função onStatsChange tem um problema:

Você hita 200 do player, (descontando defesas)

Essa função entra, pega o 200, multiplica por 2.

Esse valor (400) passa de novo pela defesa.

 

Estranho você colocar 0.9 e ele bater mais, isso ai era pra reduzir o dano em 10%. Quanto mais ali mais dano vai dar, vai tentando adequar a como ficar melhor.

Pesado eu não diria, porque lua é bem leve. Mas pelas questões que falei a cima o melhor mesmo seria nas sources, ainda não tirar um tempo pra procurar.

Mas em algum lugar das sources ele declara que os danos em player (seja magia ou ataque) são divididos pela metade dos causados em monstros.

Se retirar isso ficaria igual e de forma mais limpa que em lua.

asdukeeh.jpg

Link para o post
Compartilhar em outros sites

@DukeeH

do jeito que eu coloquei ali ficou show do jeito que eu precisava mesmo

nem precisei mexer nos itens..unica coisa que reparei é que sem equipe e com equip muda pouca coisa..

sem equip bate uns 500

com os melhor equipe do jogo bate 480

mesmo assim se me deu uma luz o/

depois vou adequar os equips com um pouco mais de def

 

se voce achar algo das sources da um toque

Editado por robi123
letras erradas (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
7 minutos atrás, robi123 disse:

@DukeeH

do jeito que eu coloquei ali ficou show do jeito que eu precisava mesmo

nem precisei mexer nos itens..unica coisa que reparei é que sem equipe e com equip muda pouca coisa..

sem equip bate uns 500

com os melhor equipe do jogo bate 480

mesmo assim se me deu uma luz o/

depois vou adequar os equips com um pouco mais de def

 

Brother, você sabe compilar?

Abre combat.cpp nas sources, procura por CombatHealthFunc.

Essa função e a de baixo (CombatManaFunc)

Troca as duas por isso:

bool Combat::CombatHealthFunc(Creature* caster, Creature* target, const CombatParams& params, void* data)
{
	int32_t change = 0;
	if(Combat2Var* var = (Combat2Var*)data)
	{
		change = var->change;
		if(!change)
			change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL);
	}

	if(g_game.combatBlockHit(params.combatType, caster, target, change, params.blockedByShield, params.blockedByArmor))
		return false;

	if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() == SKULL_BLACK)
		change = change*2;
	
	if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() != SKULL_BLACK)
		change = change;

	if(!g_game.combatChangeHealth(params.combatType, caster, target, change, params.effects.hit, params.effects.color))
		return false;

	CombatConditionFunc(caster, target, params, NULL);
	CombatDispelFunc(caster, target, params, NULL);
	return true;
}

bool Combat::CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, void* data)
{
	int32_t change = 0;
	if(Combat2Var* var = (Combat2Var*)data)
	{
		change = var->change;
		if(!change)
			change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL);
	}

	if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() == SKULL_BLACK)
		change = change*2;
	
	if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() != SKULL_BLACK)
		change = change;

	if(!g_game.combatChangeMana(caster, target, change))
		return false;

	CombatConditionFunc(caster, target, params, NULL);
	CombatDispelFunc(caster, target, params, NULL);
	return true;
}

Ai compila e testa sem o creaturescript, por ser uma versão das mais antigas, acho melhor manipular os danos por sources mesmo, ai acho que o *2 seria o valor correto (dobro).

asdukeeh.jpg

Link para o post
Compartilhar em outros sites
1 minuto atrás, DukeeH disse:

Brother, você sabe compilar?

Abre combat.cpp nas sources, procura por CombatHealthFunc.

Essa função e a de baixo (CombatManaFunc)

Troca as duas por isso:


bool Combat::CombatHealthFunc(Creature* caster, Creature* target, const CombatParams& params, void* data)
{
	int32_t change = 0;
	if(Combat2Var* var = (Combat2Var*)data)
	{
		change = var->change;
		if(!change)
			change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL);
	}

	if(g_game.combatBlockHit(params.combatType, caster, target, change, params.blockedByShield, params.blockedByArmor))
		return false;

	if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() == SKULL_BLACK)
		change = change*2;
	
	if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() != SKULL_BLACK)
		change = change;

	if(!g_game.combatChangeHealth(params.combatType, caster, target, change, params.effects.hit, params.effects.color))
		return false;

	CombatConditionFunc(caster, target, params, NULL);
	CombatDispelFunc(caster, target, params, NULL);
	return true;
}

bool Combat::CombatManaFunc(Creature* caster, Creature* target, const CombatParams& params, void* data)
{
	int32_t change = 0;
	if(Combat2Var* var = (Combat2Var*)data)
	{
		change = var->change;
		if(!change)
			change = random_range(var->minChange, var->maxChange, DISTRO_NORMAL);
	}

	if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() == SKULL_BLACK)
		change = change*2;
	
	if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() != SKULL_BLACK)
		change = change;

	if(!g_game.combatChangeMana(caster, target, change))
		return false;

	CombatConditionFunc(caster, target, params, NULL);
	CombatDispelFunc(caster, target, params, NULL);
	return true;
}

Ai compila e testa sem o creaturescript, por ser uma versão das mais antigas, acho melhor manipular os danos por sources mesmo, ai acho que o *2 seria o valor correto (dobro).

 

 

Eu não sei compilar até abri um chamado ali pra ver se alguém compilava pra mim em 64bits baixei varios programas e nao deu certo

se voce tiver algum dica pra me passar ou site

 

Minha Source

 

meuot.JPG

@DukeeH

eu quase consigo fazer mais da este erro

eu tentei segui um tuto na net mais nao sei oque falta..

 

1>ResourceCompile:
1>  All outputs are up-to-date.
1>ManifestResourceCompile:
1>  All outputs are up-to-date.
1>LINK : warning LNK4044: unrecognized option '/lboost_system'; ignored
1>LINK : warning LNK4044: unrecognized option '/lgmp'; ignored
1>LINK : warning LNK4044: unrecognized option '/llua5.1'; ignored
1>LINK : warning LNK4044: unrecognized option '/lmysql'; ignored
1>LINK : warning LNK4044: unrecognized option '/lboost_regex'; ignored
1>LINK : warning LNK4044: unrecognized option '/lsqlite3'; ignored
1>LINK : warning LNK4044: unrecognized option '/lwsock32'; ignored
1>LINK : warning LNK4044: unrecognized option '/lxml2'; ignored
1>LINK : warning LNK4044: unrecognized option '/lws2_32'; ignored
1>LINK : warning LNK4044: unrecognized option '/s'; ignored
1>LINK : warning LNK4044: unrecognized option '/lboost_filesystem'; ignored
1>LINK : warning LNK4044: unrecognized option '/sqlite'; ignored
1>LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/LTCG' specification
1>  Generating code
1>  Finished generating code
1>LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
1>
1>Build FAILED.
1>
1>Time Elapsed 00:03:31.97
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

 

Link para o post
Compartilhar em outros sites

@DukeeH Parcero

 

esse seu combat.. deu certinhoo... um outro rapaz compilo pra mim e eu testei.

muito obrigado ai eim o/

Link para o post
Compartilhar em outros sites
1 minuto atrás, robi123 disse:

@DukeeH Parcero

 

esse seu combat.. deu certinhoo... um outro rapaz compilo pra mim e eu testei.

muito obrigado ai eim o/

É sem duvidas a melhor forma, lua (pelo menos em versões antigas) e meio enjambrado pra alterar danos.

Não consegui compilar pra ti porque estou no trabalho e não roda o Visual Studio.

Abraço.

asdukeeh.jpg

Link para o post
Compartilhar em outros sites
19 minutos atrás, DukeeH disse:

É sem duvidas a melhor forma, lua (pelo menos em versões antigas) e meio enjambrado pra alterar danos.

Não consegui compilar pra ti porque estou no trabalho e não roda o Visual Studio.

Abraço.

mato a pau o/

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