-
Content Count
1677 -
Joined
-
Last visited
-
Days Won
245
Reputation Activity
-
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.
-
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
-
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
-
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?
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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; }
-
AnnieRuru reacted to astralprojection in Castle Guild Member Limit
THanks @AnnieRuru so much learning.!
-
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 ...
-
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
-
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
-
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.
-
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
-
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
-
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!
-
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
-
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 ) { -
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
-
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