From e6f9fb1e985cf0a53cdb6ec7e964e8f8ada4904f Mon Sep 17 00:00:00 2001 From: Lupus Date: Mon, 10 Sep 2007 05:33:07 +0000 Subject: 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@11159 54d463be-8e91-2dee-dedb-b68131a5f0ec --- npc/Changelog.txt | 5 ++ npc/kafras/cool_event_corp.txt | 108 ++++++++++++++++++++++++++++++---------- npc/kafras/functions_kafras.txt | 29 ++++++----- 3 files changed, 104 insertions(+), 38 deletions(-) diff --git a/npc/Changelog.txt b/npc/Changelog.txt index d02812ee1..9ed399b6a 100644 --- a/npc/Changelog.txt +++ b/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 diff --git a/npc/kafras/cool_event_corp.txt b/npc/kafras/cool_event_corp.txt index e94b7d3ff..5124b0ffb 100644 --- a/npc/kafras/cool_event_corp.txt +++ b/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; } } diff --git a/npc/kafras/functions_kafras.txt b/npc/kafras/functions_kafras.txt index cd1ac6553..7f45a0652 100644 --- a/npc/kafras/functions_kafras.txt +++ b/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."; -- cgit v1.2.3-60-g2f50