Jump to content
  • 0
Sign in to follow this  
buczak

O comando SC_INCSTR não existe?

Question

Olá, estou criando um script para buffs de atributos do char e percebi que não existe o comando para aumentar o atributo da força, que seria (teoricamente) o SC_INCSTR.

 

Todos os outros atributos possuem seus comandos para aumentar: SC_INCAGI,SC_INCVIT,SC_INCINT,SC_INCDEX  e SC_INCLUK.

 

Pelo que eu entendi o comando que executa o buff na FOR(STR) seria o SC_CHASEWALK2, porém este comando mostra um StatIcon na tela, o que eu não queria que aparecesse, pois vou usar meu próprio StatIcon.

 

Existe algum outro comando para executar buff na FOR(STR), como por exemplo: SC_INCSTR?

 

Ou eu estou totalmente equivocado, rsrsrs.

 

Obrigado desde já.

Share this post


Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 0

no status.h troque

 

 

SC_MYCUSTOM, 

 

 

 

por

 

 

SC_MYCUSTOM = 590, 

 

 

 

e no const.txt use 590

Share this post


Link to post
Share on other sites
  • 0

não especificamente, como podemos ver no código:

 

unsigned short status_calc_str(struct block_list *bl, struct status_change *sc, int str){	if(!sc || !sc->count)		return cap_value(str,0,USHRT_MAX);	if(sc->data[SC_FULL_THROTTLE])		str += str * 20 / 100;	if(sc->data[SC_HARMONIZE]) {		str -= sc->data[SC_HARMONIZE]->val2;		return (unsigned short)cap_value(str,0,USHRT_MAX);	}	if(sc->data[SC_BEYOND_OF_WARCRY])		str += sc->data[SC_BEYOND_OF_WARCRY]->val3;	if(sc->data[SC_INCALLSTATUS])		str += sc->data[SC_INCALLSTATUS]->val1;	if(sc->data[SC_CHASEWALK2])		str += sc->data[SC_CHASEWALK2]->val1;	if(sc->data[SC_FOOD_STR])		str += sc->data[SC_FOOD_STR]->val1;	if(sc->data[SC_FOOD_STR_CASH])		str += sc->data[SC_FOOD_STR_CASH]->val1;	if(sc->data[SC_GDSKILL_BATTLEORDER])		str += 5;	if(sc->data[SC_LEADERSHIP])		str += sc->data[SC_LEADERSHIP]->val1;	if(sc->data[SC_SHOUT])		str += 4;	if(sc->data[SC_TRUESIGHT])		str += 5;	if(sc->data[SC_STRUP])		str += 10;	if(sc->data[SC_NJ_NEN])		str += sc->data[SC_NJ_NEN]->val1;	if(sc->data[SC_BLESSING]){		if(sc->data[SC_BLESSING]->val2)			str += sc->data[SC_BLESSING]->val2;		else			str >>= 1;	}	if(sc->data[SC_MARIONETTE_MASTER])		str -= ((sc->data[SC_MARIONETTE_MASTER]->val3)>>16)&0xFF;	if(sc->data[SC_MARIONETTE])		str += ((sc->data[SC_MARIONETTE]->val3)>>16)&0xFF;	if(sc->data[SC_SOULLINK] && sc->data[SC_SOULLINK]->val2 == SL_HIGH)		str += ((sc->data[SC_SOULLINK]->val3)>>16)&0xFF;	if(sc->data[SC_GIANTGROWTH])		str += 30;	if(sc->data[SC_SAVAGE_STEAK])		str += sc->data[SC_SAVAGE_STEAK]->val1;	if(sc->data[SC_INSPIRATION])		str += sc->data[SC_INSPIRATION]->val3;	if(sc->data[SC_STOMACHACHE])		str -= sc->data[SC_STOMACHACHE]->val1;	if(sc->data[SC_KYOUGAKU])		str -= sc->data[SC_KYOUGAKU]->val3;	return (unsigned short)cap_value(str,0,USHRT_MAX);}

 

mas caso vc precise tanto é só adicionar um novo SC_ pois é facilimo

 

@edit

bom tem esse tal de SC_STRUP

Edited by evilpuncker

Share this post


Link to post
Share on other sites
  • 0

Obrigado pela resposta, vou ver então como adiciona um novo SC_ para a funcionalidade de incrementar a STR.

Saberia me dizer um wiki ou site sobre o assunto?

 

Desde já agradeço!

 

Encontrei esse wiki http://herc.ws/wiki/Adding_new_statuses, seria esses os passos para adicionar um SC_ como eu quero?

Edited by buczak

Share this post


Link to post
Share on other sites
  • 0

evilpuncker, saberia me dizer o porque desse erro no map-server:

 

[Error]: status_change_start: invalid status change (2999)

 

 

Esses foram os passos que eu fiz:

 

No status.c eu adicionei as seguintes linhas para meu novo SC_ com o nome de SC_MYCUSTOM:

//Other SC which are not necessarily associated to skills.        status->ChangeFlagTable[SC_CHASEWALK2] |= SCB_STR;	status->ChangeFlagTable[SC_MYCUSTOM] |= SCB_STR;	status->ChangeFlagTable[SC_INCAGI] |= SCB_AGI;/*==========================================* Apply shared stat mods from status changes [DracoRPG]*------------------------------------------*/unsigned short status_calc_str(struct block_list *bl, struct status_change *sc, int str){                if(sc->data[SC_STOMACHACHE])		str -= sc->data[SC_STOMACHACHE]->val1;	if(sc->data[SC_KYOUGAKU])		str -= sc->data[SC_KYOUGAKU]->val3;	if (sc->data[SC_MYCUSTOM])		str += sc->data[SC_MYCUSTOM]->val1;	return (unsigned short)cap_value(str,0,USHRT_MAX);} 

No status.h

// Status changes listing. These code are for use by the server.typedef enum sc_type {	SC_NONE = -1,        .        .        .        // This is our custom status effect	SC_MYCUSTOM, // 2999	SC_MAX, //Automatically updated max, used in for's to check we are within bounds.} sc_type;

E no dbconst.txt

// 2014 Halloween EventSC_MTF_MHP	584SC_MTF_MSP	585SC_MTF_PUMPKIN	586SC_MTF_HITFLEE	587SC_MYCUSTOM	2999e_gasp	0e_what	1e_ho	2

 

Porém não incrementa o status str e ocorre o erro relatado no inicio do post.

Faltou algo ou eu fiz algo errado?

 

Obrigado!

 

@Edit

Pelo que eu vi meu SC_MYCUSTOM Type é maior que o SC_MAX type segundo essa função:

        if( type <= SC_NONE || type >= SC_MAX ) {		ShowError("status_change_start: invalid status change (%d)!n", type);		return 0;	}

Mas não importa o valor que eu coloque no dbconf.txt (ex. 2000, 2001, 2999), da sempre esse erro. Saberia me dizer se é por isso? E qual o arquivo que eu vejo o total do SC_MAX?

 

Edited by buczak

Share this post


Link to post
Share on other sites
  • 0

Funcionou perfeito!!!

 

Muito obrigado pela ajuda, realmente é bem simples, porém o wiki tem algumas falhas na explicação.

 

Obrigado, abraço!

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.