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
This commit is contained in:
Lupus 2007-09-10 05:33:07 +00:00
parent dab25c6b7b
commit 4d5c7cc604
3 changed files with 104 additions and 38 deletions

View File

@ -1,5 +1,10 @@
Date Added 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 2007/09/09
* Uncommented Cursed Abbey spawns [Playtester] * Uncommented Cursed Abbey spawns [Playtester]
2007/09/08 2007/09/08

View File

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

View File

@ -5,7 +5,7 @@
//= Darlskies, Darkchild, Syrus22, Lupus, kobra_k88 (2.0) //= Darlskies, Darkchild, Syrus22, Lupus, kobra_k88 (2.0)
//= L0ne_W0lf //= L0ne_W0lf
//===== Current Version: ===================================== //===== Current Version: =====================================
//= 5.9 //= 6.0
//===== Compatible With: ===================================== //===== Compatible With: =====================================
//= eAthena 1.0 //= eAthena 1.0
//===== Description: ========================================= //===== Description: =========================================
@ -54,6 +54,8 @@
//= Thanks to Barron-Monster for pointing out the issues. //= Thanks to Barron-Monster for pointing out the issues.
//= 5.8 Fixed another double name being shown when "saving" [L0ne_W0lf] //= 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] //= 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; goto sM_Menu;
sM_KafCode: sM_KafCode:
callfunc("F_SetKafCode"); callfunc("F_SetKafCode","[Kafra Employee]","Kafra Services");
sM_End: sM_End:
return; return;
@ -564,8 +566,9 @@ function script F_CheckKafCode {
} }
// Set / Change / Clear Storage Password Function ==================== // Set / Change / Clear Storage Password Function ====================
// getarg(0) = NPC Name, getarg(1) = Company Name
function script F_SetKafCode { function script F_SetKafCode {
mes "[Kafra Employee]"; mes getarg(0);
if(#kafra_code) { if(#kafra_code) {
mes "Your storage is protected with a password. What would you do now?"; mes "Your storage is protected with a password. What would you do now?";
next; next;
@ -573,14 +576,14 @@ function script F_SetKafCode {
"Remove storage password -> 1000z",M_CLEAR, "Remove storage password -> 1000z",M_CLEAR,
"Cancel",M_END; "Cancel",M_END;
} else { } 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."; mes "Additional storage protection with a password.";
next; next;
menu "Set new password -> 5000z",M_SET, menu "Set new password -> 5000z",M_SET,
"Cancel",M_END; "Cancel",M_END;
} }
mes "[Kafra Employee]"; mes getarg(0);
mes "At first, please enter your ^0000FFold password^000000."; mes "At first, please enter your ^0000FFold password^000000.";
set @code,callfunc("F_EntKafCode"); set @code,callfunc("F_EntKafCode");
if(@code==0 || @code != #kafra_code-getcharid(3)-1337) { if(@code==0 || @code != #kafra_code-getcharid(3)-1337) {
@ -591,7 +594,7 @@ function script F_SetKafCode {
next; next;
M_SET: M_SET:
mes "[Kafra Employee]"; mes getarg(0);
mes "Now enter your ^FF0000new password^000000 to protect your storage from thieves."; mes "Now enter your ^FF0000new password^000000 to protect your storage from thieves.";
set @code,callfunc("F_EntKafCode"); set @code,callfunc("F_EntKafCode");
if(@code==0) { if(@code==0) {
@ -600,19 +603,19 @@ M_SET:
goto M_END; goto M_END;
} }
next; next;
mes "[Kafra Employee]"; mes getarg(0);
if(Zeny < 5000) goto L_ZENY; if(Zeny < 5000) goto L_ZENY;
set Zeny,Zeny-5000; 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; set #kafra_code,@code+getcharid(3)+1337;
mes "You've protected your storage with a secret password."; 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; emotion e_thx;
goto M_END; goto M_END;
M_CLEAR: M_CLEAR:
mes "[Kafra Employee]"; mes getarg(0);
mes "Please, enter your password before its removal."; mes "Please, enter your password before its removal.";
set @code,callfunc("F_EntKafCode"); set @code,callfunc("F_EntKafCode");
if(@code==0) { if(@code==0) {
@ -621,14 +624,14 @@ M_CLEAR:
goto M_END; goto M_END;
} }
next; next;
mes "[Kafra Employee]"; mes getarg(0);
if(Zeny < 1000) goto L_ZENY; if(Zeny < 1000) goto L_ZENY;
set Zeny,Zeny-1000; 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) { if(@code == #kafra_code-getcharid(3)-1337) {
set #kafra_code,0; set #kafra_code,0;
mes "You've successfully cleared your storage password."; 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; emotion e_thx;
} else { } else {
mes "Wrong password. We won't return your 1000z."; mes "Wrong password. We won't return your 1000z.";