Jump to content

bWolfie

Members
  • Content Count

    848
  • Joined

  • Last visited

  • Days Won

    34

Reputation Activity

  1. Like
    bWolfie got a reaction from sfosodkw2 in How can i get the CHAR_ID_CHAR for all players in a map?   
    Needs to be getcharid(CHAR_ID_CHAR, .@units[.@i])
  2. Upvote
    bWolfie reacted to Asheraf in Help with map server leak   
    Either add a
    aFree(item_name); or better use a stack allocation instead of malloc
    char item_name[ITEM_NAME_LENGTH];  
  3. Upvote
    bWolfie reacted to 4144 in Help with map server leak   
    after sprintf, add
    aFree(item_name); and why memcpy? server may crash if name too short. probably better strncpy or safestrncpy
  4. Upvote
    bWolfie got a reaction from kalabasa in FCP debuff Strip   
    Yup it seems this may be official behavior...it is silly though isn't it. A former dev on my server fixed this for me. If I recall, another issue is if you don't have an item equipped in that area, the skill Chemical Protection cannot be cast.
     
    I'm sure he wouldn't mind me sharing this here. Hopefully...
    Can't guarantee it will work or if all the code is the same as this was from an old revision.
     
    1. Open skill.c
    - Find:
             case AM_CP_ARMOR:          case AM_CP_HELM:          {             unsigned int equip[] = { EQP_WEAPON, EQP_SHIELD, EQP_ARMOR, EQP_HEAD_TOP };             int index;             if ( sd && (bl->type != BL_PC || (dstsd && pc->checkequip(dstsd, equip[skill_id - AM_CP_WEAPON]) < 0) ||                 (dstsd && equip[skill_id - AM_CP_WEAPON] == EQP_SHIELD && pc->checkequip(dstsd, EQP_SHIELD) > 0                 && (index = dstsd->equip_index[EQI_HAND_L]) >= 0 && dstsd->inventory_data[index]                 && dstsd->inventory_data[index]->type != IT_ARMOR)) ) {                  clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);                  map->freeblock_unlock(); // Don't consume item requirements                  return 0;              }              clif->skill_nodamage(src, bl, skill_id, skill_lv,              break;          }          case AM_TWILIGHT1:  Replace with:
             case AM_CP_ARMOR:          case AM_CP_HELM:          {             if ( sd && (bl->type != BL_PC ) ) {                  clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);                  map->freeblock_unlock(); // Don't consume item requirements                  return 0;              }              clif->skill_nodamage(src, bl, skill_id, skill_lv,             sc_start(src, bl, type, 100, skill_lv, skill->get_time(skill_id, skill_lv)));             if (tsc->data[SC_PROTECTWEAPON])                 status_change_end(bl, SC_NOEQUIPWEAPON, INVALID_TIMER);             if (tsc->data[SC_PROTECTSHIELD])                 status_change_end(bl, SC_NOEQUIPSHIELD, INVALID_TIMER);             if (tsc->data[SC_PROTECTARMOR])                 status_change_end(bl, SC_NOEQUIPARMOR, INVALID_TIMER);             if (tsc->data[SC_PROTECTHELM])                 status_change_end(bl, SC_NOEQUIPHELM, INVALID_TIMER);              break;          }          case AM_TWILIGHT1:  2. Then find:
             // Full Chemical Protection          case CR_FULLPROTECTION:          {             unsigned int equip[] = { EQP_WEAPON, EQP_SHIELD, EQP_ARMOR, EQP_HEAD_TOP };              int i, s = 0, skilltime = skill->get_time(skill_id, skill_lv);              for ( i = 0; i < 4; i++ ) {                 if ( bl->type != BL_PC || (dstsd && pc->checkequip(dstsd, equip[i]) < 0) )                      continue;                 if ( dstsd && equip[i] == EQP_SHIELD ) {                     short index = dstsd->equip_index[EQI_HAND_L];                     if ( index >= 0 && dstsd->inventory_data[index] && dstsd->inventory_data[index]->type != IT_ARMOR )                         continue;                 }                  sc_start(src, bl, (sc_type)(SC_PROTECTWEAPON + i), 100, skill_lv, skilltime);                  s++;              }              if ( sd && !s ) {  And replace with:
             // Full Chemical Protection          case CR_FULLPROTECTION:          {              int i, s = 0, skilltime = skill->get_time(skill_id, skill_lv);              for ( i = 0; i < 4; i++ ) {                 if ( bl->type != BL_PC )                      continue;                  sc_start(src, bl, (sc_type)(SC_PROTECTWEAPON + i), 100, skill_lv, skilltime);                 status_change_end(bl, (sc_type)(SC_NOEQUIPWEAPON + i), INVALID_TIMER);                  s++;              }              if ( sd && !s ) {
  5. Upvote
    bWolfie reacted to astralprojection in What's happen, I found weird IP ?   
    IP's are recycled upon termination of machine rental or services. maybe previous user moved/migrated to new ip but there are clients is still trying to send packets to old ip.  i dont know.
  6. Upvote
    bWolfie 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
     
     
     
  7. Like
    bWolfie got a reaction from evilpuncker in Old exp tables - exp_group_db.conf for Base Level 999   
    https://pastebin.com/H9e2SG9t
    Based on the old exp.txt tables. This only works for base level 999.
    If you want to use a lower level, you need to comment out all entries above that level. E.g. if you want base level 500, you need to comment out entries 500-999.
    The formula for no. of entries you need is [Max Base Level - 1]. So if max level is 400, you need 399 entries; 250 needs 249, and so on.
    Let me know if there are any issues with it.
  8. Upvote
    bWolfie got a reaction from iraciz in [Event] Wheel of fortune   
    only works with best emulator hercules master race we are best habilis prime transform no noob emulator
  9. Upvote
    bWolfie reacted to Ai4rei in Hex to enable /nc in WoE   
    I was bored, so here you go @PunkBuster:
    // long jmp F:85C00F85????00006A11 R:85C00F85000000006A11 // short jmp F:85C075??6A11 R:85C075006A11 Any combination of these two patches should yield total of 4 hits. You did not state a client version, so these are only tested up to 2012.
  10. Upvote
    bWolfie got a reaction from Neffletics in @adopt atcommand   
    Description: Adds the @adopt command to your server.
    Usage: @adopt <char name>
    The adoption feature exists in the source. However, from experience, some clients don't support the right-click menu option to adopt players, rendering the feature unusable. Perhaps this atcommand should be added to the main repo.
    For now, you can use this to allow your players to use the adoption system.
    Download: https://github.com/bWolfie/HPM-Plugins/blob/master/src/plugins/adopt.c
  11. Upvote
    bWolfie got a reaction from eitopop in [Guide] Mapcache Generation 2018   
    As of Release v2018.03.13, the method to generate mapcache for Hercules has changed. A lot of people. myself included, were confused as to how it works. In this thread, I will do my best to explain the new way to generate your cache. This guide is intended to help people using the old system, not to aid new people (i.e. never generated mapcache before), so if you are new, some of it may seem like alien talk.
    Old (your source predates [is older than] Feb 18, 2018)
    In the old system, there were two ways to generate mapcache
    You could run the mapcache executable in Hercules root folder. Or use a program such as WeeMapCache to edit in your required mapcache. These two methods would generate or alter your required mapcache located in db/[pre-re or re]/map_cache.dat. However, they are no longer supported.
    New (your source is using Release v2018.03.13 or newer)
    The new system involves the use of the new 'mapcache' plugin to generate files. Some quick points:
    db/[pre-re or re]/map_cache.dat has been dropped (no longer supported). In its place are individual .mcache files for every map located in maps/[pre-re or re]/ Mapcache executable has been removed. Replaced with the mapcache plugin (src/plugins/mapcache.c). How to generate the mapcache?
    Same as before, check conf/map/maps.conf and db/map_index.txt have all the maps you want to cache. Your maps need to exist somewhere in your repository! There are two ways for the plugin to find them:
    a. Place all your maps, including resnametable.txt, inside the data folder of your Hercules repo. I.e. Hercules/data/prontera.gat/gnd/gnd/rsw (note: I forget if all three files are needed).
    b. OR Configure your conf/grf-files.txt to tell it where to find your GRF(s) which contains your maps. Build the mapcache plugin. On linux, this can be done by running the following command:
    make plugin.mapcache
    If using MSVC, compile as you would any other plugin. Execute plugin. This can be done using the following command:
    ./map-server --load-plugin mapcache [param]
    In windows, just remove the './' and run the commands in your command prompt. The params:
    The first thing you should do is run
    ./map-server --load-plugin mapcache --help
    A list of usable parameters will appear. Here are the ones you need to know for mapcache:
    [Info]:   --convert-old-mapcache         Converts an old db/pre-re/map_cache.dat file to the new format. [Mapcache] [Info]:   --rebuild-mapcache             Rebuilds the entire mapcache folder (maps/pre-re/), using db/map_index.txt as index. [Mapcache] [Info]:   --map <name>                   Rebuilds an individual map's cache into maps/pre-re/ (usage: --map <map_name_without_extension>). [Mapcache] [Info]:   --fix-md5                      Updates the checksum for the files in maps/pre-re/, using db/map_index.txt as index (see PR #1981). [Mapcache] ./map-server --load-plugin mapcache --convert-old-mapcache
    Rebuild all the .mcache files using your old db/[pre-re or re]map_cache.dat file.
    NOTE: You should only run this command when you have an old map_cache.dat file you need to convert.
    ./map-server --load-plugin mapcache --rebuild-mapcache
    Rebuild all the .mcache files using your map files specified in step 2 of generation.
    NOTE: You should only run this command in special circumstances. This erases ALL the existing mapcache and rebuilds it with whatever files you provide it. If you don't have the required files, the build will fail and you will be left with missing mapcache files, meaning you won't be able to access those particular maps.
    ./map-server --load-plugin mapcache --map <name>
    Rebuild the .mcache file for the map name you specify. E.g. if you replace <name> with prontera, the maps/[pre-re or re]/prontera.mcache file will be rebuilt.
    NOTE: This is the best command to run, as it only caches a single map at a time.
    ./map-server --load-plugin mapcache --fix-md5
    I don't know what checksum is for.
    The End
    Feel free to ask for help here. I'll try to answer questions re: mapcache if possible. And if you think anything needs correcting or added, let me know.
    Hope this helps!
  12. Upvote
    bWolfie reacted to eitopop in Low max SP   
    At lvl 151 my char's max SP suddenly dropped to 19. HP is fine.
    Mainly Renewal mechanics but disabled some things, such as ASPD.
    I tried #streset but that doesn't seem to help
    Any ideas what is happening? Thanks.
     
    EDIT:
    Looks like when I disabled RENEWAL_ASPD, the job_db.conf from pre-re folder gets read, which doesn't have the SP Table beyond level 150.
    Manually copied the HP and SP Tables from re\job_db.conf to the pre-re file. Problem solved.
     

  13. Upvote
    bWolfie got a reaction from w0wZukuBg in [Showcase] Chowd Castle   
    this is a forum for showcasing maps. doesn't mean they are for sale like @freezing1 said.
  14. Upvote
    bWolfie got a reaction from Zarbony in [Guide] Mapcache Generation 2018   
    As of Release v2018.03.13, the method to generate mapcache for Hercules has changed. A lot of people. myself included, were confused as to how it works. In this thread, I will do my best to explain the new way to generate your cache. This guide is intended to help people using the old system, not to aid new people (i.e. never generated mapcache before), so if you are new, some of it may seem like alien talk.
    Old (your source predates [is older than] Feb 18, 2018)
    In the old system, there were two ways to generate mapcache
    You could run the mapcache executable in Hercules root folder. Or use a program such as WeeMapCache to edit in your required mapcache. These two methods would generate or alter your required mapcache located in db/[pre-re or re]/map_cache.dat. However, they are no longer supported.
    New (your source is using Release v2018.03.13 or newer)
    The new system involves the use of the new 'mapcache' plugin to generate files. Some quick points:
    db/[pre-re or re]/map_cache.dat has been dropped (no longer supported). In its place are individual .mcache files for every map located in maps/[pre-re or re]/ Mapcache executable has been removed. Replaced with the mapcache plugin (src/plugins/mapcache.c). How to generate the mapcache?
    Same as before, check conf/map/maps.conf and db/map_index.txt have all the maps you want to cache. Your maps need to exist somewhere in your repository! There are two ways for the plugin to find them:
    a. Place all your maps, including resnametable.txt, inside the data folder of your Hercules repo. I.e. Hercules/data/prontera.gat/gnd/gnd/rsw (note: I forget if all three files are needed).
    b. OR Configure your conf/grf-files.txt to tell it where to find your GRF(s) which contains your maps. Build the mapcache plugin. On linux, this can be done by running the following command:
    make plugin.mapcache
    If using MSVC, compile as you would any other plugin. Execute plugin. This can be done using the following command:
    ./map-server --load-plugin mapcache [param]
    In windows, just remove the './' and run the commands in your command prompt. The params:
    The first thing you should do is run
    ./map-server --load-plugin mapcache --help
    A list of usable parameters will appear. Here are the ones you need to know for mapcache:
    [Info]:   --convert-old-mapcache         Converts an old db/pre-re/map_cache.dat file to the new format. [Mapcache] [Info]:   --rebuild-mapcache             Rebuilds the entire mapcache folder (maps/pre-re/), using db/map_index.txt as index. [Mapcache] [Info]:   --map <name>                   Rebuilds an individual map's cache into maps/pre-re/ (usage: --map <map_name_without_extension>). [Mapcache] [Info]:   --fix-md5                      Updates the checksum for the files in maps/pre-re/, using db/map_index.txt as index (see PR #1981). [Mapcache] ./map-server --load-plugin mapcache --convert-old-mapcache
    Rebuild all the .mcache files using your old db/[pre-re or re]map_cache.dat file.
    NOTE: You should only run this command when you have an old map_cache.dat file you need to convert.
    ./map-server --load-plugin mapcache --rebuild-mapcache
    Rebuild all the .mcache files using your map files specified in step 2 of generation.
    NOTE: You should only run this command in special circumstances. This erases ALL the existing mapcache and rebuilds it with whatever files you provide it. If you don't have the required files, the build will fail and you will be left with missing mapcache files, meaning you won't be able to access those particular maps.
    ./map-server --load-plugin mapcache --map <name>
    Rebuild the .mcache file for the map name you specify. E.g. if you replace <name> with prontera, the maps/[pre-re or re]/prontera.mcache file will be rebuilt.
    NOTE: This is the best command to run, as it only caches a single map at a time.
    ./map-server --load-plugin mapcache --fix-md5
    I don't know what checksum is for.
    The End
    Feel free to ask for help here. I'll try to answer questions re: mapcache if possible. And if you think anything needs correcting or added, let me know.
    Hope this helps!
  15. Upvote
    bWolfie reacted to AnnieRuru in How to apply a diff file   
    getting tired of people keep sending me personal message -> how do I apply your koe patch
    after about 6 PMs or so I getting really fed up,
    only then I realize there is no guide to properly teach members how to apply a diff file, so here I make one for you guys
    First step
    A lot of people download hercules in .zip format. This is WRONG.

    instead, follow the proper guide and use tortoisegit (if you are using windows) to download your server
    This is the proper guide on how to install hercules

     
    Question: but I am using rathena, not hercules
    Answer: just change the link into rathena ones
    https://github.com/rathena/rathena/wiki/Install-on-Windows
     
     
    Second step
    after you get your proper server, the first thing you have to do is get rid of your current one
    this is the painful process, because you did not follow the guide
    but on the up side, you can always update your server every week just by Git pull
    which already mentioned in that installation topic guide
    Question: but every time I Git pull, it always ask to resolve conflicts
    Answer: that's the reason hercules community stop providing patch file and transition towards plugin system
    you should always keep your server up to date with the latest revision as we always add new features and bug fix
    nobody on the board like to give support on old emulator
    Question: but rathena doesn't have plugin system
    Answer: yes rathena doesn't support right now, but will be soon in the near future. rathena already slowly transition towards C++ format
     
     
    Third Step
    now you have a .diff file, download the file somewhere, right click on it

    then point the link towards your hercules installation folder
    Apply Patch Serial... Review/apply single patch... if either option doesn't work, try the other
     
     
    Disclaimer:
    I am windows user, so I never use Linux or Centos whatever,
    so this guide is purely meant for those keep bombard my PM box over and over
  16. Upvote
    bWolfie reacted to Dastgir in dDelays(Anti NoDelays) - Releasing this weekend   
    Update 27-10-2019:
    dDelays will be up for Hercules in next 24 hours.
    For other emulators, It will take few days (please be patient)
    dDelays will be initially available for linux only, windows build is in progress and will be up with other emulator update
  17. Upvote
    bWolfie reacted to fiction in How to use mobskilldb convert   
    Thank you, with that pr i has knew where was the problem reside.
    Anyways, my problem was for some reason i has a dot in JExp, i changed to an integer and problem was fixed.
     
    Exp: 18000 JExp: . Fixed
  18. Upvote
    bWolfie reacted to Lelouch in Menu func for warper   
    Fixed
  19. Like
    bWolfie reacted to Ridley in External Paid Services Special Offers   
    Writing this to share some good offers I use by myself. Neither I am nor Hercules is related to these services.
     
    VPS Availability Check 2019-10-21
    ionos.DE (ionos = 1&1) is offering a good VPS for 1€/month. The website is - as you may thought - in german, but it is simple enough to order it. You need to scroll down and select VPS S. I don't think there is any cheaper service for a small VPS like this.
    1 vCore Intel® Xeon® E5 CPU 512 MB RAM 10 GB SSD 1,– €/Mon. Website: https://www.ionos.de/server/vps
    Google Translated: https://translate.google.com/translate?hl=de&sl=de&tl=en&u=https%3A%2F%2Fwww.ionos.de%2Fserver%2Fvps

     
    VPN Availability Check 2019-10-21
    Windscripe is offering a free VPN Service with 20gb/month traffic for lifetime.
    You need to register an account, then go to your accounts status tab and use the code FACTORY2

    Free servers to use:
    US Central US East US West Canada East Canada West France Germany Netherlands Norway Romania Switzerland United Kingdom Hong Kong I used it by myself a few times and got usually 80/20 mb/s (out of my usual 100/40).
    ____________________________________________________________________________________________
    OkayFreedom VPN
    OkayFreedom is offering a 1 Year free premium subscription. Simply input your email adress in the coupon link below and you will receive a code to redeem it. I did not check for the available servers location.
    Website: https://www.okayfreedom.com/en
    Google Translated coupon:  https://translate.google.com/translate?sl=auto&tl=en&u=https%3A%2F%2Fwww.okayfreedom.com%2Fspecials%2Fchip1219%2Fof
    Webhosting Availability Check 2019-10-21
    To be clear: You get what you pay for - Well, nowhere else in the tech business this is truer than with web hosting, but sometimes you just need one for... well, whatever you want/need to do. Be aware there is NO free webhosting provider without security issues and you should NOT use them for a live server.
    Infinity Free https://infinityfree.net/ Free SSL certificate with all plans No front-end ads Free Cloudflare CDN 10 email accounts 1 FTP account 400 MySQL databases. Byethost https://byet.host/ 5GB Disk Space FTP account and File Manager Control Panel MySQL databases & PHP Support Free tech support Unlimited Addon domain, Parked Domains, Sub-Domains Free Community Access (Forums) Clustered Servers No ads https SSL on all free hosting domains. (self signed certificate)
  20. Like
    bWolfie got a reaction from Naruto in How to disable certain skills from being copied by rogue class?   
    Requires source edit. Go to src/map/skill.c, find static int can_copy().
    Anywhere after nullpo_ret(sd); you can put your conditions.

        if (skill_id == WZ_WATERBALL)         return 0;
    If you want to carryover skill_lv, you need to edit 2 lines.
    Change 1, find line:

    can_copy(tsd,copy_skill,bl)) // Split all the check into their own function [Aru]
    Change to:

    can_copy(tsd, copy_skill, skill_lv, bl)) // Split all the check into their own function [Aru]
    Change 2, find line:

    static int can_copy(struct map_session_data *sd, uint16 skill_id, struct block_list *bl)
    Change to:

    static int can_copy(struct map_session_data *sd, uint16 skill_id, uint16 skill_lv, struct block_list *bl)
  21. Like
    bWolfie got a reaction from Tsuuu in how to optimize this script   
    In my opinion, best thing to do is to save all data as char_reg variables, e.g.
    WoE_Kill += 1; 
    And then once WoE is finished, run a SQL query to copy data from char_reg_num_db and char_reg_str_db to your custom table. E.g.
    OnAgitEnd:     query_sql("TRUNCATE TABLE `woe_rank`;"); // clear old data. this table is only used to hold temporary values for displaying elsewhere     .@count = query_sql("SELECT `char_id`, `value` FROM `char_reg_num_db` WHERE `key` = 'WoE_Kill';", .@CID, .@WoE_Kill);     for (.@i = 0; .@i < .@count; .@i++) {         query_sql(sprintf("INSERT INTO `woe_rank`(`char_id`, `kills`) VALUES(%d, %d);", .@CID, .@WoE_Kill));         sleep(50); // don't perform too many queries at once (20 per second)     }     end; So then the query_sql() command is only being run under controlled circumstances, and only used once.
  22. Like
    bWolfie reacted to Dastgir in September Digest 2019   
    For pre-re:
    python itemcombodbconverter.py --mode pre-re > item_combo_db.conf For re:
    python itemcombodbconverter.py --mode re > item_combo_db.conf then move the item_combo_db.conf to your db folder
  23. Like
    bWolfie reacted to Ridley in September Digest 2019   
    September Digest 2019
    The following digest covers the month of September 1st - September 30th 2019

    Team Changes
    None Added
    Added/updated packets, encryption keys and message tables for clients up to 2019-09-18. (#2528) Added the `@changecharsex` command, to change a character's sex. (part of #2528) Added support for clan names in the name packets. (part of #2528) Added support for multiple Token of Siegfried item IDs. (#2515) Added support for the new guild UI features in the client. (#2519) Added per-item scriptable start/end rental functions, replacing the previous hardcoded functionality. See the new item DB fields `OnRentalStartScript` and `OnRentalEndScript`. (#2462, issue #140) Added the `getfont()` script command, to check the player's current chat font. (part of #2462) Added support for gcc-9 by disabling the array bound checks until the `ZEROED_BLOCK` related code will be fully compatible (#2536) Implemented the LapineDdukDdak System. (#2336) Implemented the Library Mistake Quest, allowing players to bypass the rebirth costs. (#2532) Changed
    Converted `sc_config` to libconfig. A tool to convert from the old format has been provided in `tools/scconfigconverter.py`. (#2526) Converted packet `ZC_TALKBOX_CHATCONTENTS` into a struct. (part of #2528) Extracted homunculus experience gain message code to a separate function. (part of #2528) Changed function arguments to type `enum battle_dmg_type` where applicable. (part of #2528) Changed pets, homunculi, etc. not to be loaded when autotrading. (part of #2524) Changed the guild castle IDs order to match the client's. (#part of #2519) Converted the item combo DB to libconfig. A tool to convert from the old format has been provided in `tools/itemcombodbconverter.py`. (#2529) Changed some remaining symbols to `static`. (part of #2536) Updated the gitlab-ci builds to reflect the release of Debian 10 buster. Gcc-8 is now the primary compiler used for the gcov, asan and i386 builds. (part of #2536) Increased the maximum allowed item ID to int32 max, for clients supporting it. (part of #2336) Fixed
    Fixed packet `ZC_ACK_RANKING` on old (2013 and earlier) clients. (part of #2528) Fixed an issue preventing homunculus auto-vaporize on death or skill reset, when the 80% HP condition isn't met. (#2524) Fixed a bug that caused homunculi's HP and SP to be refilled on every login instead of just on creation. (part of #2524) Fixed the intimacy requirement check for the homunculus ultimate skills. (part of #2524) Fixed the MVP tombstones causing players to get stuck if they were reading their message when the MVP respawns. (#2525) Fixed the MVP tombstones showing their message multiple times when clicked. (part of #2525) Fixed some incorrect examples of use of `while (select(...))` in the script documentation. (#2533) Corrected the item ID used by the KVM Logistic Officer. (#2527, issue #2404) Fixed several subtle issues caused by the nick partial match feature, when enabled. Now the partial match is only performed for lookups requested by atcommands and client features, while a full match is used for source and script lookups. (#2523) Rewritten the `itemdb_searchname_array` function, now properly supporting the items with IDs greater than 65535. (#2535) Fixed support for items with IDs greater than 65535 in the constdb2doc plugin. (part of #2535) Fixed a minor C standard compliance error, mixing function pointers and non-function pointers. (part of #2536) Fixed the (commented out by default) custom Venom Splasher countdown timer code. (part of #2536)  
    Special thanks to
    @Haru @4144 @Asheraf @skyleo @Emistry @hemagx 
  24. Upvote
    bWolfie got a reaction from Tsuuu in [Guide] Mapcache Generation 2018   
    As of Release v2018.03.13, the method to generate mapcache for Hercules has changed. A lot of people. myself included, were confused as to how it works. In this thread, I will do my best to explain the new way to generate your cache. This guide is intended to help people using the old system, not to aid new people (i.e. never generated mapcache before), so if you are new, some of it may seem like alien talk.
    Old (your source predates [is older than] Feb 18, 2018)
    In the old system, there were two ways to generate mapcache
    You could run the mapcache executable in Hercules root folder. Or use a program such as WeeMapCache to edit in your required mapcache. These two methods would generate or alter your required mapcache located in db/[pre-re or re]/map_cache.dat. However, they are no longer supported.
    New (your source is using Release v2018.03.13 or newer)
    The new system involves the use of the new 'mapcache' plugin to generate files. Some quick points:
    db/[pre-re or re]/map_cache.dat has been dropped (no longer supported). In its place are individual .mcache files for every map located in maps/[pre-re or re]/ Mapcache executable has been removed. Replaced with the mapcache plugin (src/plugins/mapcache.c). How to generate the mapcache?
    Same as before, check conf/map/maps.conf and db/map_index.txt have all the maps you want to cache. Your maps need to exist somewhere in your repository! There are two ways for the plugin to find them:
    a. Place all your maps, including resnametable.txt, inside the data folder of your Hercules repo. I.e. Hercules/data/prontera.gat/gnd/gnd/rsw (note: I forget if all three files are needed).
    b. OR Configure your conf/grf-files.txt to tell it where to find your GRF(s) which contains your maps. Build the mapcache plugin. On linux, this can be done by running the following command:
    make plugin.mapcache
    If using MSVC, compile as you would any other plugin. Execute plugin. This can be done using the following command:
    ./map-server --load-plugin mapcache [param]
    In windows, just remove the './' and run the commands in your command prompt. The params:
    The first thing you should do is run
    ./map-server --load-plugin mapcache --help
    A list of usable parameters will appear. Here are the ones you need to know for mapcache:
    [Info]:   --convert-old-mapcache         Converts an old db/pre-re/map_cache.dat file to the new format. [Mapcache] [Info]:   --rebuild-mapcache             Rebuilds the entire mapcache folder (maps/pre-re/), using db/map_index.txt as index. [Mapcache] [Info]:   --map <name>                   Rebuilds an individual map's cache into maps/pre-re/ (usage: --map <map_name_without_extension>). [Mapcache] [Info]:   --fix-md5                      Updates the checksum for the files in maps/pre-re/, using db/map_index.txt as index (see PR #1981). [Mapcache] ./map-server --load-plugin mapcache --convert-old-mapcache
    Rebuild all the .mcache files using your old db/[pre-re or re]map_cache.dat file.
    NOTE: You should only run this command when you have an old map_cache.dat file you need to convert.
    ./map-server --load-plugin mapcache --rebuild-mapcache
    Rebuild all the .mcache files using your map files specified in step 2 of generation.
    NOTE: You should only run this command in special circumstances. This erases ALL the existing mapcache and rebuilds it with whatever files you provide it. If you don't have the required files, the build will fail and you will be left with missing mapcache files, meaning you won't be able to access those particular maps.
    ./map-server --load-plugin mapcache --map <name>
    Rebuild the .mcache file for the map name you specify. E.g. if you replace <name> with prontera, the maps/[pre-re or re]/prontera.mcache file will be rebuilt.
    NOTE: This is the best command to run, as it only caches a single map at a time.
    ./map-server --load-plugin mapcache --fix-md5
    I don't know what checksum is for.
    The End
    Feel free to ask for help here. I'll try to answer questions re: mapcache if possible. And if you think anything needs correcting or added, let me know.
    Hope this helps!
  25. Upvote
    bWolfie got a reaction from freezing1 in [Showcase] Chowd Castle   
    this is a forum for showcasing maps. doesn't mean they are for sale like @freezing1 said.
×
×
  • Create New...

Important Information

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