rafoka
-
Content Count
1 -
Joined
-
Last visited
Reputation Activity
-
rafoka reacted to Ind in BG Queue: Draw Scenario Info
oh i see o-o I added a maxDuration setting for each arena we can later modify when we find out the values.
sneak peek:
//====================================================//= _ _ _ //= | | | | | | //= | |_| | ___ _ __ ___ _ _| | ___ ___ //= | _ |/ _ '__/ __| | | | |/ _ / __|//= | | | | __/ | | (__| |_| | | __/__ //= _| |_/___|_| ___|__,_|_|___||___///= //= http://herc.ws/board/ //====================================================//= Link~u! <description> <link to wiki/topic>battlegrounds: ({ /* character variable for global bg delay */ global_delay_var: "BG_Delay_Tick" /* how many seconds to consider a player "afk" and kick him out? */ maximum_afk_seconds: 30 /* str used by the feature */ queue_invalid_name: "(Invalid Name)" queue_individual_name: "Individual" queue_party_name: "Party" queue_guild_name: "Guild" /* one can add as many as he wishes */ /* for custom ones, need to edit "lua files/entryqueue/entryqueuelist.lua" [Ind/Hercules] */ arenas: ({ name: "Tierra Gorge" //must match the name in client files event: "Tierra_BG2::OnPlayerListReady" minLevel: 80 maxLevel: 150 reward: {/* amount of badges awarded on each case */ win: 3 loss: 1 draw: 1 } minPlayers: 6 /* minimum amount of players to start */ maxPlayers: 60 /* maximum amount of players */ minTeamPlayers: 6 /* minimum amount of team members required for a team (party or guild) to join */ delay_var: "Tierra_BG_Tick" /* npc variable name that will store the delay for this match */ maxDuration: 30 /* maximum duration in minutes, if reached game ends and highest score wins (or calls a draw if scores are equal) */ },{ name: "Flavius" //must match the name in client files event: "Flavius_BG1::OnPlayerListReady" minLevel: 80 maxLevel: 150 reward: {/* amount of badges awarded on each case */ win: 9 loss: 3 draw: 3 } minPlayers: 6 /* minimum amount of players to start */ maxPlayers: 60 /* maximum amount of players */ minTeamPlayers: 6 /* minimum amount of team members required for a team (party or guild) to join */ delay_var: "Flavius_BG_Tick" /* npc variable name that will store the delay for this match */ maxDuration: 30 /* maximum duration in minutes, if reached game ends and highest score wins (or calls a draw if scores are equal) */ },{ name: "KVM (Level 80 and up)" //must match the name in client files event: "KvM03_BG::OnPlayerListReady" minLevel: 80 maxLevel: 150 reward: {/* amount of badges awarded on each case */ win: 5 loss: 1 draw: 1 } minPlayers: 4 /* minimum amount of players to start */ maxPlayers: 60 /* maximum amount of players */ minTeamPlayers: 5 /* minimum amount of team members required for a team (party or guild) to join */ delay_var: "KVM_BG_Tick" /* npc variable name that will store the delay for this match */ maxDuration: 30 /* maximum duration in minutes, if reached game ends and highest score wins (or calls a draw if scores are equal) */ },{ name: "KVM (Level 60~79)" //must match the name in client files event: "KvM03_BG::OnPlayerListReady" minLevel: 60 maxLevel: 79 reward: {/* amount of badges awarded on each case */ win: 2 loss: 0 draw: 1 } minPlayers: 4 /* minimum amount of players to start */ maxPlayers: 60 /* maximum amount of players */ minTeamPlayers: 5 /* minimum amount of team members required for a team (party or guild) to join */ delay_var: "KVM_BG_Tick" /* npc variable name that will store the delay for this match */ maxDuration: 30 /* maximum duration in minutes, if reached game ends and highest score wins (or calls a draw if scores are equal) */ },{ name: "KVM (Level 59 and below)" //must match the name in client files event: "KvM03_BG::OnPlayerListReady" minLevel: 1 maxLevel: 59 reward: {/* amount of badges awarded on each case */ win: 1 loss: 0 draw: 0 } minPlayers: 4 /* minimum amount of players to start */ maxPlayers: 60 /* maximum amount of players */ minTeamPlayers: 5 /* minimum amount of team members required for a team (party or guild) to join */ delay_var: "KVM_BG_Tick" /* npc variable name that will store the delay for this match */ maxDuration: 30 /* maximum duration in minutes, if reached game ends and highest score wins (or calls a draw if scores are equal) */ } )}) -
rafoka reacted to GreenBox in multiple map-server support
1. Introduction
I feel like we need this, as I don't have anything to do this month, I'll dedicate it to Hercules <3
Our inter server communication is very buggy and exploitable, mainly when we put a second zone server in the game.
I'll use this topic to manage TODOs and discuss about the implementation design.
2. Implementation Steps
Create a standard way of defining "classes": COBJ https://github.com/HerculesWS/Hercules/commit/5e018af1749be4b64e0c0bdf77d412eaa82dae57 Rewrite Inter code using COBJ Implement session_data synchronization between zones
3. Further Work
Rewrite already existing code to use COBJ Optimize inter server communication
Branch: https://github.com/HerculesWS/Hercules/tree/zones
Documentation: https://drive.google.com/#folders/0B1C53TZ4rjH7d3FXakhjeHRpZzQ
~in progress~
* Moved to public section so we can take user input
-
rafoka reacted to Jguy in rAthena devs/staff/members on Hercules
Hello,
While we do not mind that rAthena developers, staff members and regular members register an account, post or send PM's on our forums, we do not take kindly to 'rAthena is better because x y and z' posts, or anything promoting rAthena as a superior emulator because of such and such. There is no such post on rAthena made by a Hercules staff member about Hercules and we intend to keep it that way, we would appreciate the same respect.
Those who do not follow this simple clause listed above will have their post(s) deleted and/or hidden from view. Repeat offenders will be suspended from our forum with no further warnings or post manipulation.
We do not appreciate, nor welcome drama here. While criticism is welcome in the form of 'why doesn't Hercules have such and such a feature', drama and belittling a project (hercules or not) will not be tolerated. This is a collaboration, not a drama infested 12 year old's contest.
Thank you.
-
rafoka reacted to Ind in Hercules Renewal: Phase Two
Hercules Renewal: Phase Two
Hello~! - What?!
"but phase one isn't complete yet!"its alright, we have been able to manage parallel projects and goals, we surely can take care of this one too and effort required on this one is pretty much less than on phase one "So whats this phase two about?"one of my favorite things: user friendliness Goal: user-friendliness
This aims at rewriting all of our server-client packet building, making it much more user friendly to modify and add new ones. We'll be starting with map server <- -> client (clif.c) and then will move to char server <- -> client and later login server <- -> client Before
void clif_authok(struct map_session_data *sd) { #if PACKETVER < 20080102 const int cmd = 0x73; #else const int cmd = 0x2eb; #endif int fd = sd->fd; WFIFOHEAD(fd,packet_len(cmd)); WFIFOW(fd, 0) = cmd; WFIFOL(fd, 2) = gettick(); WFIFOPOS(fd, 6, sd->bl.x, sd->bl.y, sd->ud.dir); WFIFOB(fd, 9) = 5; // ignored WFIFOB(fd,10) = 5; // ignored #if PACKETVER >= 20080102 WFIFOW(fd,11) = sd->user_font; #endif WFIFOSET(fd,packet_len(cmd)); } After
void clif_authok(struct map_session_data *sd) { struct packet_authok pack; pack.PacketType = authokType; pack.startTime = gettick(); pack.PosDir[0] = sd->bl.x; pack.PosDir[1] = sd->bl.y; pack.PosDir[2] = sd->ud.dir; pack.xSize = 5; //not used pack.ySize = 5; //not used #if PACKETVER >= 20080102 pack.font = sd->user_font; #endif clif->send(pack,sd->fd,blabla,SELF); } Special Thanks
To Yommy for bringing this up! -
rafoka reacted to Ind in Introducing Hercules' Stress Test Server
Introducing Hercules' Stress Test Server
Hello~!
The "Stress" Part
Over 1.000 IndAI units (equivalent to +1k online players) will be in the server playing 24/7, farming, going to pvp, doing woe, playing battlegrounds, doing anything a player does, this will create a perfect scenario for us to debug and test Hercules.
The Development Benefits
We'll be able to keep track of performance usage 24/7, making us able to detect whenever a update increases a server's usage, allowing us to further optimise said update in order to take the processing down. With the AI characters doing stuff non-stop 24/7 we'll be able to identify and fix any crashes existent. Hercules will gain a super stability boost thanks to this. How to connect / Moving in and out
This is the fun part.
No new clients, and no sclient/clientinfo/blablabla edits will be required. get to the test server by typing '@hercules warp', test whatever you like, and go back to your server with '@hercules leave'. This technology *might* also be employed in the future by us to create hercules-hosted inter-server events.
Entirely Secure
The only data your server will pass to our test server upon warp is the name of the character (and maybe hairstyle vals).
The test server is unable to modify (or even access) any data on your server, it is entirely secure and damage-free.
Unique to Hercules
The ability to connect through your ordinary client will be made possible by our custom server hosted over at herc.ws, the code won't be made public.
Coming
I felt inspired to write about this feature, which is why this announce is out before the feature itself.
This is one of the features to be powered by our Hercules Plugin Manager and will be made public once the HPM implementation reaches the level capable of sustaining it.
FAQ
what if i dont want my players to go to the test server?@hercules is a command like any other, you can restrict access by groups.conf (by default only gms will be able to use it) what if i dont have a test server to use as a gateway to the hercules stress test server?we will also provide clients for those who don't have/want to use a server as the gateway -
rafoka reacted to Ind in Introducing Hercules' Map Zone Database
Introducing Hercules' Map Zone Database
Hello~! - What?!
1st, it is a merge from item_noequip.txt and skill_nocast_db.txt functionality. 2nd, it is a major improvement on what these features did in both performance and usability. map_zone_db.txt format sample
{ name: "My Zone" inherit: ( "My Other Zone" ) disabled_skills: { AL_HEAL: "PLAYER | MONSTER | ELEMENTAL" AL_TELEPORT: "MONSTER" MG_FIREBOLT: "NONE" //MG_NAPALMBEAT: "PLAYER" //ID11: "PLAYER" } disabled_items: { Assumptio_5_Scroll: false //Apple: true //ID501: true } mapflags: ( "adjust_skill_damage MG_FIREBOLT 250", "adjust_unit_duration PR_SANCTUARY 50" ) /* "command:min-group-lv-to-override" e.g. "heal: 70" */ disabled_commands: { //Example Below makes @heal be used in maps within this zone only by those group lv 70 and above //heal: 70 } skill_damage_cap: { //Exemple Below caps firebolt damage in maps within this zone to a maximum 50 damage, // (depends on HMAP_ZONE_DAMAGE_CAP_TYPE in src/config/core.h) // when cast vs players and monsters. //MG_COLDBOLT: (50,"PLAYER | MONSTER") } } Notes on the format
In disabled_skills the var following the name (: "PLAYER | MONSTER | HOMUN | MERCENARY | ELEMENTAL | PET | CLONE | MOB_BOSS") is what allows a zone to know what unit types should have this skill disabled. In the sample above, for example, in My Zone, player, monster and elemental unit types are unable to cast heal, while only monsters are unable to cast teleport. this variable may also be used to ignore skills from inheritance, for example if My Other Zone disabled a number of skills, including MG_FIREBOLT, in My Zone all of them will be disabled as well, except for MG_FIREBOLT since it is set as NONE. In disabled_items the var following the name (: true or : false) is what allows a zone to override what it inherited, for example if My Other Zone disables a number of items, including Assumptio_5_Scroll, in My Zone all of them will be disabled as well, except Assumptio_5_Scroll since it is as false. A zone may enforce an unlimited number of mapflags on all its maps, by using this sample all maps under My Zone will have Fire Bolt damage increased by 2.5x and Sanctuary will have its duration halved. A unlimited number of maps may be linked to a specific zone through a mapflag '<map name><tab>mapflag<tab>zone<tab><zone name>' Changes The mf_restrict (restrict) was dropped. item_noequip.txt and skill_nocast_db.txt were dropped, replaced by map_zone_db.txt. setmapflag script command was modified to support the new zones. @mapinfo was modified to support the new zones, also modified the formatting and made it include the amount of vendings. Improvements As opposed to item_noequip.txt and skill_nocast_db.txt, map_zone_db.txt supports an unlimited number of zones. map_zone_db.txt implementation surpasses the ones from item_noequip.txt and skill_nocast_db.txt, making item equipping (pc_useitem/status_calc_pc) and skill using (previously skillnotok, now status_check_skilluse) processing much faster and efficient. @mapinfo performance was improved (was doing chat room dbmap lookups without even checking if player was on the map in question) Special Thanks to Muad_Dib <3. to lighta for discussing the feature with me and helping design the unit-based restrictions on skills to Bahmut and Emistry for ideas on how to format the file. to kyeme for feature ideas. Links~! Commit Commit 2 (update) Map Zone Database File -
rafoka reacted to Ind in Hercules Renewal
Starting today we'll be going throughout all of our source code to modify how functions are called. so what?
Benefit
With this new implementation chances to have custom source modifications conflict when you update hercules will be drastically reduced. How? Instead of modifying existing functions users will be able to create a new version of them elsewhere, e.g. in a custom file, and have it replace the original one. How? very simple.
battle->check_target = my_new_check_target_function; PluginsThis change opens the possibility for a new plugin implementation in the future.
Project Vision
We understand this move will conflict with some points in our project vision, we'll be modifying it soon.
More
We want Hercules to stand out, with that in mind we've been planning features exclusive to Hercules, features other projects won't be able to merge. And how is that even possible? features that will integrate with our forum is one example of them. For example a feature capable of automatically looking for new updates in scripts/modifications downloaded from our upcoming downloads section.