-
Content Count
1677 -
Joined
-
Last visited
-
Days Won
246
AnnieRuru last won the day on August 20
AnnieRuru had the most liked content!
About AnnieRuru
-
Rank
~~Cute~Cute~Scripter~~
Contact Methods
-
Discord
AnnieRuru#1609
Profile Information
-
Gender
Female
-
Location:
your next door ~
-
Interests
event scripts ~ battleground scripts ~
making battleground scripts is my hobby ~ -
Github
AnnieRuru
-
Emulator
Hercules
-
Client Version
2019-05-30aRagexeRE
-
sss5902 reacted to an answer to a question: R>Old Hunter Job Change Quest
-
Strong but Light started following AnnieRuru
-
kalabasa reacted to an answer to a question: Cluckers npc/custom/events
-
Whiffery93 started following AnnieRuru
-
IndieRO reacted to a post in a topic: Sample Questlog & Achievement script
-
kalabasa reacted to an answer to a question: NPC with a Promo Code
-
kalabasa reacted to an answer to a question: Castle Guild Member Limit
-
futureknight reacted to a post in a topic: Dota PVP Ladder
-
Hyroshima reacted to a post in a topic: Change Equipment Skin
-
Hyroshima reacted to a question: hosting Hercules on Google Cloud with CentOS 8
-
IndieRO reacted to a post in a topic: Deprecated Features
-
nomade reacted to a post in a topic: @market clone
-
goto Hercules github, click History https://github.com/HerculesWS/Hercules/commits/stable/npc/jobs/2-1/hunter.txt it's the same thing
-
Can't increase the job level of Soul Linker
AnnieRuru replied to Kuroyama's question in Database Requests
can't reproduce your problem SoulLinker: { MaxLevel: 123 Exp: [ 2500, 4200, 7000, 10300, 15900, 18900, 20900, 22600, 24900, 28800, 31500, 32000, 33300, 35100, 40500, 44100, 46300, 48500, 50700, 56000, 59400, 63500, 68100, 75000, 85700, 90500, 96600, 102600, 108600, 119700, 126000, 132300, 138600, 146100, 157500, 170600, 180400, 190300, 196800, 214900, 225200, 232000, 245700, 255900, 279300, 294000, 308700, 327000, 345400 ] } my max level becomes 123 ok wait, this is renewal, let me compile to pre-renewal because I kinda remember you said using 20180620 client yup correct, if compile as pre-renewal, it will read SecondClasses: instead of SoulLinker: field in fact, pre-renwal doesn't even has SoulLinker: field so either change to renewal, or edit the source code yourself -
/// Updates the object's (bl) name on client. /// 0095 <id>.L <char name>.24B (ZC_ACK_REQNAME) /// 0195 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B (ZC_ACK_REQNAMEALL) /// 0A30 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B <title id>.L (ZC_ACK_REQNAMEALL2) static void clif_mobname_ack(int fd, struct block_list *bl) { nullpo_retv(bl); Assert_retv(bl->type == BL_MOB); const struct mob_data *md = BL_UCCAST(BL_MOB, bl); if (md->guardian_data && md->guardian_data->g) { clif->mobname_guardian_ack(fd, bl); } else if (battle_config.show_mob_info) { clif->mobname_additional_ack(fd, bl); } else { clif->mobname_normal_ack(fd, bl); } } if that monster belongs to the guild, it won't show the hp/maxhp /// Updates the object's (bl) name on client. /// 0095 <id>.L <char name>.24B (ZC_ACK_REQNAME) /// 0195 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B (ZC_ACK_REQNAMEALL) /// 0A30 <id>.L <char name>.24B <party name>.24B <guild name>.24B <position name>.24B <title id>.L (ZC_ACK_REQNAMEALL2) static void clif_mobname_guardian_ack(int fd, struct block_list *bl) { nullpo_retv(bl); Assert_retv(bl->type == BL_MOB); const struct mob_data *md = BL_UCCAST(BL_MOB, bl); Assert_retv(md->guardian_data && md->guardian_data->g); struct PACKET_ZC_ACK_REQNAMEALL packet = { 0 }; packet.packet_id = HEADER_ZC_ACK_REQNAMEALL; packet.gid = bl->id; memcpy(packet.name, md->name, NAME_LENGTH); memcpy(packet.guild_name, md->guardian_data->g->name, NAME_LENGTH); memcpy(packet.position_name, md->guardian_data->castle->castle_name, NAME_LENGTH); clif->send_selforarea(fd, bl, &packet, sizeof(struct PACKET_ZC_ACK_REQNAMEALL)); } it will shows the guild name, castle name etc instead of hp/maxhp this is some quick fix to not show the emprium hp/maxhp with show_mob_info src/map/clif.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/map/clif.c b/src/map/clif.c index a6427b796..9fa2323be 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -9728,12 +9728,14 @@ static void clif_mobname_additional_ack(int fd, struct block_list *bl) memcpy(packet.name, md->name, NAME_LENGTH); char mobhp[100]; char *str_p = mobhp; - if (battle_config.show_mob_info&4) - str_p += sprintf(str_p, "Lv. %d | ", md->level); - if (battle_config.show_mob_info&1) - str_p += sprintf(str_p, "HP: %u/%u | ", md->status.hp, md->status.max_hp); - if (battle_config.show_mob_info&2) - str_p += sprintf(str_p, "HP: %u%% | ", get_percentage(md->status.hp, md->status.max_hp)); + if (md->class_ != MOBID_EMPELIUM) { + if (battle_config.show_mob_info&4) + str_p += sprintf(str_p, "Lv. %d | ", md->level); + if (battle_config.show_mob_info&1) + str_p += sprintf(str_p, "HP: %u/%u | ", md->status.hp, md->status.max_hp); + if (battle_config.show_mob_info&2) + str_p += sprintf(str_p, "HP: %u%% | ", get_percentage(md->status.hp, md->status.max_hp)); + } //Even thought mobhp ain't a name, we send it as one so the client //can parse it. [Skotlex] if (str_p != mobhp) { btw, I don't really call this a bug ... but it's true emperium should belongs to CLASS_GUARDIAN according to aegis .... this one ... I don't really have a good idea how to make a correct fix on github, because emperium that belongs to guild doesn't show the information, which is working as intended
-
{ Id: 909 AegisName: "Jellopy" Name: "Jellopy" Buy: 6 Weight: 10 BuyingStore: true ShowDropEffect: true DropEffectMode: 2 }, https://github.com/HerculesWS/Hercules/blob/stable/doc/item_db.txt#L374-L381 your client needs to support 0xadd packet, which is 20180418 and above
-
AnnieRuru reacted to an answer to a question: hosting Hercules on Google Cloud with CentOS 8
-
eamod's `@itemdestroy` doesn't include cards so `@itemdestroy 4001` will not destroy the poring card that already slot into the equipment the purpose of this mod is just to remove certain ... event related items I guess .... hmmm .... upon reading the code, I don't really think this will work ... let me test #include "common/hercules.h" #include "map/pc.h" #include "map/itemdb.h" #include "map/storage.h" #include "common/nullpo.h" #include "plugins/HPMHooking.h" #include "common/HPMDataCheck.h" HPExport struct hplugin_info pinfo = { "itemdestroy", SERVER_TYPE_MAP, "0.1", HPM_VERSION, }; ACMD(itemdestroy) { int nameid = atoi(message); if (itemdb->exists(nameid) == 0) { clif->message(fd, "Enter a Valid Item ID. Usage: @itemdestroy <itemid>"); return false; } int i; struct map_session_data *psd; struct s_mapiterator *iter = mapit_getallusers(); for (psd = BL_UCAST(BL_PC, mapit->first(iter)); mapit->exists(iter); psd = BL_UCAST(BL_PC, mapit->next(iter))) { for (i = 0; i < MAX_INVENTORY; ++i) { // Inventory Removal if (psd->status.inventory[i].nameid != nameid) continue; pc->delitem(psd, i, psd->status.inventory[i].amount, 0, 0, LOG_TYPE_COMMAND); } for (i = 0; i < MAX_CART; ++i) { // Cart Removal if (psd->status.cart[i].nameid != nameid) continue; pc->cart_delitem(psd, i, psd->status.cart[i].amount, 0, LOG_TYPE_COMMAND); } for (i = 0; i < VECTOR_LENGTH(psd->storage.item); ++i) { // Storage Removal struct item *sitem = &VECTOR_INDEX(psd->storage.item, i); nullpo_ret(sitem); if (sitem->nameid == nameid) storage->delitem(psd, i, sitem->amount); } storage->close(psd); if (psd->status.guild_id > 0) { // Guild Storage Removal gstorage->open(sd); struct guild_storage *stor; nullpo_ret(stor=idb_get(gstorage->db, psd->status.guild_id)); for (i = 0; i < MAX_GUILD_STORAGE; ++i) { if (stor->items[i].nameid != nameid) continue; gstorage->delitem(psd, stor, i, stor->items[i].amount); } gstorage->close(psd); } } mapit->free(iter); return true; } HPExport void plugin_init(void) { addAtcommand("itemdestroy", itemdestroy); } yup doesn't work, the guild storage opens up, and there are delay between map-server and char-server when determine the client actually accessing the guild storage or not in fact, eamod's item destroy doesn't even include guild storage or mail removal /*========================================== Item Removal *------------------------------------------*/ void pc_item_remove4all(int nameid, bool char_server) { if( char_server ) chrif_item_remove4all(nameid); else { struct map_session_data *sd; struct s_mapiterator* iter; int index; iter = mapit_getallusers(); for( sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); sd = (TBL_PC*)mapit_next(iter) ) { for( index = 0; index < MAX_INVENTORY; index++ ) { // Inventory Removal if( sd->status.inventory[index].nameid != nameid ) continue; pc_delitem(sd, index, sd->status.inventory[index].amount, 0, 0, LOG_TYPE_COMMAND); } for( index = 0; index < MAX_CART; index++ ) { // Cart Removal if( sd->status.cart[index].nameid != nameid ) continue; pc_cart_delitem(sd, index, sd->status.cart[index].amount, 0, LOG_TYPE_COMMAND); } for( index = 0; index < MAX_STORAGE; index++ ) { // Storage Removal if( sd->status.storage.items[index].nameid != nameid ) continue; storage_delitem(sd, index, sd->status.storage.items[index].amount); } for( index = 0; index < MAX_EXTRA_STORAGE; index++ ) { // Extra Storage if( sd->status.ext_storage.items[index].nameid != nameid ) continue; ext_storage_delitem(sd, index, sd->status.ext_storage.items[index].amount); } } mapit_free(iter); } } this idea is fantastic, only in theory, but doesn't work on live server better just run DELETE syntax from MySQL and remove the item when server is offline
-
well yes, almost same concept here this is rip from clif.c /// Presents list of items, that can be sold to an NPC shop (ZC_PC_SELL_ITEMLIST). /// 00c7 <packet len>.W { <index>.W <price>.L <overcharge price>.L }* static void clif_selllist(struct map_session_data *sd) { int c = 0, val; nullpo_retv(sd); int fd = sd->fd; WFIFOHEAD(fd, sd->status.inventorySize * 10 + 4); WFIFOW(fd,0)=0xc7; for (int i = 0; i < sd->status.inventorySize; i++) { if( sd->status.inventory[i].nameid > 0 && sd->inventory_data[i] ) { if( !itemdb_cansell(&sd->status.inventory[i], pc_get_group_level(sd)) ) continue; if (sd->status.inventory[i].favorite != 0) continue; // Cannot Sell Favorite item if( sd->status.inventory[i].expire_time ) continue; // Cannot Sell Rental Items if( sd->status.inventory[i].bound && !pc_can_give_bound_items(sd)) continue; // Don't allow sale of bound items val=sd->inventory_data[i]->value_sell; if( val < 0 ) continue; WFIFOW(fd,4+c*10)=i+2; WFIFOL(fd,6+c*10)=val; WFIFOL(fd,10+c*10)=pc->modifysellvalue(sd,val); c++; } } WFIFOW(fd,2)=c*10+4; WFIFOSET(fd,WFIFOW(fd,2)); }
-
AnnieRuru reacted to an answer to a question: Scripting Tutorials & Guides
-
AnnieRuru reacted to an answer to a question: Show 1 Regen HP/SP, how to remove it?
-
its either monthly or weekly, no both if needs both, its still possible but whole system needs to rewrite, not a free script anymore (means I charge for it) https://github.com/AnnieRuru/Release/blob/master/scripts/PvP %26 GvG/Dota PVP ladder/dota_sql_ladder_3.6_week_reward.txt
-
must be caused by `@killmonster` or something like that just tested `@killmonster` or `@killmonster2` will trigger the monster label, so ... shouldn't happen this way script `*killmonster` or `*killmonsterall` ?? then there's the problem ..... - script Punching Bag FAKE_NPC,{ OnInit: .mobid = monster("prontera",158,183, "Punching Bag", BARRICADE, 1, "Punching Bag::OnInit"); setunitdata .mobid, UDT_MAXHP, 2000000000; OnTimer10000: if (getunittype(.mobid) == -1) end; setunitdata .mobid, UDT_HP, 2000000000; initnpctimer; end; } I thought the *unitexists script command is useless so I never made a pull request for it but in this case ... we really need a console warning to tell that barricade is gone so .... I also wonder how this barricade can go missing in the first place
-
my test server, from the screenshot provided still follow this topic https://rathena.org/board/topic/106413-kro-full-client-2020-04-09-includes-bgm-rsu/ so I downloaded kro 20200409 20200205 hexed client from nemo <-- PACKETVER client translation use all 3 zackdreaver, Asheraf, chris
-
http://nemo.herc.ws/downloads/2020-02-05aRagexeRE/
-
20200205 client nothing, gravity just put it there this feature isn't available on 20190530, but appear on 20200205 so its somewhere between these date why gibberish word ? I guess I have outdated translation file
-
What OS is best to use for Hercules?
AnnieRuru replied to Verzeltainne's question in General Server Support
this topic come out at the right time I'm not sure about debian, but I tested CentOS 7 and CentOS 8 CentOS 8 come with mysql 8.0 https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-centos-8 and this alone speed up a lot of configuration time no need to install mariadb, (rathena's guide says need to install mariadb, but I tested CentOS 8 it doesn't need it) yes CentOS 7 needs to install a lot more stuffs, CentOS 8 just much simpler