Jump to content

AnnieRuru

Script Developers
  • Content Count

    1677
  • Joined

  • Last visited

  • Days Won

    245

Reputation Activity

  1. Like
    AnnieRuru reacted to xJhay in About dead / bloody branches   
    Hi mam annie, yes that was me. I recently migrated to hercules because of its unique features that rathena hasn't implement yet.
    I both trying to learn and adopt the two emu but I guess hercules was great and friendly user so far and I might stick with hercules starting this week.
     
    Regarding to the topic, I will try this asap and thank you so much.
  2. Like
    AnnieRuru got a reaction from evilpuncker in About dead / bloody branches   
    wait, I thought I answered this on rathena forum already ?
    https://rathena.org/board/topic/126009-deadbloody-branch-timer/
    same user name, I actually thought I helped a rathena member there
    if you come here and ask the same question again it means you are actually hercules user ?
     
    anyway hercules has plugin system that rathena don't, and rathena still hasn't implement plugin system yet, so here goes
    https://github.com/AnnieRuru/Release/blob/master/plugins/deadbranch_timerdelete/deadbranch_timerdelete.c
  3. Upvote
    AnnieRuru got a reaction from Fou-lu in About dead / bloody branches   
    wait, I thought I answered this on rathena forum already ?
    https://rathena.org/board/topic/126009-deadbloody-branch-timer/
    same user name, I actually thought I helped a rathena member there
    if you come here and ask the same question again it means you are actually hercules user ?
     
    anyway hercules has plugin system that rathena don't, and rathena still hasn't implement plugin system yet, so here goes
    https://github.com/AnnieRuru/Release/blob/master/plugins/deadbranch_timerdelete/deadbranch_timerdelete.c
  4. Like
    AnnieRuru reacted to raPalooza~ in @packetfilter   
    @AnnieRuru
     
    I knew about the woe hiding the damage, but I was wondering if hiding everyones damage but yours would reduce bandwidth and memory.
     
    Example:
    If tou have 20 player hiting a worldboss for 123456789(damages are high nowadays)
     
    That wouldbe 20 x 12356789 packets sent with that value per player...
     
    If it shows only your (self) damage there would be 1 x 123456789 damage packet and 19 x -1 for the damage animation.
    (Hope its clear)
    Do you think It would improve performance?
     
  5. Upvote
    AnnieRuru got a reaction from bWolfie 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
     
     
     
  6. Upvote
    AnnieRuru 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
  7. Like
    AnnieRuru got a reaction from IndieRO 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
     
     
     
  8. Upvote
    AnnieRuru got a reaction from MikZ in Fatal error ! Player not attached. (DOTA PVP)   
    version 2.9
    sleep 1500; ... if ( .announce ) mapannounce .@map$, "The guild ["+ getguildname(.@killer_gid) +"] is OWNING["+ getd(".dota_sql_"+ .@killer_gid +"_c") +"] !!!",16; else announce "The guild ["+ getguildname(.@killer_gid) +"] is OWNING["+ getd(".dota_sql_"+ .@killer_gid +"_c") +"] !!!",16; ... } I used .@killer_gid, which was set earlier, to save the killer's guild ID
    because the sleep script command will detach the RID
    sleep 1500; ... if ( .Announce ) mapannounce .@map$, "The guild ["+ getguildinfo(GUILDINFO_NAME, getcharid(CHAR_ID_GUILD)) +"] is OWNING["+ getd(".dota_sql_"+ .@killer_gid +"_c") +"] !!!",16; else announce "The guild ["+ getguildinfo(GUILDINFO_NAME, getcharid(CHAR_ID_GUILD)) +"] is OWNING["+ getd(".dota_sql_"+ .@killer_gid +"_c") +"] !!!",16; ... } of course the way you did it will cause map-server to spam error because after sleep, RID has detached
     
    anyway just download version 3.1, just released
     
  9. Like
    AnnieRuru got a reaction from Aruar 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
     
     
     
  10. Like
    AnnieRuru 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
  11. Upvote
    AnnieRuru got a reaction from Kuroyama 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
  12. Upvote
    AnnieRuru got a reaction from kalabasa 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
  13. Like
    AnnieRuru got a reaction from evilpuncker in Clan system WITH guild system   
    OnPCStatCalcEvent ?
     
    prontera,155,185,5 script fhdskdjf 1_F_MARIA,{ mes "join annieruru fan club"; next; if (select("Yes","No") == 2) close; #annie_fan_club = true; close2; recalculatestat; end; OnPCStatCalcEvent: if (!#annie_fan_club) end; bonus bAllStats, 100; // Makes you imba end; }  
  14. Like
    AnnieRuru reacted to astralprojection in Castle Guild Member Limit   
    THanks @AnnieRuru so much learning.!
  15. Like
    AnnieRuru got a reaction from Neffletics in Ragnarok Online access card   
    some people actually doesn't believe I've played Ragnarok Online LOL
    so I dig up my precious childhood memory storage box, and scan all those access cards
    really, its my childhood memory

     

     

     

     

    @Emistry sure have seen them before
    EDITING : yeah this IPB forum sucks ...
  16. Like
    AnnieRuru got a reaction from evilpuncker in Class check trouble   
    yes this is indeed confusing
     
    the one in the source code
    source <----> script
    (sd->job & JOBL_THIRD) != 0 <----> (eaclass() & EAJ_THIRD) != 0
    (sd->job & MAPID_BASEMASK) != MAPID_NOVICE <----> (eaclass() & EAJ_BASEMASK) != EAJ_NOVICE
     
    now assuming that your script has correct logic
    script <----> source
    !(eaclass() & EAJL_THIRD)  <----> !(sd->job & JOBL_THIRD)
    BaseJob == Job_SuperNovice <----> (sd->job & MAPID_UPPERMASK) == MAPID_NOVICE (note there are no basejob in source code) (do not confuse EAJL_UPPER - EAJ_UPPERMASK)
    Class != Job_Star_Gladiator <----> sd->status.class != Job_Star_Gladiator
    Class != Job_Soul_Linker <----> sd->status.class != Job_Soul_Linker
     
     
    I think what you want is
    1. all 3rd jobs can access this npc
    2. super novice entended (4190 - Job_Super_Novice_E) cannot use this npc
    3. also allow Job_Star_Gladiator and Job_Soul_Linker to access the npc
     
    prontera,155,185,5 script debug_test_job 1_F_MARIA,{ mes "select a few job to test the condition"; next; switch(select( "Job_Novice - NO", "Job_SuperNovice - NO", "Job_Novice_High - NO", "Job_Super_Novice_E - NO", "Job_Super_Baby - NO", "Job_Super_Baby_E - NO", "Job_Acolyte - NO", "Job_Priest - NO", "Job_High_Priest - NO", "Job_Baby_Priest - NO", "Job_Arch_Bishop - YES", "Job_Arch_Bishop_T - YES", "Job_Baby_Bishop - YES", "Job_Soul_Linker - YES", "Job_Star_Gladiator - YES")) { case 1: jobchange Job_Novice; break; case 2: jobchange Job_SuperNovice; break; case 3: jobchange Job_Novice_High; break; case 4: jobchange Job_Super_Novice_E; break; case 5: jobchange Job_Super_Baby; break; case 6: jobchange Job_Super_Baby_E; break; case 7: jobchange Job_Acolyte; break; case 8: jobchange Job_Priest; break; case 9: jobchange Job_High_Priest; break; case 10: jobchange Job_Baby_Priest; break; case 11: jobchange Job_Arch_Bishop; break; case 12: jobchange Job_Arch_Bishop_T; break; case 13: jobchange Job_Baby_Bishop; break; case 14: jobchange Job_Soul_Linker; break; case 15: jobchange Job_Star_Gladiator; break; default: mes "go die"; close; } message getcharid(CHAR_ID_ACCOUNT), jobname(Class); close; OnInit: bindatcmd "@test2", strnpcinfo(NPC_NAME_UNIQUE)+"::Onaaa"; end; Onaaa: .@eaclass = eaclass(); if (((.@eaclass & EAJL_THIRD) != 0 && (.@eaclass & EAJ_BASEMASK) != EAJ_NOVICE) || Class == Job_Soul_Linker || Class == Job_Star_Gladiator) // this line you want dispbottom "Yes"; else dispbottom "No"; end; }  
    #include "common/hercules.h" #include "map/pc.h" #include "map/clif.h" #include "plugins/HPMHooking.h" #include "common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "test", SERVER_TYPE_MAP, "", HPM_VERSION, }; ACMD(test) { if (((sd->job & JOBL_THIRD) != 0 && (sd->job & MAPID_BASEMASK) != MAPID_NOVICE) || sd->status.class == JOB_SOUL_LINKER || sd->status.class == JOB_STAR_GLADIATOR) clif->message(sd->fd, "Correct"); else clif->message(sd->fd, "Wrong"); return true; } HPExport void plugin_init (void) { addAtcommand("test", test); }  
     
    not a popular script command ?
    I even feel lazy to make a plugin for this script command, just return true/false
  17. Like
    AnnieRuru got a reaction from joven15 in HELP VIP System - add command   
    a basic google search found this topic
    didn't test, but it looks to be most feature complete
     
    hmm.................... bad script design though
  18. Upvote
    AnnieRuru reacted to Kuroyama 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.
  19. Like
    AnnieRuru got a reaction from evilpuncker in Help converting small piece of code to hercules   
    setd "#Attendance_" + gettime(DT_YYYYMMDD),true; bad script design
     
    let's say the player has attended this script for 300 days, then it will have 299 unnecessary variables pile up in `acc_reg_num_db` table
    this kind of variable only use once, so set only 1 variable enough, with the value on date format
     
     
    no.2
    from my understanding, your script even use loop ... why not just use gettimetick(2)
    when login, `@timelogin` = gettimetick(2), when npc check, (gettimetick(2) - `@timelogin`) ....
     
     
    no,3
    and why not just write everything with source code =/
    no need loop, every variable and function you want is readily served in source code
     
    nvm, let me show you if its done entirely with source code
    https://gist.github.com/AnnieRuru/82335a62e8a6133511cda473ade8d322
     
     
    oh and, my discord is AnnieRuru#1609
     
  20. Like
    AnnieRuru got a reaction from evilpuncker in Help converting small piece of code to hercules   
    I just noticed my newly downloaded test server from a few days ago is stable branch LOL ...
    should've been main branch because it just a test server, thanks for reminder
     
    anyway yeah the previous post still stand correct, only the DD are not necessary and you are good to go
  21. Like
    AnnieRuru reacted to evilpuncker in Help converting small piece of code to hercules   
    they changed it on https://github.com/HerculesWS/Hercules/commit/0b86f2b46bcace0967a04fbc3d85a4c9e3df3c32 (finally!) now its account based, thank you for the plugin!
  22. Like
    AnnieRuru got a reaction from evilpuncker in Help converting small piece of code to hercules   
    prontera,155,185,5 script kjhfkhsjd 1_F_MARIA,{ // #Attendance_require = 0; // end; mes callsub(YYYYMMDD); #Attendance_require = callsub(YYYYMMDD); close; YYYYMMDD: return gettime(GETTIME_YEAR) * 10000 + gettime(GETTIME_MONTH) * 100 + gettime(GETTIME_DAYOFMONTH); } #include "common/hercules.h" #include "map/pc.h" #include "map/clif.h" #include "plugins/HPMHooking.h" #include "common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "attendance_requirement", SERVER_TYPE_MAP, "", HPM_VERSION, }; // copy from src\map\date.c int date_get_date(void) { time_t t; struct tm * lt; t = time(NULL); lt = localtime(&t); return (lt->tm_year + 1900) * 10000 + (lt->tm_mon + 1) * 100 + (lt->tm_mday); } static void clif_parse_attendance_reward_request_pre(int *fd, struct map_session_data **sd) { if ((*sd)->state.trading || pc_isdead(*sd) || pc_isvending(*sd)) return; if (pc_readaccountreg(*sd, script->add_variable("#Attendance_require")) != date_get_date()) { clif->messagecolor_self((*sd)->fd, COLOR_RED, "You don't meet the requirement."); hookStop(); } return; } HPExport void plugin_init (void) { addHookPre(clif, pAttendanceRewardRequest, clif_parse_attendance_reward_request_pre); } this has been tested working
     
    btw remember the attendance system are bind to each character in the account
    https://github.com/HerculesWS/Hercules/blob/da14478a8c0c616a6aa5481694c550143bc9b9f3/sql-files/main.sql#L245-L246 <-- under `char` table
    so I guess what you doing there is the reward can claim for each character in the account once the quest has completed
  23. Upvote
    AnnieRuru got a reaction from Tome130 in @costumeitem adds stats   
    the topic already said
    http://herc.ws/board/topic/4383-costume-item-plugins/
    This Plugins will convert your items to costume(item stats/combos/bonuses will also copied)
    so to disable item bonus, have to revised the status_calc_pc_ I think
    src/map/status.c | 3 +++ 1 file changed, 3 insertions(+)diff --git a/src/map/status.c b/src/map/status.cindex 699e734..7223a04 100644--- a/src/map/status.c+++ b/src/map/status.c@@ -2317,6 +2317,9 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) { continue; if(!sd->inventory_data[index]) continue;+ if ( i >= EQI_COSTUME_TOP || i <= EQI_SHADOW_ACC_L )+ if ( MakeDWord(sd->status.inventory[index].card[2],sd->status.inventory[index].card[3]) == 999998 )+ continue; for(k = 0; k < map->list[sd->bl.m].zone->disabled_items_count; k++) { if( map->list[sd->bl.m].zone->disabled_items[k] == sd->inventory_data[index]->nameid ) {
  24. Like
    AnnieRuru got a reaction from Kuroyama 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
     
  25. Like
    AnnieRuru got a reaction from evilpuncker 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
     
×
×
  • Create New...

Important Information

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