exneval

Clan System

Recommended Posts

Introduction (Came to kRO in June 2013, 6th)

 

Just want to remind us, rAthena community to look at this awesome feature that might increase the life-time of Ragnarok Online Private Server. Maybe some of packet experts/developers want to try to implement this.

// packet = 0x988
struct PACKET_ZC_NOTIFY_CLAN_CONNECTINFO {
	/* this+0x0 */ short PacketType
	/* this+0x2 */ unsigned short NumConnect
	/* this+0x4 */ unsigned short NumTotal
}
// packet = 0x989
struct PACKET_ZC_ACK_CLAN_LEAVE {
	/* this+0x0 */ short PacketType
}
// packet = 0x98a
struct PACKET_ZC_CLANINFO {
	/* this+0x0 */ short PacketType
	/* this+0x2 */ short PacketLength
	/* this+0x4 */ int EmblemNum
	/* this+0x8 */ char ClanName[24]
	/* this+0x20 */ char Mastername[24]
	/* this+0x38 */ char ManageMap[16]
	/* this+0x48 */ unsigned char Num_AllyClan
	/* this+0x49 */ unsigned char Num_HostileClan
}
// packet = 0x98d
struct PACKET_CZ_CLAN_CHAT {
	/* this+0x0 */ short PacketType
	/* this+0x2 */ short PacketLength
	/* this+0x4 */ char chat[...];
}
// packet = 0x98e
struct PACKET_ZC_NOTIFY_CLAN_CHAT {
	/* this+0x0 */ short PacketType
	/* this+0x2 */ short PacketLength
	/* this+0x4 */ char charName[24]
	/* this+0x1c */ char chat[...];
}

Source of packets

  • Upvote 2

Share this post


Link to post
Share on other sites

@@Nova added it to his server recently.

Does not look complex, works like a simplified guild system, with a special permanently active buff. Cannot be used if you're in a guild (but its a NPC check not a system restriction).

Share this post


Link to post
Share on other sites

Yes, for those that joining the clan, can't participate in WOE (join guild)

 

I'm wondering if we can use custom config clan buffs (like bonus script or faction buffs from Lilith), so that will make more fun in PS RO

Share this post


Link to post
Share on other sites

It is in the works and is pretty much done. :) Just testing it out some more and it will be pushed.

  • Upvote 5

Share this post


Link to post
Share on other sites

It is in the works and is pretty much done. :) Just testing it out some more and it will be pushed.

 

 

Any news please?! 

 

 

 
 
I am also waiting ...

Share this post


Link to post
Share on other sites

jajaja Yeah! some of us need to translate it!

Share this post


Link to post
Share on other sites

Uhm. Any update for this Aleos? Its kinda interesting no need to make a script for a buff system :)

Share this post


Link to post
Share on other sites

They are just finalizing a very large update to the instance system, then I believe lemongrass has another large PR coming up, then most likely the clan system is after that, and some testing.

  • Upvote 1

Share this post


Link to post
Share on other sites

In addition to Stolao's reply, I'd like to add that helping us test these new PRs, break it, test it in any case you can think of and report any bugs you find help us speed the process.

  • Upvote 3

Share this post


Link to post
Share on other sites

send me a diff for testing this and help you,

in this moment i am in vacations in my house working in my server :)

Edited by Darknessfmy

Share this post


Link to post
Share on other sites

@Secrets i wait you for test :)

 

In addition to Stolao's reply, I'd like to add that helping us test these new PRs, break it, test it in any case you can think of and report any bugs you find help us speed the process.

 

In addition to Stolao's reply, I'd like to add that helping us test these new PRs, break it, test it in any case you can think of and report any bugs you find help us speed the process.

 
Edited by Darknessfmy

Share this post


Link to post
Share on other sites

Sorry I worded my post poorly.

By helping us test something mean helping us test thing in "Pull Request" section of the repository.

Anything that's not not on "Pull Request" section of the repository is not up for test or is not even done yet.

Share this post


Link to post
Share on other sites

You can't read :<

Anything that's not on "Pull Request" section of the repository is not up for testing or is not even done yet.

Share this post


Link to post
Share on other sites

iRO has the clan system active since some months, and players can apply to a clan. Here are some observations:

 

When you pass the mouse over the clan master npc, it shows the clan logo in his name:

 

34y8dj8.jpg

 

This are the buffs seted when player joins the clan:

	StateIconList[EFST_IDs.EFST_SWORDCLAN] = {
		descript = {
			{ "Sword clan", COLOR_TITLE_BUFF },
			{ "STR + 1, VIT + 1" },
			{ "MHP + 30, MSP + 10" }
		}
	}
	StateIconList[EFST_IDs.EFST_ARCWANDCLAN] = {
		descript = {
			{ "Arcwand Clan", COLOR_TITLE_BUFF },
			{ "INT + 1, DEX + 1" },
			{ "MHP + 30, MSP + 10" }
		}
	}
	StateIconList[EFST_IDs.EFST_GOLDENMACECLAN] = {
		descript = {
			{ "Goldenmace Clan", COLOR_TITLE_BUFF },
			{ "LUK + 1, INT + 1" },
			{ "MHP + 30, MSP + 10" }
		}
	}
	StateIconList[EFST_IDs.EFST_CROSSBOWCLAN] = {
		descript = {
			{ "Crossbow Clan", COLOR_TITLE_BUFF },
			{ "DEX + 1, AGI + 1" },
			{ "MHP + 30, MSP + 10" }
		}
	}

And this are the dialogues and messages from that four npcs:

prt_in,33,114,5	script	Raffam Oranpere	10058,{
	mes "[Raffam Oranpere]";
	mes "Hi! I'm Raffam, master of ^3131FFSword Clan^000000, one the Rune-Midgarts Kingdom.";
	next;
	switch(select("Introducing Clan", "Join.", "Leave.")){
		case 1:
			switch(select("Clans are", "About the Sword Clan", "Cancel.")){
				case 1:
					mes "[Raffam Oranpere]";
					mes "The Clans are a type of guild ran by the Kingdom.";
					mes "They don't participate in the Siege, so members are free to join/leave anytime.";
					next;
					mes "[Raffam Oranpere]";
					mes "I wish we could join the Siege. I'd love flying over on my dragon and burning everyone in my way!";
					mes "Oops, too thrilled!";
					next;
					mes "[Raffam Oranpere]";
					mes "Join us, if no clan suits your taste.";
					mes "New members are given ^3131FFfree stat bonus^000000.";
					next;
					mes "[Raffam Oranpere]";
					mes "Melee stats are offered as the name ^3131FFSword Clan^000000 suggests, but not all members are Melee classes.";
					mes "Don't feel pressured, just count on me!";
					next;
					mes "[Raffam Oranpere]";
					mes "Difference in variety creates the fun";
					mes "These odd bunches never bore me in the party.";
					next;
					mes "[Raffam Oranpere]";
					mes "And who knows you'll meet your soul mate in the clan? Hahah!";
					close;
				case 2:
					mes "[Raffam Oranpere]";
					mes "The ^3131FFSword Clan^000000 mainly supports Melee adventurers.";
					mes "Join for free ^FF0000<STR+1, VIT+1, MHP+30, MSP+10>^000000!";
					next;
					mes "[Raffam Oranpere]";
					mes "Remember, no Siege participation.";
					mes "You should contact other guilds for Siege.";
					next;
					mes "[Raffam Oranpere]";
					mes "A question?";
					mes "Excited to join me? Hahah!";
					close;
				case 3:
					close;
			}
		case 2:
			mes "[Raffam Oranpere]";
			mes "Oh, you'll join? Good choice!";
			mes "Let's check the Clan policy then take admission procedures.";
			next;
			mes "[Raffam Oranpere]";
			mes "^3131FFClansmen^000000 cannot participate in the Siege.";
			mes "New members are given these stat bonuses: ^FF0000<STR+1, VIT+1, MHP+30, MSP+10>^000000.";
			mes "You with me so far?";
			next;
			if (select("Yes.", "No.") == 2){
				mes "[Raffam Oranpere]";
				mes "Uh, oh. Let's go back to";
				mes "beginning.";
				close;
			}
			mes "[Raffam Oranpere]";
			mes "Join and leave the clans anytime, but if you don't show up at clan for ^FF0000longer than 2 weeks^000000, you'll be ^FF0000expelled^000000.";
			mes "Clan masters exist for reason, like I.";
			mes "Understood?";
			next;
			if (select("Yes.", "No.") == 2){
				mes "[Raffam Oranpere]";
				mes "Uh, oh. Let's go back to";
				mes "beginning.";
				close;
			}
			mes "[Raffam Oranpere]";
			mes "Great, sign name here on the register.";
			next;
			input [email protected]$;
			mes "[Raffam Oranpere]";
			mes "So, you're ^3131FF" + strcharinfo(0) + "^000000! Nice name!";
			mes "Let me register you.";
			next;
			if (getcharid(2)){
				mes "[Raffam Oranpere]";
				mes "Come back to join after you leave the current guild.";
				close;
			//} else if (clan()){
				mes "[Raffam Oranpere]";
				mes "Eh?";
				mes "Oh, you're in Clan.";
				mes "Don't mess with me, it's not cool.";
				close;
			}
			mes "[Raffam Oranpere]";
			mes "Welcome to ^3131FFSword Clan^000000!";
			mes "You can review Clan info with ^3131FFCtrl+G^000000.";
			mes "At your service!";
			// added to Sword Clan
			close;
		case 3:
			mes "[Raffam Oranpere]";
			mes "You want to leave?";
			mes "No problem. I hope you'll find more suitable clan.";
			mes "Ready for withdrawal?";
			next;
			if (select("Continue.", "Cancel.") == 1){
				/*
				if (clan() == Sword_Clan){
					mes "[Raffam Oranpere]";
					mes "Okay, it's done. But let's not be strangers, okay?";
					mes "It was nice having you!";
					// removed from Sword Clan
				} else if (clan()){
					mes "[Raffam Oranpere]";
					mes "Hey, talk to your guild master if you want to leave.";
				} else {
					mes "[Raffam Oranpere]";
					mes "Wait, you're not with us! Grr, don't make me breathe fire at you!";
				}
				*/
			}
			close;
	}
}

prt_in,35,114,5	script	Devon Aire	10059,{
	mes "[Devon Aire]";
	mes "I'm Devon, master of ^3131FFArc Wand Clan^000000.";
	next;
	switch(select("Introducing Clan", "Join.", "Leave.")){
		case 1:
			switch(select("Clans are", "About the Arc Wand Clan", "Cancel.")){
				case 1:
					mes "[Devon Aire]";
					mes "The ^3131FFClans^000000 are ran by the Kingdom, not privately like others.";
					mes "And I manage one of them.";
					next;
					mes "[Devon Aire]";
					mes "...";
					mes "What's with that look? You got a problem?";
					next;
					mes "[Berman Aire]";
					mes "Brother, you're scaring the potential member, be gentle.";
					next;
					mes "[Devon Aire]";
					mes "...";
					next;
					mes "[Devon Aire]";
					mes "Join if seeking a place to fit in.";
					mes "We give ^3131FFfree bonus stat^000000. But no Siege.";
					next;
					mes "[Devon Aire]";
					mes "Most members are offensive mage classes as the name ^3131FFArc Wand Clan^000000 suggests, but that's no requirement.";
					next;
					mes "[Devon Aire]";
					mes "...Hey, Shaam Rumi.";
					mes "Stop hitting on my brother, and go work.";
					next;
					mes "[Shaam Rumi]";
					mes "Whatever!";
					next;
					mes "[Devon Aire]";
					mes "...Hmpf!";
					mes "Listen, Crossbow Clan's master is an evil.";
					next;
					mes "[Shaam Rumi]";
					mes "Get over me, Decon! Don't spread rumors!";	// Note. Here literally says "Decon", but it may be "Devon" (typo mistake)
					next;
					mes "[Berman Aire]";
					mes "Haha. stop it. You two are making a scene.";
					mes "Come on, back to work, guys.";
					close;
				case 2:
					mes "[Devon Aire]";
					mes "The ^3131FFArc Wand Clan^000000 mainly supports offensive mage classes.";
					mes "We offer ^FF0000<INT+1, DEX+1, MHP+30, MSP+10>^000000 to new members. Don't ask for more; it's the Kingdom's rule.";
					next;
					mes "[Devon Aire]";
					mes "^3131FFClansmen^000000 can't participate in the Siege.";
					mes "If you like the Siege, then go join a regular guild.";
					next;
					mes "[Devon Aire]";
					mes "That is all. No questions.";
					close;
				case 3:
					close;
			}
		case 2:
			mes "[Devon Aire]";
			mes "...";
			mes "Let's check the Clan policy then take admission procedures.";
			next;
			mes "[Devon Aire]";
			mes "^3131FFClansmen^000000 cannot participate in the Siege.";
			mes "New members are given these stat bonuses: ^FF0000<INT+1, DEX+1, MHP+30, MSP+10>^000000.";
			mes "You with me so far?";
			next;
			if (select("Yes.", "No.") == 2){
				mes "[Devon Aire]";
				mes "Gosh, listen to the policy again.";
				close;
			}
			mes "[Devon Aire]";
			mes "Join and leave the clans anytime, but if you don't show up at clan for ^FF0000more than 2 weeks^000000, you'll be ^FF0000expelled^000000.";
			mes "Do you agree?";
			next;
			if (select("Yes.", "No.") == 2){
				mes "[Devon Aire]";
				mes "Then I don't want you.";
				close;
			}
			mes "[Devon Aire]";
			mes "Sign your name here.";
			next;
			input [email protected]$;
			mes "[Devon Aire]";
			mes "^3131FF" + strcharinfo(0) + "^000000....";
			mes "Good, let me invite you in.";
			next;
			if (getcharid(2)){
				mes "[Devon Aire]";
				mes "Leave your guild first to join mine, duh.";
				close;
			//} else if (clan()){
				mes "[Devon Aire]";
				mes "You're already in a clan. You joking?!";
				mes "Oh, I can be funny, too--FIRE PILLAR!";
				close;
			}
			mes "[Devon Aire]";
			mes "You have joined the ^3131FFArc Wand Clan^000000.";
			// added to Arc Wand Clan
			next;
			mes "[Devon Aire]";
			mes "You can review Clan info with ^3131FFCtrl+G^000000.";
			mes "So don't bother me later.";
			next;
			mes "[Devon Aire]";
			mes "That's all. Visit often or be expelled. Dismissed.";
			close;
		case 3:
			mes "[Devon Aire]";
			mes "Want to leave, huh?";
			mes "I understand it it's about Siege.";
			mes "If not, why are...Never mind..";
			mes "I'll process your withdrawal.";
			next;
			if (select("Continue.", "Cancel.") == 1){
				/*
				if (clan() == Arc_Wand_Clan){
					mes "[Devon Aire]";
					mes "You are withdrawn from the clan.";
					mes "Now leave. I don't feel like talking anymore.";
					// removed from Arc Wand Clan
				} else if (clan()){
					mes "[Devon Aire]";
					mes "You're barking up the wrong tree.";
					mes "Go to your clan master.";
				} else {
					mes "[Devon Aire]";
					mes "Naughty children deserve a good Jupitel Thunder.";
				}
				*/
			}
			close;
	}
}

prt_in,37,114,5	script	Berman Aire	10060,{
	mes "[Berman Aire]";
	mes "Nice to meet you. I'm Berman Aire, master of ^3131FFGoldenmace Clan^000000.";
	mes "I'm also the older brother of Devon Aire here. Devon looks tough, but he's a sweetheart.";
	next;
	switch(select("Introducing Clan", "Join.", "Leave.")){
		case 1:
			switch(select("Clans are", "About the Golden Mace Clan", "Cancel.")){
				case 1:
					mes "[Berman Aire]";
					mes "The ^3131FFClans^000000 are established by the Kingdom to help adventurers connect and share information.";
					next;
					mes "[Berman Aire]";
					mes "Because the Kingdom runs the clan, no Sieges, but at least the members are given ^3131FFstat bonuses^000000.";
					mes "The stat bonuses are small, but can be very useful for beginning adventurers.";
					next;
					mes "[Berman Aire]";
					mes "We're named the ^3131FFGolden Mace Clan^000000, but we don't discriminate against applicants based on their classes.";
					mes "The name is just to help you easily choose your clan.";
					next;
					mes "[Shaam Rumi]";
					mes "Berman, enough with the explanation. Let's go hang out in Glast Heim.";
					next;
					mes "[Devon Aire]";
					mes "... Hey.";
					next;
					mes "[Shaam Rumi]";
					mes "Ooh, you're scaring me.";
					mes "Berman, call me when you can!~";
					next;
					mes "[Berman Aire]";
					mes "Hah hah, I apologize for their bickering.";
					next;
					mes "[Berman Aire]";
					mes "Do you have a question?";
					mes "If you're tired of traveling alone, join us! You can join and leave the Clans anytime you want.";
					close;
				case 2:
					mes "[Berman Aire]";
					mes "The ^3131FFGolden Mace Clan^000000 mainly supports supportive classes.";
					mes "We offer ^FF0000<INT+1, LUK+1, MHP+30, MSP+10>^000000 to new members.";
					next;
					mes "[Berman Aire]";
					mes "As I told you earlier, Clans cannot join the Siege because they already belong to the Kingdom.";
					mes "If you want to be in the Siege, then I recommend you join a regular guild.";
					next;
					mes "[Berman Aire]";
					mes "Do you understand about the Clans now?";
					close;
				case 3:
					close;
			}
		case 2:
			mes "[Berman Aire]";
			mes "Great!";
			mes "Let's check the Clan policy then take admission procedures.";
			next;
			mes "[Berman Aire]";
			mes "^3131FFClansmen^000000 cannot participate in the Siege.";
			mes "As our new member, you'll receive the following stat bonuses: ^FF0000<DEX+1, AGI+1, MHP+30, MSP+10>^000000.";
			mes "Do you agree?";
			next;
			if (select("Yes.", "No.") == 2){
				mes "[Berman Aire]";
				mes "I suggest you to think it over.";
				close;
			}
			mes "[Berman Aire]";
			mes "Join and leave the clans anytime, but if you don't show up at clan for ^FF0000more than 2 weeks^000000, you'll be ^FF0000expelled^000000.";
			mes "Do you agree to maintain good standing in Clan?";
			next;
			if (select("Yes.", "No.") == 2){
				mes "[Berman Aire]";
				mes "I'm sure you'll find a clan better suited for your needs.";
				close;
			}
			mes "[Berman Aire]";
			mes "Now, please write your name here.";
			next;
			input [email protected]$;
			mes "[Berman Aire]";
			mes "^3131FF" + strcharinfo(0) + "^000000! What a good name!";
			mes "Okay, then...";
			next;
			if (getcharid(2)){
				mes "[Berman Aire]";
				mes "Oh, no.";
				mes "In order to join, you first have to leave the current guild.";
				close;
			//} else if (clan()){
				mes "[Berman Aire]";
				mes "You're already in a clan.";
				mes "You're just confused, right?";
				close;
			}
			mes "[Berman Aire]";
			mes "Welcome to the ^3131FFGolden Mace Clan^000000!";
			// added to Golden Mace Clan
			next;
			mes "[Berman Aire]";
			mes "You can review Clan info with ^3131FFCtrl+G^000000.";
			next;
			mes "[Berman Aire]";
			mes "Please remember the few precautions I gave you, and enjoy your Clan activities!";
			close;
		case 3:
			mes "[Berman Aire]";
			mes "With meeting, there is parting.";
			mes "I hope you enjoyed your time in ^3131FFGolden Mace Clan^000000.";
			mes "Now, should I process your withdrawal?";
			next;
			if (select("Continue.", "Cancel.") == 1){
				/*
				if (clan() == Goldenmace_Clan){
					mes "[Berman Aire]";
					mes "It's processed.";
					mes "Come back anytime to ^3131FFGolden Mace Clan^000000. I'll be here.";
					// removed from Golden Mace Clan
				} else if (clan()){
					mes "[Berman Aire]";
					mes "I'm sorry, but I can't remove you from another clan..";
				} else {
					mes "[Berman Aire]";
					mes "You can't leave the clan without joining it first.";
				}
				*/
			}
			close;
	}
}

prt_in,39,114,5	script	Shaam Rumi	10061,{
	mes "[Shaam Rumi]";
	mes "Hi, there! I'm Shaam, master of ^3131FFCrossbow Clan^000000";
	mes "What can I do for you?";
	next;
	switch(select("Introducing Clan", "Join.", "Leave.")){
		case 1:
			switch(select("Clans are", "About the Crossbow Clan", "Cancel.")){
				case 1:
					mes "[Shaam Rumi]";
					mes "The Clan established by the Rune-Midgarts Kingdom to... Raffam, why are our ^3131FFclans^000000 made?";
					next;
					mes "[Raffam Oranpere]";
					mes "Did you sleep in class? Gosh.";
					mes "The Clans help lone adventurers connect with each other and share information.";
					next;
					mes "[Shaam Rumi]";
					mes "A-ha, got it! Thank you, Captain!";
					mes "You heard that too, right?";
					next;
					mes "[Shaam Rumi]";
					mes "Run by the Kingdom itself, the Clans are not allowed to participate in the Siege, but the good news is that the members are given some ^3131FFstat bonuses^000000.";
					next;
					mes "[Shaam Rumi]";
					mes "In case you wonder if the ^3131FFCrossbow Clan^000000 only recruits Archers, no, it doesn't.";
					mes "All the Clans accept all classes.";
					mes "You can choose the one that suits your needs best.";
					next;
					mes "[Shaam Rumi]";
					mes "That should cover everything there is to know.";
					mes "Berman, let's go hang out in Glast Heim.";
					next;
					mes "[Devon Aire]";
					mes "You...";
					next;
					mes "[Shaam Rumi]";
					mes "Ooh, scary! You're so protective of your brother.";
					close;
				case 2:
					mes "[Shaam Rumi]";
					mes "The ^3131FFCrossbow Clan^000000 is ideal for Ranged classes.";
					next;
					mes "[Shaam Rumi]";
					mes "Eh, let me check the Clan manual.";
					mes "Ah, and we offer stat bonuses to new members: ^FF0000<DEX+1, AGI+1, MHP+30, MSP+10>^000000.";
					next;
					mes "[Shaam Rumi]";
					mes "The Clans are not allowed to participate in the Siege; you should join a private guild instead for the Siege.";
					mes "The Clans are for adventurers that hate being tied down.";
					next;
					mes "[Shaam Rumi]";
					mes "Do you have a question?";
					close;
				case 3:
					close;
			}
		case 2:
			mes "[Shaam Rumi]";
			mes "Oh, yeah? Good choice!";
			mes "Let's check the Clan policy then take admission procedures.";
			next;
			mes "[Shaam Rumi]";
			mes "^3131FFClansmen^000000 cannot participate in the Siege.";
			mes "As our new member, you'll receive the following stat bonuses: ^FF0000<DEX+1, AGI+1, MHP+30, MSP+10>^000000.";
			mes "Do you agree?";
			next;
			if (select("Yes.", "No.") == 2){
				mes "[Shaam Rumi]";
				mes "Ah, do you need time to think about this? No problem.";
				close;
			}
			mes "[Shaam Rumi]";
			mes "Join and leave the clans anytime, but if you don't show up at clan for ^FF0000more than 2 weeks^000000, you'll be ^FF0000expelled^000000.";
			mes "Do you promise you'll maintain good standing?";
			next;
			if (select("Yes.", "No.") == 2){
				mes "[Shaam Rumi]";
				mes "All right then. I'm just going to go have some fun.";
				close;
			}
			mes "[Shaam Rumi]";
			mes "Good, write your name here.";
			next;
			input [email protected]$;
			mes "[Shaam Rumi]";
			mes "^3131FF" + strcharinfo(0) + "^000000..!";
			mes "Ugh, your penmanship needs work.";
			mes "Let me process your application.";
			next;
			if (getcharid(2)){
				mes "[Shaam Rumi]";
				mes "Did you finish things up with your old clan?";
				close;
			//} else if (clan()){
				mes "[Shaam Rumi]";
				mes "Eh, you're already in a clan. Hey, this isn't funny.";
				close;
			}
			mes "[Shaam Rumi]";
			mes "Welcome to the ^3131FFCrossbow Clan^000000!";
			// added to Crossbow clan
			next;
			mes "[Shaam Rumi]";
			mes "You can review Clan info with ^3131FFCtrl+G^000000.";
			next;
			mes "[Shaam Rumi]";
			mes "Don't pick fights with other clansmen. Be social.";
			mes "If you need help, you can always whisper me, okay? See you around!";
			close;
		case 3:
			mes "[Shaam Rumi]";
			mes "Why, did you find a better clan?";
			mes "I'm disappointed, but it's your call. Let me process your withdrawal.";
			next;
			if (select("Continue.", "Cancel.") == 1){
				/*
				if (clan() == Crossbow_Clan){
					mes "[Shaam Rumi]";
					mes "It's done.";
					mes "If you ever miss us, don't hesitate to come back, all right?";
					// removed from Crossbow Clan
				} else if (clan()){
					mes "[Shaam Rumi]";
					mes "Sorry, but I don't meddle with other clan's business.";
				} else {
					mes "[Shaam Rumi]";
					mes "I can't let you leave--you're not even in my clan!";
				}
				*/
			}
			close;
	}
}

I used a "clan()" fictional command to indicate the kind of activity every npc do.

 

I hope this help :)

Edited by Ragno
  • Upvote 3

Share this post


Link to post
Share on other sites

rathena so dead...

 

And that because of what /? 

  • Upvote 1

Share this post


Link to post
Share on other sites