Jump to content

Kuroyama

Members
  • Content Count

    128
  • Joined

  • Last visited

  • Days Won

    1

Reputation Activity

  1. Like
    Kuroyama got a reaction from AnnieRuru in noitem plugin   
    Memory leak:

  2. Like
    Kuroyama reacted to AnnieRuru in @packetfilter   
    No more Work in Progress, Please report if there are any bug
     
    Download: 1.0a [Complete]
    plugin
     
     
    What is `@packetfilter` ?
    `@packetfilter` is a custom mod originate from eamod
    https://github.com/zephyrus-cr/eamod/blob/master/Servers/rAthena/conf/groups.conf#L418-L422
    it can actually reduce lag on your live server during woe depends on how many players activate it
    it totally depends on the player's side, community effort that every player should together turn on the `@packetfilter` to reduce massive lag during woe
     
    this modification is actually very famous and there are members willingly to pay for it
    https://rathena.org/board/topic/121200-packetfilter-battleinfo/
    https://rathena.org/board/topic/123203-battleinfo-packetfilter/
    https://rathena.org/board/topic/111797-packetfilter-zepyhrus-ramod/
    https://rathena.org/board/topic/79995-buy-noactnodelay-partybuff-src-as-it-was-on-pro-ro-or-packetfilter/
     
     
     
    this `@packetfilter` is unlike the one you are having, or that is circulating on rathena forum
     
    this one has been written entirely from scratch and added some other flags that the original don't
    for example,
    `@packetfilter COHM EOHM`
    allow block normal chat and emotion from non-related players, pets, homunculus and monsters
    but this doesn't block normal chat from party/guild members
     
    a full list of flags are
      C = ignore normal Chat, including Dancer's scream, Bard's frost joke, and pet's talk (pet start to talk when intimacy > 900)   E = ignore emotion, including monster and pet emotion (but NOT pet performance)   I = ignore Item use effect   A = ignore normal Attack animation (based on receiving side), your own attack animation are always shown   B = Buffing skill animations (based on receiving side), your own casting animation are always shown   S = Status effect   T = offensive single Target skill/spell animations (based on receiving side), your own casting animation are always shown   G = Ground based skills (eg:storm gust), your own casting animation are always shown   M = Music dance/songs from Bard/Dancer   D = Direction. Recommend filter on Party/Guild type and not enemies. Highly Recommend for supportive type Class. after the Main type, also support additional flags
      S = Self   P = Party   G = Guild   B = Battleground   C = Clan   O = Other players, none of the above   H = Homunculus/pets/elementals/mercenary and player's @summon   M = Monsters  
     
    Why This plugin doesn't block Kaite or Energy Coat ?
     
    2 reasons
     
    No.1 - currently there is a bug with plugin,
    struct packet_spawn_unit *p = (struct packet_spawn_unit*)RBUFP(buf, 0); this line will throw error on Linux
    so no choice, maybe I'll make a bug report
    this bug also has been reported on Dastgir's `@noview`
     
    No.2 - just set p->virtue = 0; isn't really blocking the packet
    this goes against the very principle of this plugin, which is NOT send certain packet to the client
    OPT3 (including OPT3_KAITE | OPT3_ENERGYCOAT | OPT3_SOULLINK) is part of the idle_unitType, unit_walkingType and spawn_unitType function
    and blocking those 3 packet entirely is stupid
     
    in case you don't understand, look under clif_set_unit_walking and clif_set_unit_idle function inside src\map\clif.c file
    p.GUID = g_id; p.GEmblemVer = status->get_emblem_id(bl); p.honor = (sd) ? sd->status.manner : 0; // p.virtue = (sc) ? sc->opt3 : 0; <-- change this line p.virtue = 0; p.isPKModeON = (sd && sd->status.karma) ? 1 : 0; p.sex = vd->sex;  
     
    Note: about [D]irection type packet
     
    try add a ShowDebug inside clif->send
    src/map/clif.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/map/clif.c b/src/map/clif.c index ab3c4422a..9e245f335 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -450,6 +450,7 @@ static bool clif_send(const void *buf, int len, struct block_list *bl, enum send return true; } +ShowDebug("source:%s buf:0x%x send_target:%d\n", (sd != NULL)? sd->status.name : "NULL", RBUFW(buf, 0), type); switch(type) { case ALL_CLIENT: //All player clients. iter = mapit_getallusers(); you will find 0x9c is being send repeatedly on every attack and every skill cast , getting attack etc
    this direction update packet isn't just send by Shift-click, but also including all the actions above
    this packet is very spam-able and I think can be safely block on party/guild/clan/bg flags
    for supportive class, I also think can block all of them since supportive class doesn't need information from enemies
     
     
     
  3. Upvote
    Kuroyama reacted to AnnieRuru in [Urgent Request] @ignoredrop/@seeitems   
    ok visual studio sux
     
    https://github.com/AnnieRuru/Release/blob/master/plugins/ignoredropitem/ignoredropitem_0.3.c
    - fix possible null pointer error
  4. Upvote
    Kuroyama reacted to AnnieRuru in Castle Guild Member Limit   
    oh ok, you are partially right when it kick excess guild members
    but it isn't the way you claimed that it count from other guild members
     
    upon close inspection, @astralprojection script has 2 problems which is
    1. if the player has multiple characters from the same account join the same guild, it count multiple times instead of 1, it doesn't extend the isloggedin into $@guildmembercid check
    2. it checks as long as the guild member enter ANY CASTLE map, not that particular castle map
     
    try this one
    https://gist.github.com/AnnieRuru/339e268a8be5370fa7ae1aa2f856ca28
  5. Upvote
    Kuroyama got a reaction from AnnieRuru in Castle Guild Member Limit   
    I already tried this, and it's affecting (kicking) all the guild members when you Ecall them. Once recalled, all the members are affected by limit and they will be warped out even you set the limit to large number.
     
     
    Sir @astralprojection script works and exclude the ecall issue, but the problem is the script is counting the overall guildmember cap inside the castle/koe map, not per member of the separate guilds so even though the guild A and guild B aren't 3 (or 30) members inside, the script will kick the excess as long as its reach the limit inside the map. It counts all the guild members inside the map.
  6. Like
    Kuroyama reacted to AnnieRuru in Need support for @market plugin   
    dastgir has been a big help trying to help maintain some of my plugins,
    but this one in particular, I see the version is 1.6, which means he miss the version 1.7 update
     
    yup, the one you posted has memory leak problem because the chat-room doesn't remove properly
    eg: only remove the chat-room shown, but the memory still persist
    see the remove_chatroom function to see how to remove the chat-room from server memory properly
    ... which was copy paste from a function from chat.c
     
    anyway here is version 1.9
    https://github.com/AnnieRuru/Release/blob/master/plugins/marketclone/marketclone_1.9.c
     
  7. Like
    Kuroyama reacted to AnnieRuru in [Urgent Request] @ignoredrop/@seeitems   
    https://github.com/AnnieRuru/Release/blob/master/plugins/ignoredropitem/ignoredropitem_0.1.c
     
    https://github.com/AnnieRuru/Release/blob/master/plugins/ignoredropitem/ignoredropitem_0.2.c
  8. Upvote
    Kuroyama reacted to Samuel in Hidemobhpbar Plugin   
    Sorry for the late reply, I've been very busy in the past few weeks.
     
    I have updated the plugin. Please try.
  9. Upvote
    Kuroyama reacted to astralprojection in Castle Guild Member Limit   
    - script woelimit HIDDEN_NPC,{ end; OnPCLoadMapEvent: .@rid = playerattached(); if ( !compare(strcharinfo(PC_MAP), "g_cas") || !agitcheck() ) end; getguildmember getcharid(CHAR_ID_GUILD), 1; getguildmember getcharid(CHAR_ID_GUILD), 2; .@count = 0; for ( .@i = 0; .@i < $@guildmembercount; .@i++ ) { if (attachrid($@guildmemberaid[.@i])) { if( compare(strcharinfo(PC_MAP), "g_cas") ) .@count++; } } if ( .@rid ) attachrid(.@rid); else detachrid; if(.@count > .max){ message strcharinfo(0), "WARNING: Max of "+.max+" members can simultaneously join the WOE."; warp "SavePoint",0,0; } end; OnInit: .max = 25; end; } try this
  10. Like
    Kuroyama reacted to astralprojection in Castle Guild Member Limit   
    i will try also  i will share if i get it right.
  11. Upvote
    Kuroyama reacted to Samuel in Hidemobhpbar Plugin   
    I tried to convert my pull request to disable hp bar on MvP and Emperium into a plugin
     
     
    hidemobhpbar
  12. Like
    Kuroyama reacted to Samuel in hit-delay plugin   
    Try this, haven't tested yet
     
    void pc_damage_received(struct map_session_data **sd, struct block_list **src, unsigned int *hp, unsigned int *sp) { struct warp_delay_tick *delay_data; if ((map_flag_gvg(sd->bl.m)) || (map_flag_gvg2(sd->bl.m))) { return; } if ((delay_data = getFromMSD(*sd, 0)) == NULL) { CREATE(delay_data,struct warp_delay_tick,1); addToMSD(*sd,delay_data,0,true); } delay_data->last_hit = timer->gettick(); if (*src) delay_data->who_hit = (*src)->type; else delay_data->who_hit = BL_NUL; return; }  
    Replace the pc_damage_received function with that.
     
    Back it up first before replacing.
     
  13. Upvote
    Kuroyama reacted to Samuel in hit-delay plugin   
    Sorry didn't see it was a Pre hook
     
    void pc_damage_received(struct map_session_data **sd, struct block_list **src, unsigned int *hp, unsigned int *sp) { struct warp_delay_tick *delay_data; if ((map_flag_gvg((*sd)->bl.m)) || (map_flag_gvg2((*sd)->bl.m))) { return; } if ((delay_data = getFromMSD(*sd, 0)) == NULL) { CREATE(delay_data,struct warp_delay_tick,1); addToMSD(*sd,delay_data,0,true); } delay_data->last_hit = timer->gettick(); if (*src) delay_data->who_hit = (*src)->type; else delay_data->who_hit = BL_NUL; return; }  
  14. Upvote
    Kuroyama reacted to Dastgir in Noob Question about weapon position   
    The problem is with weapon sprite. you need to edit weapon sprite accordingly.
  15. Upvote
    Kuroyama reacted to Rebel in Lord Knight [SL Modification]   
    Find in skill.c
    int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id, uint16 skill_lv) insert after
    int index[MAX_SKILL_ITEM_REQUIRE]; this
    struct status_change *sc = &sd->sc; find in skill.c
    if( require.weapon && !pc_check_weapontype(sd,require.weapon) ) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_THIS_WEAPON,0); return 0; } change to
    if( require.weapon && !(pc_check_weapontype(sd,require.weapon) || (skill_id == LK_PARRYING && sc && sc->data[SC_SOULLINK] && sc->data[SC_SOULLINK]->val2 == SL_KNIGHT && sd->weapontype == W_1HSWORD))) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_THIS_WEAPON,0); return 0; } Find again in skill.c
    if( require.weapon && !pc_check_weapontype(sd,require.weapon) ) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_THIS_WEAPON,0); return 0; } change to
    if( require.weapon && !(pc_check_weapontype(sd,require.weapon) || (skill_id == LK_PARRYING && sc && sc->data[SC_SOULLINK] && sc->data[SC_SOULLINK]->val2 == SL_KNIGHT && sd->weapontype == W_1HSWORD))) { clif->skill_fail(sd,skill_id,USESKILL_FAIL_THIS_WEAPON,0); return 0; } recompile.
  16. Upvote
    Kuroyama reacted to Dastgir in Need NoView Plugin Support   
    Hello,
     
    I have today released new plugin, namely NoView.
    It adds command @noview to disable the headgear views for users (Upper/Mid/Lower headgear views)
     
    Link: https://github.com/dastgirp/HPM-Plugins/blob/master/src/plugins/noview.c
  17. Upvote
    Kuroyama reacted to iCORE in HPTable with high Base lvl   
    http://pastebin.com/dxpD2rKZ All jobs upto level 400 HP and SP table hope it helps
     
    * I use eA forumula
  18. Like
    Kuroyama got a reaction from ratbugasmati in Help: Gusto ko i-up ulet yung server ko dati   
    Para sakin, mas better ang updated files etc. Since 2018 naman ang files mo, update mo lang ng unti kasi sobrang daming naimprove ng mga emulators ngayon in terms of securities and bug fixes.
  19. Upvote
    Kuroyama reacted to Zeiyan in Utility: GM Tools   
    @charinfo
     
    A @command (via script) that gives you and your GM Staff (GM level 2 NOT group level)information about Player account informations without having to login to phpmyadmin. I'm quite used to making very simple scripts but this is my first time to give back to the community and also my first time using sql query in scripts (in short i'm a newbie) Please leave comments about what you think . ( I use it on my own server so it includes checking if they have freebies received via account or via mac address)
     
    You can choose to input Character name or Username
     
    NOTE: I know the @accinfo almost do the same thing but i'm a big noob in source editing so i made this for my own use ( then i can include the stuff i want to display)
    - script charinfo -1,{OnInit: bindatcmd "charinfo","charinfo::OnCharInfo", 0, 2; end;OnCharInfo: if(getgroupid() >= 2) { mes " [ Character Info ] "; mes " Hello GM ^00CC00"+strcharinfo(0)+"^000000!"; mes " What would you like to check? "; switch (select("Character Name:Username")) { case 1: input .@chrnm$; query_sql "SELECT `account_id` FROM `char` WHERE `name` = '" + .@chrnm$ + "'",.@acid; next; break; case 2: input .@acnme$; query_sql "SELECT `account_id` FROM `login` WHERE `userid` = '" + .@acnme$ + "'",.@acid; next; break; } query_sql "SELECT `userid`,`email`,`group_id`,`last_ip`,`birthdate`,`last_mac` FROM `login` WHERE `account_id` ='" + .@acid + "'", .@usrd$,.@eml$,.@ggm,.@lstip$,.@brtdy$,.@macad$; if ( .@ggm > 0 ) { mes "[ Account Information ]"; mes "GM Account Information are not available"; close; } else if ( .@acid < 2000000 || .@acid > 3000000 ) { mes "[ Account Information ]"; mes "Character Not Found"; close; } query_sql "SELECT `name`, `base_level`, `job_level` FROM `char` WHERE `account_id` =" + .@acid + " ORDER BY `base_level` DESC",.@chrlst$, .@blvl, .@jlvl; mes "[Character List]" ; for(set .@i, 0; .@i < getarraysize(.@chrlst$); set .@i, .@i + 1){ mes .@i+1+". ^00CC00"+.@chrlst$[.@i]+"^000000 "; mes "Level: "+.@blvl[.@i]+"/"+.@jlvl[.@i]+" "; } next; mes "[ Account Information ]"; mes "Account ID: "+.@acid; mes "Username: "+.@usrd$; mes "Email: "+.@eml$; mes "Last IP: ^00CC00"+.@lstip$+"^000000"; mes "Birthdate: "+.@brtdy$; mes "Mac Address: ^FF0000"+.@macad$+"^000000"; query_sql "SELECT `account_id`,`last_mac` FROM `freebies` WHERE `account_id` =" + .@acid + " ",.@rcvfrbs, .@lstmc$; if (.@rcvfrbs > 0) { set .@rcvfrbs, 1; } else { set .@rcvfrbs, 0; } if (.@rcvfrbs > 0) { set .@rcvfrbs$, "^00CC00Yes^000000"; } if (.@rcvfrbs == 0) { set .@rcvfrbs$, "^FF0000No^000000"; } mes "Freebies from account: "+.@rcvfrbs$; for(set .@i1, 0; .@i1 < getarraysize(.@lstmc$); set .@i1, .@i1 + 1){ set .@lstmc, .@lstmc +1; } if (.@lstmc < 1) { set .@lstmc$, "^FF0000No^000000"; } if (.@lstmc > 0) { set .@lstmc$, "^00CC00Yes^000000"; } mes "Freebies from MAC: "+.@lstmc$; close; }} 2. @ipinfo
     
    This one displays all users (displays username) with login count and last login from IP address of a certain character (Input Character name)
     
    - script ipinfo -1,{OnInit: bindatcmd "ipinfo","ipinfo::OnIPInfo", 2, 2; end;OnIPInfo: if(getgroupid() >= 2) { input .@chrnm$; query_sql "SELECT `account_id` FROM `char` WHERE `name` = '" + .@chrnm$ + "'",.@acid; query_sql "SELECT `last_ip`,`group_id` FROM `login` WHERE `account_id` ='" + .@acid + "'", .@lstp$, .@grplvl; query_sql "SELECT `account_id`,`userid`,`logincount`,`lastlogin` FROM `login` WHERE `last_ip` ='" + .@lstp$+ "'", .@acidlip, .@acidlip$, .@lgncnt, .@lstlgn$; if (.@acid < 2000000 || .@acid > 3000000) { mes "Character Not Found"; close; } if (.@grplvl > 0) { mes "GM Accounts Not Available"; close; } mes "Name: ^00CC00"+.@chrnm$+"^000000 "; mes "IP Address: ^FF0000"+.@lstp$+"^000000 "; next; mes "Displaying Users with IP: ^00CC00"+.@lstp$; next; for(set .@i, 0; .@i < getarraysize(.@acidlip$); set .@i, .@i + 1){ mes .@i+1+". ^00CC00"+.@acidlip$[.@i]+"^000000 "; mes "Login Count: "+.@lgncnt[.@i]+" "; mes "Last Login: "+.@lstlgn$[.@i]+" "; } close; }} 3. @macinfo
     
    Same as @ipinfo except this one displays mac address information (if you have harmony or in my case have last_mac table)
     
    - script macinfo -1,{OnInit: bindatcmd "macinfo","macinfo::OnMacInfo", 2, 2; end;OnMacInfo: if(getgroupid() >= 2) { input .@chrnm$; query_sql "SELECT `account_id` FROM `char` WHERE `name` = '" + .@chrnm$ + "'",.@acid; query_sql "SELECT `last_mac`,`group_id` FROM `login` WHERE `account_id` ='" + .@acid + "'", .@lstp$, .@grplvl; query_sql "SELECT `account_id`,`userid`,`logincount`,`lastlogin` FROM `login` WHERE `last_mac` ='" + .@lstp$+ "'", .@acidlmac, .@acidlmac$, .@lgncnt, .@lstlgn$; if (.@acid < 2000000 || .@acid > 3000000) { mes "Character Not Found"; close; } if (.@grplvl > 0) { mes "GM Accounts Not Available"; close; } mes "Name: ^00CC00"+.@chrnm$+"^000000 "; mes "Mac Address: ^FF0000"+.@lstp$+"^000000 "; next; mes "Displaying Users with Mac: ^00CC00"+.@lstp$; next; for(set .@i, 0; .@i < getarraysize(.@acidlmac$); set .@i, .@i + 1){ mes .@i+1+". ^00CC00"+.@acidlmac$[.@i]+"^000000 "; mes "Login Count: "+.@lgncnt[.@i]+" "; mes "Last Login: "+.@lstlgn$[.@i]+" "; } close; }}  
  20. Upvote
    Kuroyama reacted to malufett in Something bad happened. Report to an administrator ASAP.   
    try this edit 'module/account/create.php'
    so that you can see the full details of the exception....
     

  21. Upvote
    Kuroyama reacted to RagnarokOnline2015 in [Guide] Mapcache Generation 2018   
    Sorry For My English
  22. Like
    Kuroyama reacted to rans in How to hide bindatcmd on showing from @commands?   
    If the bindatcommand level is higher than the player level. it will not show
  23. Like
    Kuroyama reacted to Mumbles in @go command   
    So the documentation for nowarpto is correct, then; lost track of what the original issue was for a sec lol.
     
     
    In your last reply, you mentioned replacing mf_nowarp with mf_nowarpto:
    } else if (getgroupid() < getarg(4) || getmapflag(getarg(0), mf_nowarp)) {  
    However, the intent of this line is to prevent warping if the player's Group ID isn't high enough OR if the destination has a nowarp flag, regardless of Group ID. You can bypass this for GMs by changing the expression a little (I'm sure there's a prettier way to do it, but I'm not feeling up to it):
    } else if (getgroupid() < getarg(4) || getmapflag(getarg(0), mf_nowarp) && getgroupid() < getarg(4)) {  
     
    In regard to your original inquiry, the behaviour of nowarp is to prevent the use of @go to a destination; to prevent the use of @go from a map flagged with nowarp (despite this not being the intent of the nowarp flag), you can still prevent warping by adding an expression similar to my original suggestion:
    } else if (getmapflag(strcharinfo(3), mf_nowarp)) { message strcharinfo(0), "You are not authorised to warp from this map.";
    If you would like to prevent warping from specific maps, I would recommend moving forward with the filter/blacklist route — hell, you could even prevent both nowarp-flagged and specific maps from being warped to if you wanted to.
  24. Like
    Kuroyama reacted to Aethelingaeg in Aethelingaeg's Plugin Collection   
    Hi, i cannot reproduce your problem. The command show a message as dispbottom, in green. Maybe you are in the wrong chat? Have you tried equiping your items? The command works as you reequip them to make them disappear, so only those that you reequip become invisible.
     
    @UPDATE: I added the bElementDamage bonus! Please check the main post to see what it does.
  25. Like
    Kuroyama reacted to Aethelingaeg in Aethelingaeg's Plugin Collection   
    Thank you for your feedback!
    It was a encoding problem. 
    I updated it and replaced it with a english message.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.