Jump to content
  • 0
Sign in to follow this  
glemor123

Guild Package

Question

Need in a Guild

Need Guild Level 50

Need Minimum 10 Online Members (Total 11 Including Guild Master)(MUST BE ONLINE)

Need 255/120 All Members

One Guild Package Per Account

Can be set the Reward for Guild Members And for Guild Master.

Detect if the player is using dual client(If yes then the npc will tell that someone is using dual client).

Sample IP address will be ok but still recorded.

The guild master can only access the npc. once all requirements are met. the npc will give the gpack to all the members and to the guild master.

 

Share this post


Link to post
Share on other sites

18 answers to this question

Recommended Posts

  • 0

You going to need a src/sql mod to do the part about dual clienting. Because In order to check that you need to compare MacAddress'.

I guess this would be bit hard. But I know someone would have a kind heart that would do this :D. this will lessen the job of Game master and prevent double gpack duplicate.

Share this post


Link to post
Share on other sites
  • 0

no need src, just query_sql will do

 

however there is no getguildlv script command, only getgdskilllv script command though

very easy to code though

prontera,147,175,6	script	kjdhfksdjf	100,{	.@req_online = 11; // how many players need to online to claim. Default: 11	.@req_lv = MAX_LEVEL; // minimum level of .@online players that has to be. Default: MAX_LEVEL in mmo.h		if ( !getcharid(2) ) {		mes "you must have a guild";		close;	}	if ( getguildmasterid( getcharid(2) ) != getcharid(0) ) {		mes "you are not a guild master";		close;	}	getguildmember getcharid(2), 1;	getguildmember getcharid(2), 2;	for ( .@i = 0; .@i < $@guildmembercount; .@i++ )		if ( isloggedin( $@guildmemberaid[.@i], $@guildmembercid[.@i] ) )			.@online++;	if ( .@online < .@req_online ) {		mes "your guild must have "+ .@req_online +" guild members online";		close;	}	.@origin = getcharid(3);	for ( .@i = 0; .@i < $@guildmembercount; .@i++ ) {		if ( isloggedin( $@guildmemberaid[.@i], $@guildmembercid[.@i] ) ) {			attachrid $@guildmemberaid[.@i];			if ( BaseLevel < .@req_lv ) {				.@deny_name$[.@c] = strcharinfo(0);				.@c++;			}		}	}	attachrid .@origin;	if ( .@c ) {		mes "there are "+ .@c +" member does not meet the level requirement";		mes implode( .@deny_name$, "," );		close;	}	for ( .@i = 0; .@i < $@guildmembercount; .@i++ ) {		if ( isloggedin( $@guildmemberaid[.@i], $@guildmembercid[.@i] ) ) {			attachrid $@guildmemberaid[.@i];			if ( #guild_package_claimed ) {				.@deny_name$[.@c] = strcharinfo(0);				.@c++;			}		}	}	attachrid .@origin;	if ( .@c ) {		mes "there are "+ .@c +" members already claimed this package within their account";		mes implode( .@deny_name$, "," );		close;	}	if ( query_sql( "select account_id as aaa, ( select last_ip from login where account_id = aaa ) as last_ip from guild_member where guild_id = "+ getcharid(2) +" group by last_ip", .@aid, .@ip$ ) < .@req_online ) {		mes "same ip detected";		.@nb = query_sql( "select name, account_id as aaa, ( select last_ip from login where account_id = aaa ) as last_ip from guild_member where guild_id = "+ getcharid(2), .@name$, .@aid, .@ip$ );		for ( .@i = 0; .@i < .@nb; .@i++ )			mes (.@i +1)+". "+ .@name$[.@i] +" ("+ .@ip$ +")";		next;	}	mes "pass";	for ( .@i = 0; .@i < $@guildmembercount; .@i++ ) {		if ( isloggedin( $@guildmemberaid[.@i], $@guildmembercid[.@i] ) ) {			attachrid $@guildmemberaid[.@i];			if ( getguildmasterid( getcharid(2) ) != $@guildmembercid[.@i] )				getitem 501, 1;			else				getitem 501, 10;			#guild_package_claimed = 1;		}	}	attachrid .@origin;	close;}

Share this post


Link to post
Share on other sites
  • 0

But the problem with that is, multiple players in the same household will show up as 1 IP address, therefore they'll be counted as invalid. Since we don't want to wrongfully discredit those players we need to check the MacAddress of the computers since those are never the same as another computer. Unless there is something I'm missing from your sql query, because I don't see how comparing IP address's alone can confirm dual clienting :/

Share this post


Link to post
Share on other sites
  • 0

I thought so lol. Didn't know client doesn't send Mac address though. I may be wrong ( I gotta stop saying this cuz I've been been wrong a lot lately when I say say this...) but I do believe the client may actually send the Mac address, atleast from what I remember openkore needed certain info to work, and one of the ways to get it was a packet sniffer such as wpe. This would usually give info needed, some of which included what think was the Mac address when recording yourself logging in. But, again I'm probably wrong on this.

Share this post


Link to post
Share on other sites
  • 0

I thought so lol. Didn't know client doesn't send Mac address though. I may be wrong ( I gotta stop saying this cuz I've been been wrong a lot lately when I say say this...) but I do believe the client may actually send the Mac address, atleast from what I remember openkore needed certain info to work, and one of the ways to get it was a packet sniffer such as wpe. This would usually give info needed, some of which included what think was the Mac address when recording yourself logging in. But, again I'm probably wrong on this.

how about HWID?

Share this post


Link to post
Share on other sites
  • 0

HWID? Hardware ID? Even if the client did transfer this information, you'd have to use a seperate patcher client to gather the information send it to a SQL database like FluxCP that your server would then be able to access. But on top of all that, it's not reliable. HWID is changed every few days (10 i think) and after every reboot of the computer. While they may be unique to each instance one is created, they get changed far too frequently to be of much use.

 

Besides, I wouldn't even be able to begin explaining how to obtain a person's HWID through a program without the user's consent. I believe that would be a direct violation of Microsoft's Terms & Conditions D: best we not travel that road.

Share this post


Link to post
Share on other sites
  • 0

@ShogS - This has already been explained. While IP address would work in most situations, a group of computers who use the same router will have the same IP address. Therefore they'd be excluded even if they were legitimate players on separate comps. Which is why a unique MacAddress would be ideal.

 

So, your only bet here is to either disable the use of dual clients OR allow multiple users through IP address. Sorry, no real work around on this.

 

Edit:

Turns out a src edit was made to allow the grabbing of MacAddress. I don't know if it still works though.

http://herc.ws/board/topic/4643-mac-ip-address/

Edited by GmOcean

Share this post


Link to post
Share on other sites
  • 0

@ShogS - This has already been explained. While IP address would work in most situations, a group of computers who use the same router will have the same IP address. Therefore they'd be excluded even if they were legitimate players on separate comps. Which is why a unique MacAddress would be ideal.

 

So, your only bet here is to either disable the use of dual clients OR allow multiple users through IP address. Sorry, no real work around on this.

 

Edit:

Turns out a src edit was made to allow the grabbing of MacAddress. I don't know if it still works though.

http://herc.ws/board/topic/4643-mac-ip-address/

 

i have make use of it but some player offten give me 00000000000 mac adress

Share this post


Link to post
Share on other sites
  • 0

If they are giving you 000000000000000 mac address, then chances are they are running the client program through a sand box. Doing so will create a virtual machine that cannot be detected by 90% of client programs that try to prevent dual clienting.

 

In fact, I've personally used sandboxing to dual client on servers that don't support it, using the client they give. But, this is a rare situation as most players of RO wouldn't think of it unless they've heard of it before.

Share this post


Link to post
Share on other sites
  • 0

@ShogS - This has already been explained. While IP address would work in most situations, a group of computers who use the same router will have the same IP address. Therefore they'd be excluded even if they were legitimate players on separate comps. Which is why a unique MacAddress would be ideal.

 

So, your only bet here is to either disable the use of dual clients OR allow multiple users through IP address. Sorry, no real work around on this.

 

Edit:

Turns out a src edit was made to allow the grabbing of MacAddress. I don't know if it still works though.

http://herc.ws/board/topic/4643-mac-ip-address/

how about making a strong patch for the client to really prevent dual client. because disable dual client can be bypass by using some dual desktop software.

 

 

about the src edit from the quote i think that is for harmony only?

Edited by glemor123

Share this post


Link to post
Share on other sites
  • 0

This topic is getting further and further away from Script Requests but w/e. You can't just apply a patch to a client as easily as you might think. Your best options have been presented before you. Your going to have to pick one or none at all.

Share this post


Link to post
Share on other sites
  • 0

If they are giving you 000000000000000 mac address, then chances are they are running the client program through a sand box. Doing so will create a virtual machine that cannot be detected by 90% of client programs that try to prevent dual clienting.

 

In fact, I've personally used sandboxing to dual client on servers that don't support it, using the client they give. But, this is a rare situation as most players of RO wouldn't think of it unless they've heard of it before.

 

try reproduce it

- diff client with SSO Login

- dont disable -1rag1 or -1sak1 when diffing

- and change the -1rag1 to -1any1

- use ROCreed and EMBED the setting

 

in january i have atleast 50 Player when beta open launched and 20 of them give me 000000000000 mac adress

Share this post


Link to post
Share on other sites
  • 0

How to add required guild level 50 here

prontera,164,163,3	script	Guild Package	4W_SAILOR,{	
.@req_online = 2; // how many players need to online to claim. 
.@req_lv = MAX_LEVEL; // minimum level of .@online players that has to be. 
if ( !getcharid(2) ) 
{		
mes "[ Guild Package ]";
mes "you must have a guild";		
close;	
}	
if ( getguildmasterid( getcharid(2) ) != getcharid(0) ) 
{		
mes "[ Guild Package ]";
mes "you are not a guild master";		
close;	
}	
getguildmember getcharid(2), 1;	
getguildmember getcharid(2), 2;	
for ( .@i = 0; .@i < $@guildmembercount; .@i++ )		
if ( isloggedin( $@guildmemberaid[.@i], $@guildmembercid[.@i] ) )			
.@online++;	if ( .@online < .@req_online ) 
{		
mes "[ Guild Package ]";
mes "your guild must have "+ .@req_online +" guild members online";		
close;	
}	
	.@origin = getcharid(3);	
		for ( .@i = 0; .@i < $@guildmembercount; .@i++ ) 
	{		
		if ( isloggedin( $@guildmemberaid[.@i], $@guildmembercid[.@i] ) ) 
		{			
			attachrid $@guildmemberaid[.@i];			
			if ( BaseLevel < .@req_lv ) 
		{				
			.@deny_name$[.@c] = strcharinfo(0);				
			.@c++;			
		}		
	}	
}	attachrid .@origin;	if ( .@c ) 
		{		
			mes "[ Guild Package ]";
			mes "there are "+ .@c +" member does not meet the level requirement";		
			mes implode( .@deny_name$, "," );		
			close;	
		}	
			for ( .@i = 0; .@i < $@guildmembercount; .@i++ ) 
		{		
			if ( isloggedin( $@guildmemberaid[.@i], $@guildmembercid[.@i] ) ) 
			{			
				attachrid $@guildmemberaid[.@i];			
				if ( #guild_package_claimed ) 
				{				
				.@deny_name$[.@c] = strcharinfo(0);				
				.@c++;			
				}		
			}	
		}	
		attachrid .@origin;	if ( .@c ) 
		{		
		mes "[ Guild Package ]";
		mes "there are "+ .@c +" members already claimed this package within their account";		
		mes implode( .@deny_name$, "," );		
		close;	
		}	if ( query_sql( "select account_id as aaa, ( select last_ip from login where account_id = aaa ) as last_ip from guild_member where guild_id = "+ getcharid(2) +" group by last_ip", .@aid, .@ip$ ) < .@req_online ) 
		{		
		mes "[ Guild Package ]";
		mes "same ip detected";		
		.@nb = query_sql( "select name, account_id as aaa, ( select last_ip from login where account_id = aaa ) as last_ip from guild_member where guild_id = "+ getcharid(2), .@name$, .@aid, .@ip$ );		
		for ( .@i = 0; .@i < .@nb; .@i++ )			
		mes "[ Guild Package ]";
		mes (.@i +1)+". "+ .@name$[.@i] +" ("+ .@ip$ +")";		
		next;	
		}	
		mes "[ Guild Package ]";
		mes "Congratulations! Your Gpack has been claimed!";	for ( .@i = 0; .@i < $@guildmembercount; .@i++ ) 
		{		
		if ( isloggedin( $@guildmemberaid[.@i], $@guildmembercid[.@i] ) ) 
		{			
		attachrid $@guildmemberaid[.@i];			
		if ( getguildmasterid( getcharid(2) ) != $@guildmembercid[.@i] )				
		getitem 14232, 100; // Yggberry Box
		else				
		getitem 14232, 100; // Yggberry Box
		getitem 30110, 100; // Box Of Thunder Box
		getitem 14004, 100; // EDP Box
		getitem 31051, 20; // Credits
		getitem 4302, 1; // Tao Gunka
		getitem 4305, 2; // Turtle
		getitem 4121, 2; // Phreeoni
		getitem 4174, 1; // Deviling
		getitem 4047, 1; // Ghostring
		getitem 4128, 1; // GTB
		getitem 4146, 1; // Maya
		getitem 4352, 1; // Gen Egnihem
		getitem 7227, 100; // Voting Proof Ticket
		#guild_package_claimed = 1;		
		}	
	}	
	attachrid .@origin;	close;
}
Edited by Will Su

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...
Sign in to follow this  

×
×
  • Create New...

Important Information

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