-
Content Count
850 -
Joined
-
Last visited
-
Days Won
34
Content Type
Profiles
Forums
Downloads
Staff Applications
Calendar
Everything posted by bWolfie
-
Thanks. I did some messing around with skilltreeview.lub and now it seems to work.
-
I can't get the skill tree to show 1st, 2nd, 3rd, etc. Only shows "Etc.". Using 2018-06-21a client.
-
How can i get the CHAR_ID_CHAR for all players in a map?
bWolfie replied to sfosodkw2's question in Script Support
Needs to be getcharid(CHAR_ID_CHAR, .@units[.@i]) -
New Custom Item, Sprite not appearing when worn
bWolfie replied to naouemi's question in General Server Support
Seems like you did everything right. Is it just this item you are struggling with or all of your customs have the same issue? -
Edit: I fixed nonnull and HPMHooking warnings by updating GCC to v7 (previously using default 4.8). The enumeration value warning is a bit annoying. Using 'default' no longer suppresses the warning, so I have to manually input every enum value into each switch I use. I recently updated my Hercules to 2022.12.07 and now I am receiving these warning messages when compiling. How do I disable/fix them? If I update to a later version will they automatically be fixed? In file included from storage.c:37:0: ../common/memmgr.h:79:2: warning: ‘returns_nonnull’ attribute directive ignored [-Wattributes] void* (*malloc)(size_t size, const char *file, int line, const char *func) __attribute__ ((alloc_size (1))) GCCATTR ((returns_nonnull)); atcommand.c: In function ‘atcommand_go’: atcommand.c:124:3: warning: enumeration value ‘BL_ITEM’ not handled in switch [-Wswitch-enum] switch (sd->who_hit) { ^ atcommand.c:124:3: warning: enumeration value ‘BL_SKILL’ not handled in switch [-Wswitch-enum] In file included from HPMHooking.c:238:0: HPMHooking/HPMHooking_map.Hooks.inc: In function ‘HP_showmsg_showMessageV’: HPMHooking/HPMHooking_map.Hooks.inc:81222:3: warning: function might be possible candidate for ‘gnu_printf’ format attribute [-Wsuggest-attribute=format] retVal___ = HPMHooks.source.showmsg.showMessageV(string, ap___copy); ^
-
Hello, I created a custom skill RK_MOUNT for Rune Knight. I added it to the appropriate place in skillinfoz\skilltreeview.lub, but for some reason it shows in 2nd job tab. Hoping someone can help me get it on 3rd job tab. [JOBID.JT_RUNE_KNIGHT] = { [1] = SKID.RK_RUNEMASTERY, [3] = SKID.RK_PHANTOMTHRUST, [4] = SKID.RK_DRAGONTRAINING, [8] = SKID.RK_ENCHANTBLADE, [10] = SKID.RK_HUNDREDSPEAR, [11] = SKID.RK_DRAGONHOWLING, [12] = SKID.RK_DRAGONBREATH, [14] = SKID.RK_DEATHBOUND, [15] = SKID.RK_SONICWAVE, [16] = SKID.RK_WINDCUTTER, [18] = SKID.RK_MOUNT, [19] = SKID.RK_DRAGONBREATH_WATER, [23] = SKID.RK_IGNITIONBREAK, [41] = SKID.ALL_FULL_THROTTLE },
-
Thanks for the responses. I don't know why I use memcpy, not so advanced on coding. I just copied an existing structure I found in source code. I used safestrncpy in new version and no leaks. char item_name[ITEM_NAME_LENGTH], output[100]; safestrncpy(item_name, i_data->jname, ITEM_NAME_LENGTH); sprintf(output, "Retrieved %d '%s' from storage.", i, item_name);
-
I made this command to retrieve all of an item from storage. This line char *item_name =(char *)aMalloc(ITEM_NAME_LENGTH*sizeof(char)); causes memory leak. How to fix it? struct item_data *i_data = itemdb->exists(nameid); if (i_data == NULL) { clif->message(fd, "Invalid Item ID."); return false; } char *item_name =(char *)aMalloc(ITEM_NAME_LENGTH*sizeof(char)); memcpy(item_name, i_data->jname, ITEM_NAME_LENGTH); char output[100]; sprintf(output, "Retrieved %d '%s' from storage.", i, item_name);
-
function Array manipulation functions
bWolfie replied to meko's topic in Quest, Shops, Functions & Algorithms Releases
Bumping because I still use these functions today. -
Thanks helped solve my problem. Use skill id 900-1000 for custom skills.
-
See /doc/sample/npc_trader_sample.txt and NPC related script commands: https://github.com/HerculesWS/Hercules/blob/stable/doc/script_commands.txt#L10462
-
Please help me while making a new skill
bWolfie replied to ssd046's question in General Server Support
How do you define CUSTOM_SKILL_RANGES? Can't work it out. No documentation available still. Whenever I make changes to skill_idx_ranges[] it causes everything from { GD_APPROVAL, GD_DEVELOPMENT }, to break. Edit: It seems that the skill id must be listed in order. I was using skill id below 10000, but listed after. This means all custom skill must be of more than GD_DEVELOPMENT, otherwise CUSTOM_SKILL_RANGES will cause issues. -
How to use old char select and creation in 2018?
bWolfie replied to Eross's question in Client-Side Support
maybe some graphics editing and client hex. -
function Array manipulation functions
bWolfie replied to meko's topic in Quest, Shops, Functions & Algorithms Releases
@meko Do you know how to create a function similar to sort/rsort, but it won't move a certain nth array? E.g. #1, I have this array setarray(.@Array, 4000, 3, 4001, 7, 4002, 1, 4003, 10, 4004, 0, 4005, 2); Then I want to sort it so the left numbers (4000-4005) change position with the right no. E.g. #2, now going to sort in ascending order. 4004, 0, 4002, 1, 4005, 2, 4000, 3, 4001, 7, 4003, 10, As you can see, it only sorted every 2nd array, but it moved the preceding array with it. Idk how to explain this. I think "anchor" would be the correct term. Value n determines how many values are anchored to the first array index before we sort by a new anchor. Hope it makes sense and hoping you can help me out. Thanks. -
sorry i dont have time to update this
-
So I have a NPC script which uses disablenpc() on a timer. Players are able to interact with the NPC while it is active. The NPC uses mes(). If a player is talking to the NPC while the disablenpc() is triggered, the will become stuck on the mes() screen, and will need to logout or warp away using @load or something similar to get out of it. My query: When disablenpc() is triggered, how can I send close() to everyone currently talking to that NPC? (sorry haven't updated my source for a bit, this may already exist in new versions)
-
Anyone know how to enable double quotation marks for commands?
bWolfie replied to Pink Guy's question in Source Support
like this #item "Player Name" Red_Potion 20 -
happy hour is when badge amount reward increases when won within that hour.
-
Yes it's possible but takes some work to configure. I have them configured with Kubix's BG release from 2016. I'm not familiar with eBG so I can't help you. That's quite hard cause firstly you need a mapper who has played the mode before and secondly a scripter who knows the ins and outs of it too.
-
Been around for some years now. I first saw it on one of those Russian servers. Never seen any piece of code or the like regarding it, so personally have no idea how it works. From my experience, they were all terrible. Logging in regularly and not using one of "proxy server"s as they are known always proved best for me. But it may have also had something to do with the fact I live in New Zealand and the destination server was in Russia. This was also 4-5 years ago, so technology probably improved in that time. IMO, until proven otherwise, they are vanity features and are only good as marketing tools. They may help a niche group though.
-
FluxCP needs a page in both modules\page\index.php and themes\<theme name>\page\index.php You need to do it for every theme that can be used. You can also put it in the add-ons folder which bypasses this I believe.
-
What's ROM? Best way to do this is very long and not simple. Change all MvP spawns into individual scripts. Then you can use getnpctimer() to get the time left. Example: moc_pryd04,0,0,0 script Osiris_Spawn FAKE_NPC,{ OnMyMobDead: .GID = 0; initnpctimer(); end; OnTimer3600000: // wait 60 mins sleep(rand(600000)); // add 0~10 mins OnInit: .GID = monster("moc_pryd04", 0, 0, "--en--", OSIRIS, 1, sprintf("%s::OnMyMobDead", strnpcinfo(NPC_NAME))); stopnpctimer(); end; } Then make another script with the atcommand to check getnpctimer(0, "Osiris_Spawn")
-
How to disable certain skills from being copied by rogue class?
bWolfie replied to Yeezus's question in Database Support
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) -
Rookie Trying To Play With The Big Boys
bWolfie replied to RookieByDesign's question in Database Support
I don't know about server database editor. I prefer to edit file directly. -
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.