Jump to content

bWolfie

Members
  • Content Count

    848
  • Joined

  • Last visited

  • Days Won

    34

Everything posted by bWolfie

  1. Needs to be getcharid(CHAR_ID_CHAR, .@units[.@i])
  2. Seems like you did everything right. Is it just this item you are struggling with or all of your customs have the same issue?
  3. 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); ^
  4. 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 },
  5. 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);
  6. 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);
  7. Thanks helped solve my problem. Use skill id 900-1000 for custom skills.
  8. See /doc/sample/npc_trader_sample.txt and NPC related script commands: https://github.com/HerculesWS/Hercules/blob/stable/doc/script_commands.txt#L10462
  9. 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.
  10. maybe some graphics editing and client hex.
  11. @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.
  12. sorry i dont have time to update this
  13. 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)
  14. happy hour is when badge amount reward increases when won within that hour.
  15. 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.
  16. 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.
  17. 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.
  18. 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")
  19. 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)
  20. I don't know about server database editor. I prefer to edit file directly.
  21. 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. We don't have RC_Human. Check https://github.com/HerculesWS/Hercules/blob/master/doc/item_bonus.md
  23. like Xross said, likely using older SQL database which is incompatible with the current Hercules revision. When you start the login server, it should say which files you need to add. In any case, you can usually fix this by doing the following. Backup current database using mysqldump (unsure how to dump other ways) mysqldump database > ~/database-backup.sql Drop database, then recreate. DROP DATABASE database; CREATE DATABASE database; Create new table structures using Hercules SQL. mysql .... < sql-files/main.sql Then add your backed up database on top of that... mysql .... < ~/database-backup.sql
×
×
  • Create New...

Important Information

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