Leaderboard
Popular Content
Showing content with the highest reputation on 01/04/20 in all areas
-
2 points
-
2 points
-
Sorry for mentioning you twice. I have tried several mods but still no avail 1 if( tsc && tsc->data[SC_CRESCENTELBOW] && wd->flag&BF_SHORT && rnd()%100 < tsc->data[SC_CRESCENTELBOW]->val2 ) { //ATK [{(Target HP / 100) x Skill Level} x Caster Base Level / 125] % + [Received damage x {1 + (Skill Level x 0.2)}] int64 rdamage = 0; int ratio = (int64)(status_get_hp(src) / 100) * tsc->data[SC_CRESCENTELBOW]->val1 * status_get_lv(target) / 125; if (ratio > 500) ratio = 500; // Maximum of 5000% ATK rdamage = battle_calc_base_damage(target,tstatus,&tstatus->rhw,tsc,sstatus->size,0); rdamage = (int64)rdamage * ratio / 10 + wd->damage * (3 + tsc->data[SC_CRESCENTELBOW]->val1 * 10 / 5) / 5; skill_blown(target, src, skill_get_blewcount(SR_CRESCENTELBOW_AUTOSPELL, tsc->data[SC_CRESCENTELBOW]->val1), unit_getdir(src), BLOWN_NONE); clif_skill_damage(target, src, gettick(), status_get_amotion(src), 0, rdamage, 1, SR_CRESCENTELBOW_AUTOSPELL, tsc->data[SC_CRESCENTELBOW]->val1, DMG_SKILL); // This is how official does clif_damage(src, target, gettick(), status_get_amotion(src)+1000, 0, rdamage/10, 1, DMG_NORMAL, 0, false); status_damage(target, src, rdamage, 0, 0, 0); status_damage(src, target, rdamage/10, 0, 0, 1); status_change_end(target, SC_CRESCENTELBOW, INVALID_TIMER); } 2 if( tsc && tsc->data[SC_CRESCENTELBOW] && wd->flag&BF_SHORT && rnd()%100 < tsc->data[SC_CRESCENTELBOW]->val2 ) { //ATK [{(Target HP / 100) x Skill Level} x Caster Base Level / 125] % + [Received damage x {1 + (Skill Level x 0.2)}] int64 rdamage = 0; int ratio = (int64)(status_get_hp(src) / 10000) * tsc->data[SC_CRESCENTELBOW]->val1 * status_get_lv(target) / 125; if (ratio > 500) ratio = 500; // Maximum of 5000% ATK rdamage = battle_calc_base_damage(target,tstatus,&tstatus->rhw,tsc,sstatus->size,0); rdamage = (int64)rdamage * ratio / 10 + wd->damage * (3 + tsc->data[SC_CRESCENTELBOW]->val1 * 10 / 5) / 5; skill_blown(target, src, skill_get_blewcount(SR_CRESCENTELBOW_AUTOSPELL, tsc->data[SC_CRESCENTELBOW]->val1), unit_getdir(src), BLOWN_NONE); clif_skill_damage(target, src, gettick(), status_get_amotion(src), 0, rdamage, 1, SR_CRESCENTELBOW_AUTOSPELL, tsc->data[SC_CRESCENTELBOW]->val1, DMG_SKILL); // This is how official does clif_damage(src, target, gettick(), status_get_amotion(src)+500, 0, rdamage/10, 1, DMG_NORMAL, 0, false); status_damage(target, src, rdamage, 0, 0, 0); status_damage(src, target, rdamage/10, 0, 0, 1); status_change_end(target, SC_CRESCENTELBOW, INVALID_TIMER); } Tried them but still no luck. I suck.1 point
-
You can just tag me once. No need to tag me everytime. I also have something called "personal life" so I couldn't attend to every queries in a flash. Anyhow... This part of the script already tells you how it calculates stuff.. //ATK [{(Target HP / 100) x Skill Level} x Caster Base Level / 125] % + [Received damage x {1 + (Skill Level x 0.2)}] int64 rdamage = 0; int ratio = (int64)(status_get_hp(src) / 100) * tsc->data[SC_CRESCENTELBOW]->val1 * status_get_lv(target) / 125; if (ratio > 5000) ratio = 5000; // Maximum of 5000% ATK rdamage = battle_calc_base_damage(target,tstatus,&tstatus->rhw,tsc,sstatus->size,0); rdamage = (int64)rdamage * ratio / 100 + wd->damage * (10 + tsc->data[SC_CRESCENTELBOW]->val1 * 20 / 10) / 10; to break it down for you.. //ATK [{(Target HP / 100) x Skill Level} x Caster Base Level / 125] % + [Received damage x {1 + (Skill Level x 0.2)}] int64 rdamage = 0; // [{(Target HP / 100) x Skill Level} x Caster Base Level / 125] int ratio = (int64)(status_get_hp(src) / 100) * tsc->data[SC_CRESCENTELBOW]->val1 * status_get_lv(target) / 125; if (ratio > 5000) ratio = 5000; // Maximum of 5000% ATK -- this is just a damage limit cap.. // [Received damage x {1 + (Skill Level x 0.2)}] -- the rest of the calculation rdamage = battle_calc_base_damage(target,tstatus,&tstatus->rhw,tsc,sstatus->size,0); rdamage = (int64)rdamage * ratio / 100 + wd->damage * (10 + tsc->data[SC_CRESCENTELBOW]->val1 * 20 / 10) / 10; You will only need basic arithmetic to adjust the damage carefully.. try to adjust one part at a time to avoid confusion.. Goodluck!1 point
-
i don't know if this is allow or not. *but if not kindly delete my comment. ? i include the crown and the wings. ? Obito Set.rar1 point
-
from if (getmapxy(@mapa$,@mapx,@mapy,0,strcharinfo(0)) != 0) end; to if (getmapxy(@mapa$,@mapx,@mapy, BL_PC, strcharinfo(0)) != 0) end;1 point
-
the easier way is do what mabuhay told ya, but if you wanna do it on src, take a look at this part if( tsc && tsc->data[SC_CRESCENTELBOW] && wd->flag&BF_SHORT && rnd()%100 < tsc->data[SC_CRESCENTELBOW]->val2 ) { //ATK [{(Target HP / 100) x Skill Level} x Caster Base Level / 125] % + [Received damage x {1 + (Skill Level x 0.2)}] int64 rdamage = 0; int ratio = (int64)(status_get_hp(src) / 100) * tsc->data[SC_CRESCENTELBOW]->val1 * status_get_lv(target) / 125; if (ratio > 5000) ratio = 5000; // Maximum of 5000% ATK rdamage = battle_calc_base_damage(target,tstatus,&tstatus->rhw,tsc,sstatus->size,0); rdamage = (int64)rdamage * ratio / 100 + wd->damage * (10 + tsc->data[SC_CRESCENTELBOW]->val1 * 20 / 10) / 10; skill_blown(target, src, skill_get_blewcount(SR_CRESCENTELBOW_AUTOSPELL, tsc->data[SC_CRESCENTELBOW]->val1), unit_getdir(src), BLOWN_NONE); clif_skill_damage(target, src, gettick(), status_get_amotion(src), 0, rdamage, 1, SR_CRESCENTELBOW_AUTOSPELL, tsc->data[SC_CRESCENTELBOW]->val1, DMG_SKILL); // This is how official does clif_damage(src, target, gettick(), status_get_amotion(src)+1000, 0, rdamage/10, 1, DMG_NORMAL, 0, false); status_damage(target, src, rdamage, 0, 0, 0); status_damage(src, target, rdamage/10, 0, 0, 1); status_change_end(target, SC_CRESCENTELBOW, INVALID_TIMER); } and compare to this details https://irowiki.org/wiki/Crescent_Elbow, you can make head what you need to nerf from the formula used, there is a comment on how formula worked there... usually pitfall on high cap max level server is the stats go so high and make it dumb damage output.1 point
-
You can use my Reward Function for each Events and try to be creative. All my Free release are intended for you guys to modify and get creative. You may freely modify this in any way you see fit. I am not interested in upgrading/changing its mechanics. But if you have some old or cool events, I will check and see if I want to add it here.1 point
-
It's Tahoma Regular in 12pt. On Photoshop, set it with no filters to smooth it and it will look exactly as those buttons.1 point
-
I have a Test Breaker Script and i dont own this zhakastia,82,69,5 script Emperium Breaker 743,{ // What Map will be used set .Map$,"job3_arch01"; // How many Top Breaker will be Recorded set .TopRank,10; // Message to Inform Players while inside the Room setarray .Instruction$[0], "Please Listen here carefully.", "This is Emperium Breaker Test Room , which is use to test your Breaking Time.", "Prepare youself...and do your best to Break it...", "Okay that's All i want to say , get Ready yourself and it will Start Soon."; while( 1 ){ mes "This is Emperium Breaker test Room. "; mes "You are able to calculate your Emperium Breaking Speed in this Room."; next; switch( select( ( getmapusers( .Map$ ) )?"^FF0000NOT Available":"^0000FFAvailable^000000", "Top ^FF0000"+.TopRank+"^000000 Breaker Ladder", ( getgmlevel() < 90 )?"":"^FF0000[GM]^000000 Reset Room", ( getgmlevel() < 90 )?"":"^FF0000[GM]^000000 Reset Ladder" )){ Case 1: if( getmapusers( .Map$ ) ){ mes "There is another player inside it now."; next; break; } warp .Map$,0,0; killmonster .Map$,"All"; // removemapflag .Map$,mf_noskill; donpcevent strnpcinfo(0)+"::OnReady"; end; Case 2: mes "^ED1ADCLatest Record^000000 : "+LatestRecord/1000+"."+LatestRecord%1000+" Seconds."; for( set .@i,0; .@i < .TopRank; set .@i,.@i + 1 ){ if( !$TopRankTime[.@i] ) break; mes "^FF0000Top "+( .@i + 1 )+" : ^0000FF"+$TopName$[.@i]+" "; mes "^FF0000Time Taken : ^ED1ADC[ "+$TopRankTime[.@i]/1000+"."+$TopRankTime[.@i]%1000+" Sec. ]^000000 "; } next; break; Case 3: mapannounce .Map$,"A GM has RESET the Breaker Test Room.",0,0x00FF00; killmonster .Map$,"All"; sleep2 3000; mapwarp .Map$,"prontera",156,175; mes "Done Reset. and Player who are inside are warped out."; next; break; Case 4: switch( select( "^0000FFAll Player^000000:^FF0000One Player^000000" ) ){ Case 1: deletearray $TopRankTime[0],getarraysize( $TopRankTime ); deletearray $TopName$[0],getarraysize( $TopName$ ); mes "RESETED WHOLE LADDER."; break; Case 2: mes "Please input the ^FF0000EXACT NAME^000000 of player you want to delete."; input .Name$; for( set .@i,0; .@i < .TopRank; set .@i,.@i + 1 ){ if( .Name$ == $TopName$[.@i] ){ deletearray $TopName$[.@i],1; deletearray $TopRankTime[.@i],1; mes "Removed ^FF0000"+.Name$+"^000000 from the List."; } } } next; break; } } OnReady: sleep2 3000; for( set .@i,0; .@i < getarraysize( .Instruction$ ); set .@i,.@i + 1 ){ mapannounce .Map$,.Instruction$[.@i],0,0x00FF00; sleep2 2500; } for( set .@i,5; .@i > 0; set .@i,.@i - 1 ){ mapannounce .Map$,"Count Down : "+.@i+" Seconds.",0,0x00FF00; sleep2 1000; } //mapannounce .Map$,"Hit the Emperium Now and Skills Disabled.",0,0x00FF00; setmapflag .Map$,mf_noskill; monster .Map$,29,27,"Breaker Test",1288,1,strnpcinfo(0)+"::OnBreaked"; set .Record,0; sleep2 500; initnpctimer; end; OnTimer600000: if( !mobcount( .Map$,strnpcinfo(0)+"::OnBreaked" ) ) end; mapannounce .Map$,"You spent too much time. i think you are AFK , so you are out.",0,0xED1ADC; sleep2 3000; mapwarp .Map$,"prontera",156,175; stopnpctimer; end; OnBreaked: set .Time,getnpctimer(0); copyarray .@tempName$[0],$TopName$[0],getarraysize( $TopName$ ); copyarray .@tempRecord[0],$TopRankTime[0],getarraysize( $TopRankTime[0] ); set LatestRecord,.Time; for( set .@i,0; .@i < .TopRank; set .@i,.@i + 1 ){ if( .Time < $TopRankTime[.@i] || !$TopRankTime[.@i] ){ set $TopRankTime[.@i],.Time; set $TopName$[.@i],strcharinfo(0); copyarray $TopRankTime[.@i + 1],.@tempRecord[0],getarraysize( .@tempRecord ); copyarray $TopName$[.@i + 1],.@tempName$[0],getarraysize( .@tempName$ ); announce "[ "+strcharinfo(0)+" ] Achieved Top "+( .@i + 1 )+" in Emperium Breaking with "+.Time/1000+"."+.Time%1000+" Seconds !!!",bc_all,0xED1ADC; break; } } stopnpctimer; announce "Current Time Taken : "+.Time/1000+"."+.Time%1000+" Seconds. ",bc_self,0xED1ADC; // removemapflag .Map$,mf_noskill; sleep2 5000; mapwarp .Map$,"prontera",156,175; end; } job3_arch01 mapflag nocommand 50 job3_arch01 mapflag gvg on job3_arch01 mapflag gvg_castle job3_arch01 mapflag monster_noteleport job3_arch01 mapflag nosave SavePoint1 point