Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 06/05/17 in all areas

  1. 5 points
    Sephus

    Official Refine Rate Correction

    As of e171deb58c7 we have the official refine rates from kRO. Normal Ores  Refine Shadow equipment Armor Weapon (1st level) Weapon (2nd level) Weapon (3rd level) Weapon (4th level) 1 100% 100% 100% 100% 100% 100% 2 100% 100% 100% 100% 100% 100% 3 100% 100% 100% 100% 100% 100% 4 100% 100% 100% 100% 100% 100% 5 60% 60% 100% 100% 100% 60% 6 40% 40% 100% 100% 60% 40% 7 40% 40% 100% 60% 50% 40% 8 20% 20% 60% 40% 20% 20% 9 20% 20% 40% 20% 20% 20% 10 9% 9% 19% 19% 19% 9% 11 - 8% 18% 18% 18% 8% 12 - 8% 18% 18% 18% 8% 13 - 8% 18% 18% 18% 8% 14 - 8% 18% 18% 18% 8% 15 - 7% 18% 18% 18% 7% 16 - 7% 17% 17% 17% 7% 17 - 7% 17% 17% 17% 7% 18 - 7% 17% 17% 17% 7% 19 - 5% 15% 15% 15% 5% 20 - 5% 15% 15% 15% 5% Enriched Ores Refine   Shadow equipment Armor Weapon (1st level) Weapon (2nd level) Weapon (3rd level) Weapon (4th level) 1 100% 100% 100% 100% 100% 100% 2 100% 100% 100% 100% 100% 100% 3 100% 100% 100% 100% 100% 100% 4 100% 100% 100% 100% 100% 100% 5 90% 90% 100% 100% 100% 90% 6 70% 70% 100% 100% 90% 70% 7 70% 70% 100% 90% 80% 70% 8 40% 40% 90% 70% 40% 40% 9 40% 40% 70% 40% 40% 40% 10 20% 20% 30% 30% 30% 20% 11 -  8% 18% 18% 18% 8% 12 -  8% 18% 18% 18% 8% 13 -  8% 18% 18% 18% 8% 14 -  8% 18% 18% 18% 8% 15 -  7% 18% 18% 18% 7% 16 -  7% 17% 17% 17% 7% 17 -  7% 17% 17% 17% 7% 18 -  7% 17% 17% 17% 7% 19 -  5% 15% 15% 15% 5% 20 -  5% 15% 15% 15% 5% Normal Ores - Smelting Event Refine Shadow equipment Armor Weapon (1st level) Weapon (2nd level) Weapon (3rd level) Weapon (4th level) 1 100% 100% 100% 100% 100% 100% 2 100% 100% 100% 100% 100% 100% 3 100% 100% 100% 100% 100% 100% 4 100% 100% 100% 100% 100% 100% 5 60% 60% 100% 100% 100% 60% 6 40% 40% 100% 100% 60% 40% 7 40% 40% 100% 60% 50% 40% 8 20% 20% 60% 40% 20% 20% 9 20% 20% 40% 20% 20% 20% 10 9% 9% 19% 19% 19% 9% 11 - 20% 40% 40% 40% 20% 12 - 20% 40% 40% 40% 20% 13 - 16% 35% 35% 35% 16% 14 - 16% 35% 35% 35% 16% 15 - 15% 30% 30% 30% 15% 16 - 15% 30% 30% 30% 15% 17 - 14% 20% 20% 20% 14% 18 - 14% 20% 20% 20% 14% 19 - 10% 15% 15% 15% 10% 20 - 10% 15% 15% 15% 10% Enriched Ores - Smelting Event Refine  Shadow equipment Armor Weapon (1st level) Weapon (2nd level) Weapon (3rd level) Weapon (4th level) 1 100% 100% 100% 100% 100% 100% 2 100% 100% 100% 100% 100% 100% 3 100% 100% 100% 100% 100% 100% 4 100% 100% 100% 100% 100% 100% 5 95% 95% 100% 100% 100% 95% 6 80% 80% 100% 100% 95% 80% 7 80% 80% 100% 95% 90% 80% 8 60% 60% 95% 85% 70% 60% 9 50% 50% 85% 60% 60% 50% 10 35% 35% 55% 45% 45% 35% 11 - 20% 40% 40% 40% 20% 12 -  20% 40% 40% 40% 20% 13 -  16% 35% 35% 35% 16% 14 -  16% 35% 35% 35% 16% 15 -  15% 30% 30% 30% 15% 16 -  15% 30% 30% 30% 15% 17 -  14% 20% 20% 20% 14% 18 -  14% 20% 20% 20% 14% 19 -  10% 15% 15% 15% 10% 20 -  10% 15% 15% 15% 10% This corrects the previous behaviour of enriched ores which would simple double roll the item refinement. Script Command Changes getequippercentrefinery(<equipment slot>{, <type>}) Example: if (getequippercentrefinery(EQI_HAND_L, REFINE_CHANCE_TYPE_NORMAL) <= rand(100)) mes("Aww"); Constants exported to constants.conf are - REFINE_CHANCE_TYPE_NORMAL: 1 Retrieves Normal ore refine rate REFINE_CHANCE_TYPE_ENRICHED: 2 Retrieves Enriched ore refine rate REFINE_CHANCE_TYPE_E_NORMAL: 3 Retrieves Normal Event ore refine rate REFINE_CHANCE_TYPE_E_ENRICHED: 4 Retrieves Enriched Event ore refine rate
  2. 2 points
    Mystery

    Hercules, welcome to IPB4

    Hey everyone, It has been long overdue to bridge over to IPB4... but we are finally here. We ran into a few issues with the transition but we got the forum running within an hour. The forum is now accessible for everyone (maintenance is over), but keep in mind that there are still batches being processed in the backend which may make your experiences in browsing / posting sluggish. Over the next few hours/days, I will be working on the forum; reorganizing a few things, fine tuning, etc. If you run into any issues, don't hesitate to bring them to my attention!
  3. 1 point
    meko

    Array manipulation functions

    View File Array manipulation functions This script provides various array manipulation functions, and more might be added in the future. All of those functions (except the arithmetic ones) work with both integer and string arrays. The start of the array is always implicitly index 0, unless an index is specified, ie @array[index] array_pad(<array>, <size>, <value>) pads the array left or right with <value> until it reaches <size> size. If <size> is negative it will pad left. > returns the number of added entries setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_pad(.@foo, 8, 69); // => 3 // array is now: 1, 2, 3, 4, 5, 69, 69, 69 setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_pad(.@foo, -8, 69); // => 3 // array is now: 69, 69, 69, 1, 2, 3, 4, 5 array_replace(<array>, <needle>, <replacement>{, <neq>}) finds every occurrence of <needle> within the array and replaces it with <replacement>. if <neq> is true, finds entries that do not match instead > returns the number of changed entries setarray(.@foo, 1, 1, 3, 1, 5); // initialize the array array_replace(.@foo, 1, 69); // => 3 // array is now: 69, 69, 3, 69, 5 array_find(<array>, <needle>{, <neq>}) finds the first occurrence of <needle> within the array. if <neq> is true, finds entries that do not match instead > returns the index, or if none is found returns -1 setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_find(.@foo, 3); // => 2 array_find(.@foo, 1); // => 0 array_find(.@foo, 6); // => -1 array_rfind(<array>, <needle>{, <neq>}) like array_find, but finds the last occurrence. if <neq> is true, finds entries that do not match instead > returns the index, or if none is found returns -1 setarray(.@foo, 1, 2, 3, 4, 3); // initialize the array array_rfind(.@foo, 3); // => 4 array_rfind(.@foo, 4); // => 3 array_rfind(.@foo, 6); // => -1 array_exists(<array>, <needle>{, <neq>}) very similar to array_find() but it instead just checks if it exists or not. if <neq> is true, finds entries that do not match instead > returns true or false setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_exists(.@foo, 3); // => true array_exists(.@foo, 6); // => false array_count(<array>, <needle>{, <neq>}) similar to array_find() but iterates through the whole array. if <neq> is true, finds entries that do not match instead > returns the total number of occurrences of <needle> setarray(.@foo, 1, 69, 3, 69, 5); // initialize the array array_count(.@foo, 69); // => 2 array_entries(<array>) a wrapper around array_count(). behaves similarly to getaraysize() but does not count holes > returns the number of non-empty entries setarray(.@foo, 1, 2, 0, 0, 5); // initialize the array getarraysize(.@foo); // => 5 array_entries(.@foo); // => 3 array_remove(<array>, <needle>{, <neq>}) finds and removes every occurrence of <needle> from the array, while shifting left. if <neq> is true, finds entries that do not match instead > returns the number of removed entries setarray(.@foo, 1, 69, 3, 69, 5); // initialize the array array_remove(.@foo, 69); // => 2 // array is now: 1, 3, 5 array_reverse(<array>) reverses the array > returns true setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_reverse(.@foo); // => true // array is now: 5, 4, 3, 2, 1 array_sum(<array>) iterates through the whole array to perform an arithmetic addition > returns the sum of every entries of the array setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_sum(.@foo); // ((((1 + 2) + 3) + 4) + 5) => 15 array_difference(<array>) iterates through the whole array to perform an arithmetic subtraction > returns the difference of every entries of the array setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_difference(.@foo); // ((((1 - 2) - 3) - 4) - 5) => -13 array_product(<array>) iterates through the whole array to perform an arithmetic multiplication > returns the product of every entries of the array setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_product(.@foo); // ((((1 * 2) * 3) * 4) * 5) => 120 array_quotient(<array>) iterates through the whole array to perform an arithmetic division > returns the quotient of every entries of the array setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_quotient(.@foo); // ((((1 / 2) / 3) / 4) / 5) => 0 array_shift(<array>) removes the first entry of the array, while shifting left > returns the value of the removed entry setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_shift(.@foo); // => 1 // array is now: 2, 3, 4, 5 array_unshift(<array>, <value>) adds <value> to the start of the array, while shifting right > returns the new size of the array setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_unshift(.@foo, 69); // => 6 // array is now: 69, 1, 2, 3, 4, 5 array_pop(<array>) removes the last entry of the array > returns the value of the removed entry setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_pop(.@foo); // => 5 // array is now: 1, 2, 3, 4 array_push(<array>, <value>) adds <value> to the end of the array > returns the new size of the array setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_push(.@foo, 69); // => 6 // array is now: 1, 2, 3, 4, 5, 69 array_shuffle(<array>) shuffles the array > returns true setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_shuffle(.@foo); // => true // array is now: 1, 4, 2, 3, 5 (example, unpredictable) array_unique(<array>{, <threshold>}) allows array entries to appear up to <threshold> times (1 by default) and removes the extraneous ones. useful to remove duplicate entries > returns the number of removed entries setarray(.@foo, 1, 3, 3, 4, 5); // initialize the array array_unique(.@foo); // => 1 // array is now: 1, 3, 4, 5 array_diff(<base array>, <array>{, <array>...}, <result array>) compares the base array against one or more other arrays and fills the result array with the entries in base array that are not present in any of the other arrays > returns the number of entries not found in other arrays setarray(.@base, 1, 2, 3, 4, 5, 6, 7, 8); // initialize the base array // fill the arrays to compare with the base array: setarray(.@foo, 2, 3, 4, 5, 6, 7, 8); // missing "1" setarray(.@bar, 1, 2, 3, 4, 6, 7, 8); // missing "5" setarray(.@baz, 1, 2, 3, 4, 5, 6, 7); // missing "8" // compare foo, bar and baz against base, and fill result: array_diff(.@base, .@foo, .@bar, .@baz, .@result); // => 3 // .@result is now: 1, 5, 8 array_filter(<array>, "<function>") filters the array using a function that is tested against every entries. if the function returns false, the relevant entry is removed and the array is shifted left > returns the number of removed entries function script is_prime { if (getarg(0) <= 1) return false; for (.@i = 2; .@i <= getarg(0) / 2; ++.@i) if ((getarg(0) % .@i) == 0) return false; return true; } setarray(.@foo, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); array_filter(.@foo, "is_prime"); // => 9 // array is now: 2, 3, 5, 7, 11, 13 array_sort(<array>) sorts the array in ascending order > returns true setarray(.@foo, 2, 1, 8, 4, 5, 7, 6, 3); // initialize the array array_sort(.@foo); // => true // array is now: 1, 2, 3, 4, 5, 6, 7, 8 array_rsort(<array>) sorts the array in descending order > returns true setarray(.@foo, 2, 1, 8, 4, 5, 7, 6, 3); // initialize the array array_rsort(.@foo); // => true // array is now: 8, 7, 6, 5, 4, 3, 2, 1 Requires Hercules of June 24 2017 or newer version -------------------------------------------------------------------------------------- This script was made by me, for The Mana World + Evol. License: public domain (CC0) Submitter meko Submitted 05/29/17 Category Quest, Shops, Functions & Algorithms  
  4. 1 point
    AnnieRuru

    Maintenance mode

    Download: 1.5 plugin create table maintenance ( id int primary key auto_increment, account_id int, name varchar(23), reason varchar(99), minlv2connect tinyint, order_time datetime, start_time datetime, end_time datetime ) engine = innodb; . remember to enable HPMHooking to enable this modification plugins_list: [ /* Enable HPMHooking when plugins in use rely on Hooking */ "HPMHooking", . . Note: sometimes the server countdown jumps 1 second ahead this is normal because the timetick from time->add is unstable so I use unix_time to synchronize the countdown to server time . . so, if you found some script/source code having bugs and you need to shut down your server for a short while then you come to the right place . @maintenance <Group ID can stay 1~99> <duration to kick in minute> <maintenance duration in minute> <reason> then a GM99 can commence the maintenance Example : '@maintenance 40 5 10 need to fix announcer script' every player with group ID 40 and below will be kick after 5 minutes and the server will start counting down by an announcement, during the maintenance of 10 minutes, group ID 40 and below will deny from login into the server `maintenance` table will also generate a new line, with the `reason` field as 'need to fix announcer script' which is useful to know when and how many times you did emergency server shutdown though, the actual reason for using SQL is to persist the data after server shutdown so the server will continue being in maintenance mode despite how many times you have shut down the server until it times up ( `end_time` field ), or manually do `@maintenanceoff` Note: you can't generate a new line using 'INSERT INTO' Sql syntax when server is online because I declare a bunch of variables to for them, for the purpose of saving memory consumption you have to login the game and type `@maintenance` to initiate the maintenance mode, otherwise it wont work. . . . @maintenanceoff if you have already finished fixing the script/source code, and there's still a lot of time left you can type '@maintenanceoff' to immediately turn off the maintenance mode so players can login before the schedule. . . . . -- Script commands -- . *maintenance <Group ID can stay 1~99>, <duration to kick in minute>, <maintenance duration in minute> { , <reason> }; . . actually I have no idea why I wanna make a script command ... maybe just for fun ? . - script jsdfksdj FAKE_NPC,{ OnMon0255: maintenance 40, 5, 60; end; } . this will make an announcement on Monday, 2:55AM that the server will have a regular server maintenance starts from 3AM to 4AM during that time, player with group ID 40 will be kicked and blocked from entering the server the `reason` field in `maintenance` table will be defaulted to '*Regular server maintenance*' . maintenance 40, 5, 60, "系统保养"; this will overwrite the `reason` field in `maintenance` table to '系统保养' instead of regular maintenance . . *maintenanceoff { <reason> }; uhh ... useless I think ... . . *maintenancecheck( <type> ); use 'maintenance()' to check the server is currently in maintenance mode or not return 0 if server is normal return 1 if server is going to have maintenance return 2 if server is having maintenance all other types are meant to myself to debug this junk
  5. 1 point

    Version v10

    262 downloads

    This script provides various array manipulation functions, and more might be added in the future. All of those functions (except the arithmetic ones) work with both integer and string arrays. The start of the array is always implicitly index 0, unless an index is specified, ie @array[index] array_pad(<array>, <size>, <value>) pads the array left or right with <value> until it reaches <size> size. If <size> is negative it will pad left. > returns the number of added entries setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_pad(.@foo, 8, 69); // => 3 // array is now: 1, 2, 3, 4, 5, 69, 69, 69 setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_pad(.@foo, -8, 69); // => 3 // array is now: 69, 69, 69, 1, 2, 3, 4, 5 array_replace(<array>, <needle>, <replacement>{, <neq>}) finds every occurrence of <needle> within the array and replaces it with <replacement>. if <neq> is true, finds entries that do not match instead > returns the number of changed entries setarray(.@foo, 1, 1, 3, 1, 5); // initialize the array array_replace(.@foo, 1, 69); // => 3 // array is now: 69, 69, 3, 69, 5 array_find(<array>, <needle>{, <neq>}) finds the first occurrence of <needle> within the array. if <neq> is true, finds entries that do not match instead > returns the index, or if none is found returns -1 setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_find(.@foo, 3); // => 2 array_find(.@foo, 1); // => 0 array_find(.@foo, 6); // => -1 array_rfind(<array>, <needle>{, <neq>}) like array_find, but finds the last occurrence. if <neq> is true, finds entries that do not match instead > returns the index, or if none is found returns -1 setarray(.@foo, 1, 2, 3, 4, 3); // initialize the array array_rfind(.@foo, 3); // => 4 array_rfind(.@foo, 4); // => 3 array_rfind(.@foo, 6); // => -1 array_exists(<array>, <needle>{, <neq>}) very similar to array_find() but it instead just checks if it exists or not. if <neq> is true, finds entries that do not match instead > returns true or false setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_exists(.@foo, 3); // => true array_exists(.@foo, 6); // => false array_count(<array>, <needle>{, <neq>}) similar to array_find() but iterates through the whole array. if <neq> is true, finds entries that do not match instead > returns the total number of occurrences of <needle> setarray(.@foo, 1, 69, 3, 69, 5); // initialize the array array_count(.@foo, 69); // => 2 array_entries(<array>) a wrapper around array_count(). behaves similarly to getaraysize() but does not count holes > returns the number of non-empty entries setarray(.@foo, 1, 2, 0, 0, 5); // initialize the array getarraysize(.@foo); // => 5 array_entries(.@foo); // => 3 array_remove(<array>, <needle>{, <neq>}) finds and removes every occurrence of <needle> from the array, while shifting left. if <neq> is true, finds entries that do not match instead > returns the number of removed entries setarray(.@foo, 1, 69, 3, 69, 5); // initialize the array array_remove(.@foo, 69); // => 2 // array is now: 1, 3, 5 array_reverse(<array>) reverses the array > returns true setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_reverse(.@foo); // => true // array is now: 5, 4, 3, 2, 1 array_sum(<array>) iterates through the whole array to perform an arithmetic addition > returns the sum of every entries of the array setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_sum(.@foo); // ((((1 + 2) + 3) + 4) + 5) => 15 array_difference(<array>) iterates through the whole array to perform an arithmetic subtraction > returns the difference of every entries of the array setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_difference(.@foo); // ((((1 - 2) - 3) - 4) - 5) => -13 array_product(<array>) iterates through the whole array to perform an arithmetic multiplication > returns the product of every entries of the array setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_product(.@foo); // ((((1 * 2) * 3) * 4) * 5) => 120 array_quotient(<array>) iterates through the whole array to perform an arithmetic division > returns the quotient of every entries of the array setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_quotient(.@foo); // ((((1 / 2) / 3) / 4) / 5) => 0 array_shift(<array>) removes the first entry of the array, while shifting left > returns the value of the removed entry setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_shift(.@foo); // => 1 // array is now: 2, 3, 4, 5 array_unshift(<array>, <value>) adds <value> to the start of the array, while shifting right > returns the new size of the array setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_unshift(.@foo, 69); // => 6 // array is now: 69, 1, 2, 3, 4, 5 array_pop(<array>) removes the last entry of the array > returns the value of the removed entry setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_pop(.@foo); // => 5 // array is now: 1, 2, 3, 4 array_push(<array>, <value>) adds <value> to the end of the array > returns the new size of the array setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_push(.@foo, 69); // => 6 // array is now: 1, 2, 3, 4, 5, 69 array_shuffle(<array>) shuffles the array > returns true setarray(.@foo, 1, 2, 3, 4, 5); // initialize the array array_shuffle(.@foo); // => true // array is now: 1, 4, 2, 3, 5 (example, unpredictable) array_unique(<array>{, <threshold>}) allows array entries to appear up to <threshold> times (1 by default) and removes the extraneous ones. useful to remove duplicate entries > returns the number of removed entries setarray(.@foo, 1, 3, 3, 4, 5); // initialize the array array_unique(.@foo); // => 1 // array is now: 1, 3, 4, 5 array_diff(<base array>, <array>{, <array>...}, <result array>) compares the base array against one or more other arrays and fills the result array with the entries in base array that are not present in any of the other arrays > returns the number of entries not found in other arrays setarray(.@base, 1, 2, 3, 4, 5, 6, 7, 8); // initialize the base array // fill the arrays to compare with the base array: setarray(.@foo, 2, 3, 4, 5, 6, 7, 8); // missing "1" setarray(.@bar, 1, 2, 3, 4, 6, 7, 8); // missing "5" setarray(.@baz, 1, 2, 3, 4, 5, 6, 7); // missing "8" // compare foo, bar and baz against base, and fill result: array_diff(.@base, .@foo, .@bar, .@baz, .@result); // => 3 // .@result is now: 1, 5, 8 array_filter(<array>, "<function>") filters the array using a function that is tested against every entries. if the function returns false, the relevant entry is removed and the array is shifted left > returns the number of removed entries function script is_prime { if (getarg(0) <= 1) return false; for (.@i = 2; .@i <= getarg(0) / 2; ++.@i) if ((getarg(0) % .@i) == 0) return false; return true; } setarray(.@foo, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); array_filter(.@foo, "is_prime"); // => 9 // array is now: 2, 3, 5, 7, 11, 13 array_sort(<array>) sorts the array in ascending order > returns true setarray(.@foo, 2, 1, 8, 4, 5, 7, 6, 3); // initialize the array array_sort(.@foo); // => true // array is now: 1, 2, 3, 4, 5, 6, 7, 8 array_rsort(<array>) sorts the array in descending order > returns true setarray(.@foo, 2, 1, 8, 4, 5, 7, 6, 3); // initialize the array array_rsort(.@foo); // => true // array is now: 8, 7, 6, 5, 4, 3, 2, 1 Requires Hercules of June 24 2017 or newer version -------------------------------------------------------------------------------------- This script was made by me, for The Mana World + Evol. License: public domain (CC0)
  6. 1 point
    meko

    Deprecated Features

    List of deprecated script commands and Hercules features (2017) misceffect() specialeffect2() pow() useatcmd() v2018.06.03 pcblockmove() v2019.03.10 UDT_MAPIDXY and UDT_WALKTOXY constant v2019.04.07 petstat() v2019.05.05 debugmes() v2019.11.17 getguildname() getguildmaster() getguildmasterid() Future deprecations: ⚠️ Please avoid using those commands in new scripts menu()
  7. 1 point
    dualityDiscretion

    RO Webcomic [FIN]

    Last year, I launched a RO-themed webcomic which I've been updating weekly. I've been posting it in several forums and someone told me to share it here too, so I thought why not~ This comic follows Joshua, a newb adventurer who just arrived in Rune Midgard, struggling to understand how the world works, with some helping hands guiding him... kinda... http://tapas.io/series/PORINGS Been goin for almost a year, 44 strips so far and going strong. Updated every Friday~
  8. 1 point
    bWolfie

    Hercules, welcome to IPB4

    Just found out I need to hold shift to go to next line line without skipping.
  9. 1 point
    Skyline

    Hercules, welcome to IPB4

    ALL HAIL! FINALLY!
  10. 1 point
    bWolfie

    [Function] Ordinal Suffix

    Ordinal Suffix Function File Name: Ordinal Suffix File Submitter: Myriad File Submitted: 5 June 2017 File Category: Quests, Shops, Functions & Algorithms Releases Ever been constructing a string and wanted to turn 1 into 1st? Or 2 -> 2nd? Well, there is now an answer! I call it 'Ordinal Suffix'. It adds a suffix to the end of your number using the callfunc() script command. Example below: .@first = 1; .@second = 2; mes("That's the " + callfunc("Ordinal_Suffix", .@first) + " time you told me that!"); // Will return "That's the 1st time you told me that!" mes("That's the " + callfunc("Ordinal_Suffix", .@second) + " time you told me that!"); // Will return "That's the 2nd time you told me that!" mes("That's the " + callfunc("Ordinal_Suffix", 11) + " time you told me that!"); // Will return "That's the 11th time you told me that!" → Special cases such as '11th', '12th' and '13th' are accounted for. → Can only be used with integers. → Works for all possible numbers (except 0 will return 0th, not sure what that is supposed to be). Script can be 'downloaded' at this pastebin link: https://pastebin.com/6Z5k1S70
  11. 1 point
    Mystery

    Hercules, welcome to IPB4

    Has been tackled!
  12. 1 point
    meko

    Hercules, welcome to IPB4

    Besides the avatar issue, here's what I noticed so far: Newlines in code snippets for downloads seem broken. FIXED Example: ^ Clicking the download button yields "file not found" FIXED ^ The actual files of the previous versions of the file are gone FIXED for some reason version 1 and version 2 seem fine, but version 3 and 4 are not found (I re-uploaded version 4 though) FIXED It is no longer possible to remove previous versions FIXED The screenshots for ALL downloads are gone FIXED You can no longer see who gave +1 reputation on posts FIXED The reputation page is gone from profiles altogether FIXED The reputation page on profiles shows no posts at all FIXED When you edit posts, even if you don't check "Show that the message has been edited" it still shows as edited NOT A BUG When clicking the Documentation tab in the page header it says "Wiki (Achieved)" FIXED On profile pages the bar that says content count, joined, last visited partially covers the member title FIXED The ability to set a profile background is gone... but I guess this has been superseded by the cover feature NOT A BUG The nested bulleted lists are broken for Announcements; they show the [*] bbcode as plaintext FIXED Embedded downloads (ie the one embedded in this very post) show "0 comments", even though there's no way to comment on download pages FIXED The navigation links for IRC and moderation logs are gone WON'T FIX There is no margin in between the green star icon of featured topics and the title of said topics in the sidebar widget. We could give it a margin-right of ~4px but since the widget already says "featured" it's redundant, so I feel this icon should just be removed or hidden from the widget. FIXED
  13. 1 point
    Hey everyone, There will be a scheduled maintenance today at 13:00 EDT (5:00pm GMT). The forums will go offline for a few hours (no rough ET). Prior to maintenance, we will put the forums in a read-mode only state to prevent new topics/posts being made... which will help with the transition to IPB4! The only thing that will be affected by this maintenance and transitions is our forums; our Wiki & GitHub Repo won't be. The Wiki is already in read-only mode and is in a achieved state. With that in mind, you are still able to visit our GitHub Repo page. The transition to IPB4 has been discussed multiple times with the staff and we agreed to move forward with IPB4. As mentioned above, the forums will take the hardest hit. The forums has quite a few mods written by Ind that will no longer function, along with our 3rd Party Plugins. I can't say, "We won't have any problems with the transition" because there is bound to be a few things that come up since our IPB is quite outdated; thus there will be no ET given. Next time you visit Hercules after 13:00 EDT, we will be using IPB4! Discord Server We have a Discord Server! This would have been mentioned in another announcement/Digest (May) which will be announced after the maintenance. Here is our Discord Channel: https://discord.gg/6drq7xu
  14. 1 point
    Handling of item storage has been split into a separate packet, but while this fixed a bug, it introduced a race condition, which when exploited allows to duplicate items. A new patch has been issued and the exploit is no longer reproducible. If you are using a version between e8affc4 and f30edc7 (inclusive) make sure you update ASAP to d2af893 (stable) or later version and compile it. Affected versions, from oldest to most recent: e8affc41f106503b530abaa7faa20d6e63b727b8 d966a8e6860d418bb3a235e57928436127eba555 cb3e2f5f3b91d0a1f7711eff9c10ae9a655a74f2 50848cc7f79aa516351e4a4d673df53f4881eb4d 5383a14853327c123cbb037d3680aaa3d8c3e724 8c5b8ac7d87d8d4dc49d3ff1768f8884a0d75d72 7c6673e13fdd75a4137a9d7ef94e04d96e053422 d90e8ce0d8ba8677567a5a5adebb62ba97e8a0b3 b950a589e59e2bf074f67c75aaacf3f82424d4fe 4b208e41d1d5cc995c2816e8f34c1ad8b0a7327d 47a1e679cd35dc2e524fbeb31891d85e497821ce f30edc7f02fb0c290d302d9abc77d970bb05fb62 To know which version you are on: start Hercules (login server, char server or map server) it will say something like the following: [Info]: Git revision (src): 'e6ab2a9ec6f5be8927eeca667ff477086f5e2e8e' If any other issue is found, this post will be updated. Want to receive email notifications about important issues in the future? Go to Repository News and hit the follow button Need help updating to a newer version? You can get free support in the #Hercules channel of the Rizon network.
×
×
  • Create New...

Important Information

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