Leaderboard
Popular Content
Showing content with the highest reputation on 06/06/18 in Posts
-
1 pointAs 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!
-
1 point@Rebel prontera,146,185,6 script Costume Enchanter 4_M_SCIENCE,{ disable_items; .@header$ = "[^0000FF Costume Enchanter ^000000]"; mes .@header$; if (Zeny < 500000) { mes "I am in charge of Enchanting Costume Headgears. Simply put, I've been studying ways to power-up headgears."; next; mes .@header$; mes "If by any chance, you would want to enchant your headgears, bring me 500,000 zeny and the armor you want to enchant and you are all set to go."; close; } mes "I'm an engineer that specializes in Enchanting Armors."; next; mes .@header$; mes "Enchanting may seem simple, but it's far more complicated than it looks.\n"; mes "If you're interested in my service, let me know."; next; switch( select( "~ ^0000FFEnchant Headgear ^000000", "~ Information", "~ Maybe next time." ) ) { case 1: break; case 2: mes .@header$; mes "To be update"; close; case 3: mes .@header$; mes "Please come back when you have any interest in enchanting your headgear."; close; } setarray .@items[0],19504,19505,19506; // Red_Tailed_Ribbon; .@failrate = 1; // 1% fail rate (for testing) .@menu$ = ""; .@size = getarraysize(.@items); for ( .@i = 0; .@i < .@size; ++.@i ) .@menu$ += getitemname(.@items[.@i]) +":"; .@itemid = .@items[select(.@menu$)-1]; if (getequipid(EQI_COSTUME_HEAD_TOP) == .@itemid) .@part = EQI_COSTUME_HEAD_TOP; else if (getequipid(EQI_COSTUME_HEAD_MID) == .@itemid) .@part = EQI_COSTUME_HEAD_MID; else if (getequipid(EQI_COSTUME_HEAD_LOW) == .@itemid) .@part = EQI_COSTUME_HEAD_LOW; // else if (getequipid(EQI_HEAD_TOP) == .@itemid) // .@part = EQI_HEAD_TOP; mes .@header$; if ( !getequipisequiped(.@part) ) { mes "Hmm? There's nothing to be enchanted!"; mes "Make sure you are wearing the headgear you want be enchant."; close; } if ( getequipcardid(.@part,1) && getequipcardid(.@part,2) && getequipcardid(.@part,3) ) { mes "There's nothing more I can do with this headgear."; close; } .@refine = getequiprefinerycnt(.@part); for ( .@i = 3; .@i >= 1; --.@i ) if ( !getequipcardid( .@part, .@i ) ) .@slot_num = .@i; for ( .@i = 0; .@i < 4; ++.@i ) .@cardid[.@i] = getequipcardid( .@part,.@i ); mes "Socket enchant will cost you 500,000z. And there will be a random option enchanted."; mes "Of course, there is a chance of breaking your armor."; next; mes .@header$; mes "Do you still want to try an Enchant?"; next; if ( select( "~ Hmm... Let me think it over.", "~ Go ahead.") == 1 ) { mes .@header$; mes "Well, I can't blame you. Safety first, eh?"; mes "Now you have a nice day."; close; } mes .@header$; if (Zeny < 500000) { mes .@header$; mes "Sorry, but you don't have enough zeny."; close; } mes "Quite of an adventurer huh? Well, shall we?"; Zeny -= 500000; delitem2 .@itemid, 1,1, .@refine,0, .@cardid[0],.@cardid[1],.@cardid[2],.@cardid[3]; close2; specialeffect EF_MAPPILLAR, AREA, playerattached(); progressbar "ffff00",1; // is this really needed ? what happen if the player logout/disconnect during this short period ? The item is gone forever !! switch (rand(1,.@failrate)) { // yeah you said its testing, maybe its 1,36 ... or maybe something higher case 1: .@addpart = 4702;break; case 2: .@addpart = 4712;break; case 3: .@addpart = 4722;break; case 4: .@addpart = 4732;break; case 5: .@addpart = 4742;break; case 6: .@addpart = 4752;break; case 7: case 8: .@addpart = 4701;break; case 9: case 10: .@addpart = 4711;break; case 11: case 12: .@addpart = 4721;break; case 13: case 14: .@addpart = 4731;break; case 15: case 16: .@addpart = 4741;break; case 17: case 18: .@addpart = 4751;break; case 19: case 20: case 21: .@addpart = 4700;break; case 22: case 23: case 24: .@addpart = 4710;break; case 25: case 26: case 27: .@addpart = 4720;break; case 28: case 29: case 30: .@addpart = 4730;break; case 31: case 32: case 33: .@addpart = 4740;break; case 34: case 35: case 36: .@addpart = 4750;break; default: specialeffect(EF_PHARMACY_FAIL, AREA, playerattached()); mes .@header$; mes "Well that's too bad."; mes "The requested equipment has failed to enchant."; close; } mes .@header$; mes "Ha! There you go, your brand new enchanted equipment!"; if ( .@slot_num == 1 ) { getitem2 .@itemid, 1, 1, .@refine, 0, .@cardid[0], .@addpart, .@cardid[2], .@cardid[3]; equip2 .@itemid, .@refine, 0, .@cardid[0], .@addpart, .@cardid[2], .@cardid[3]; } else if ( .@slot_num == 2 ) { getitem2 .@itemid, 1, 1, .@refine, 0, .@cardid[0], .@cardid[1], .@addpart, .@cardid[3]; equip2 .@itemid, .@refine, 0, .@cardid[0], .@cardid[1], .@addpart, .@cardid[3]; } else if ( .@slot_num == 3 ) { getitem2 .@itemid, 1, 1, .@refine, 0, .@cardid[0], .@cardid[1], .@cardid[2], .@addpart; equip2 .@itemid, .@refine, 0, .@cardid[0], .@cardid[1], .@cardid[2], .@addpart; } close; }
-
1 pointI guess should just implement all the custom features that I know, since you keep requesting this and that better to overdo it and then let you suggest which feature you want me to take out, rather than keep asking for more features each time ... of course if you got some other features that you want to suggest, you can always post here http://upaste.me/fa2349922cf42b53b I wanted to add the rejoin system like I did on arathi basin or this bg_emp_0.6 but it seems rathena cannot retrieve the instance variable outside of the instance npc, so unless you want to drop the instancing and use normal map ... EDIT: suddenly I think its possible ... every time a variable is set, push back as npc variable ... hmm ...
-
1 pointin hercules look like no at command for change char sex. Char sex can be changed from scripts only
-
1 point=General *Added the soul energy system. +This system is used for managing the Soul Reaper's soul energy. -Its basicly another sphere system. Its been confirmed that soul energy sphere's -works on its own system and not through any other sphere system. *Added the "hatereset" and "soulball" command. =Skills *SJ_DOCUMENT *SP_SOULCOLLECT *SP_SOULENERGY +Added support for these skills.
-
1 pointyup you did correct every 00:00 server time and if let's say you start at 11:59pm Wednesday, and claim the reward on the Thursday at 1am, then you can't claim reward anymore on Thursday I actually had experienced this system in some chinese mobile games app ... so I made this script according to the chinese mobile game app I've played