CO
dúvida

[Encerrado] Duvidir Dano Em Player

Por coyotestark, 20 de jul. de 2012 em Tópicos Sem Resposta

duvidir dano em player
6
1k
coyotestarkC
20 de julho de 2012 às 12:29

como vcs sabem, o dano em player é divido, em alguns server em 2, outros 3, etc,

queria saber como posso dividir o dano em player no meu ot, para 4x,

exemplo: bato 400 eh monstro, bater 100 em pessoa.

OneshotO
20 de julho de 2012 às 12:51

Você pode fazer isso no combat.cpp dentro do seu servidor. Precisamente nessas funções abaixo:

 

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(!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(!g_game.combatChangeMana(caster, target, change))
	return false;

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

 

Está vendo essa linha em comum nas duas funções?

 

change = change / 2;

 

Mude para:

 

change = change / 4;

 

E é só compilar novamente. :)

Editado Julho 20 por Oneshot

coyotestarkC
20 de julho de 2012 às 13:07

iji rsrs, vai ser osso, tenho uma distro aki, mas o server que tenho nao é via distro, e pra eu compilar outro, vou ter que refazer umas coisinhas, vc sabe como inserir uma nova functions? pq tem um script que nao pega no TFS que tenho, se eu conseguir adicionar essa nova função vai ser otimo, se nao vou tentar me virar do jeito que der. vou tentar compilar aki com isto ai que vc me passou.

 

mas nao tem como fazer sem mecher na distro? é so por curiosidade rs

Editado Julho 20 por CoyoteStark

OneshotO
20 de julho de 2012 às 13:15

Dá sim para fazer sem ser por edição C++ com o creatureevent onStatsChange, o problema é que ficaria um script muito ruim e pouco preciso. Qualquer coisa, só falar que função que você precisa e que versão do TFS você quer que compilo para você.

Editado Julho 20 por Oneshot

coyotestarkC
20 de julho de 2012 às 20:05

seriao? uiui, rs assim eu to aprendendo essas coisa sabe, pq nao gosto de ficar pedindo coisas, mas as vezes é bom uma ajudinha. eu vou compilar aki com essa parada, e ver os erros de meus scripts ai te falo lek,

Edit

Afs nao to entendendo, eu to compilando, mudei de 8.50 para 8.52 e ele continua pedindo 8.50.

nao to entendendo o que ta faltando, ja usei script pra pular items.otb, tudo sobre versao do client que tava 8.5 e 850 ja mudei pra 52 e mesmo assim ele pedi client 8.5 e até o nome

only clients with protocol 8.5 allowed! eu mudei pra 8.52 e mesmo assim ele pedi "only clients with protocol 8.5 allowed!"

mechi em protocol.cpp;

resources.cpp

items.cpp

itemsload.h

Editado Julho 20 por CoyoteStark

5 anos depois...
StigalS
20 de abril de 2018 às 00:17
A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta.

+ Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda.
* Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado.