Ir para conteúdo

Featured Replies

Postado
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

  • Respostas 11
  • Visualizações 527
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • 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.

  • Testa algo assim: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYP

  • 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,

Posted Images

Postado
  • Autor

@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)

Postado
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

Postado
  • Autor
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 ==========

 

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo