BlazingSpear Posted September 12, 2017 Posted September 12, 2017 (edited) im using this code but it doesnt work any more with latest revision if ( sd && tsc && sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_ROGUE && rand()%100 < 15 && ( skill_id == RG_STRIPWEAPON && tsc->data[SC_CP_WEAPON] || skill_id == RG_STRIPSHIELD && tsc->data[SC_CP_SHIELD] || skill_id == RG_STRIPARMOR && tsc->data[SC_CP_ARMOR] || skill_id == RG_STRIPHELM && tsc->data[SC_CP_HELM] ) ) { int item_id = 7139; // Glistening Coat int ii; ARR_FIND( 0, MAX_INVENTORY, ii, sd->status.inventory[ii].nameid == item_id ); if ( ii < MAX_INVENTORY ) { pc_delitem( sd, ii, 1, 0, 0); switch ( skill_id ) { case RG_STRIPWEAPON: status_change_end( bl, SC_CP_WEAPON, INVALID_TIMER ); sc_start( bl, SC_STRIPWEAPON, 100, skill_lv, d ); break; case RG_STRIPSHIELD: status_change_end( bl, SC_CP_SHIELD, INVALID_TIMER ); sc_start( bl, SC_STRIPSHIELD, 100, skill_lv, d ); break; case RG_STRIPARMOR: status_change_end( bl, SC_CP_ARMOR, INVALID_TIMER ); sc_start( bl, SC_STRIPARMOR, 100, skill_lv, d ); break; case RG_STRIPHELM: status_change_end( bl, SC_CP_HELM, INVALID_TIMER ); sc_start( bl, SC_STRIPHELM, 100, skill_lv, d ); break; } clif_skill_nodamage( src, bl, skill_id, skill_lv, i ); break; } } Edited September 17, 2017 by BlazingSpear Quote
0 Bringer Posted September 17, 2017 Posted September 17, 2017 (edited) sd->status.inventory this is not supported anymore on latest rathena here the working Src Code for Rogue Link Strip // By pass FCP when using single strip skills by 15%(requires Glistening Coat). if ( sd && tsc && sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_ROGUE && rand()%100 < 75 && ( skill_id == RG_STRIPWEAPON && tsc->data[SC_CP_WEAPON] || skill_id == RG_STRIPSHIELD && tsc->data[SC_CP_SHIELD] || skill_id == RG_STRIPARMOR && tsc->data[SC_CP_ARMOR] || skill_id == RG_STRIPHELM && tsc->data[SC_CP_HELM] ) ) { int item_id = 7139; // Glistening Coat int ii; ARR_FIND( 0, MAX_INVENTORY, ii, sd->inventory.u.items_inventory[ii].nameid == item_id ); if ( ii < MAX_INVENTORY ) { pc_delitem( sd, ii, 1, 0, 0, LOG_TYPE_CONSUME); switch ( skill_id ) { case RG_STRIPWEAPON: status_change_end( bl, SC_CP_WEAPON, INVALID_TIMER ); sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; case RG_STRIPSHIELD: status_change_end( bl, SC_CP_SHIELD, INVALID_TIMER ); sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; case RG_STRIPARMOR: status_change_end( bl, SC_CP_ARMOR, INVALID_TIMER ); sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; case RG_STRIPHELM: status_change_end( bl, SC_CP_HELM, INVALID_TIMER ); sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; } clif_skill_nodamage( src, bl, skill_id, skill_lv, i ); break; } } Edited September 17, 2017 by Bringer Quote
0 AinsLord Posted October 25, 2017 Posted October 25, 2017 (edited) i got error on this one // By pass FCP when using single strip skills by 15%(requires Glistening Coat). if ( sd && tsc && sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_ROGUE && rand()%100 < 75 && ( skill_id == RG_STRIPWEAPON && tsc->data[SC_CP_WEAPON] || skill_id == RG_STRIPSHIELD && tsc->data[SC_CP_SHIELD] || skill_id == RG_STRIPARMOR && tsc->data[SC_CP_ARMOR] || skill_id == RG_STRIPHELM && tsc->data[SC_CP_HELM] ) ) { int item_id = 7139; // Glistening Coat int ii; ARR_FIND( 0, MAX_INVENTORY, ii, sd->inventory.u.items_inventory[ii].nameid == item_id ); if ( ii < MAX_INVENTORY ) { pc_delitem( sd, ii, 1, 0, 0, LOG_TYPE_CONSUME); switch ( skill_id ) { case RG_STRIPWEAPON: status_change_end( bl, SC_CP_WEAPON, INVALID_TIMER ); sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; case RG_STRIPSHIELD: status_change_end( bl, SC_CP_SHIELD, INVALID_TIMER ); sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; case RG_STRIPARMOR: status_change_end( bl, SC_CP_ARMOR, INVALID_TIMER ); sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; case RG_STRIPHELM: status_change_end( bl, SC_CP_HELM, INVALID_TIMER ); sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; } clif_skill_nodamage( src, bl, skill_id, skill_lv, i ); break; } } here's the error skill.c: In function ‘skill_castend_nodamage_id’: skill.c:7678:31: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] ( skill_id == RG_STRIPWEAPON && tsc->data[SC_CP_WEAPON] || ^ skill.c:7680:28: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] skill_id == RG_STRIPARMOR && tsc->data[SC_CP_ARMOR] || ^ skill.c:7681:27: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] skill_id == RG_STRIPHELM && tsc->data[SC_CP_HELM] ) ) { ^ In file included from clan.h:12:0, from pc.h:19, from skill.c:17: skill.c:7690:22: error: ‘SC_WEAPON’ undeclared (first use in this function) sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))) ^ status.h:2316:78: note: in definition of macro ‘sc_start’ c_start(src, bl, type, rate, val1, tick) status_change_start(src,bl,type,100*(r ^ skill.c:7690:22: note: each undeclared identifier is reported only once for each function it appears in sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))) ^ status.h:2316:78: note: in definition of macro ‘sc_start’ c_start(src, bl, type, rate, val1, tick) status_change_start(src,bl,type,100*(r ^ skill.c:7690:79: error: expected ‘;’ before ‘)’ token sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); ^ skill.c:7690:79: error: expected statement before ‘)’ token skill.c:7694:79: error: expected ‘;’ before ‘)’ token sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); ^ skill.c:7694:79: error: expected statement before ‘)’ token skill.c:7698:79: error: expected ‘;’ before ‘)’ token sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); ^ skill.c:7698:79: error: expected statement before ‘)’ token skill.c:7702:79: error: expected ‘;’ before ‘)’ token sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); ^ skill.c:7702:79: error: expected statement before ‘)’ token make[1]: *** [obj/skill.o] Error 1 make[1]: Leaving directory `/root/rathena/src/map' make: *** [map] Error 2 Edited October 25, 2017 by whodhell Quote
0 Scylla Posted February 21, 2019 Posted February 21, 2019 On 10/25/2017 at 9:05 PM, AinsLord said: i got error on this one // By pass FCP when using single strip skills by 15%(requires Glistening Coat). if ( sd && tsc && sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_ROGUE && rand()%100 < 75 && ( skill_id == RG_STRIPWEAPON && tsc->data[SC_CP_WEAPON] || skill_id == RG_STRIPSHIELD && tsc->data[SC_CP_SHIELD] || skill_id == RG_STRIPARMOR && tsc->data[SC_CP_ARMOR] || skill_id == RG_STRIPHELM && tsc->data[SC_CP_HELM] ) ) { int item_id = 7139; // Glistening Coat int ii; ARR_FIND( 0, MAX_INVENTORY, ii, sd->inventory.u.items_inventory[ii].nameid == item_id ); if ( ii < MAX_INVENTORY ) { pc_delitem( sd, ii, 1, 0, 0, LOG_TYPE_CONSUME); switch ( skill_id ) { case RG_STRIPWEAPON: status_change_end( bl, SC_CP_WEAPON, INVALID_TIMER ); sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; case RG_STRIPSHIELD: status_change_end( bl, SC_CP_SHIELD, INVALID_TIMER ); sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; case RG_STRIPARMOR: status_change_end( bl, SC_CP_ARMOR, INVALID_TIMER ); sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; case RG_STRIPHELM: status_change_end( bl, SC_CP_HELM, INVALID_TIMER ); sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); break; } clif_skill_nodamage( src, bl, skill_id, skill_lv, i ); break; } } here's the error skill.c: In function ‘skill_castend_nodamage_id’: skill.c:7678:31: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] ( skill_id == RG_STRIPWEAPON && tsc->data[SC_CP_WEAPON] || ^ skill.c:7680:28: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] skill_id == RG_STRIPARMOR && tsc->data[SC_CP_ARMOR] || ^ skill.c:7681:27: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] skill_id == RG_STRIPHELM && tsc->data[SC_CP_HELM] ) ) { ^ In file included from clan.h:12:0, from pc.h:19, from skill.c:17: skill.c:7690:22: error: ‘SC_WEAPON’ undeclared (first use in this function) sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))) ^ status.h:2316:78: note: in definition of macro ‘sc_start’ c_start(src, bl, type, rate, val1, tick) status_change_start(src,bl,type,100*(r ^ skill.c:7690:22: note: each undeclared identifier is reported only once for each function it appears in sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))) ^ status.h:2316:78: note: in definition of macro ‘sc_start’ c_start(src, bl, type, rate, val1, tick) status_change_start(src,bl,type,100*(r ^ skill.c:7690:79: error: expected ‘;’ before ‘)’ token sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); ^ skill.c:7690:79: error: expected statement before ‘)’ token skill.c:7694:79: error: expected ‘;’ before ‘)’ token sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); ^ skill.c:7694:79: error: expected statement before ‘)’ token skill.c:7698:79: error: expected ‘;’ before ‘)’ token sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); ^ skill.c:7698:79: error: expected statement before ‘)’ token skill.c:7702:79: error: expected ‘;’ before ‘)’ token sc_start(NULL,bl,SC_WEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv))); ^ skill.c:7702:79: error: expected statement before ‘)’ token make[1]: *** [obj/skill.o] Error 1 make[1]: Leaving directory `/root/rathena/src/map' make: *** [map] Error 2 Try this: case RG_STRIPWEAPON: status_change_end( bl, SC_CP_WEAPON, INVALID_TIMER ); sc_start(src,bl,SC_STRIPWEAPON,100,skill_lv,skill_get_time(skill_id,skill_lv)); break; case RG_STRIPSHIELD: status_change_end( bl, SC_CP_SHIELD, INVALID_TIMER ); sc_start(src,bl,SC_STRIPSHIELD,100,skill_lv,skill_get_time(skill_id,skill_lv)); break; case RG_STRIPARMOR: status_change_end( bl, SC_CP_ARMOR, INVALID_TIMER ); sc_start(src,bl,SC_STRIPARMOR,100,skill_lv,skill_get_time(skill_id,skill_lv)); break; case RG_STRIPHELM: status_change_end( bl, SC_CP_HELM, INVALID_TIMER ); sc_start(src,bl,SC_STRIPHELM,100,skill_lv,skill_get_time(skill_id,skill_lv)); break; You can ignore the warnings when compiling. P.S Sorry if I'm necro'ing a thread from 2 years ago, but nobody has answered this yet. 2 Quote
0 AinsLord Posted February 25, 2019 Posted February 25, 2019 will this work with the latest rathena git? Quote
0 idLaZ Posted February 25, 2019 Posted February 25, 2019 @Scylla thank you! The source mod is working fine with the error. However, how to fix to make the single strip always consume 1 GCoat for every attempt? The current mod is not consuming any gcoat. Quote
0 Scylla Posted February 25, 2019 Posted February 25, 2019 3 hours ago, AinsLord said: will this work with the latest rathena git? I'm not really sure but you can try. 47 minutes ago, idLaZ said: @Scylla thank you! The source mod is working fine with the error. However, how to fix to make the single strip always consume 1 GCoat for every attempt? The current mod is not consuming any gcoat. Are you soul linked tho? It'll only consume glistening coats if you're soul linked and if the enemy has chemical protection buff. Quote
0 idLaZ Posted February 25, 2019 Posted February 25, 2019 Hi @Scylla! I have tried it again just now. I forgot to FCP the other character. It all works fine. Thank you! Hi @Scylla, do you know why this mod works in Long Range? I mean when stalker equipped with Strip Armor and Strip Weapon cards using a bow (range), the enemy will be stripped. It must not. It must only works when you cast it using Single Strip skill. Quote
0 GGG2020 Posted April 12, 2020 Posted April 12, 2020 (edited) can someone will make a step by step if how to apply this single strip? wheere ins src ? skill.cpp? battle.cpp? status.cpp? and where line to add?? thanks for the one who can make and i will put reputation on that Edited April 12, 2020 by GGG2020 Quote
0 AinsLord Posted April 13, 2020 Posted April 13, 2020 i think this codes wont work on the latest rathena i dunno if theres a newly updated one Quote
Question
BlazingSpear
im using this code but it doesnt work any more with latest revision
if ( sd && tsc && sd->sc.data[SC_SPIRIT] && sd->sc.data[SC_SPIRIT]->val2 == SL_ROGUE && rand()%100 < 15 && ( skill_id == RG_STRIPWEAPON && tsc->data[SC_CP_WEAPON] || skill_id == RG_STRIPSHIELD && tsc->data[SC_CP_SHIELD] || skill_id == RG_STRIPARMOR && tsc->data[SC_CP_ARMOR] || skill_id == RG_STRIPHELM && tsc->data[SC_CP_HELM] ) ) { int item_id = 7139; // Glistening Coat int ii; ARR_FIND( 0, MAX_INVENTORY, ii, sd->status.inventory[ii].nameid == item_id ); if ( ii < MAX_INVENTORY ) { pc_delitem( sd, ii, 1, 0, 0); switch ( skill_id ) { case RG_STRIPWEAPON: status_change_end( bl, SC_CP_WEAPON, INVALID_TIMER ); sc_start( bl, SC_STRIPWEAPON, 100, skill_lv, d ); break; case RG_STRIPSHIELD: status_change_end( bl, SC_CP_SHIELD, INVALID_TIMER ); sc_start( bl, SC_STRIPSHIELD, 100, skill_lv, d ); break; case RG_STRIPARMOR: status_change_end( bl, SC_CP_ARMOR, INVALID_TIMER ); sc_start( bl, SC_STRIPARMOR, 100, skill_lv, d ); break; case RG_STRIPHELM: status_change_end( bl, SC_CP_HELM, INVALID_TIMER ); sc_start( bl, SC_STRIPHELM, 100, skill_lv, d ); break; } clif_skill_nodamage( src, bl, skill_id, skill_lv, i ); break; } }
12 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.