Jump to content
  • 0
Alexandria

(Guild) Antagonism System

Question

Hello you guys.
 
How can I enable the antagonism system, so members of rival guilds (set by Guild leaders, maybe 3 foes maximum) can attack each other anytime, anywhere (except in towns). The main difference with Global PvP (PK server type) is that if someone is un-guilded or member of a guild not flagged as 'FoE' then this person cannot attack/be attacked.
 
Thank you.

Edited by Mysterious
fixed code

Share this post


Link to post
Share on other sites

25 answers to this question

Recommended Posts

  • 0

Hello you guys.

 

How can I enable the antagonism system, so members of rival guilds (set by Guild leaders, maybe 3 foes maximum) can attack each other anytime, anywhere (except in towns). The main difference with Global PvP (PK server type) is that if someone is un-guilded or member of a guild not flagged as 'FoE' then this person cannot attack/be attacked.

 

Thank you.

Good Idea

Share this post


Link to post
Share on other sites
  • 0

My suggestion differs from  Lilith's incredible (but sadly abandonned) script; biggest difference being  Antagonism system is based on something natively implemented in RO (as a guild leader, right-click on someone from another guild and "set his guild as antagonist). The "Antagonists" interface  (CTRL+G) could finally be useful.

Edited by Alexandria

Share this post


Link to post
Share on other sites
  • 0

My suggestion differs from  Lilith's incredible (but sadly abandonned) script; biggest difference being  Antagonism system is based on something natively implemented in RO (as a guild leader, right-click on someone from another guild and "set his guild as antagonist). The "Antagonists" interface  (CTRL+G) could finally be useful.

 

Interesting Sir. 

Share this post


Link to post
Share on other sites
  • 0

writing this as patch is just a few line

 src/map/battle.c | 7 +++++++ 1 file changed, 7 insertions(+)diff --git a/src/map/battle.c b/src/map/battle.cindex 24f39a3..3d3284e 100644--- a/src/map/battle.c+++ b/src/map/battle.c@@ -6020,6 +6020,13 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f 	if( (s_bl = battle->get_master(src)) == NULL ) 		s_bl = src; +	if ( s_bl->type == BL_PC && t_bl->type == BL_PC ) {+		TBL_PC *sd = BL_CAST( BL_PC, s_bl );+		TBL_PC *pl_sd = BL_CAST( BL_PC, t_bl );+		if ( guild->check_alliance( sd->status.guild_id, pl_sd->status.guild_id, 1 ) && !map->list[sd->bl.m].flag.town && !map->list[sd->bl.m].flag.nowarpto )+			return 1;+	}+ 	if ( s_bl->type == BL_PC ) { 		switch( t_bl->type ) { 			case BL_MOB: // Source => PC, Target => MOB
its more fun to make this as plugin

http://upaste.me/28fd11097df8e9a10

Edited by AnnieRuru

Share this post


Link to post
Share on other sites
  • 0

writing this as patch is just a few line

 

for alliance we got guild_alliance table, doesn't we need a new table for this :P if client can really handle this, I suggest the creation of the whole system and release it as plugin :P

Edited by evilpuncker

Share this post


Link to post
Share on other sites
  • 0

isn't the plugin is just below the code ?

and there is no need to read the sql table, its not like this stuff is run when the player is offline

to actually hit the player, both the source and target has to be online, so just use guild->check_alliance with enemy flag to read them

 

make the script shorter a bit

 src/map/battle.c | 6 ++++++ 1 file changed, 6 insertions(+)diff --git a/src/map/battle.c b/src/map/battle.cindex 24f39a3..52b24ec 100644--- a/src/map/battle.c+++ b/src/map/battle.c@@ -6020,6 +6020,12 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f 	if( (s_bl = battle->get_master(src)) == NULL ) 		s_bl = src; +	if ( s_bl->type == BL_PC && t_bl->type == BL_PC ) {+		TBL_PC *sd = BL_CAST( BL_PC, s_bl );+		if ( guild->check_alliance( sd->status.guild_id, ((TBL_PC*)t_bl)->status.guild_id, 1 ) && !map->list[sd->bl.m].flag.town && !map->list[sd->bl.m].flag.nowarpto )+			return 1;+	}+ 	if ( s_bl->type == BL_PC ) { 		switch( t_bl->type ) { 			case BL_MOB: // Source => PC, Target => MOB
http://upaste.me/28fd11097df8e9a10

 

 

you know ... I start to think that lilith's faction system can actually be release entirely with plugins ..

Share this post


Link to post
Share on other sites
  • 0

 

isn't the plugin is just below the code ?

and there is no need to read the sql table, its not like this stuff is run when the player is offline

to actually hit the player, both the source and target has to be online, so just use guild->check_alliance with enemy flag to read them

 

make the script shorter a bit

 src/map/battle.c | 6 ++++++ 1 file changed, 6 insertions(+)diff --git a/src/map/battle.c b/src/map/battle.cindex 24f39a3..52b24ec 100644--- a/src/map/battle.c+++ b/src/map/battle.c@@ -6020,6 +6020,12 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f 	if( (s_bl = battle->get_master(src)) == NULL ) 		s_bl = src; +	if ( s_bl->type == BL_PC && t_bl->type == BL_PC ) {+		TBL_PC *sd = BL_CAST( BL_PC, s_bl );+		if ( guild->check_alliance( sd->status.guild_id, ((TBL_PC*)t_bl)->status.guild_id, 1 ) && !map->list[sd->bl.m].flag.town && !map->list[sd->bl.m].flag.nowarpto )+			return 1;+	}+ 	if ( s_bl->type == BL_PC ) { 		switch( t_bl->type ) { 			case BL_MOB: // Source => PC, Target => MOB
http://upaste.me/28fd11097df8e9a10

 

 

you know ... I start to think that lilith's faction system can actually be release entirely with plugins ..

wetwew.

 

 

 

 

I am not spamming I just cant say anything..

Share this post


Link to post
Share on other sites
  • 0

AnnieRuru,

First of all, thanks for this amazing mod.

Now, here is the feedback and a few questions/suggestions I've come into:

1- Is it possible to activate the Antagonism system without activating "alliance", thus providing a total War
between guilds? (at the moment the system won't let you add any guild as antagonist if your turned guild alliance settings to 0 in conf/battle/guild.conf)

2- The moment a guild flags another one as antagonist, it should be equally flagged as antagonist in
the other guild's books too. at the moment one guild can add another foe and start grieffing its members without any reciprocity (abuse-able). Which means, if one of these 2 guilds counts too many FoEs already (3); they can't flag / be flagged antagonist until they get a free slot again

3- Is it a possible to fight without pressing Shift or typing /ns command?

Thanks a lot, in its actual form, this script is already great !
 

Edited by Alexandria

Share this post


Link to post
Share on other sites
  • 0

1. possible by implementing as a script command

but I don't think its possible to list more than 3 ...

the client not able to list the 4th one when invite the 4th antagonist guild

 

2. I think its possible ... just need an extra check the opponent guild already has max antagonist guild

 

3. I think its possible ...

just turn on the pk_mode, and everyone cursor will automatically become a sword

because with pk setting on ... every map is a pvp map except with the pvp off mapflag

 

and this kind of modification ... large as hell

I don't consider this as a release ... is more like a project

 

 

why not just turn on the pk_mode ?

Share this post


Link to post
Share on other sites
  • 0

I'm sorry for being a bit  pushy with the #3 question :) #1 and #2 were interesting and made sense tho; would you mind help with these ? (about #1-  3 guilds maximum is perfect, that was my former request). Thanks for sharing your skills with us.

Share this post


Link to post
Share on other sites
  • 0

 

 

1- Is it possible to activate the Antagonism system without activating "alliance", thus providing a total War

between guilds? (at the moment the system won't let you add any guild as antagonist if your turned guild alliance settings to 0 in conf/battle/guild.conf)

 

2- The moment a guild flags another one as antagonist, it should be equally flagged as antagonist in

the other guild's books too. at the moment one guild can add another foe and start grieffing its members without any reciprocity (abuse-able). Which means, if one of these 2 guilds counts too many FoEs already (3); they can't flag / be flagged antagonist until they get a free slot again

1. possible by implementing as a script command

but I don't think its possible to list more than 3 ...

the client not able to list the 4th one when invite the 4th antagonist guild

 

2. I think its possible ... just need an extra check the opponent guild already has max antagonist guild

 

These 2 ideas are definitely great; hope the great Annie can get this to work :)

Share this post


Link to post
Share on other sites
  • 0

Hey~

 

Any news regarding this please :) ?

 


2- The moment a guild flags another one as antagonist, it should be equally flagged as antagonist in
the other guild's books too. at the moment one guild can add another foe and start grieffing its members without any reciprocity (abuse-able). Which means, if one of these 2 guilds counts too many FoEs already (3); they can't flag / be flagged antagonist until they get a free slot again

 Allow me to expose a little scenario to demonstrate the essential use of such a feature:

 

X Guild meets members of Y Guild in a random field.

X's leader flags Y's as antagonists and X men start killing Y members.

 

Problem:

 

Y men can't hit back because their leader hasn't flagged X Guild as Antagonist yet

 

Solutions:

 

Option 1: Reciprocity check (This option works almost identical to the official "Alliance" guild system;except in case of antagonism, no need to ask for confirmation):

If X adds Y antagonist, then X gets automatically flagged as antagonist in Y's books too.

If Y has the maximum amount of Antagonists allowed already,then X can't flag Y antagonist.

Reciprocity would also work the opposite way: If X takes Y out of antagonist list, X is also taken out of Y's antagonist list.

 

About allies, they shouldn't be taken into account in this system imo, this would make things way too complicated.

Z can't attack/can't be attacked by X just because Z is Y's ally.

Z would have to flag X as Foe to be able to fight it (therefore Antagonism system may not apply if X's Antagonist limits have already been reached) 

 

Option 2: Announcement

When X adds Y as Antagonist, there would be a self_broadcast to online members of both guilds saying "New Foe has been added !" (maybe with red letters for more visibility).

So at least, if the 1rst option can't be done, at least people get warned.

 

Option 3: Combo

Option 1+ option 2 (would be fantastic) :)

 

Why not turning the whole server PK ?:

Not everyone likes PK servers, some people enjoy PvE/Quest aspect of the game and may dislike being randomly killed in fields.

The good thing about this antagonism system is it allows people from specific rival guilds to kill each other even outside of PvP without harming anyone else around :D (for instance party members not guilded in any of the rival guilds)

This should enhance the guild hatred/rivalry in a great fashion, without any external plugin/script but just using something native in Ragnarok.

Share this post


Link to post
Share on other sites
  • 0

I actually wanna bump this topic as it is interesting and something I would like to have xD. (Along with Lilith Faction system, gonna find a topic and bump it or make a new one D:).

 

Edit: I managed to make it cross-check both guilds before adding a target guild as an antagonist, and then add it to both guilds. (Granted I couldn't get it to work with a hook, some error regarding symbol setting....)

 

Now I must ask for something final that I would like to add, would it be possible to set a " time-limit " before either guild removes one another from the antagonist list? I know we can check for WoE/WoE2 but how about putting a short cd of like 24hours or something. Also, I can't seem to figure out how to remove both guilds from each others antagonist list, if one of the guilds does this.

(ex: Guild A removes Guild B from list. Then Guild B's list will remove Guild A).

Edited by GmOcean

Share this post


Link to post
Share on other sites
  • 0

awww .... give me a break

 

@GmOcean

need problem with hooking ? just post the script in source support and someone might answer

 

and yes, everything is possible with plugin for this system, as guild.c is under srcmap folder

so just hook the guild->xxxx function that you think it might work

 

guild->delalliance ... {

clif->guild_delalliance ... guild B

}

 

 

@Luffy

kro has this

http://herc.ws/board/blog/1/entry-48-a-peek-on-clans/

don't ask me, go ask Ind

Share this post


Link to post
Share on other sites
  • 0

i see , Ind still figuring it out how to implement it ,they have all the packets necessary to implement it,but however lack
information on how it should be implemented (e.g. official data on how
clans are used)

Share this post


Link to post
Share on other sites
  • 0

@@Smoke

I talked about this with Dastgir when we talked about Clan Antagonists.

 

On *Athena guild leaders can set other guilds as antagonists, however, this does not change anything.

On official, you can NOT set guilds as antagonists.


Reason: it was planend antagonist guilds can fight everywhere, but Gravity disabled it because it didn't work.

 

If you want to work on it (i see no reason not having it just because Gravity messed it up)

- Setting "Enable Guild Leader can set antagonists (default false)

- Setting "Enable Antagonist stystem" (default false)

- Setting "Where can antagonists fight" (towns, fields, dungeons, everywhere) 

Share this post


Link to post
Share on other sites
  • 0

@@Smoke

I talked about this with Dastgir when we talked about Clan Antagonists.

 

On *Athena guild leaders can set other guilds as antagonists, however, this does not change anything.

On official, you can NOT set guilds as antagonists.

 

Reason: it was planend antagonist guilds can fight everywhere, but Gravity disabled it because it didn't work.

 

If you want to work on it (i see no reason not having it just because Gravity messed it up)

- Setting "Enable Guild Leader can set antagonists (default false)

- Setting "Enable Antagonist stystem" (default false)

- Setting "Where can antagonists fight" (towns, fields, dungeons, everywhere) 

Great Idea. i would loved to have this great addition to the server.

Edited by Eternity

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...

Important Information

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