Vanquiser
-
Content Count
48 -
Joined
-
Last visited
Posts posted by Vanquiser
-
-
any can anyone do some like dis.. i know its huge project.
//Switch to Server Episodes//1=Start of the Adventure Episode
//2=Lutie Episode
//3=Comodo Episode
//4=War of Emperium Episode
//5=Juno ~ Forgotten Legacy of an Ancient Era Episode
//6=Beyond Rune-Midgarts (The Global Project) Episode
//7=Umbala ~ Village of the Utan Tribe Episode
//Just a sample i dont know the whole episodes of RO
episode_type=1
example when the episode 2 is selected the other mobs map job nps of episode and earlier will be disabled
Sorry for my english
-
anyone can still sharing/have the src codes of Devo Reflect Damage Old ( reflect damage absorbed
by the devoter ) for Eathena SVN?
./src/config/classes/general.h
Uncomment this line
//#define DEVOTION_REFLECT_DAMAGE
to
#define DEVOTION_REFLECT_DAMAGE
-
use Latest Shinns DIFF patcher and Latest Translated Lua Files
-
nc Keep it up Hercules TEAM
-
-
-
Can anyone fix this ??
skill.c: In function ‘hs_skill_delay_check’:skill.c:15475: warning: suggest parentheses around assignment used as truth valueskill.c:15484: warning: suggest parentheses around assignment used as truth valueskill.c:15497: warning: suggest parentheses around assignment used as truth valueskill.c: In function ‘hs_flood_delay_check’:skill.c:15566: warning: format ‘%d’ expects type ‘int’, but argument 5 has type ‘int64’
im using Rathena Latest Revision ..
And the diff File...Quote
// Hansip Protection 1.3 [Kichi]
diff --git a/src/map/battle.c b/src/map/battle.cindex d09cadb..f7e28dd 100644--- a/src/map/battle.c+++ b/src/map/battle.c@@ -7842,6 +7842,10 @@ bool battle_check_range(struct block_list *src, struct block_list *bl, int range{ "fame_pharmacy_5", &battle_config.fame_pharmacy_5, 3, 0, INT_MAX, },{ "fame_pharmacy_7", &battle_config.fame_pharmacy_7, 10, 0, INT_MAX, },{ "fame_pharmacy_10", &battle_config.fame_pharmacy_10, 50, 0, INT_MAX, },+ { "hansip_protection", &battle_config.hansip_protection, 1, 0, 1, },+ { "hansip_min_delay", &battle_config.hansip_min_delay, 100, 0, INT_MAX, },+ { "hansip_spam_count", &battle_config.hansip_spam_count, 5, 3, 100, },+ { "hansip_spam_punish", &battle_config.hansip_spam_punish, 1, 0, 1, },};#ifndef STATS_OPT_OUT/**diff --git a/src/map/battle.h b/src/map/battle.hindex 4015529..d6eca81 100644--- a/src/map/battle.h+++ b/src/map/battle.h@@ -543,6 +543,14 @@ extern struct Battle_Configint taekwon_ranker_min_lv;int revive_onwarp;+ // Hansip [Kichi]+ int status_min_duration;+ int hansip_protection; //Make sure nodelay grf user still follow the rules [Kichi]+ int hansip_min_delay;+ int hansip_flood_protection;+ int hansip_spam_count;+ int hansip_spam_punish;+// Fame pointsint fame_taekwon_mission;int fame_refine_lv1;diff --git a/src/map/clif.c b/src/map/clif.cindex 6ebbab3..621557d 100644--- a/src/map/clif.c+++ b/src/map/clif.c@@ -11307,6 +11307,11 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd)return;}+ // Hansip Protection [Kichi]+ if (battle_config.hansip_protection)+ if (hs_flood_delay_check(sd,skill_id))+ set_eof(fd);+// Whether skill fails or not is irrelevant, the char ain't idle. [skotlex]sd->idletime = last_tick;@@ -11406,6 +11411,9 @@ static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uinclif_parse_UseSkillToPos_mercenary(sd->md, sd, tick, skill_id, skill_lv, x, y, skillmoreinfo);return;}+ // Hansip Protection [Kichi]+ if (battle_config.hansip_protection)+ hs_flood_delay_check(sd,skill_id);//Whether skill fails or not is irrelevant, the char ain't idle. [skotlex]sd->idletime = last_tick;diff --git a/src/map/pc.h b/src/map/pc.hindex bc70287..a24ecf2 100644--- a/src/map/pc.h+++ b/src/map/pc.h@@ -228,6 +228,8 @@ struct map_session_data {unsigned int banking : 1; //1 when we using the banking system 0 when closedunsigned int hpmeter_visible : 1;unsigned disable_atcommand_on_npc : 1; //Prevent to use atcommand while talking with NPC [Kichi]+ unsigned hs_skill_check_double : 1; // Hansip - To check double cast [Kichi]+ unsigned hs_skill_check_flood : 1; // Hansip - To check flood cast [Kichi]} state;struct {unsigned char no_weapon_damage, no_magic_damage, no_misc_damage;@@ -302,6 +304,15 @@ struct map_session_data {unsigned int cansendmail_tick; // [Mail System Flood Protection]unsigned int ks_floodprotect_tick; // [Kill Steal Protection]+ // Hansip Protection [Kichi]+ unsigned int canskill_tick2;+ int64 last_skill;+ unsigned int tem_tick_skill1; // Save temporer+ unsigned int tem_tick_skill2;+ unsigned int tem_tick_skill3;+ unsigned int castskill_tick;+ int spam_count;+struct s_item_delay {unsigned short nameid;unsigned int tick;diff --git a/src/map/skill.c b/src/map/skill.cindex bda7e70..0be9d32 100755--- a/src/map/skill.c+++ b/src/map/skill.c@@ -15124,13 +15124,21 @@ struct skill_condition skill_get_requirement(struct map_session_data* sd, uint16int skill_castfix (struct block_list *bl, uint16 skill_id, uint16 skill_lv) {int time = skill_get_cast(skill_id, skill_lv);+ struct map_session_data *sd;+nullpo_ret(bl);+#ifndef RENEWAL_CAST{struct map_session_data *sd;sd = BL_CAST(BL_PC, bl);+ // Hansip Protection [Kichi]+ // Skill Spam Check+ if(sd && battle_config.hansip_protection)+ hs_skill_delay_check(sd,skill_id,skill_lv,0);+// calculate base cast time (reduced by dex)if( !(skill_get_castnodex(skill_id, skill_lv)&1) ) {int scale = battle_config.castrate_dex_scale - status_get_dex(bl);@@ -15158,6 +15166,9 @@ int skill_castfix (struct block_list *bl, uint16 skill_id, uint16 skill_lv) {}#endif++ sd = BL_CAST(BL_PC, bl);+// config cast time multiplierif (battle_config.cast_rate != 100)time = time * battle_config.cast_rate / 100;@@ -15165,6 +15176,9 @@ int skill_castfix (struct block_list *bl, uint16 skill_id, uint16 skill_lv) {time = max(time, 0);//ShowInfo("Castime castfix = %dn",time);+ // Hansip Protection [Kichi]+ if(sd && battle_config.hansip_protection)+ hs_skill_delay_check(sd,skill_id,skill_lv,0);return time;}@@ -15413,9 +15427,132 @@ int skill_delayfix (struct block_list *bl, uint16 skill_id, uint16 skill_lv)time = max(time, battle_config.min_skill_delay_limit);//ShowInfo("Delay delayfix = %dn",time);+ // Hansip Protection [Kichi]+ if(battle_config.hansip_protection)+ if (sd->state.hs_skill_check_double){+ time = hs_skill_delay_penalty(skill_id);+ sd->state.hs_skill_check_double = 0 ;+ }return time;}+/*==========================================+* Hansip Skill delay check [Kichi]+* it will player who recast same skill below X ms+* official ragnarok let you recast a same skill if the player has enough aspd to do+*------------------------------------------*/+int hs_skill_delay_check (struct map_session_data *sd, uint16 skill_id, uint16 skill_lv,uint16 flag) {+ switch (skill_id) {+ case AS_SONICBLOW:+ case GC_CROSSIMPACT:+ case CG_ARROWVULCAN:+ if (sd->last_skill = skill_id){+ if(( DIFF_TICK(sd->canskill_tick2, gettick()) > 0 ))+ sd->state.hs_skill_check_double = 1 ;+ else+ sd->canskill_tick2 = gettick() + 1500;+ }+ break;+ case RK_DRAGONBREATH:+ case RK_DRAGONBREATH_WATER:+ if (sd->last_skill = skill_id){+ if(( DIFF_TICK(sd->canskill_tick2, gettick()) > 0 ))+ sd->state.hs_skill_check_double = 1 ;+ else+ sd->canskill_tick2 = gettick() + 1000;+ }+ break;+ case AC_DOUBLE:+ case SM_BASH:+ case KN_BOWLINGBASH:+ case NJ_KOUENKA:+ case NJ_HYOUSENSOU:+ case WZ_JUPITEL:+ if (sd->last_skill = skill_id)+ sd->state.hs_skill_check_double = 1 ;+ break;+ default:+ break;+ }+ sd->last_skill = skill_id;+ return 1;+}++/*==========================================+* Hansip Skill delay penalty [Kichi]+* It will check if the player has been cast 2 times+* As the official client rules, you only able to do cast 2 times and+* you should wait till the act end.+*------------------------------------------*/+int hs_skill_delay_penalty(uint16 skill_id) {+ int time = 0;+ switch (skill_id) {+ case AS_SONICBLOW:+ case GC_CROSSIMPACT:+ case CG_ARROWVULCAN:+ time = 2000;+ break;+ case RK_DRAGONBREATH:+ case RK_DRAGONBREATH_WATER:+ time = 1200;+ break;+ case AC_DOUBLE:+ case SM_BASH:+ case NJ_KOUENKA:+ case NJ_HYOUSENSOU:+ case WZ_JUPITEL:+ time = 350;+ break;+ case KN_BOWLINGBASH:+ time = 490;+ break;+ default:+ time = battle_config.hansip_min_delay;+ break;+ }+ return time;+ }++int hs_flood_delay_check (struct map_session_data *sd, uint16 skill_id) {+ int64 sum;+ char message_to_gm[200];+ if (!sd)+ return 0;++ if (sd->last_skill && sd->last_skill == skill_id){++ if (sd->tem_tick_skill2)+ sd->tem_tick_skill3 = sd->tem_tick_skill2;++ if (sd->tem_tick_skill1)+ sd->tem_tick_skill2 = sd->tem_tick_skill1;+ if (sd->castskill_tick)+ sd->tem_tick_skill1 = gettick()- sd->castskill_tick;//; DIFF_TICK(sd->castskill_tick, gettick());++ sum = (sd->tem_tick_skill3 + sd->tem_tick_skill2 + sd->tem_tick_skill1) / 3;++ if (sum >= sd->tem_tick_skill3 - 20 && sum <= sd->tem_tick_skill3 + 20)+ sd->spam_count = sd->spam_count + 1;+ else+ sd->spam_count = 0;++ if (sd->spam_count > 3){+ sprintf(message_to_gm, "[Hansip] : Spam Detected! '%s' probably use third party. Constantly flood %d times, tick %d", sd->status.name, sd->spam_count, sum);+ intif_wis_message_to_gm(wisp_server_name, PC_PERM_RECEIVE_HACK_INFO, message_to_gm);+ }+ if (sd->spam_count >= battle_config.hansip_spam_count && battle_config.hansip_spam_punish)+ return 1;+ sd->castskill_tick = gettick();+ }else{+ sd->tem_tick_skill1 = 0;+ sd->tem_tick_skill2 = 0;+ sd->tem_tick_skill3 = 0;+ sd->spam_count = 0;+ }+ sd->last_skill = skill_id;++ return 0;+}/*=========================================**-----------------------------------------*/diff --git a/src/map/skill.h b/src/map/skill.hindex df411f4..bc22c16 100644--- a/src/map/skill.h+++ b/src/map/skill.h@@ -389,6 +389,11 @@ int skill_vfcastfix( struct block_list *bl, double time, uint16 skill_id, uint16#endifint skill_delayfix( struct block_list *bl, uint16 skill_id, uint16 skill_lv);+// Hansip Protection [Kichi]+int hs_skill_delay_check( struct map_session_data *sd, uint16 skill_id, uint16 skill_lv,uint16 flag);+int hs_skill_delay_penalty( uint16 skill_id);+int hs_flood_delay_check (struct map_session_data *sd, uint16 skill_id);+// Skill conditions check and remove [inkfish]bool skill_check_condition_castbegin(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv);bool skill_check_condition_castend(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv); -
File Name: Simple Avast Thor Patcher
File Submitter: Vanquiser
File Submitted: 09 Jul 2014
File Category: Other Graphics
Thor Patcher,,, Avast 2014 Based
Features
Website Button
Facebook Page Button
Facebook Group Button
Donate Button
Help Button
Register Button
Setup Button (Open Setup.exe)
BTW Im using MS Paint Only XD...
Please Dont Remove Credits, Thx
-
Any Update ?????
-
add the name of map in conf/maps.conf
-
Any Can Provide Slider1 Code, Slider2 Code And Notice Code on this patcher .. Thanks in Advance
Its more of Web Related, since thor patcher only makes the notice box and directs them to website, and website does the trick of slider.
(correct if I am wrong. :? )
Topic CLosed
I just make a gif image to become Slider and i made my gif image as a background of html
sorry for my english
by the way thx
aero011 and Dastgir -
Any Can Provide Slider1 Code, Slider2 Code And Notice Code on this patcher .. Thanks in Advance
-
Try Phytonhost.biz Lag Free ..
-
any update for this ????
-
Anyone can Help me about this ?
I want to change mdef formula
my server is Frost Server .. but when anyone get to 99 mdef .. the players that 99 mdef wont freeze and the magic damage is only 1..
i want to change the mdef to 99 mdef = 30% magic reduction only .. forget about the freeze ..
Please Help mee Thx
Sorry for my bad English -
Update pleaseeeee ....
-
-
Custom Soul link Effect
Star Gladiator - Allowing to use Lvl 8 Lord of Vermillion, Lvl 5 Parrying. Increase damage on Boss monster and Holy monster by 100%. perfect dodge + 10
Open src/map/status.c and find:
sce->val2 = st->max_hp / 100;// Officially tested its 1%hp drain. [Jobbie]
break;Add Below
case SC_SOULLINK:
// Custom Star Gladiator Soullink effect
if( (sd->class_&MAPID_UPPERMASK) == MAPID_STAR_GLADIATOR )
pc->skill(sd, WZ_VERMILION, 8, 0);pc->skill(sd, LK_PARRYING, 5, 0);
break;Find:
case ITEMID_ORC_LOAD_CARD:
clif->sc_end(&sd->bl, sd->bl.id, SELF, SI_MVPCARD_ORCLORD);
break;
}
}
break;Add below:
case SC_SOULLINK:
// Custom Star Gladiator Soullink effect
if(/* pc->checkskill(sd, KN_CHARGEATK) && */(sd->class_&MAPID_UPPERMASK) == MAPID_STAR_GLADIATOR)pc->skill(sd, WZ_VERMILION, 0, 0);pc->skill(sd, LK_PARRYING, 0, 0);break;Find:
if(sc->data[sC_SIEGFRIED]){i = sc->data[sC_SIEGFRIED]->val2;sd->subele[ELE_WATER] += i;sd->subele[ELE_EARTH] += i;sd->subele[ELE_FIRE] += i;sd->subele[ELE_WIND] += i;sd->subele[ELE_POISON] += i;sd->subele[ELE_HOLY] += i;sd->subele[ELE_DARK] += i;sd->subele[ELE_GHOST] += i;sd->subele[ELE_UNDEAD] += i;}Add Below
sd->right_weapon.addrace[RC_BOSS] += 100;
sd->left_weapon.addrace[RC_BOSS] += 100;
sd->right_weapon.addele[ELE_HOLY] += 100;
sd->left_weapon.addele[ELE_HOLY] += 100;
}Find:
if(sc->data[sC__UNLUCKY])flee2 -= flee2 * sc->data[sC__UNLUCKY]->val2 / 100;return (short)cap_value(flee2,10,SHRT_MAX);}Add Below:
if(sc->data[SC_SOULLINK] && sc->data[SC_SOULLINK]->val2 == SL_STAR)
flee2 += 10;
For the parrying, u just need to change your parrying in db/(pre/re)/skill_require_db.txt
Find:356,0,0,50,0,0,0,3,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //LK_PARRYING#
And replace with:356,0,0,50,0,0,0,2:3,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //LK_PARRYING#
Just Sharing ) -
i got error when compiled
-
-
pleaseeeeeeeeeeeee ?? anyone ??? .. i need this now
-
bump ????
-
Original Post : Here
Any One Can Convert This to Hercules ??
Thx in advanceIndex: src/map/battle.c
===================================================================
--- src/map/battle.c (revision 15817)
+++ src/map/battle.c (working copy)
@@ -233,10 +233,8 @@
nullpo_ret(target);
sc = status_get_sc(target);
-
- if( sc && sc->data[sC_DEVOTION] && damage > 0 && skill_id != PA_PRESSURE && skill_id != CR_REFLECTSHIELD )
+ //devotion patch by Cyrix (rathena) ([email protected])
+//https://www.facebook.../ragdb.ragnarok
+if( sc && sc->data[sC_DEVOTION] && damage > 0 && skill_id != PA_PRESSURE && skill_id != CR_REFLECTSHIELD )
damage = 0;
-
if ( !battle_config.delay_battle_damage || amotion <= 1 ) {
map_freeblock_lock();
status_fix_damage(src, target, damage, ddelay); // We have to seperate here between reflect damage and others [icescope]
@@ -4186,7 +4184,7 @@
}
else
status_change_end(target, SC_DEVOTION, INVALID_TIMER);
- }
+ }
if (sc && sc->data[sC_AUTOSPELL] && rnd()0 < sc->data[sC_AUTOSPELL]->val4) {
int sp = 0;
Index: src/map/pc.c
===================================================================
--- src/map/pc.c (revision 15817)
+++ src/map/pc.c (working copy)
@@ -6078,8 +6078,7 @@
for(k = 0; k < 5; k++)
if (sd->devotion[k]){
struct map_session_data *devsd = map_id2sd(sd->devotion[k]);
- if (devsd)
- status_change_end(&devsd->bl, SC_DEVOTION, INVALID_TIMER);
+ //devotion patch by Cyrix (rathena) ([email protected])
+//https://www.facebook.../ragdb.ragnarok
+ if (devsd) status_change_end(&devsd->bl,SC_DEVOTION,-1);
sd->devotion[k] = 0;
}
Index: src/map/status.c
===================================================================
--- src/map/status.c (revision 15817)
+++ src/map/status.c (working copy)
@@ -1015,31 +1015,43 @@
// if (!target->prev && !(flag&2))
// return 0; //Cannot damage a bl not on a map, except when "charging" hp/sp
- sc = status_get_sc(target);
- if( hp && battle_config.invincible_nodamage && src && sc && sc->data[sC_INVINCIBLE] && !sc->data[sC_INVINCIBLEOFF] )
- hp = 1;
+ //devotion patch by Cyrix (rathena) ([email protected])
+//https://www.facebook.../ragdb.ragnarok
+ sc = status_get_sc(target);
+
- if( hp && !(flag&1) ) {
+ if( hp && !(flag&(1|8)) ) {
if( sc ) {
struct status_change_entry *sce;
+ if( (sce = sc->data[sC_DEVOTION]) && src && battle_getcurrentskill(src) != PA_PRESSURE )
+ { // Devotion prevents any of the other ailments from ending.
+ struct block_list *d_bl = map_id2bl(sce->val1);
+
+ if( d_bl && (
+ (d_bl->type == BL_MER && ((TBL_MER*)d_bl)->master && ((TBL_MER*)d_bl)->master->bl.id == target->id) ||
+ (d_bl->type == BL_PC && ((TBL_PC*)d_bl)->devotion[sce->val2] == target->id)
+ ) && check_distance_bl(target, d_bl, sce->val3) )
+ {
+ clif_damage(d_bl, d_bl, gettick(), 0, 0, hp, 0, 0, 0);
+ status_fix_damage(NULL, d_bl, hp, 0);
+ return 0;
+ }
+
+ status_change_end(target, SC_DEVOTION, -1);
+ }
if (sc->data[sC_STONE] && sc->opt1 == OPT1_STONE)
- status_change_end(target, SC_STONE, INVALID_TIMER);
- status_change_end(target, SC_FREEZE, INVALID_TIMER);
- status_change_end(target, SC_SLEEP, INVALID_TIMER);
- status_change_end(target, SC_WINKCHARM, INVALID_TIMER);
- status_change_end(target, SC_CONFUSION, INVALID_TIMER);
- status_change_end(target, SC_TRICKDEAD, INVALID_TIMER);
- status_change_end(target, SC_HIDING, INVALID_TIMER);
- status_change_end(target, SC_CLOAKING, INVALID_TIMER);
- status_change_end(target, SC_CHASEWALK, INVALID_TIMER);
- status_change_end(target, SC_CAMOUFLAGE, INVALID_TIMER);
- status_change_end(target, SC__INVISIBILITY, INVALID_TIMER);
- status_change_end(target, SC_DEEPSLEEP, INVALID_TIMER);
+ status_change_end(target,SC_STONE,-1);
+ status_change_end(target,SC_FREEZE,-1);
+ status_change_end(target,SC_SLEEP,-1);
+ status_change_end(target,SC_WINKCHARM,-1);
+ status_change_end(target,SC_CONFUSION,-1);
+ status_change_end(target,SC_TRICKDEAD,-1);
+ status_change_end(target,SC_HIDING,-1);
+ status_change_end(target,SC_CLOAKING,-1);
+ status_change_end(target,SC_CHASEWALK,-1);
if ((sce=sc->data[sC_ENDURE]) && !sce->val4) {
//Endure count is only reduced by non-players on non-gvg maps.
//val4 signals infinite endure. [skotlex]
if (src && src->type != BL_PC && !map_flag_gvg(target->m) && !map[target->m].flag.battleground && --(sce->val2) < 0)
- status_change_end(target, SC_ENDURE, INVALID_TIMER);
+ status_change_end(target, SC_ENDURE, -1);
}
if ((sce=sc->data[sC_GRAVITATION]) && sce->val3 == BCT_SELF) {
struct skill_unit_group* sg = skill_id2group(sce->val4);
@@ -8235,14 +8247,14 @@
for( i = 0; i < 5; i++ )
{
if( sd->devotion && (tsd = map_id2sd(sd->devotion)) && tsd->sc.data[type] )
- status_change_end(&tsd->bl, type, INVALID_TIMER);
+ status_change_end(&tsd->bl, type, -1);
}
}
else if( bl->type == BL_MER && ((TBL_MER*)bl)->devotion_flag )
{ // Clear Status from Master
tsd = ((TBL_MER*)bl)->master;
if( tsd && tsd->sc.data[type] )
- status_change_end(&tsd->bl, type, INVALID_TIMER);
+ status_change_end(&tsd->bl, type, -1);
}
}
break;
@@ -8258,10 +8270,10 @@
clif_devotion(d_bl, NULL);
}
- status_change_end(bl, SC_AUTOGUARD, INVALID_TIMER);
- status_change_end(bl, SC_DEFENDER, INVALID_TIMER);
- status_change_end(bl, SC_REFLECTSHIELD, INVALID_TIMER);
- status_change_end(bl, SC_ENDURE, INVALID_TIMER);
+ status_change_end(bl,SC_AUTOGUARD,-1);
+ status_change_end(bl,SC_DEFENDER,-1);
+ status_change_end(bl,SC_REFLECTSHIELD,-1);
+ status_change_end(bl,SC_ENDURE,-1);
}
break; -
help please ((
apple item .. when i add custom item ....
idnum2itemdesctable
idnum2itemdisplaynametable
idnum2itemresnametable is ok...
sorry for my english
im using
2013-08-07aRagexe
request Classic to Latest
in Source Requests
Posted
I know its lots to do. And we need more ideas to other member to do this.. but this will be the biggest ang greatest Project to this emu.