Browse Source

fixed storage access w/o password trough Cool Corp. Staff. Yup. We don't have packet/client based Storage password yet. So fixed it due to many complains.
Also added cutins into Cool Evnt.Staff NPC

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11159 54d463be-8e91-2dee-dedb-b68131a5f0ec

Lupus 17 years ago
parent
commit
4d5c7cc604
3 changed files with 104 additions and 38 deletions
  1. 5 0
      npc/Changelog.txt
  2. 83 25
      npc/kafras/cool_event_corp.txt
  3. 16 13
      npc/kafras/functions_kafras.txt

+ 5 - 0
npc/Changelog.txt

@@ -1,5 +1,10 @@
 Date		Added
 ======
+2007/09/10
+	* Fixed Kafra Storage Exploit via Cool Event Co. Storage. Added password protection to C.E.C NPC [Lupus]
+		Note: We use script based storage password due to lack of Packet/Client Storage Password Support.
+		There were many complains from those servers that use extra password protection from account rippers
+	- Added cutins to Cool Event Co. Staff
 2007/09/09
 	* Uncommented Cursed Abbey spawns [Playtester]
 2007/09/08

+ 83 - 25
npc/kafras/cool_event_corp.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Gepard
 //===== Current Version: ===================================== 
-//= 1.2
+//= 1.3
 //===== Compatible With: ===================================== 
 //= eAthena
 //===== Description: ========================================= 
@@ -14,10 +14,13 @@
 //= 1.1 Optimized, fixed a conditional bug [Lupus]
 //= 1.1a Redo back. It wasn't a bug [Lupus]
 //= 1.2 Added Rachel Cool Event Corp. Staff [Playtester]
+//= 1.3 Added cutins, closed Kafra Password exploit
+//=		until we got a client/packet based password support [Lupus]
 //============================================================ 
 
 hugel,88,168,4	script	Cool Event Corp. Staff::CoolEventCorpStaffHugel	874,{
 
+	cutin "zonda_01",2;
 	mes "[Cool Event Corp. Staff]";
 	mes "Welcome to Cool Event Corp.";
 	mes "Our staff is always working";
@@ -26,7 +29,7 @@ hugel,88,168,4	script	Cool Event Corp. Staff::CoolEventCorpStaffHugel	874,{
 	mes "may I assist you today?";
 	next;
 
-	switch(select("Save:Use Storage:Rent a Pushcart:Cancel")){
+	switch(select("Save:Use Storage:Rent a Pushcart:Storage Password Service:Cancel")){
 	case 1:
 		mes "[Cool Event Corp. Staff]";
 		mes "Your Respawn Point";
@@ -36,7 +39,9 @@ hugel,88,168,4	script	Cool Event Corp. Staff::CoolEventCorpStaffHugel	874,{
 		mes "Cool Event Corp. service~";
 		emotion e_thx;
 		savepoint "hugel",96,155;
-		close;
+		close2;
+		cutin "", 255;
+		end;
 	case 2:
 		mes "[Cool Event Corp. Staff]";
 		if(basicskillcheck() && getskilllv(1) < 6){
@@ -45,7 +50,9 @@ hugel,88,168,4	script	Cool Event Corp. Staff::CoolEventCorpStaffHugel	874,{
 			mes "Basic Skill Level 6 to";
 			mes "use the Storage Service.";
 			emotion e_sry;
-			close;
+			close2;
+			cutin "", 255;
+			end;
 		}
 		if(Zeny < 40){
 			mes "I'm sorry, but you don't";
@@ -53,7 +60,9 @@ hugel,88,168,4	script	Cool Event Corp. Staff::CoolEventCorpStaffHugel	874,{
 			mes "the Storage Service. Our";
 			mes "Storage access fee is 40 Zeny.";
 			emotion e_cash;
-			close;
+			close2;
+			cutin "", 255;
+			end;
 		}
 		set Zeny, Zeny - 40;
 		set RESRVPTS, RESRVPTS + 4;
@@ -62,9 +71,13 @@ hugel,88,168,4	script	Cool Event Corp. Staff::CoolEventCorpStaffHugel	874,{
 		mes "Thanks for supporting Cool";
 		mes "Event Corp. by using our";
 		mes "services. Have a good day~";
+
+		callfunc("F_CheckKafCode");	//check your storage password, if set
 		close2;
 		openstorage;
+		cutin "", 255;
 		end;
+
 	case 3:
 		mes "[Cool Event Corp. Staff]";
 		if(BaseClass != Job_Merchant){
@@ -74,12 +87,16 @@ hugel,88,168,4	script	Cool Event Corp. Staff::CoolEventCorpStaffHugel	874,{
 			mes "Blacksmiths, White Smiths,";
 			mes "Alchemists and Creators.";
 			emotion e_sry;
-			close;
+			close2;
+			cutin "", 255;
+			end;
 		}
 		if(getskilllv(39) == 0){
 			mes "You can only rent a cart after";
 			mes "learning the Pushcart Skill.";
-			close;
+			close2;
+			cutin "", 255;
+			end;
 		}
 		if(checkcart() == 1){
 			mes "You already have";
@@ -87,12 +104,16 @@ hugel,88,168,4	script	Cool Event Corp. Staff::CoolEventCorpStaffHugel	874,{
 			mes "Unfortunately, we can't";
 			mes "rent more than one to";
 			mes "each customer at a time.";
-			close;
+			close2;
+			cutin "", 255;
+			end;
 		}
 		if(countitem(7061)){
 			delitem 7061,1;
 			setcart;
-			close;
+			close2;
+			cutin "", 255;
+			end;
 		}
 		mes "The Pushcart rental";
 		mes "fee is 800 Zeny. Would";
@@ -106,16 +127,25 @@ hugel,88,168,4	script	Cool Event Corp. Staff::CoolEventCorpStaffHugel	874,{
 				mes "Zeny to pay the Pushcart";
 				mes "rental fee of 800 Zeny.";
 				emotion e_cash;
-				close;
+				close2;
+				cutin "", 255;
+				end;
 			} else {
 				set Zeny, Zeny - 800;
 				set RESRVPTS, RESRVPTS + 80;
 				setcart;
-				close;
+				close2;
+				cutin "", 255;
+				end;
 			}
 		}
-		close;
+		close2;
+		cutin "", 255;
+		end;
 	case 4:
+		callfunc("F_SetKafCode","[Cool Event Corp. Staff]","Cool Event Corp.");
+		//the function closes msg and remoes cutins
+	case 5:
 	default:
 		mes "[Cool Event Corp. Staff]";
 		mes "Cool Event Corp. is always";
@@ -124,12 +154,15 @@ hugel,88,168,4	script	Cool Event Corp. Staff::CoolEventCorpStaffHugel	874,{
 		mes "Help us become the best by";
 		mes "providing us with your opinions";
 		mes "and honest feedback. Thank you.";
-		close;
+		close2;
+		cutin "", 255;
+		end;
 	}
 }
 
 rachel,109,138,5	script	Cool Event Corp. Staff::CoolEventCorpStaffRachel	874,{
 
+	cutin "zonda_01",2;
 	mes "[Cool Event Corp. Staff]";
 	mes "Welcome to Cool Event Corp.";
 	mes "Our staff is always working";
@@ -138,7 +171,7 @@ rachel,109,138,5	script	Cool Event Corp. Staff::CoolEventCorpStaffRachel	874,{
 	mes "may I assist you today?";
 	next;
 
-	switch(select("Save:Use Storage:Rent a Pushcart:Cancel")){
+	switch(select("Save:Use Storage:Rent a Pushcart:Storage Password Service:Cancel")){
 	case 1:
 		mes "[Cool Event Corp. Staff]";
 		mes "Your Respawn Point";
@@ -148,7 +181,9 @@ rachel,109,138,5	script	Cool Event Corp. Staff::CoolEventCorpStaffRachel	874,{
 		mes "Cool Event Corp. service~";
 		emotion e_thx;
 		savepoint "rachel",113,137;
-		close;
+		close2;
+		cutin "", 255;
+		end;
 	case 2:
 		mes "[Cool Event Corp. Staff]";
 		if(basicskillcheck() && getskilllv(1) < 6){
@@ -157,7 +192,9 @@ rachel,109,138,5	script	Cool Event Corp. Staff::CoolEventCorpStaffRachel	874,{
 			mes "Basic Skill Level 6 to";
 			mes "use the Storage Service.";
 			emotion e_sry;
-			close;
+			close2;
+			cutin "", 255;
+			end;
 		}
 		if(Zeny < 40){
 			mes "I'm sorry, but you don't";
@@ -165,7 +202,9 @@ rachel,109,138,5	script	Cool Event Corp. Staff::CoolEventCorpStaffRachel	874,{
 			mes "the Storage Service. Our";
 			mes "Storage access fee is 40 Zeny.";
 			emotion e_cash;
-			close;
+			close2;
+			cutin "", 255;
+			end;
 		}
 		set Zeny, Zeny - 40;
 		set RESRVPTS, RESRVPTS + 4;
@@ -186,12 +225,16 @@ rachel,109,138,5	script	Cool Event Corp. Staff::CoolEventCorpStaffRachel	874,{
 			mes "Blacksmiths, White Smiths,";
 			mes "Alchemists and Creators.";
 			emotion e_sry;
-			close;
+			close2;
+			cutin "", 255;
+			end;
 		}
 		if(getskilllv(39) == 0){
 			mes "You can only rent a cart after";
 			mes "learning the Pushcart Skill.";
-			close;
+			close2;
+			cutin "", 255;
+			end;
 		}
 		if(checkcart() == 1){
 			mes "You already have";
@@ -199,12 +242,16 @@ rachel,109,138,5	script	Cool Event Corp. Staff::CoolEventCorpStaffRachel	874,{
 			mes "Unfortunately, we can't";
 			mes "rent more than one to";
 			mes "each customer at a time.";
-			close;
+			close2;
+			cutin "", 255;
+			end;
 		}
 		if(countitem(7061)){
 			delitem 7061,1;
 			setcart;
-			close;
+			close2;
+			cutin "", 255;
+			end;
 		}
 		mes "The Pushcart rental";
 		mes "fee is 800 Zeny. Would";
@@ -218,16 +265,25 @@ rachel,109,138,5	script	Cool Event Corp. Staff::CoolEventCorpStaffRachel	874,{
 				mes "Zeny to pay the Pushcart";
 				mes "rental fee of 800 Zeny.";
 				emotion e_cash;
-				close;
+				close2;
+				cutin "", 255;
+				end;
 			} else {
 				set Zeny, Zeny - 800;
 				set RESRVPTS, RESRVPTS + 80;
 				setcart;
-				close;
+				close2;
+				cutin "", 255;
+				end;
 			}
 		}
-		close;
+		close2;
+		cutin "", 255;
+		end;
 	case 4:
+		callfunc("F_SetKafCode","[Cool Event Corp. Staff]","Cool Event Corp.");
+		//the function closes msg and remoes cutins
+	case 5:
 	default:
 		mes "[Cool Event Corp. Staff]";
 		mes "Cool Event Corp. is always";
@@ -236,6 +292,8 @@ rachel,109,138,5	script	Cool Event Corp. Staff::CoolEventCorpStaffRachel	874,{
 		mes "Help us become the best by";
 		mes "providing us with your opinions";
 		mes "and honest feedback. Thank you.";
-		close;
+		close2;
+		cutin "", 255;
+		end;
 	}
 }

+ 16 - 13
npc/kafras/functions_kafras.txt

@@ -5,7 +5,7 @@
 //= Darlskies, Darkchild, Syrus22, Lupus, kobra_k88 (2.0)
 //= L0ne_W0lf
 //===== Current Version: ===================================== 
-//= 5.9
+//= 6.0
 //===== Compatible With: ===================================== 
 //= eAthena 1.0
 //===== Description: =========================================
@@ -54,6 +54,8 @@
 //=	Thanks to Barron-Monster for pointing out the issues.
 //= 5.8 Fixed another double name being shown when "saving" [L0ne_W0lf]
 //= 5.9 Fixed the Kafra Welcome message for guilds. Thanks Barron-Monster. [L0ne_W0lf]
+//= 6.0 Closed Kafra Password exploit in Cool Event Corp. Storages until we got a client/packet based password support.
+//=		Added 2 args into F_SetKafCode to fit it in Cool Evnt Co. NPC [Lupus]
 //============================================================ 
 
 
@@ -504,7 +506,7 @@ function	script	F_KafInfo	{
 		goto sM_Menu;
 
 	sM_KafCode:
-		callfunc("F_SetKafCode");
+		callfunc("F_SetKafCode","[Kafra Employee]","Kafra Services");
 
 	sM_End:
 		return;
@@ -564,8 +566,9 @@ function	script	F_CheckKafCode	{
 }
 
 // Set / Change / Clear Storage Password Function ====================
+// getarg(0) = NPC Name, getarg(1) = Company Name
 function	script	F_SetKafCode	{
-	mes "[Kafra Employee]";
+	mes getarg(0);
 	if(#kafra_code) {
 		mes "Your storage is protected with a password. What would you do now?";
 		next;
@@ -573,14 +576,14 @@ function	script	F_SetKafCode	{
 		"Remove storage password -> 1000z",M_CLEAR,
 		"Cancel",M_END;
 	} else {
-		mes "Kafra Services proudly presents you a new service:";
+		mes ""+getarg(1)+" proudly presents you a new service:";
 		mes "Additional storage protection with a password.";
 		next;
 		menu "Set new password -> 5000z",M_SET,
 		"Cancel",M_END;
 	}
 
-	mes "[Kafra Employee]";
+	mes getarg(0);
 	mes "At first, please enter your ^0000FFold password^000000.";
 	set @code,callfunc("F_EntKafCode");
 	if(@code==0 || @code != #kafra_code-getcharid(3)-1337) {
@@ -591,7 +594,7 @@ function	script	F_SetKafCode	{
 	next;
 
 M_SET:
-	mes "[Kafra Employee]";
+	mes getarg(0);
 	mes "Now enter your ^FF0000new password^000000 to protect your storage from thieves.";
 	set @code,callfunc("F_EntKafCode");
 	if(@code==0) {
@@ -600,19 +603,19 @@ M_SET:
 		goto M_END;
 	}
 	next;
-	mes "[Kafra Employee]";
+	mes getarg(0);
 	if(Zeny < 5000) goto L_ZENY;
 	set Zeny,Zeny-5000;
-	set RESRVPTS, RESRVPTS + (5000/50);
+	//set RESRVPTS, RESRVPTS + (5000/50);	//hardcoded password doesn't add pts
 
 	set #kafra_code,@code+getcharid(3)+1337;
 	mes "You've protected your storage with a secret password.";
-	mes "Thank you for using Kafra Services.";
+	mes "Thank you for using "+getarg(1)+".";
 	emotion e_thx;
 	goto M_END;	
 
 M_CLEAR:
-	mes "[Kafra Employee]";
+	mes getarg(0);
 	mes "Please, enter your password before its removal.";
 	set @code,callfunc("F_EntKafCode");
 	if(@code==0) {
@@ -621,14 +624,14 @@ M_CLEAR:
 		goto M_END;
 	}
 	next;
-	mes "[Kafra Employee]";
+	mes getarg(0);
 	if(Zeny < 1000) goto L_ZENY;
 	set Zeny,Zeny-1000;
-	set RESRVPTS, RESRVPTS + (1000/50);
+	//set RESRVPTS, RESRVPTS + (1000/50);	//hardcoded password doesn't add pts
 	if(@code == #kafra_code-getcharid(3)-1337) {
 		set #kafra_code,0;
 		mes "You've successfully cleared your storage password.";
-		mes "Thank you for using Kafra Services.";
+		mes "Thank you for using "+getarg(1)+".";
 		emotion e_thx;
 	} else {
 		mes "Wrong password. We won't return your 1000z.";