Maciel

retirar pulo de azura e ataque mortal
Retirar Pulo de Azura e Ataque mortal

6 posts neste tópico

Boa noite meus amigos! :D

Bom já pesquisei vários fóruns  sobre o que gostaria de fazer, e nenhum conseguiu fazer do jeito certo o jeito "correto".

bom, simplesmente gostaria de ajusta o Punho de Asura e o Ataque Mortal para fica justamente igual antigamente, igual os Emuladores antigos....  mas as linhas de Script atuais são diferentes...   Simplesmente gostaria que o Champ e o Ninja  voltasse a solta  Asura e Ataque Mortal igual antigamente sem esse salto horrível que tem agora nos novos emuladores.

Formula original:

case NJ_ISSEN:
        case MO_EXTREMITYFIST:
            {
                short x, y, i = 2; // Move 2 cells for Issen(from target)
                struct block_list *mbl = bl;
                short dir = 0;

                skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);

                if( skill_id == MO_EXTREMITYFIST ) {
                    mbl = src;
                    i = 3; // for Asura(from caster)
                    status->set_sp(src, 0, 0);
                    status_change_end(src, SC_EXPLOSIONSPIRITS, INVALID_TIMER);
                    status_change_end(src, SC_BLADESTOP, INVALID_TIMER);
#ifdef RENEWAL
                    sc_start(src, src,SC_EXTREMITYFIST2,100,skill_lv,skill->get_time(skill_id,skill_lv));
#endif // RENEWAL
                } else {
                    status_change_end(src, SC_NJ_NEN, INVALID_TIMER);
                    status_change_end(src, SC_HIDING, INVALID_TIMER);
#ifdef RENEWAL
                    status->set_hp(src, max(status_get_max_hp(src)/100, 1), 0);
#else // not RENEWAL
                    status->set_hp(src, 1, 0);
#endif // RENEWAL
                }
                dir = map->calc_dir(src,bl->x,bl->y);
                if( dir > 0 && dir < 4) x = -i;
                else if( dir > 4 ) x = i;
                else x = 0;
                if( dir > 2 && dir < 6 ) y = -i;
                else if( dir == 7 || dir < 2 ) y = i;
                else y = 0;
                if ((mbl == src || (!map_flag_gvg2(src->m) && !map->list[src->m].flag.battleground))) { // only NJ_ISSEN don't have slide effect in GVG
                    if (!(unit->movepos(src, mbl->x+x, mbl->y+y, 1, 1))) {
                        // The cell is not reachable (wall, object, ...), move next to the target
                        if (x > 0) x = -1;
                        else if (x < 0) x = 1;
                        if (y > 0) y = -1;
                        else if (y < 0) y = 1;

                        unit->movepos(src, bl->x+x, bl->y+y, 1, 1);
                    }
                    clif->slide(src, src->x, src->y);
                    clif->fixpos(src);
                    clif->spiritball(src);
                }
            }
            break;

o mais próximo que cheguei o char fica parado e asura sai.

case MO_EXTREMITYFIST:
{
short x, y, i = 2; // Move 2 cells for Issen(from target)
struct block_list *mbl = bl;
short dir = 0;
 
skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
 
if( skill_id == MO_EXTREMITYFIST ) {
mbl = src;
i = 0; // for Asura(from caster)
status->set_sp(src, 0, 0);
status_change_end(src, SC_EXPLOSIONSPIRITS, INVALID_TIMER);
status_change_end(src, SC_BLADESTOP, INVALID_TIMER);
 
#ifdef RENEWAL
sc_start(src,SC_EXTREMITYFIST2,10,skill_lv,skill->get_time(skill_id,skill_lv));
#endif // RENEWAL
} else {
status_change_end(src, SC_NJ_NEN, INVALID_TIMER);
status_change_end(src, SC_HIDING, INVALID_TIMER);
#ifdef RENEWAL
status->set_hp(src, max(status_get_max_hp(src)/100, 1), 0);
#else // not RENEWAL
status->set_hp(src, 1, 0);
#endif // RENEWAL
}
dir = map->calc_dir(src,bl->x,bl->y);
if( dir > 0 && dir < 1) x = -i;
else if( dir > 1 ) x = i;
else x = 0;
if( dir > 0 && dir < 2 ) y = -i;
else if( dir == 7 || dir < 2 ) y = i;
else y = 0;
if( mbl == src || (!map_flag_gvg2(src->m) && !map->list[src->m].flag.battleground)) // only NJ_ISSEN don't have slide effect in GVG
{
clif->spiritball(src);
}
}
break;

 

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para alterar a distância ao usar uma das habilidades no alvo é só procurar por isso

short x, y, i = 2; // Move 2 cells for Issen(from target)

é auto explicativo, "Mover 2 células de distância do alvo" , onde tem i = 2 tenta mudar para 0 ou 1 para ver se fica do jeito que você quer. Não se esqueça de salvar o arquivo e recompilar o emulador.

Editado por iMihael
0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq diabos o meu texto ficou com as quebras de linhas dessa forma o-o ??? Não consegui corrigir.

Eu não sei se vai funcionar no brathena, mas no rathena eu utilizo este código e está funcionando sem problemas.

https://pastebin.com/bmEz5qja

E mais algumas observações:

O código acima vai tirar aquela movimentação brusca do asura e do ataque mortal, mas não vai trazer

devolta o efeito da fumaça (se o char estiver stant cast) e também aquela movimentação onde o champ

parecia estar patinando.

Depois de muito procurar, descobri que essas características do asura (fumaça stant cast e boneco patinando)

estavam ligadas aos hexeds 2009 (ou abaixo disso).

Eu até tentei contornar o problema editando o skilleffectinfolist.lub, mas sem sucesso até agora.

Editado por PhalanX
0

Compartilhar este post


Link para o post
Compartilhar em outros sites
#ifndef RENEWAL
	case NJ_ISSEN:
		status_change_end(src, SC_NEN, INVALID_TIMER);
		status_change_end(src, SC_HIDING, INVALID_TIMER);
#endif
		// fall through
	case MO_EXTREMITYFIST:
		{
			//short x, y, i = 2; // Move 2 cells for Issen(from target)
			struct block_list *mbl = bl;
			short dir = 0;
			
			skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
			
			if( skill_id == MO_EXTREMITYFIST )
			{
				mbl = src;
				status_set_sp(src, 0, 0);
				status_change_end(src, SC_EXPLOSIONSPIRITS, INVALID_TIMER);
				status_change_end(src, SC_BLADESTOP, INVALID_TIMER);
#ifdef RENEWAL
				sc_start(src,src,SC_EXTREMITYFIST2,100,skill_lv,skill_get_time(skill_id,skill_lv));
#endif
			}else
				status_set_hp(src,
#ifdef RENEWAL
				max(status_get_max_hp(src)/100, 1)
#else
				1
#endif
				, 0);
		}
		//Client expects you to move to target regardless of distance
		{				
			struct unit_data *ud = unit_bl2ud(src);
			short dx,dy;
			int i,speed;
			i = skill_id == MO_EXTREMITYFIST?1:2; //Move 2 cells for Issen, 1 for Asura
			dx = bl->x - src->x;
			dy = bl->y - src->y;
			if (dx < 0) dx-=i;
			else if (dx > 0) dx+=i;
			if (dy < 0) dy-=i;
			else if (dy > 0) dy+=i;
			if (!dx && !dy) dy++;
			if (map_getcell(src->m, src->x+dx, src->y+dy, CELL_CHKNOPASS))
			{
				dx = bl->x;
				dy = bl->y;
			} else {
				dx = src->x + dx;
				dy = src->y + dy;
			}

			if(unit_walktoxy(src, dx, dy, 2) && ud) {
				//Increase can't walk delay to not alter your walk path
				ud->canmove_tick = tick;
				speed = status_get_speed(src);
				for (i = 0; i < ud->walkpath.path_len; i ++)
				{
					if(ud->walkpath.path[i]&1)
						ud->canmove_tick+=7*speed/5;
					else
						ud->canmove_tick+=speed;
				}
			}
		}
		break;

 

0

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 horas atrás, Oviler Quin disse:
#ifndef RENEWAL
	case NJ_ISSEN:
		status_change_end(src, SC_NEN, INVALID_TIMER);
		status_change_end(src, SC_HIDING, INVALID_TIMER);
#endif
		// fall through
	case MO_EXTREMITYFIST:
		{
			//short x, y, i = 2; // Move 2 cells for Issen(from target)
			struct block_list *mbl = bl;
			short dir = 0;
			
			skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
			
			if( skill_id == MO_EXTREMITYFIST )
			{
				mbl = src;
				status_set_sp(src, 0, 0);
				status_change_end(src, SC_EXPLOSIONSPIRITS, INVALID_TIMER);
				status_change_end(src, SC_BLADESTOP, INVALID_TIMER);
#ifdef RENEWAL
				sc_start(src,src,SC_EXTREMITYFIST2,100,skill_lv,skill_get_time(skill_id,skill_lv));
#endif
			}else
				status_set_hp(src,
#ifdef RENEWAL
				max(status_get_max_hp(src)/100, 1)
#else
				1
#endif
				, 0);
		}
		//Client expects you to move to target regardless of distance
		{				
			struct unit_data *ud = unit_bl2ud(src);
			short dx,dy;
			int i,speed;
			i = skill_id == MO_EXTREMITYFIST?1:2; //Move 2 cells for Issen, 1 for Asura
			dx = bl->x - src->x;
			dy = bl->y - src->y;
			if (dx < 0) dx-=i;
			else if (dx > 0) dx+=i;
			if (dy < 0) dy-=i;
			else if (dy > 0) dy+=i;
			if (!dx && !dy) dy++;
			if (map_getcell(src->m, src->x+dx, src->y+dy, CELL_CHKNOPASS))
			{
				dx = bl->x;
				dy = bl->y;
			} else {
				dx = src->x + dx;
				dy = src->y + dy;
			}

			if(unit_walktoxy(src, dx, dy, 2) && ud) {
				//Increase can't walk delay to not alter your walk path
				ud->canmove_tick = tick;
				speed = status_get_speed(src);
				for (i = 0; i < ud->walkpath.path_len; i ++)
				{
					if(ud->walkpath.path[i]&1)
						ud->canmove_tick+=7*speed/5;
					else
						ud->canmove_tick+=speed;
				}
			}
		}
		break;

 

Está dando erro ao adicionar esses script: 

hghghghghgh.png

Sem título.png

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!


Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.


Entrar Agora