Jump to content

Ind

Retired Staff
  • Content Count

    1655
  • Joined

  • Last visited

  • Days Won

    131

Everything posted by Ind

  1. Version 0.1

    175 downloads

    HPM Plugin. - Implements the 'server-side' manners.txt aka ability to blacklist words. Includes: - Ability to read 'conf/manners.txt' (you have to create the file, you can fill as you like, and use '//' to create commands as well). - The @reloadmanners command - Implements the 'mouthful' group permission, which allows individual groups to bypass the badwords filter. Requires: - HPM Hooking to be enabled. How to Install Check the wiki page on 'Building a Plugin' http://herc.ws/wiki/HPM#Building_a_plugin Contribute / Customize Its available at our Staff Plugins Repo, pull requests are more than welcome.
  2. File Name: Server Side Manners.txt File Submitter: Ind File Submitted: 14 Jan 2014 File Category: Plugins HPM Plugin. - Implements the 'server-side' manners.txt aka ability to blacklist words. Includes: - Ability to read 'conf/manners.txt' (you have to create the file, you can fill as you like, and use '//' to create commands as well). - The @reloadmanners command - Implements the 'mouthful' group permission, which allows individual groups to bypass the badwords filter. Requires: - HPM Hooking to be enabled. How to Install Check the wiki page on 'Building a Plugin' http://herc.ws/wiki/HPM#Building_a_plugin Contribute / Customize Its available at our Staff Plugins Repo, pull requests are more than welcome. Click here to download this file
  3. There you go! I'll write a topic with the documentation and stuff. https://github.com/HerculesWS/StaffPlugins/blob/master/shennetsind/manners/manners.c There: http://herc.ws/board/topic/3925-server-side-mannerstxt/
  4. Sounds like something fun to implement with a plugin, I feel like playing with it. /** * Reads off conf/manners.txt * - 1 Word per line * Causes players not to be able to spell badwords blacklisted * Implements @reloadmanners * Implements 'mouthful' permission set, so individual groups can be set to bypass the filter. **/
  5. yup, there are also many whose return value is irrelevant (e.g. timers), we haven't prioritised this kind of cleanup though (we usually fix those we pass by)
  6. it might be due to your mapflag setup, the map in question has a nosave flag?
  7. Hercules: 1st 2014 MEGAPATCH Helloooo! Starting 2014 with a boom, yet another outstanding patch from Hercules! Patch Item #1: Scripting Level UP Char and account variables overhaul They're no longer limited to #define ACCOUNT/GLOBAL_REG_NUM, they're now limitless Their storage capabilities have received a colossal improvement, each numeric variable now uses at least 1/10 the memory it did previously, and we achieved it while increasing speed, simply outstanding as expected from us. Thanks to their quantity no longer being limited, char and account variables now support arrays, i.e. setarray #accreg[y],...; Saving and loading procedures have been improved outstandingly! for instance, previously, if you had 100 char regs but only one had been modified or deleted, map server would need to send all of them and char server would have to re-insert all of them; now only modified or deleted ones are saving, increasing saving speed of both map and char server procedures and decreasing inter-server bandwidth by dinosaur steps. Magnificent Array Improvement (to all variable types) Size limit modified from 127 to ...2 billion! Speed of countless array operations have been improved thanks to new array handling, e.g. whereas previously upon deleting any array it'd set its 127 possible values to 0 (regardless of how many values it actually had) now it only deletes as many members as it possesses getarraysize (the-oh-misleading-function since it returns the arrays' highest index) has been sped up as well thanks to this, and it no longer wastes script stack room on every interaction And the futureThis improvement has open way for many other amazing features, for example, Haruna has designed a foreach implementation for scripting among some other useful enhancements Global account variable handling redesign To clarify, this is that ancient type used on multiple-char-server setups, ##varname, which are present in all servers an accounts logs into, as opposed to #varname which, while account-wide, are considered 'local' to a char server. Saving and loading have been modified to match char/local-acc variable new design, on its own it already is a major speed boost and bandwidth saver, however, it has also improved login servers overall processing speed, thanks to its processing no longer being attached to ordinary account handling, this means that all operations that required login server to use an accounts data (i.e. login/pincode change/ban/block/etca) have been sped up, and use less memory. '.', '.@' and ''' variables write operation speed up trying to write ''' variables outside instances will now print warnings instead of silently doing nothing runtime read/write operations of global/temporary(@) char variables, as well as account variables, have been considerably sped up, whereas previously it'd run a str lookup to find a match for read/write it now uses the variable id, furthermore it now relies on DBMaps to handle the lookup (whereas previously it was a normal loop). Database tables overhaulWe've analysed global reg data storage and we've decided that it not only is a memory waste, it is a processing one as well due to how int and str variables share the same storage, we've analysed global reg data for a number of large servers and have identified most variables are numbers, by a outstanding majority, with that in mind, this patch introduces 6 tables that will improve this drastically. You'll notice this patch's SQL upgrade file will take care of this, and thus migrate the data properly into the new tables. Special Thanks To: Haruna ! <3 wouldn't have gotten half of it done if it weren't for Haru, thank you so much sensei! jaBote, for proposing it! Emistry Yommy Streusel Patch Item #2: @autotrade Persistency Also known as: @at merchants survive server crashes/restart, as soon as the server starts again they're re-spawned. May be disabled on src/config/core.h by commenting out AUTOTRADE_PERSISTENCY Special Thanks To: Haruna! Michieru, this feature wouldn't be out now if it weren't for him, lets all thank him! Dekamaster/Nightroad for helping me on this features original design, 3-4 years ago. Thank you master <3! Link'u! Commit Upgrade files #1 (Autotrade) #2 (Scripting Level UP)
  8. check your account `char_slots` column in login table
  9. just to clarify the error message, it means there are duplicate Time2str functions (not necessarily doing the same thing, duplicate names), as Mhalicot points out its because the function is already present in the Global_Functions.txt file
  10. Nah man, these are euRO exclusive sprites so they're not in kRO's data.grf. My kRO is already fully up to date and I got the latest (20131223) client hexed and running with no errors. I don't have euRO and I got it to work o-o~
  11. Gift'o! From Hercules, to your server! We wish you happy holidays, and thank you for your support. May the New Year bring you happiness and peace. 2013-12-23c Client Support Thanks to Yommy and Rytech! NPC Market Support A new type of NPC Shop where item availability is limited, for example you can have a vender start with 50x Red Potions and set mechanics for the red potions to be refurbished (for example could be as simple as a OnClock, where Red Potions are refurbished every y hour, or elaborate e.g. be connected with a game quest where players need to help a merchant npc get to the shop in order for it to be resupplied) Available as a NPC Trader subset (details will follow) @costume Oktoberfest NPC Trader A whole different way to set up shops, they're easier to read and flexible to customize. Previous format still supported (in the scenario we drop the previous we'll provide a conversion tool) To begin with, 'trader' is a phony name, its only purpose is to sign the parser that 'this npc will open the shop when clicked'. the trader npc is in fact a 'script' type (and thus script types can create/manipulate trader shops, and open them with the help of openshop()). Normal Zeny Shop moc_ruins,93,53,2 trader Item Collector#moc1 4_M_03,{ OnInit: sellitem Scell; sellitem Monster's_Feed; sellitem Animal's_Skin; sellitem Bill_Of_Birds; } Custom Shop Script has full control over currency, which allows for scripts to use anything, from quests, to items, variables, etca. For Example: prontera,153,152,1 trader TestCustom2 952,{ OnInit: tradertype(NST_CUSTOM); sellitem Red_Potion; end; /* allows currency to be Red_Potion */ OnCountFunds: setcurrency(countitem(Red_Potion)); end; /* receives @price (total cost) */ OnPayFunds: if( countitem(Red_Potion) < @price ) end; delitem Red_Potion,@price; purchaseok(); end; } NPC Market ShopThis is the type I mentioned earlier, where item availability is limited prontera,150,160,6 trader HaiMarket 952,{ OnInit: tradertype(NST_MARKET); sellitem Red_Potion,-1,50; end; OnClock0000://resupplies red potions on midnight OnMyResupply://instead of midnight, a event could trigger HaiMarket::OnMyResupply if( shopcount(Red_Potion) < 50 ) sellitem Red_Potion,-1,50; end; }The quantity data is disaster-safe, I mean it is persistent to @reloadscript and server restarts (If there were 39 Red Potions on sale upon restart/reloadscript, it continues to be 39 instead of resetting back to 50). 7 script commands to help control (documentation for all of them is present in script_commands.txt): openshop,sellitem,stopselling,setcurrency,tradertype,purchaseok,shopcount Trader Design by Yommy Haru jaBote mkbu95 Gepard Emistry Ind Special Thanks To Haru Yommy JaBote Muad_Dib Link'u~! Commit: https://github.com/HerculesWS/Hercules/commit/cf19b26d50ac96111e44c33a80afd1f1ea935cec NPC Trader Samples: https://raw.github.com/herculesWS/Hercules/master/doc/sample/npc_trader_sample.txt (Upcoming) GM Interface for Cash Shop Control Found that on the new client, support is being worked on (Data thanks to Yommy <3).
  12. Thanks Yommy/Rytech <3. I'm working my ass off to get a hercules christmas patch out before the 25th, including some secret things as well as the new features this client provides (market, new gm tool, oktoberfest costume, and more)!
  13. Ind

    Suggestion :D

    Implemented in https://github.com/HerculesWS/Hercules/commit/36d0c789633da074f7e1a6add901278af513ad4b
  14. wooo. I forgot to update this =x. Through the data Yommy harvested on November 29th, my findings: - The official ID ranges are dumb: mob/homun/merc/elem/skill-units share the 1-50k range (his script caps the range at 42k, thats wrong btw) aegis sucky design is able to maintain that, thus why officials run on so many servers, because the 50k range can be offset into multiple zones, on our design (thousand times better (and efficient), must I emphasise) it would limit the amount of such units (e.g. default settings have 47k mobs, by using the official range map servers would have little room for more or custom mobs, nevermind homuns/skill-units/etca) - Thanks to yommy again I was able to determine no client functionality is lost by us using custom ranges, the game clients do not rely on the ranges (have not for many years), instead it relies on objecttype -- this is used to determine what a unit is, not by its id. - Even though the ids are different, it doesn't mean the AI cannot be used (I was successful at getting it to work, with 6 edits, as I will demonstrate) -- all files that follow are located in his ./AI/USER_AI, do not mistake it for those in the ./AI/ folder. --- in AI_MAIN.lua ---- Find "if (v > MagicNumber2) then" change to "if (v >= MagicNumber2 and v <= MagicNumber3) then" ---- Find "if (v < MagicNumber) then" change to "if (v >= MagicNumber) then" ---- Find "elseif (v < MagicNumber) then" change to "elseif (v >= MagicNumber) then" --- in AzzyUtil.lua ---- Find "if (m < MagicNumber) then" change to "if (m >= MagicNumber) then" ---- Find "elseif (id > MagicNumber2) then" change to "elseif (id >= MagicNumber2 and id <= MagicNumber3) then" ---- Find "if (id>MagicNumber2) then" change to "if (id>=MagicNumber2 and id <= MagicNumber3) then" --- Lastly, in Defaults.lua ---- Find: MagicNumber =42000MagicNumber2 =100000Replace the chunk with:MagicNumber =110000000MagicNumber2 =2000000MagicNumber3 =100000000- Special Thanks to Yommy, Haru.
  15. Yommy has analysed it and provided information on the necessary changes, I'll play with it a bit and with luck commit the fix today.
  16. Ind

    Paid Server

    Implemented in https://github.com/HerculesWS/Hercules/commit/7120b55ce40a6a0c4086da49d57c74baa72609d6
  17. very nice indeed, thanks for sharing
  18. no problem, as mentioned in http://herc.ws/board/topic/1934-hercules-plugin-manager-update/ will get it avaialble (and probably use the chance to rewrite how HPM handles it, got some new ideas)
  19. the server is being able to warp you into the map, and the resource-error shows the map name is correct, so therefore its a client problem (some file is not correctly setup), in the case you are unable to pinpoint the reason, you can have the server fool the client by telling it you're actually warping into 1@farm while you're not, to fool the client you need to make use of the optional parameters in the instace_attachmap script command *instance_attachmap("<map name>",<instance id>{,<use base name>{,"<new map name>"}});Attaches the map "<map name>" to the instance specified with <instance id>. The optional parameter specifies, whether a map requires emulation for instancing (1) or not (0 = default). if use base name is specified,and "<new map name>" too the server will instance the map under the "<new map name>",name.Returns the resulting map name on success or an empty string on failure.Example: instance_attachmap("prontera", .@instance_id,1,"via");^ the above creates a instance (or clone) of prontera, on a map called "via"
  20. we're working on that (thanks to Beret) -- will be available within days.
  21. there we go https://github.com/HerculesWS/Hercules/commit/778facb21f822cea549939c8dbee886e1cd342aa
  22. hmm I thought it was doing so (script command allows one to replace default with a plugins, I was under the impression atcommand was following the same logic), I'll go over it later today
×
×
  • Create New...

Important Information

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