O comando SC_INCSTR não existe?

buczak

New member
Messages
52
Points
0
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á.

 
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

 
Last edited by a moderator:
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?

 
Last edited by a moderator:
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?
 
Last edited by a moderator:
no status.h troque

SC_MYCUSTOM, 



por

SC_MYCUSTOM = 590, 



e no const.txt use 590

 
Funcionou perfeito!!!

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

Obrigado, abraço!

 
Back
Top