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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...

Important Information

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