glemor123 1 Posted September 16, 2014 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. Quote Share this post Link to post Share on other sites
0 Jaburak 48 Posted September 16, 2014 All your request are similar to PlayRPS wow! Quote Share this post Link to post Share on other sites
0 glemor123 1 Posted September 16, 2014 All your request are similar to PlayRPS wow! IC, i just got this idea from the post in rathena then added some modification Quote Share this post Link to post Share on other sites
0 GmOcean 92 Posted September 16, 2014 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'. Quote Share this post Link to post Share on other sites
0 glemor123 1 Posted September 16, 2014 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 . this will lessen the job of Game master and prevent double gpack duplicate. Quote Share this post Link to post Share on other sites
0 AnnieRuru 957 Posted September 18, 2014 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;} 2 xathenx and evilpuncker reacted to this Quote Share this post Link to post Share on other sites
0 GmOcean 92 Posted September 19, 2014 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 :/ Quote Share this post Link to post Share on other sites
0 AnnieRuru 957 Posted September 19, 2014 http://herc.ws/board/topic/6831-mac-address-dectection/ unfortunately, current hexed client has no known way of sending mac address I tried the patch, but my hexed client doesn't send any mac address Quote Share this post Link to post Share on other sites
0 GmOcean 92 Posted September 19, 2014 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. Quote Share this post Link to post Share on other sites
0 glemor123 1 Posted September 21, 2014 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? Quote Share this post Link to post Share on other sites
0 GmOcean 92 Posted September 22, 2014 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. Quote Share this post Link to post Share on other sites
0 ShogS 0 Posted September 22, 2014 Have you tried using the IP add instead of Mac addresses? Quote Share this post Link to post Share on other sites
0 GmOcean 92 Posted September 22, 2014 (edited) @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 September 22, 2014 by GmOcean Quote Share this post Link to post Share on other sites
0 Litro 45 Posted September 22, 2014 @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 Quote Share this post Link to post Share on other sites
0 GmOcean 92 Posted September 22, 2014 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. 1 AnnieRuru reacted to this Quote Share this post Link to post Share on other sites
0 glemor123 1 Posted September 22, 2014 (edited) @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 September 22, 2014 by glemor123 Quote Share this post Link to post Share on other sites
0 GmOcean 92 Posted September 22, 2014 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. Quote Share this post Link to post Share on other sites
0 Litro 45 Posted September 22, 2014 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 Quote Share this post Link to post Share on other sites
0 Petey Pablo 0 Posted September 8, 2016 (edited) 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 September 8, 2016 by Will Su Quote Share this post Link to post Share on other sites
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