Jump to content

Vanquiser

Members
  • Posts

    81
  • Joined

  • Last visited

Posts posted by Vanquiser

  1. thank you for the reply :)

    i will try it later..


    EDIT: I dont know how to setup :/.. give me example pleasee


    It's not dangerous.. it just allows your forums to use the same login table that your CP and game client use.

     

     

    This is dangerous as it will re-direct your ragnarok database to your forum. :( I prefer to use a free forum board so it will be as 'External'.

     

     

    Admin CP > Tool & Setting > Login Management > External Database

     

    edit it with your server settings.

    Help me ..

    give me some example .. how to setup IP Board as Register Website for my RO and how to setup Verification Email give me sample please ... Thanks in Advance

  2. Your graphics card driver does not support any hardware rendering of DirectX7/DirectDraw. If newer 3D games run fine for you, it might be that NVIDIA dropped support for DirectDraw (newer DirectX versions use Direct3D for 2D rendering). 


    or gamit ka nlng ng Older Version ng Client

  3. You Can Use This Tool

     

    New%20Bitmap%20Image.bmp

    Just Drag your new Patcher then copy the Code .. Then Create patch .. nameit .. newskin.thor

     

    After the go to you main.ini

     

    //Thor Patcher remote config file

    [Main]
    //Allow patching or not?
    allow=true
     
    //Should patcher ignore everything else and finish patch immediately?
    Force_Start=false
     
    //if not, what message should appear?
    policy_msg=Server is taking a nap.
     
    //file_url - patch files should ALL put here.
    // This config entry will override the one in embed config.
    // o HTTP:
    //         http://domain.com/dir/
    // o FTP:
    //         ftp://domain.com/dir/
    //     o With <Username> [Password] [Port]
    //     o Note: username is required if want put password, otherwise everything is optional.
     
    [Patch]
    //use CheckSum tool, hash for client & patcher
    // used to make sure exe is up to date
    //  (leave empty to disable this feature)
    ClientSum=
    PatcherSum=PASTE THE CODE HERE
     
     
    //This is compressed file for patcher & client update
    // To make these work, ClientSum and/or PatcherSum can't be empty
    // Note: these files should put same place as patch file (file_url in internal config)
    //Relative address, not FULL URL!
    ClientPath=
    PatcherPath=newskin.thor
     
    // Patch list file
    PatchList=plist.txt
     
    [stars]
    // Shining o.O (Anyways, its for start button clones)
    // Since orignal client has check sum.. why not for clones? XD
     
     
    //How many? (it should same as amount of start button clone, but of course it's your choice)
    clients=0
     
    // _sum - checksum, use CheckSum tool.
    //client1_sum=
    // _Name - Filename of exe
    //client1_Name=
    // _Path - Path for file [Compressed]
    //client1_Path=
     
    [Misc]
    //Set a limit for fragment, when reach this limit, patcher will ask user to defrag
    FragmentLimit=50

      

     

     

    .. upload on your webserver .. do not Edit the plist.txt just upload the .THOR patch file

    thats it then patch

    • Upvote 1
  4. how about .. adding mac_logs sql table .. just like in harmony ??  /heh

     

    I know MAC can be changed with some cheap technique for long long time ago, but with no reason some people (some of them are Harmony lovers) said "no, MAC cannot be changed".

    and then, u said http://prntscr.com/45kvgu then feel free if u want to implement it as custom mod, free release, fork/branch, or else. :D

    EDIT post :P HAHAHAHHAA

  5. Can anyone fix this ??
     

     
    skill.c: In function ‘hs_skill_delay_check’:
    skill.c:15475: warning: suggest parentheses around assignment used as truth value
    skill.c:15484: warning: suggest parentheses around assignment used as truth value
    skill.c:15497: warning: suggest parentheses around assignment used as truth value
    skill.c: In function ‘hs_flood_delay_check’:
    skill.c:15566: warning: format ‘%d’ expects type ‘int’, but argument 5 has type ‘int64’

    im using Latest Revision ..

    And the diff File...

     

    // Hansip Protection 1.3 [Kichi]

     
    diff --git a/src/map/battle.c b/src/map/battle.c
    index 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.h
    index 4015529..d6eca81 100644
    --- a/src/map/battle.h
    +++ b/src/map/battle.h
    @@ -543,6 +543,14 @@ extern struct Battle_Config
      int 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 points
      int fame_taekwon_mission;
      int fame_refine_lv1;
    diff --git a/src/map/clif.c b/src/map/clif.c
    index 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, uin
      clif_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.h
    index 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 closed
      unsigned 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.c
    index 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, uint16
     int 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 multiplier
      if (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 = %d\n",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 = %d\n",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.h
    index 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
     #endif
     int 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);
     

     

     


    up


    How sad :( .. no one can help me about this :(

  6. i got an error when compiling :( anyone can fix this ??

     

     
    make[1]: Warning: File `skill.c' has modification time 5e+04 s in the future
            CC      skill.c
    skill.c: In function 'hs_skill_delay_check':
    skill.c:15475: warning: suggest parentheses around assignment used as truth value
    skill.c:15484: warning: suggest parentheses around assignment used as truth value
    skill.c:15497: warning: suggest parentheses around assignment used as truth value
    skill.c: In function 'hs_flood_delay_check':
    skill.c:15566: warning: format '%d' expects type 'int', but argument 5 has type 'int64'

    Thank you @Kichi Nice Work

    Some line got error i fixed already

     

    Zohan Source Code Combine  Hasip Souce code Fixed  /ic

     
    make[1]: Warning: File `skill.c' has modification time 5e+04 s in the future
            CC      skill.c
    skill.c: In function 'hs_skill_delay_check':
    skill.c:15475: warning: suggest parentheses around assignment used as truth value
    skill.c:15484: warning: suggest parentheses around assignment used as truth value
    skill.c:15497: warning: suggest parentheses around assignment used as truth value
    skill.c: In function 'hs_flood_delay_check':
    skill.c:15566: warning: format '%d' expects type 'int', but argument 5 has type 'int64'

    can you fix this ??
  7. 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  smile.png


    Sorry for my bad English

     
×
×
  • Create New...