summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
Diffstat (limited to 'npc')
-rw-r--r--npc/Changelog.txt5
-rw-r--r--npc/kafras/cool_event_corp.txt108
-rw-r--r--npc/kafras/functions_kafras.txt29
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.";