* Update to the eAAC Scripts (don't ask...). [eAAC]

*= Removed disguiser.txt as it seems to error, thus failing to comply with eAAC terms

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10801 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
eaac
2007-06-21 21:15:39 +00:00
parent f05a3cf287
commit 2c93dd07f6
30 changed files with 2264 additions and 2639 deletions

View File

@@ -1,6 +1,7 @@
Date Added
======
2007/06/21
* Update to the eAAC Scripts (don't ask...) [eAAC]
* Fixed a small bug in Dandelion's Request. [SinSloth]
* Fixed a little minor bug in "Crusader Job Quest". [Samuray22]
* Added some missing NPCs from the Laboratory on "Elemental Potion Cretion Quest". [Samuray22]

View File

@@ -1,51 +1,72 @@
//===== eAthena Script =======================================
//===== Athena Script =======================================
//= Donation NPC
//===== By ===================================================
//===== By ==================================================
//= Josh
//===== Version ==============================================
//= 1.0 - First release. Probably contains bugs/security
//= risks
//= 1.1 - Added a check for whether the account exists when
//= adding a donator. Need to improve ordering when
//= viewing all donations.
//= 1.2 - Modified for public use. Added checkweight feature.
//= 2.0 - Many changes, especially ones I had always wanted
//= to add to this script. Includes reading items from
//= a separate SQL table and more database manipulation
//= options for GMs.
//= 2.1 - Made few changes including the add/remove items
//= feature.
//= 3.0 - All strings inputed by a user and user/char names
//= in SQL queries are now escaped. Each item has a
//= price rather than a quantity. This script can work
//= with decimals.
//= 3.1 - Added quotes to some queries, fixed a variable and
//= removed a comment.
//= 3.2 - Fixed a problem where eAthena would crash if a
//= query returned NULL.
//= 3.3 - Optimized query speeds by combining a few select
//= queries into one. Requires Trunk 7975 OR
//= Stable 8637.
//===== Compatible With ======================================
//= eAthena - any version that contains the new query_sql
//= command (Stable 8637 OR Trunk 7975).
//===== Description ==========================================
//===== Version =============================================
//= 1.0 - First release. Probably contains bugs/security
//= risks.
//= 1.1 - Added a check for whether the account exists when
//= adding a donator. Need to improve ordering when
//= viewing all donations.
//= 1.2 - Modified for public use. Added checkweight feature.
//= 2.0 - Many changes, especially ones I had always wanted
//= to add to this script. Includes reading items from
//= a separate SQL table and more database manipulation
//= options for GMs.
//= 2.1 - Made few changes including the add/remove items
//= feature.
//= 3.0 - All strings inputted by a user and user/char names
//= in SQL queries are now escaped. Each item has a
//= price rather than a quantity. This script can work
//= with decimals.
//= 3.1 - Added quotes to some queries, fixed a variable and
//= removed a comment.
//= 3.2 - Fixed a problem where eAthena would crash if a
//= query returned NULL.
//= 3.3 - Optimized query speeds by combining a few select
//= queries into one. Requires Trunk 7975.
//= 3.4 - Added MySQL version check. If version < 5.0.8, all
//= queries with CAST are omitted. Use 5.0.8 and up
//= when possible. SQL errors may consequent if GM's
//= input is incorrect. Added logging of claims.
//= "log_npc" in log_athena.conf must be enabled. Logs
//= will appear in the "npclog" table. Claim menu now
//= only shows items that can be afforded.
//= 3.5 - Minor change to table.
//= 3.6 - Removed name column in donate_item_db. Added
//= support for item_db2 table.
//= 3.7 - Added Zeny support. $rate must be set for it to be
//= used. Removed truncate() in a query since eAthena
//= automatically truncates floats to ints.
//= 3.8 - Fixed problem with menus and null values.
//= 3.9 - Explicit reset of @aid.
//= 3.10 - Applied previous fix to other variables and forced
//= dialogue box closure every time database is
//= modified.
//= 3.11 - Explicit reset of another variable. Fixed typo
//= - with $rate. Added logmes for GM operations.
//===== Compatible With =====================================
//= eAthena SQL - any version with the new query_sql command
//= (Trunk 7975 and up).
//= MySQL - 5.0.8 and up highly recommended but not required.
//===== Description =========================================
//= A script that lets a player claim an item for donating.
//= Allows a GM to input each donation.
//===== Comments =============================================
//===== Comments ============================================
//= This script uses SQL tables to store variables for the
//= amount donated by users and the items claimable.
//===== Installation =========================================
//= You must execute donate.sql and donate_item_db.sql before
//= using this script.
//============================================================
//===== Installation ========================================
//= You must import donate.sql and donate_item_db.sql (and
//= item_db.sql and item_db2.sql, which comes with eAthena)
//= before using this script.
//===========================================================
//= Thanks to Vich for helping me with the SQL syntax.
//= Thanks to Lance for helping me with the the arrays and
//= for implementing query_sql.
//= Thanks to Skotlex for implementing escape_sql.
//= Thanks to Toms for implementing the new multi-column
//= query_sql command.
//============================================================
//===========================================================
prontera,145,179,5 script Donation Girl 714,{
@@ -69,79 +90,104 @@ mes "[Donation Girl]";
mes "To show our appreciation, we will gladly give you a reward.";
next;
menu "Continue",L_START,"Cancel",-;
close;
L_CHECK:
query_sql "SELECT `amount`,`claimed` FROM `donate` WHERE `account_id` = "+getcharid(3)+"", @amount$, @claimed$;
query_sql "SELECT MIN(price) FROM `donate_item_db`", @min$;
query_sql "SELECT '"+@amount$+"' - '"+@claimed$+"'", @value$;
query_sql "SELECT '"+@value$+"' >= '"+@min$+"'", @enough;
if(@enough) goto L_CLAIM;
mes "[Donation Girl]";
mes "Sorry, you do not have enough to make a claim.";
mes "If you have donated but have not made a claim,";
mes "Please give us time to process your donation.";
close;
query_sql "SELECT `amount`,`claimed` FROM `donate` WHERE `account_id` = "+getcharid(3), @amount$, @claimed$;
query_sql "SELECT "+@amount$+" - "+@claimed$, @value$;
query_sql "SELECT '"+@value$+"' > 0", @enough;
if(!@enough) {
mes "[Donation Girl]";
mes "Sorry, you do not have enough to make a claim.";
mes "If you have donated but have not made a claim,";
mes "Please give us time to process your donation.";
close;
}
L_CLAIM:
mes "[Donation Girl]";
mes "Thankyou for donating!";
mes "You have $"+@value$+" worth of credit!";
mes "Would you like to claim an item now?";
mes "What would you like to claim?";
next;
menu "No",-,"Yes",L_YES;
mes "[Donation Girl]";
mes "Ok! You are able to collect your item(s) any time!";
close;
menu "Items",L_CLAIMITEM,"Zeny",L_ZENY;
L_YES:
L_CLAIMITEM:
mes "[Donation Girl]";
mes "Very well. Which item would you like?";
next;
query_sql "SELECT `name` FROM `donate_item_db` ORDER BY `name` ASC",$@name$;
set $@menu$, $@name$[0];
for(set $@i, 1; $@i < 127; set $@i, $@i + 1){
set $@menu$, $@menu$ + ":" + $@name$[$@i];
query_sql "SELECT `id` FROM `donate_item_db` WHERE `price` <= "+@value$+" ORDER BY `id`",@name;
set @menu$, getitemname(@name[0]);
for(set @i, 1; @i < getarraysize(@name); set @i, @i + 1){
set @menu$, @menu$ + ":" + getitemname(@name[@i]);
}
set @menu, (select($@menu$))-1;
set @m, select(@menu$)-1;
query_sql "SELECT `id`,`price` FROM `donate_item_db` WHERE `name` = '"+$@name$[@menu]+"'", @id, @price$;
query_sql "SELECT TRUNCATE("+@value$+" / "+@price$+",0)", @max;
query_sql "SELECT `price` FROM `donate_item_db` WHERE `id` = "+@name[@m], @price$;
query_sql "SELECT "+@value$+" / "+@price$, @max;
mes "[Donation Girl]";
mes ""+$@name$[@menu]+"s cost $"+@price$+" each.";
mes "How many "+$@name$[@menu]+"s would you like to claim?";
mes getitemname(@name[@m])+"s cost $"+@price$+" each.";
mes "How many "+getitemname(@name[@m])+"s would you like to claim?";
mes "Maximum: "+@max+".";
input @quantity;
mes "[Donation Girl]";
if(@quantity>@max) {
mes "[Donation Girl]";
mes "Sorry, but you do not have enough to claim "+@quantity+" "+$@name$[@menu]+"s.";
mes "Sorry, but you do not have enough to claim "+@quantity+" "+getitemname(@name[@m])+"s.";
next;
goto L_CLAIM;
}
if(!@quantity) {
mes "[Donation Girl]";
mes "You can't have 0 as an amount!";
next;
goto L_CLAIM;
}
if (checkweight(@id,@quantity) == 0) {
mes "[Donation Girl]";
mes "I'm sorry, but you cannot carry "+@quantity+" "+$@name$[@menu]+"s.";
if(!checkweight(@name[@m],@quantity)) {
mes "I'm sorry, but you cannot carry "+@quantity+" "+getitemname(@name[@m])+"s.";
next;
goto L_CLAIM;
}
query_sql "SELECT "+@quantity+" * "+@price$+"", @total$;
mes "Are you sure you want to claim "+@quantity+" "+$@name$[@menu]+"s for $"+@total$+"?";
query_sql "SELECT "+@quantity+" * "+@price$, @total$;
mes "Are you sure you want to claim "+@quantity+" "+getitemname(@name[@m])+"s for $"+@total$+"?";
next;
menu "No",L_CLAIM,"Yes",-;
query_sql "UPDATE `donate` SET `claimed` = `claimed` + "+@total$+" WHERE `account_id` = '"+getcharid(3)+"'";
getitem @id,@quantity;
query_sql "UPDATE `donate` SET `claimed` = `claimed` + "+@total$+" WHERE `account_id` = "+getcharid(3);
logmes "Claimed "+@quantity+" "+getitemname(@name[@m])+"s";
getitem @name[@m],@quantity;
mes "[Donation Girl]";
mes "Thankyou for donating! We hope you enjoy your gift!";
close;
L_ZENY:
mes "[Donation Girl]";
if(!$rate) {
mes "Sorry, we currently do not allow claiming Zeny.";
mes "Please go back and claim an item instead.";
next;
goto L_CLAIM;
}
query_sql "SELECT "+@value$+" * "+$rate, @maxzeny;
mes "Very well. You can claim as much as "+@maxzeny+"Z.";
mes "How much Zeny would you like to claim?";
input @zeny;
mes "[Donation Girl]";
if(@zeny>@maxzeny) {
mes "Sorry, but you do not have enough to claim "+@zeny+"Z.";
next;
goto L_CLAIM;
}
if(!@zeny) {
mes "You can't have 0 as an amount!";
next;
goto L_CLAIM;
}
set @total, @zeny * $rate;
mes "Are you sure you want to claim "+@zeny+"Z for $"+@total+"?";
next;
menu "No",L_CLAIM,"Yes",-;
query_sql "UPDATE `donate` SET `claimed` = `claimed` + "+@total+" WHERE `account_id` = "+getcharid(3);
logmes "Claimed "+@zeny+" zenies";
set Zeny, Zeny + @zeny;
mes "[Donation Girl]";
mes "Thankyou for donating! We hope you enjoy your gift!";
close;
@@ -149,65 +195,59 @@ close;
L_STATS:
mes "[Donation Girl]";
query_sql "SELECT IFNULL((SELECT SUM(amount) FROM `donate`),0)", @total$;
mes "Our fund is at a total of $"+@total$+"";
mes "Our fund is at a total of $"+@total$;
next;
menu "More info",L_INFO,"Make a claim",L_CHECK,"Statistics",L_STATS;
close;
L_GM:
mes "[GM Menu]";
mes "Hello GM!";
mes "What would you like to do?";
next;
menu "Add/Remove Donation",L_GM2,"Add/Remove Items",L_ITEM,"Test Script",L_START;
close;
query_sql "SHOW VARIABLES LIKE 'version'", @version, @valule$;
query_sql "SELECT '"+@valule$+"' >= '5.0.8'", @version;
menu "Add/Remove Donation",L_GM2,"Add/Remove Items",L_ITEM,"(Re)Set Exchange Rate",L_RATE,"Test Script",L_START;
L_GM2:
menu "Add a donation",L_DONATE,"Remove a donation",L_REMOVE,"View all donations",L_VIEWALL;
close;
menu "Add a donation",L_DONATE,"Remove a donation",L_REMOVE,"View all donations",L_VIEWALL,"Return to main menu",L_GM;
L_ITEM:
menu "Add an item",L_NEWITEM,"Remove an item",L_DELITEM,"View all items",L_ALLITEMS,"Return to main menu",L_GM;
close;
L_NEWITEM:
mes "[GM Menu]";
mes "Please enter the item name:";
input @itemname$;
query_sql "SELECT `id` FROM `item_db` WHERE `name_english` = '"+escape_sql(@itemname$)+"'", @iid;
query_sql "SELECT `id` FROM `donate_item_db` WHERE `name` = '"+escape_sql(@itemname$)+"'", @check;
if(@iid==0) goto L_INONE;
set @iid, 0;
query_sql "SELECT `id` FROM `item_db` WHERE `name_english` = '"+escape_sql(@itemname$)+"' || `name_japanese` = '"+escape_sql(@itemname$)+"' UNION SELECT `id` FROM `item_db2` WHERE `name_english` = '"+escape_sql(@itemname$)+"' || `name_japanese` = '"+escape_sql(@itemname$)+"'", @iid;
if(!@iid) goto L_INONE;
query_sql "SELECT 1 FROM `donate_item_db` WHERE `id` = "+@iid, @check;
mes "[GM Menu]";
mes "Please enter the cost of each "+@itemname$+":";
input @cost$;
query_sql "SELECT "+escape_sql(@cost$)+" = 0", @invalid;
if(@invalid) goto L_ZERO;
query_sql "SELECT CAST('"+escape_sql(@cost$)+"' AS DECIMAL)", @cost$;
if(@version) query_sql "SELECT CAST('"+escape_sql(@cost$)+"' AS DECIMAL)", @cost$;
query_sql "SELECT '"+escape_sql(@cost$)+"' > 0", @valid;
if(!@valid) goto L_ZERO;
mes "[GM Menu]";
mes "You have specified that donators can claim "+@itemname$+"s for $"+@cost$+" each.";
mes "Would you like to continue?";
next;
menu "No",L_ITEM,"Yes",-;
if(@check!=0) goto L_REPLACE;
query_sql "INSERT INTO `donate_item_db` VALUES ('"+@iid+"', '"+escape_sql(@itemname$)+"', '"+@cost$+"')";
mes "[GM Menu]";
mes "Item added successfully!";
next;
menu "Add annother item",L_NEWITEM,"Remove an item",L_DELITEM,"View all items",L_ALLITEMS;
close;
L_REPLACE:
mes "[GM Menu]";
mes "Item "+@itemname$+" already exists in the database.";
mes "Would you like to replace it?";
next;
menu "No",L_ITEM,"Yes",-;
query_sql "REPLACE INTO `donate_item_db` VALUES ('"+@iid+"', '"+@itemname$+"', '"+@cost$+"')";
mes "[GM Menu]";
mes "Item replaced successfully!";
next;
menu "Add annother item",L_NEWITEM,"Remove an item",L_DELITEM,"View all items",L_ALLITEMS;
if(!@check){
query_sql "INSERT INTO `donate_item_db` VALUES ("+@iid+",'"+@cost$+"')";
logmes "Added "+@itemname$+"s to list of claimable items";
mes "Item added successfully!";
} else {
mes "Item "+@itemname$+" already exists in the database.";
mes "Would you like to replace it?";
next;
menu "No",L_ITEM,"Yes",-;
query_sql "REPLACE INTO `donate_item_db` VALUES ("+@iid+",'"+@cost$+"')";
logmes "Changed the price of "+@itemname$+"s";
mes "[GM Menu]";
mes "Item replaced successfully!";
}
close;
L_INONE:
@@ -220,26 +260,26 @@ L_DELITEM:
mes "[GM Menu]";
mes "Please enter the item name:";
input @itemname$;
query_sql "SELECT `id` FROM `donate_item_db` WHERE `name` = '"+escape_sql(@itemname$)+"'", @iid;
if(@iid==0) goto L_INONE;
set @iid, 0;
query_sql "SELECT `donate_item_db`.`id` FROM `donate_item_db` LEFT JOIN `item_db` ON `donate_item_db`.`id` = `item_db`.`id` LEFT JOIN `item_db2` ON `donate_item_db`.`id` = `item_db2`.`id` WHERE `item_db`.`name_english` = '"+escape_sql(@itemname$)+"' || `item_db`.`name_japanese` = '"+escape_sql(@itemname$)+"' || `item_db2`.`name_english` = '"+escape_sql(@itemname$)+"' || `item_db2`.`name_japanese` = '"+escape_sql(@itemname$)+"'", @iid;
if(!@iid) goto L_INONE;
next;
mes "[GM Menu]";
mes "You have specified to delete "+@itemname$+" from the database.";
mes "Would you like to continue?";
next;
menu "No",L_ITEM,"Yes",-;
query_sql "DELETE FROM `donate_item_db` WHERE `id` = '"+@iid+"'";
query_sql "DELETE FROM `donate_item_db` WHERE `id` = "+@iid;
logmes "Deleted "+@itemname$+"s from list of claimable items";
mes "[GM Menu]";
mes "Item deleted successfully!";
next;
menu "Add an item",L_NEWITEM,"Remove another item",L_DELITEM,"View all items",L_ALLITEMS;
close;
L_ALLITEMS:
mes "[GM Menu]";
query_sql "SELECT `name`,`price` FROM `donate_item_db` ORDER BY `name` ASC", @items$, @itemamount$;
for(set @i, 0; @i < getarraysize(@items$); set @i, @i + 1){
mes ""+@items$[@i]+" - $"+@itemamount$[@i]+"";
query_sql "SELECT `id`,`price` FROM `donate_item_db` ORDER BY `id`", @items, @itemamount$;
for(set @i, 0; @i < getarraysize(@items); set @i, @i + 1){
mes getitemname(@items[@i])+" - $"+@itemamount$[@i];
}
next;
goto L_GM;
@@ -248,25 +288,27 @@ L_DONATE:
mes "[GM Menu]";
mes "Please enter the donator's username:";
input @donator$;
set @aid, 0;
query_sql "SELECT `account_id` FROM `login` WHERE `userid` = '"+escape_sql(@donator$)+"'", @aid;
if(@aid==0) goto L_NONE;
query_sql "SELECT `amount` FROM `donate` WHERE `account_id` = "+@aid+"", @donated$;
if(!@aid) goto L_NONE;
set @donated$, "";
query_sql "SELECT `amount` FROM `donate` WHERE `account_id` = "+@aid, @donated$;
query_sql "SELECT '"+@donated$+"' > 0", @donated;
switch(@donated) {
case 0:
mes ""+@donator$+" has not donated before.";
mes @donator$+" has not donated before.";
break;
case 1:
mes ""+@donator$+" has donated $"+@donated$+".";
mes @donator$+" has donated $"+@donated$+".";
break;
}
next;
mes "[GM Menu]";
mes "Please enter the amount donated by "+@donator$+"";
mes "Please enter the amount donated by "+@donator$;
input @donating$;
query_sql "SELECT "+escape_sql(@donating$)+" = 0", @invalid;
if(@invalid) goto L_ZERO;
query_sql "SELECT CAST('"+escape_sql(@donating$)+"' AS DECIMAL)", @donating$;
if(@version) query_sql "SELECT CAST('"+escape_sql(@donating$)+"' AS DECIMAL)", @donating$;
query_sql "SELECT '"+escape_sql(@donating$)+"' > 0", @valid;
if(!@valid) goto L_ZERO;
mes "[GM Menu]";
mes "You have specified that "+@donator$+" has donated $"+@donating$+".";
mes "Would you like to continue?";
@@ -274,18 +316,18 @@ next;
menu "No",L_GM,"Yes",-;
switch(@donated) {
case 0:
query_sql "INSERT INTO `donate` VALUES ('"+@aid+"', '"+@donating$+"', '0')";
query_sql "INSERT INTO `donate` VALUES ("+@aid+", '"+@donating$+"', 0)";
break;
case 1:
query_sql "UPDATE `donate` SET `amount` = `amount` + "+@donating$+" WHERE `account_id` = '"+@aid+"'";
query_sql "UPDATE `donate` SET `amount` = `amount` + "+@donating$+" WHERE `account_id` = "+@aid;
break;
}
query_sql "SELECT `amount` FROM `donate` WHERE `account_id` = "+@aid+"", @newdonated$;
logmes "Credited "+@donator$+" with $"+@donating$;
query_sql "SELECT `amount` FROM `donate` WHERE `account_id` = "+@aid, @newdonated$;
mes "[GM Menu]";
mes "Donation added successfully!";
mes ""+@donator$+" has donated a total of $"+@newdonated$+"";
next;
goto L_GM;
mes @donator$+" has donated a total of $"+@newdonated$;
close;
L_ZERO:
mes "[GM Menu]";
@@ -303,64 +345,72 @@ L_REMOVE:
mes "[GM Menu]";
mes "Please enter the donator's username:";
input @donator$;
set @aid, 0;
query_sql "SELECT `account_id` FROM `login` WHERE `userid` = '"+escape_sql(@donator$)+"'", @aid;
if(@aid==0) goto L_NONE;
query_sql "SELECT `amount` FROM `donate` WHERE `account_id` = "+@aid+"", @donated$;
if(!@aid) goto L_NONE;
query_sql "SELECT `amount` FROM `donate` WHERE `account_id` = "+@aid, @donated$;
query_sql "SELECT '"+@donated$+"' > 0", @donated;
if(@donated==0) {
query_sql "DELETE FROM `donate` WHERE `account_id` = '"+@aid+"'";
mes ""+@donator$+" is not a donator and has been deleted from the donation database.";
goto L_GM;
mes "[GM Menu]";
if(!@donated) {
query_sql "DELETE FROM `donate` WHERE `account_id` = "+@aid;
logmes "Deleted "+@donator$+" from donation database";
mes @donator$+" is not a donator and has been deleted from the donation database.";
} else {
mes @donator$+" has donated $"+@donated$+".";
next;
switch(select("Deduct an amount from "+@donator$,"Remove "+@donator$+" from the donation database")){
mes "[GM Menu]";
case 1:
mes "Please enter the amount "+@donator$+" is to be deducted by:";
input @deduct$;
if(@version) query_sql "SELECT CAST('"+escape_sql(@deduct$)+"' AS DECIMAL)", @deduct$;
query_sql "SELECT '"+escape_sql(@deduct$)+"' > 0", @valid;
if(!@valid) goto L_ZERO;
mes "[GM Menu]";
mes "You have specified that "+@donator$+" is to be deducted by $"+@deduct$+".";
mes "Would you like to continue?";
next;
menu "No",L_GM,"Yes",-;
query_sql "UPDATE `donate` SET `amount` = `amount` - "+@deduct$+" WHERE `account_id` = "+@aid;
query_sql "SELECT `amount` FROM `donate` WHERE `account_id` = "+@aid, @afterdeduct$;
logmes "Deducted "+@deduct$+" from "+@donator$;
mes "[GM Menu]";
mes "Donation deducted successfully!";
mes @donator$+" has donated a total of $"+@afterdeduct$;
break;
case 2:
mes "You have specified to remove "+@donator$+" from the donation database.";
mes "Would you like to continue?";
next;
menu "No",L_GM,"Yes",-;
query_sql "DELETE FROM `donate` WHERE `account_id` = "+@aid;
logmes "Deleted "+@donator$+" from donation database";
mes "[GM Menu]";
mes "Donator deleted successfully!";
break;
}
}
mes ""+@donator$+" has donated $"+@donated$+".";
next;
menu "Deduct an amount from "+@donator$+"",L_MINUS,"Remove "+@donator$+" from the donation database",L_DELETE;
close;
L_MINUS:
mes "[GM Menu]";
mes "Please enter the amount "+@donator$+" is to be deducted by:";
input @deduct$;
query_sql "SELECT "+escape_sql(@deduct$)+" = 0", @invalid;
if(@invalid) goto L_ZERO;
query_sql "SELECT CAST('"+escape_sql(@deduct$)+"' AS DECIMAL)", @deduct$;
mes "[GM Menu]";
mes "You have specified that "+@donator$+" is to be deducted by $"+@deduct$+".";
mes "Would you like to continue?";
next;
menu "No",L_GM,"Yes",-;
query_sql "UPDATE `donate` SET `amount` = `amount` - "+@deduct$+" WHERE `account_id` = '"+@aid+"'";
query_sql "SELECT `amount` FROM `donate` WHERE `account_id` = "+@aid+"", @afterdeduct$;
mes "[GM Menu]";
mes "Donation deducted successfully!";
mes ""+@donator$+" has donated a total of $"+@afterdeduct$+"";
next;
goto L_GM;
L_DELETE:
mes "[GM Menu]";
mes "You have specified to remove "+@donator$+" from the donation database.";
mes "Would you like to continue?";
next;
menu "No",L_GM,"Yes",-;
query_sql "DELETE FROM `donate` WHERE `account_id` = '"+@aid+"'";
mes "[GM Menu]";
mes "Donator deleted successfully!";
next;
goto L_GM;
L_VIEWALL:
mes "[GM Menu]";
query_sql "SELECT `account_id`,`amount` FROM `donate` ORDER BY `amount` DESC", @donatoraid, @donatedamount$;
for(set @i, 0; @i < getarraysize(@donatoraid); set @i, @i + 1){
query_sql "SELECT `userid` FROM `login` WHERE `account_id` = '"+@donatoraid[@i]+"'", @donateruserid$;
query_sql "SELECT `userid` FROM `login` WHERE `account_id` = "+@donatoraid[@i], @donateruserid$;
for(set @j, 0; @j < getarraysize(@donateruserid$); set @j, @j + 1){
mes ""+@donateruserid$[@j]+" - "+@donatedamount$[@i]+"";
mes @donateruserid$[@j]+" - "+@donatedamount$[@i];
}
}
next;
goto L_GM;
L_RATE:
mes "[GM Menu]";
if($rate) mes "$1 is currently worth "+$rate+"Z.";
mes "How much Zeny is $1 worth?";
input $rate;
mes "[GM Menu]";
mes "The value of $1 successfully changed to "+$rate+"Z.";
next;
goto L_GM;
}

View File

@@ -1,6 +1,6 @@
CREATE TABLE `donate` (
`account_id` int(11) unsigned NOT NULL,
`amount` float(5,2) unsigned NOT NULL,
`claimed` float(5,2) unsigned NOT NULL,
PRIMARY KEY (`account_id`,`amount`)
`amount` float(9,2) unsigned NOT NULL,
`claimed` float(9,2) unsigned NOT NULL,
PRIMARY KEY (`account_id`)
) TYPE=MyISAM;

View File

@@ -1,14 +1,13 @@
CREATE TABLE `donate_item_db` (
`id` smallint(5) unsigned NOT NULL default '0',
`name` varchar(30) NOT NULL default '',
`price` float(5,2) unsigned NOT NULL,
`price` float(9,2) unsigned NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM;
#(ID,'Name',Price);
REPLACE INTO `donate_item_db` VALUES (601,'Fly_Wing',0.06);
REPLACE INTO `donate_item_db` VALUES (602,'Butterfly_Wing',0.33);
REPLACE INTO `donate_item_db` VALUES (603,'Old_Blue_Box',10);
REPLACE INTO `donate_item_db` VALUES (604,'Dead_Branch',0.05);
REPLACE INTO `donate_item_db` VALUES (605,'Anodyne',2);
REPLACE INTO `donate_item_db` VALUES (606,'Aloevera',2);
#(ID,Price);
REPLACE INTO `donate_item_db` VALUES (601,0.06); #Wing_Of_Fly
REPLACE INTO `donate_item_db` VALUES (602,0.33); #Wing_Of_Butterfly
REPLACE INTO `donate_item_db` VALUES (603,10); #Old_Blue_Box
REPLACE INTO `donate_item_db` VALUES (604,0.05); #Branch_Of_Dead_Tree
REPLACE INTO `donate_item_db` VALUES (605,2); #Anodyne
REPLACE INTO `donate_item_db` VALUES (606,2); #Aloebera

View File

@@ -1,10 +1,6 @@
//|-----------------------------------------------------------------|
//|- English Athena Approved Certified Script: Kafra Express Set -|
//|-----------------------------------------------------------------|
//| Under this is the global_functions.txt needed for this set to work.
//| Note that if you enable this, you will have to go to the scripts_main.conf
//| and disable the original one.
npc: npc/custom/eAAC_Scripts/kafraExpress/global_functionsKE.txt
//|
//| The configuration file.
npc: npc/custom/eAAC_Scripts/kafraExpress/config.txt

View File

@@ -1,21 +1,20 @@
//| ~~~~~~~~~~~ Information ~~~~~~~~~~~
//| | This is a simple banking npc, |
//| | which uses coins to store zeny |
//| | instead of using those global |
//| | variables :P |
//| | |
//| | It's fully customizable, you |
//| | can exchange the coin ID used |
//| | at will, it won't affect the |
//| | script whatsoever =3 |
//| | |
//| | The prices can also be set, the |
//| | way you like the most, as they |
//| | won't affect the script either |
//| | |
//| | No db/client files modification |
//| | needed, just "Plug&Play" ;P |
//| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//| ~~~~~~~~~~~ Information ~~~~~~~~~~~~~
//| | This is a simple banking npc, |
//| | instead of using those global |
//| | variables :P |
//| | |
//| | It's fully customizable, you |
//| | can exchange the coin ID used |
//| | at will, it won't affect the |
//| | script whatsoever =3 |
//| | |
//| | The prices can also be set, the |
//| | way you like the most, as they |
//| | won't affect the script either |
//| | |
//| | No db/client files modification |
//| | needed, just "Plug&Play" ;P |
//| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//| Revision:
//| v.1.0: Released script. No problems or bugs found, at least :P
@@ -66,6 +65,11 @@
//| at the beginning of the Mix function, to prevent old values
//| to be used as a payout.
//| Revision:
//| v.2.8.1 Removed the 'conflicting' switch with variables as case options,
//| and moved the color names to the function, so now it executes once.
//| Did other optimizations and cleanups all around the code. Meh.
//| Upcomming possible updates:
//| v.3.0: Adding a refining system, so you can gather ore and the likes
//| to make your own coins. They will have a failure chance
@@ -73,97 +77,69 @@
//| coin you wish, a mini furnace, an anvil depending on what
//| You're crafting, and a hammer according to it.
//| Copyright © 2006 erKURITA. All Rights Reserved
//| Copyright © 2006-2007 erKURITA. All Rights Reserved
prontera,155,188,3 script Zacariath Madhat 872,{
//|~~~~~~~~~ Settings of the NPC: ~~~~~~~~~~~~~~~~~
set @npcname$,"^999999[Zach]^000000"; //|
set @bronzeprice,10000; //|
set @silverprice,100000; //|
set @goldprice,1000000; //|
set @mithrilprice,10000000; //|
set @bronzecoinid,673; //|
set @silvercoinid,677; //|
set @goldcoinid,671; //|
set @mithrilcoinid,674; //|
set @minvalue,@bronzeprice; //|
set @name1$,getitemname(@bronzecoinid); //|
set @name2$,getitemname(@silvercoinid); //|
set @name3$,getitemname(@goldcoinid); //|
set @name4$,getitemname(@mithrilcoinid); //|
set @MAX_ZENY,1000000000; //|
//|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//|~~~~~~~~~~~~~ Settings of the NPC: ~~~~~~~~~~~~~~~~~
set @npcname$,"^999999[Zach]^000000"; //|
set @bronzeprice,10000; //|
set @silverprice,100000; //|
set @goldprice,1000000; //|
set @mithrilprice,10000000; //|
set @bronzecoinid,673; //|
set @silvercoinid,677; //|
set @goldcoinid,671; //|
set @mithrilcoinid,674; //|
set @minvalue,@bronzeprice; //|
set @name1$,getitemname(@bronzecoinid); //|
set @name2$,getitemname(@silvercoinid); //|
set @name3$,getitemname(@goldcoinid); //|
set @name4$,getitemname(@mithrilcoinid); //|
set @MAX_ZENY,1000000000; //|
//|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mes @npcname$;
mes "Hi "+strcharinfo(0)+", I'm this town's banker";
mes "I can allow you to exchange your zeny into useful and handy coins, which you can use to make trades between players, or just save them";
next;
mes @npcname$;
mes "^996600"+@name1$+"s^000000 are worth "+@bronzeprice+"z, ^999999"+@name2$+"s^000000 are worth "+@silverprice+"z, ^FFCC00"+@name3$+"s^000000 "+@goldprice+"z, ^CCCCCC"+@name4$+"s^000000 are worth "+@mithrilprice+"z";
next;
goto L_Menu;
mes @npcname$;
mes "Hi "+strcharinfo(0)+", I'm this town's banker";
mes "I can allow you to exchange your zeny into useful and handy coins, which you can use to make trades between players, or just save them";
next;
mes @npcname$;
mes "^996600"+@name1$+"s^000000 are worth "+@bronzeprice+"z, ^999999"+@name2$+"s^000000 are worth "+@silverprice+"z, ^FFCC00"+@name3$+"s^000000 "+@goldprice+"z, ^CCCCCC"+@name4$+"s^000000 are worth "+@mithrilprice+"z";
next;
goto L_Menu;
L_Menu:
mes @npcname$;
mes "What do you want to do then?";
menu "Exchange my coins into zeny",L_CoinZeny,"Exchange my zeny into coins",L_ZenyCoin,"Nothing for now, sorry",L_End;
L_Menu:
mes @npcname$;
mes "What do you want to do then?";
menu "Exchange my coins into zeny",-,"Exchange my zeny into coins",L_ZenyCoin,"Nothing for now, sorry",L_End;
//| Here starts the Coin to Zeny Exchange
L_CoinZeny:
next;
mes @npcname$;
mes "First than anything, what kind of coins are you going to exchange?";
menu @name1$+"s",L_Bronze,@name2$+"s",L_Silver,@name3$+"s",L_Gold,@name4$+"s",L_Mithril,"None for now",L_Menu;
L_Bronze:
callsub L_Coincheckout,@bronzecoinid,@bronzeprice;
goto L_CoinZeny;
L_Silver:
callsub L_Coincheckout,@silvercoinid,@silverprice;
goto L_CoinZeny;
L_Gold:
callsub L_Coincheckout,@goldcoinid,@goldprice;
goto L_CoinZeny;
L_Mithril:
callsub L_Coincheckout,@mithrilcoinid,@mithrilprice;
goto L_CoinZeny;
L_Coincheckout:
switch(getarg(0)) {
case @bronzecoinid:
set @coinname$,"^996600"+getitemname(getarg(0))+"^000000";
break;
case @silvercoinid:
set @coinname$,"^999999"+getitemname(getarg(0))+"^000000";
break;
case @goldcoinid:
set @coinname$,"^FFCC00"+getitemname(getarg(0))+"^000000";
break;
case @mithrilcoinid:
set @coinname$,"^CCCCCC"+getitemname(getarg(0))+"^000000";
break;
}
L_PreInputing:
next;
mes @npcname$;
mes "Let's see, how many coins do you want to exchange?";
next;
goto L_Inputing;
L_CoinZeny:
next;
mes @npcname$;
mes "First than anything, what kind of coins are you going to exchange?";
menu @name1$+"s",L_Bronze,@name2$+"s",L_Silver,@name3$+"s",L_Gold,@name4$+"s",L_Mithril,"None for now",L_Menu;
L_Bronze:
callsub L_Coincheckout,@bronzecoinid,@bronzeprice,"^996600";
goto L_CoinZeny;
L_Silver:
callsub L_Coincheckout,@silvercoinid,@silverprice,"^999999";
goto L_CoinZeny;
L_Gold:
callsub L_Coincheckout,@goldcoinid,@goldprice,"^FFCC00";
goto L_CoinZeny;
L_Mithril:
callsub L_Coincheckout,@mithrilcoinid,@mithrilprice,"^CCCCCC";
goto L_CoinZeny;
L_Coincheckout:
set @coinname$,getarg(2)+getitemname(getarg(0))+"^000000";
next;
mes @npcname$;
mes "Let's see, how many coins do you want to exchange?";
next;
L_Inputing:
input @coinamount;
if (@coinamount == 0) {
if (@coinamount <= 0) {
mes @npcname$;
mes "You didn't input any amount, please retry";
next;
@@ -177,15 +153,12 @@ next;
mes @npcname$;
mes "I'm sorry, the quantity you inputted gives a bigger zeny amount than the max allowed. I can't allow this.";
next;
goto L_Menu
} else
goto L_Menu;
}
next;
mes @npcname$;
mes "So, you want to exchange "+@coinamount+" "+@coinname$+" ?";
menu "Yes, I want to exchange this much",L_Proceed,"No, I want to exchange something else",L_CoinZeny,"No, I want to input another number",L_Inputing,"No, I don't want to exchange anything",L_Menu;
L_Proceed:
menu "Yes, I want to exchange this much",-,"No, I want to exchange something else",L_CoinZeny,"No, I want to input another number",L_Inputing,"No, I dont want to exchange anything",L_Menu;
next;
set @price,getarg(1)*@coinamount;
set Zeny,Zeny+@price;
@@ -197,265 +170,254 @@ next;
//| Here starts the Zeny to Coin exchange.
L_ZenyCoin:
next;
if (MaxWeight*50/100 < Weight) {
if (MaxWeight*90/100 < Weight) {
L_ZenyCoin:
next;
if (MaxWeight*50/100 < Weight) {
if (MaxWeight*90/100 < Weight) {
mes @npcname$;
mes "Sorry but you have more than 90% weight. Your coins might drop. I can't give you anything.";
next;
goto L_Menu;
}
mes @npcname$;
mes "Sorry but you have more than 90% weight. Your coins might drop. I can't give you anything.";
next;
goto L_Menu;
} else
mes "You have 50% or more weight, do you still want to continue?";
menu "Yes",L_ContinueZenyCoin,"No, thanks",L_Menu;
}
L_ContinueZenyCoin:
mes @npcname$;
mes "You have 50% or more weight, do you still want to continue?";
menu "Yes",L_ContinueZenyCoin,"No, thanks",L_Menu;
}
L_ContinueZenyCoin:
mes @npcname$;
mes "First, how much zeny do you want to exchange";
callsub L_Inputingzeny;
callsub L_Zenycoins;
next;
mes @npcname$;
mes "You can have, with "+@zenyamount+":";
mes "^996600"+@bronzezeny+"^000000 "+@name1$+"s";
mes "^999999"+@silverzeny+"^000000 "+@name2$+"s";
mes "^FFCC00"+@goldzeny+"^000000 "+@name3$+"s";
mes "or";
mes "^CCCCCC"+@mithrilzeny+"^000000 "+@name4$+"s";
next;
if (@zenyamount < @minvalue) goto L_Moremoney;
goto L_ZenyCoin2;
L_ZenyCoin2:
mes "First, how much zeny do you want to exchange";
callsub L_Inputingzeny;
set @bronzezeny,@zenyamount/@bronzeprice;
set @silverzeny,@zenyamount/@silverprice;
set @goldzeny,@zenyamount/@goldprice;
set @mithrilzeny,@zenyamount/@mithrilprice;
next;
mes @npcname$;
mes "Which coins do you want? Or do you want a mix of them?";
menu "I want the "+@name1$+"s",L_Bronzes,"I want the "+@name2$+"s",L_Silvers,"I want the "+@name3$+"s",L_Golds,"I want the "+@name4$+"s",L_Mithrils,"I want a mix of them",L_Mix,"Nothing for now, sorry",L_Menu;
mes "You can have, with "+@zenyamount+":";
mes "^996600"+@bronzezeny+"^000000 "+@name1$+"s";
mes "^999999"+@silverzeny+"^000000 "+@name2$+"s";
mes "^FFCC00"+@goldzeny+"^000000 "+@name3$+"s";
mes "or";
mes "^CCCCCC"+@mithrilzeny+"^000000 "+@name4$+"s";
next;
if (@zenyamount < @minvalue) goto L_Moremoney;
goto L_ZenyCoin2;
L_Bronzes:
L_ZenyCoin2:
mes @npcname$;
mes "Which coins do you want? Or do you want a mix of them?";
menu "I want the "+@name1$+"s",-,"I want the "+@name2$+"s",L_Silvers,"I want the "+@name3$+"s",L_Golds,"I want the "+@name4$+"s",L_Mithrils,"I want a mix of them",L_Mix,"Nothing for now, sorry",L_Menu;
if (@bronzezeny == 0) goto L_Moremoney;
callsub L_Zenycheckout,@bronzecoinid,@bronzeprice,@bronzezeny;
goto L_Menu;
L_Silvers:
if (@silverzeny == 0) goto L_Moremoney;
callsub L_Zenycheckout,@silvercoinid,@silverprice,@silverzeny;
goto L_Menu;
L_Silvers:
if (@silverzeny == 0) goto L_Moremoney;
callsub L_Zenycheckout,@silvercoinid,@silverprice,@silverzeny;
goto L_Menu;
L_Golds:
if (@goldzeny == 0) goto L_Moremoney;
callsub L_Zenycheckout,@goldcoinid,@goldprice,@goldzeny;
goto L_Menu;
L_Golds:
if (@goldzeny == 0) goto L_Moremoney;
callsub L_Zenycheckout,@goldcoinid,@goldprice,@goldzeny;
goto L_Menu;
L_Mithrils:
if (@mithrilzeny == 0) goto L_Moremoney;
callsub L_Zenycheckout,@mithrilcoinid,@mithrilprice,@mithrilzeny;
goto L_Menu;
L_Mithrils:
if (@mithrilzeny == 0) goto L_Moremoney;
callsub L_Zenycheckout,@mithrilcoinid,@mithrilprice,@mithrilzeny;
goto L_Menu;
L_Zenycheckout:
next;
if (((getiteminfo(getarg(0),6))*getarg(2)) > (MaxWeight-Weight)) {
L_Zenycheckout:
next;
if (((getiteminfo(getarg(0),6))*getarg(2)) > (MaxWeight-Weight)) {
mes @npcname$;
mes "Sorry, your max weight does not allow me to give you this much of zeny coins";
mes "Either choose another type of coins or a lower quantity, thanks";
close;
}
if (getarg(2) > 30000) {
mes @npcname$;
mes "Sorry, I can't give you more than 30,000 ea";
mes "Pick another coin type";
close;
}
set @itemid,getarg(0);
set @pricea,getarg(1)*getarg(2);
getitem @itemid,getarg(2);
set Zeny,Zeny-@pricea;
mes @npcname$;
mes "Sorry, your max weight does not allow me to give you this much of zeny coins";
mes "Either choose another type of coins or a lower quantity, thanks";
close;
}
if (getarg(2) > 30000) {
mes "There you go, here's your coins";
next;
return;
L_Inputingzeny:
input @zenyamount;
if (Zeny == 0) {
mes @npcname$;
mes "You don't have any Zeny left. I can't do anything. Get some Zeny first";
next;
goto L_Menu;
} else if (@zenyamount <= 0) {
mes @npcname$;
mes "You didn't input any amount, please retry";
next;
goto L_Inputingzeny;
} else if (@zenyamount > Zeny) {
mes @npcname$;
mes "The inputted zeny amount is bigger than your actual zeny amount";
mes "Please re-entry another amount";
next;
goto L_Inputingzeny;
} else return;
//| Mix function
L_Mix:
set @totalzeny,0;
set @totalcoins,0;
set @bronzecoins,0;
set @silvercoins,0;
set @goldcoins,0;
set @mithrilcoins,0;
next;
mes @npcname$;
mes "Sorry, I can't give you more than 30,000 ea";
mes "Pick another coin type";
close;
}
set @itemid,getarg(0);
set @pricea,getarg(1)*getarg(2);
getitem @itemid,getarg(2);
set Zeny,Zeny-@pricea;
mes @npcname$;
mes "There you go, here's your coins";
next;
return;
L_Zenycoins:
set @bronzezeny,@zenyamount/@bronzeprice;
set @silverzeny,@zenyamount/@silverprice;
set @goldzeny,@zenyamount/@goldprice;
set @mithrilzeny,@zenyamount/@mithrilprice;
return;
L_Inputingzeny:
input @zenyamount;
if (Zeny == 0) {
mes "Ok, let's start with ^996600"+@name1$+"s^000000";
next;
mes @npcname$;
mes "You don't have any Zeny left. I can't do anything. Get some Zeny first";
mes "How many coins do you want?";
input @bronzecoins;
next;
set @totalzeny,@bronzecoins*@bronzeprice;
set @totalcoins,@bronzecoins;
mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000";
mes "Coins:";
mes " ^996600"+@name1$+"s^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000";
mes "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯";
if (@totalzeny > @zenyamount || @totalzeny < 0) {
mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000";
mes "Zeny Left: "+(@zenyamount-@totalzeny);
goto L_Overzeny;
}
mes "TOTAL Zeny: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000";
mes "Zeny Left: "+(@zenyamount-@totalzeny);
next;
if (@totalzeny > @zenyamount || @totalzeny < 0) goto L_Overzeny;
mes @npcname$;
mes "Is this enough or do you want more?";
menu "It's enough, thanks",L_Payoff,"No, I want some more",-;
next;
mes @npcname$;
mes "Now ^999999"+@name2$+"s^000000. How many coins do you want?";
next;
input @silvercoins;
next;
set @totalzeny,@totalzeny+@silvercoins*@silverprice;
set @totalcoins,@totalcoins+@silvercoins;
mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000";
mes "Coins:";
mes " ^996600"+@name1$+"s^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000";
mes " ^999999"+@name2$+"s^000000: "+@silvercoins+" ^CC0000"+@silvercoins*@silverprice+"^000000";
mes "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯";
if (@totalzeny > @zenyamount || @totalzeny < 0) {
mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000";
mes "Zeny Left: "+(@zenyamount-@totalzeny);
goto L_Overzeny;
}
mes "TOTAL Zeny: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000";
mes "Zeny Left: "+(@zenyamount-@totalzeny);
next;
if (@totalzeny > @zenyamount || @totalzeny < 0) goto L_Overzeny;
mes @npcname$;
mes "Is this enough or do you want more?";
menu "It's enough, thanks",L_Payoff,"No, I want some more",-;
next;
mes @npcname$;
mes "Now ^FFCC00"+@name3$+"s^000000. How many coins do you want?";
input @goldcoins;
next;
set @totalzeny,@totalzeny+@goldcoins*@goldprice;
set @totalcoins,@totalcoins+@goldcoins;
mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000";
mes "Coins:";
mes " ^996600"+@name1$+"s^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000";
mes " ^999999"+@name2$+"s^000000: "+@silvercoins+" ^CC0000"+@silvercoins*@silverprice+"^000000";
mes " ^FFCC00"+@name3$+"s^000000: "+@goldcoins+" ^CC0000"+@goldcoins*@goldprice+"^000000";
mes "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯";
if (@totalzeny > @zenyamount || @totalzeny < 0) {
mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000";
mes "Zeny Left: "+(@zenyamount-@totalzeny);
goto L_Overzeny;
}
mes "TOTAL Zeny: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000";
mes "Zeny Left: "+(@zenyamount-@totalzeny);
next;
if (@totalzeny > @zenyamount || @totalzeny < 0) goto L_Overzeny;
mes @npcname$;
mes "Is this enough or do you want more?";
menu "It's enough, thanks",L_Payoff,"No, I want some more",-;
next;
mes @npcname$;
mes "Now ^CCCCCC"+@name4$+"s^000000. How many coins do you want?";
input @mithrilcoins;
next;
set @totalzeny,@totalzeny+@mithrilcoins*@mithrilprice;
set @totalcoins,@totalcoins+@mithrilcoins;
mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000";
mes "Coins:";
mes " ^996600"+@name1$+"s^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000";
mes " ^999999"+@name2$+"s^000000: "+@silvercoins+" ^CC0000"+@silvercoins*@silverprice+"^000000";
mes " ^FFCC00"+@name3$+"s^000000: "+@goldcoins+" ^CC0000"+@goldcoins*@goldprice+"^000000";
mes " ^CCCCCC"+@name4$+"s^000000: "+@mithrilcoins+" ^CC0000"+@mithrilcoins*@mithrilprice+"^000000";
mes "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯";
if (@totalzeny > @zenyamount || @totalzeny < 0) {
mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000";
mes "Zeny Left: "+(@zenyamount-@totalzeny);
goto L_Overzeny;
}
mes "TOTAL: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000";
mes "Zeny Left: "+(@zenyamount-@totalzeny);
next;
if (@totalzeny > @zenyamount || @totalzeny < 0) goto L_Overzeny;
mes @npcname$;
mes "Is this ok?: "+@bronzecoins+" "+@name1$+"s, "+@silvercoins+" "+@name2$+"s, "+@goldcoins+" "+@name3$+"s, "+@mithrilcoins+" "+@name4$+"s, for a total amount of "+@totalzeny;
menu "Yes, it's ok",-,"No, I want to re-intro them",L_Mix,"Sorry, I dont want anything",L_Menu;
L_Payoff:
next;
if (@zenyamount > Zeny) goto L_Overzeny;
set Zeny,Zeny-@totalzeny;
getitem @bronzecoinid,@bronzecoins;
getitem @silvercoinid,@silvercoins;
getitem @goldcoinid,@goldcoins;
getitem @mithrilcoinid,@mithrilcoins;
mes @npcname$;
mes "There you go, here's your coins";
next;
set @bronzecoins,0;
set @silvercoins,0;
set @goldcoins,0;
set @mithrilcoins,0;
goto L_End;
L_Overzeny:
next;
mes @npcname$;
mes "Sorry, I can't do anything else. Either the sum of all the coins you inputted is bigger than the zeny amount inputted, or the inputted amout of zeny is bigger that your total Zeny. Please retry.";
next;
goto L_Menu;
} else if (@zenyamount == 0) {
mes @npcname$;
mes "You didn't input any amount, please retry";
next;
goto L_Inputingzeny;
} else if (@zenyamount > Zeny) {
mes @npcname$;
mes "The inputted zeny amount is bigger than your actual zeny amount";
mes "Please re-entry another amount";
next;
goto L_Inputingzeny;
} else return;
//| Other labels
L_Moremoney:
mes @npcname$;
mes "You need to get more zeny, I can't give you anything with "+@zenyamount+"z, sorry";
next;
goto L_Menu;
L_Moremoney:
mes @npcname$;
mes "You need to get more zeny, I can't give you anything with "+@zenyamount+"z, sorry";
next;
goto L_Menu;
L_End:
next;
mes @npcname$;
mes "Good to see you and hope to see you again. Bye";
close;
//| Mix function
L_Mix:
set @totalzeny,0;
set @totalcoins,0;
set @bronzecoins,0;
set @silvercoins,0;
set @goldcoins,0;
set @mithrilcoins,0;
next;
mes @npcname$;
mes "Ok, let's start with ^996600"+@name1$+"s^000000";
next;
mes @npcname$;
mes "How many coins do you want?";
input @bronzecoins;
next;
set @totalzeny,@bronzecoins*@bronzeprice;
set @totalcoins,@bronzecoins;
mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000";
mes "Coins:";
mes " ^996600"+@name1$+"s^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000";
mes "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯";
if (@totalzeny > @zenyamount || @totalzeny < 0) {
mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000";
mes "Zeny Left: "+(@zenyamount-@totalzeny);
goto L_Overzeny;
} else
mes "TOTAL Zeny: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000";
mes "Zeny Left: "+(@zenyamount-@totalzeny);
next;
if (@totalzeny > @zenyamount || @totalzeny < 0)
mes @npcname$;
mes "Is this enough or do you want more?";
menu "It's enough, thanks",L_Payoff,"No, I want some more",-;
next;
mes @npcname$;
mes "Now ^999999"+@name2$+"s^000000. How many coins do you want?";
next;
input @silvercoins;
next;
set @totalzeny,@bronzecoins*@bronzeprice+@silvercoins*@silverprice;
set @totalcoins,@bronzecoins+@silvercoins;
mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000";
mes "Coins:";
mes " ^996600"+@name1$+"s^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000";
mes " ^999999"+@name2$+"s^000000: "+@silvercoins+" ^CC0000"+@silvercoins*@silverprice+"^000000";
mes "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯";
if (@totalzeny > @zenyamount || @totalzeny < 0) {
mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000";
mes "Zeny Left: "+(@zenyamount-@totalzeny);
goto L_Overzeny;
} else
mes "TOTAL Zeny: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000";
mes "Zeny Left: "+(@zenyamount-@totalzeny);
next;
if (@totalzeny > @zenyamount || @totalzeny < 0) goto L_Overzeny;
mes @npcname$;
mes "Is this enough or do you want more?";
menu "It's enough, thanks",L_Payoff,"No, I want some more",-;
next;
mes @npcname$;
mes "Now ^FFCC00"+@name3$+"s^000000. How many coins do you want?";
input @goldcoins;
next;
set @totalzeny,@bronzecoins*@bronzeprice+@silvercoins*@silverprice+@goldcoins*@goldprice;
set @totalcoins,@bronzecoins+@silvercoins+@goldcoins;
mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000";
mes "Coins:";
mes " ^996600"+@name1$+"s^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000";
mes " ^999999"+@name2$+"s^000000: "+@silvercoins+" ^CC0000"+@silvercoins*@silverprice+"^000000";
mes " ^FFCC00"+@name3$+"s^000000: "+@goldcoins+" ^CC0000"+@goldcoins*@goldprice+"^000000";
mes "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯";
if (@totalzeny > @zenyamount || @totalzeny < 0) {
mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000";
mes "Zeny Left: "+(@zenyamount-@totalzeny);
goto L_Overzeny;
} else
mes "TOTAL Zeny: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000";
mes "Zeny Left: "+(@zenyamount-@totalzeny);
next;
if (@totalzeny > @zenyamount || @totalzeny < 0) goto L_Overzeny;
mes @npcname$;
mes "Is this enough or do you want more?";
menu "It's enough, thanks",L_Payoff,"No, I want some more",-;
next;
mes @npcname$;
mes "Now ^CCCCCC"+@name4$+"s^000000. How many coins do you want?";
input @mithrilcoins;
next;
set @totalzeny,@bronzecoins*@bronzeprice+@silvercoins*@silverprice+@goldcoins*@goldprice+@mithrilcoins*@mithrilprice;
set @totalcoins,@bronzecoins+@silvercoins+@goldcoins+@mithrilcoins;
mes "Zeny Amount Inputted: ^000066"+@zenyamount+"^000000";
mes "Coins:";
mes " ^996600"+@name1$+"s^000000: "+@bronzecoins+" ^CC0000"+@bronzecoins*@bronzeprice+"^000000";
mes " ^999999"+@name2$+"s^000000: "+@silvercoins+" ^CC0000"+@silvercoins*@silverprice+"^000000";
mes " ^FFCC00"+@name3$+"s^000000: "+@goldcoins+" ^CC0000"+@goldcoins*@goldprice+"^000000";
mes " ^CCCCCC"+@name4$+"s^000000: "+@mithrilcoins+" ^CC0000"+@mithrilcoins*@mithrilprice+"^000000";
mes "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯";
if (@totalzeny > @zenyamount || @totalzeny < 0) {
mes "TOTAL Zeny: "+@totalcoins+" - ^CC0000"+@totalzeny+"^000000";
mes "Zeny Left: "+(@zenyamount-@totalzeny);
goto L_Overzeny;
} else
mes "TOTAL: "+@totalcoins+" ^00CC00"+@totalzeny+"^000000";
mes "Zeny Left: "+(@zenyamount-@totalzeny);
next;
if (@totalzeny > @zenyamount || @totalzeny < 0) goto L_Overzeny;
mes @npcname$;
mes "Is this ok?: "+@bronzecoins+" "+@name1$+"s, "+@silvercoins+" "+@name2$+"s, "+@goldcoins+" "+@name3$+"s, "+@mithrilcoins+" "+@name4$+"s, for a total amount of "+@totalzeny;
menu "Yes, it's ok",L_Payoff,"No, I want to re-intro them",L_Mix,"Sorry, I don't want anything",L_Menu;
L_Payoff:
next;
if (@zenyamount > Zeny) goto L_Overzeny;
set Zeny,Zeny-@totalzeny;
getitem @bronzecoinid,@bronzecoins;
getitem @silvercoinid,@silvercoins;
getitem @goldcoinid,@goldcoins;
getitem @mithrilcoinid,@mithrilcoins;
mes @npcname$;
mes "There you go, here's your coins";
next;
set @bronzecoins,0;
set @silvercoins,0;
set @goldcoins,0;
set @mithrilcoins,0;
goto L_End;
L_Overzeny:
next;
mes @npcname$;
mes "Sorry, I can't do anything else. Either the sum of all the coins you inputted is bigger than the zeny amount inputted, or the inputted amout of zeny is bigger that your total Zeny. Please retry.";
next;
goto L_Menu;
OnInit:
setitemscript 671,"{}";
end;
L_End:
next;
mes @npcname$;
mes "Good to see you and hope to see you again. Bye";
close;
OnInit:
setitemscript 671,"{}";
end;
}

View File

@@ -1,179 +0,0 @@
//===== eAthena Script =======================================
//= Disguiser Quesr
//===== By: ==================================================
//= PalasX (http://cashaan.dontexist.org)
//===== Current Version: =====================================
//= v1.20 Unified
//===== Compatible With: =====================================
//= SVN 5690+ (getmonsterinfo)
//===== Description: =========================================
//= Baphomet disguises you if you find all his brothers.
//===== Additional Comments: =================================
//= Gotta find them all in order
//= Dynamically edits item 2614(eye of dullahan) with
//= setitemscript 2614,"{bonus bdisguise,var_disguise;}";
//= so your SVN better support it
//= Uses GetMonsterInfo to pull monster names from server, but
//= without sql_query, the mob IDs are set statically
//= Went crazy with the functions, the script is TINY now :)
//============================================================
//////////////////////////
//Places all of our NPCs//
//////////////////////////
prt_fild05,277,226,5 script Dullahan Master 736,{
callfunc "PXC_Disguiser",0,quest_disguise;
Close;
}
moc_fild10,34,283,4 script Dullahan Master 736,{
callfunc "PXC_Disguiser",1,quest_disguise;
close;
}
gef_fild00,97,123,4 script Dullahan Master 736,{
callfunc "PXC_Disguiser",2,quest_disguise;
close;
}
pay_fild01,369,305,4 script Dullahan Master 736,{
callfunc "PXC_Disguiser",3,quest_disguise;
close;
}
pay_fild03,313,40,4 script Dullahan Master 736,{
callfunc "PXC_Disguiser",4,quest_disguise;
close;
}
prt_fild08,362,185,4 script Dullahan Master 736,{
callfunc "PXC_Disguiser",5,quest_disguise;
close;
//////////////////////////
// edits the item used ///
//////////////////////////
OnInit:
//EDIT EYE OF DULLAHAN
setitemscript 2614,"{ bonus bdisguise,var_disguise; }";
end;
}
//////////////////////////
// Function. Takes:
// INTEGER, the order number that the bapho should be visited
// VARIABLE, the quest progression variable quest_disguise. may be changed if conflicts occur
//
// Puts:
// Everything the NPC does. If you are at the right one, increase your order variable, if not, tell you where to head next on the list, when you finish, offer you to change ring properties.
// Whenever you don't have a ring, the script will push one on you in ALL instances (wrong NPC, right NPC, and done quest).
//////////////////////////
function script PXC_Disguiser {
setarray $@PXC_Next$[0],"Culvert","Morocc","Geffen","Payon","Alberta","Izlude";
if(var_disguise > 1) goto Complete;
if(getarg(0) == 5 && getarg(1) == 5) goto Last;
if(getarg(0) == getarg(1)) goto Quest;
NotMe:
mes "[Baphomet]";
mes "You must visit us in the proper order, as is Thor's will. Only then can we teach you the power of self-transmutation! Hunt around "+$@PXC_Next$[getarg(1)]+" Next!";
next;
if(countitem(2614) < 1) goto NeedRing;
close;
Cancel:
mes "[Baphomet]";
mes "Later.";
close;
Quest:
set quest_disguise,getarg(1)+1;
mes "[Baphomet]";
mes "What am I doing here? Find my brothers and you shall learn a great secret. It is one of the secret and ancient powers of Thor! Search around "+$@PXC_Next$[getarg(1)]+" next!";
next;
if(countitem(2614) < 1) goto NeedRing;
close;
NeedRing:
mes "[Baphomet]";
mes "You will need an Eye of Dullahan ring in order to obtain our secret. I can sell you one for 500,000 zeny. Simply bring me the money, and I'll offer it unto Thor in trade!";
next;
menu "Buy Ring",-,"Forget it!",Cancel;
if(Zeny < 500000) goto Cancel;
set Zeny,Zeny-500000;
getitem 2614,1;
mes "[Baphomet]";
mes "Here is your ring.";
next;
goto Cancel;
close;
Last:
set quest_disguise,0;
set var_disguise,1002;
mes "[Baphomet]";
mes "I am the last of the six. Forgive us for giving such horrible directions, for we, too, are born from Thor's left eye, and have a terrible mean streak. Plus, being monsters, we're complete and total idiots with a shoddy A.I.! You shall now receive your reward.";
next;
goto Complete;
Complete:
if(countitem(2614) < 1) goto NeedRing;
mes "[Baphomet]";
mes "Several millenia ago, Thor, the creator breathed life onto Midgar. In the beginning, all was well, but Thor's left eye proved to be the bane of our existance. As it's gaze set upon our land, all the monsters were let loose from within Thor's soul. Thor cast out his own eye, the only thing that could control the monsters. Your ring is made from his eye, and will give you the same powers.";
next;
mes "[Baphomet]";
mes "I can change your ring's mystical properties. Which monster spirit shall I weave into your ring?";
next;
if(getarg(0)==0) callfunc "PXC_DoMenu",1001,1125;
if(getarg(0)==1) callfunc "PXC_DoMenu",1126,1250;
if(getarg(0)==2) callfunc "PXC_DoMenu",1251,1375;
if(getarg(0)==3) callfunc "PXC_DoMenu",1376,1500;
if(getarg(0)==4) callfunc "PXC_DoMenu",1503,1625;
if(getarg(0)==5) callfunc "PXC_DoMenu",1626,1721;
close;
end;
}
//////////////////////////
// FUNCTION.
// Takes:
// integer, first monster ID to show
// integer, last monster ID to show
//////////////////////////
function script PXC_DoMenu {
//set menu options to mob names, doing the first one manually so we don't have an empty :
set $@menu$, getmonsterinfo(getarg(0),MOB_NAME);
for(set $@i, getarg(0)+1; $@i <= getarg(1); set $@i, $@i + 1){
set $@menu$, $@menu$ + ":" + getmonsterinfo($@i,MOB_NAME);
}
//Fire our menu
set @menu, select($@menu$);
//Zero deliminated (off-by-one errors sux0r!!!)
set @menu, @menu-1;
//congratulate our user
mes "Behold, whilst you wear this ring, your form shall become that of a "+getmonsterinfo(@menu + getarg(0),MOB_NAME);
//update our variable, with @menu offset addded to the base getarg(0)
set var_disguise, @menu + getarg(0);
close;
end;
}

View File

@@ -3,7 +3,7 @@
//===== By: ==================================================
//= Skotlex
//===== Current Version: =====================================
//= 1.8
//= 2.4
//===== Compatible With: =====================================
//= Any eAthena Version with function support
//===== Description: =========================================
@@ -26,8 +26,8 @@ OnInit:
set $@kegs_cost,500; //Cost of opening the guild storage
//Kafra Pass Options:
set $@kekp_reset,1; //Kafra passes Expire when you speak to a Kafra?
//(otherwise duration is as long as a temporary variable)
set $@kekp_reset,1; //How many uses a kafra pass has before expiring?
//(if 0, duration is as long as a temporary variable)
set $@kekp_reserveCost,100; //Cost of each Reserve Point in Zeny (0 disable)
set $@kekp_minReserve,1; //Min Reserve Points you can earn in a single transaction
set $@kekp_maxReserve,150; //Max Reserve Points you can earn in a single transaction
@@ -75,7 +75,6 @@ OnLoadDye:
set $@kedy_clothJ1ST,77; //1st Jobs (+High/Baby)
set $@kedy_clothJ2ND,77; //2nd Jobs (+High/Baby)
set $@kedy_clothJSN,77; //Super Novice (+Baby)
set $@kedy_clothJWED,77; //Wedding Class
end;
//-------------------------------------------------------------------------------
//Config for the Job Changer Module
@@ -95,6 +94,12 @@ OnLoadJobChange:
set $@kejc_skipNovice,0; //0: Novice needs Job 10 to change, 1: Can Skip Novice Class
set $@kejc_baseSN,30; //Base lv required to become a Super Novice
set $@kejc_disable,0; //Disable certain jobs from the changer:
//1: Super Novice
//2: Taekwon/Star Gladiator/Soul Linker
//4: GunSlinger
//8: Ninja
//Note that the change costs can be converted into rewards by specifying a negative amount.
set $@kejc_base2ND,1; //Base lv required to change into a second class
set $@kejc_job2ND,40; //Job Lv required to change into a second Class
@@ -114,59 +119,69 @@ OnLoadJobChange:
//Weapons awarded to each job upon change (use 0 to disable for a particular class)
//First classes:
set $@kejc_wAcolyte,1501; //Club
set $@kejc_wArcher,1701; //Bow
set $@kejc_wMage,1601; //Rod
set $@kejc_wMerchant,1301; //Axe
set $@kejc_wSwordman,1101; //Sword
set $@kejc_wThief,1201; //Knife
set $@kejc_wTaekwon,0; //Nothing (they don't wield weapons)
set $@kejc_wSuperNovice,1202; //Knife
setarray $@kejc_weapon1[0],
1501, //Acolyte/Club
1701, //Archer/Bow
1601, //Mage/Rod
1301, //Merchant/Axe
1101, //Swordman/Sword
1201, //Thief/Knife
0, //Taekwon/Nothing (they don't wield weapons)
1202, //Super Novice/Knife
13010, //GunSlinger/Six Shooter
1201; //Ninja/Knife
//Normal Weapons for Second classes
set $@kejc_wPriest,1551; //Bible
set $@kejc_wMonk,1801; //Waghnak
set $@kejc_wHunter,1704; //Composite Bow
set $@kejc_wBard,1901; //Violin
set $@kejc_wDancer,1950; //Rope
set $@kejc_wWizard,1602; //Rod
set $@kejc_wSage,1550; //Book
set $@kejc_wBlacksmith,1351; //Battle Axe
set $@kejc_wAlchemist,1351; //Battle Axe
set $@kejc_wKnight,1116; //Katana
set $@kejc_wCrusader,1107; //Blade
set $@kejc_wAssassin,1250; //Jur
set $@kejc_wRogue,1210; //Cutter
set $@kejc_wStarGladiator,1550; //Book
set $@kejc_wSoulLinker,1602; //Rod
setarray $@kejc_weapon_21[0],
1551, //Priest/Bible
1704, //Hunter/Composite Bow
1602, //Wizard/Rod
1351, //Blacksmith/Battle Axe
1116, //Knight/Katana
1250, //Assassin/Jur
1550; //Star Gladiator/Book
setarray $@kejc_weapon_22[0],
1801, //Monk/Waghnak
1704, //Bard/Dancer/Composite Bow
1550, //Sage/Book
1351, //Alchemist/Battle Axe
1107, //Crusader/Blade
1210, //Rogue/Cutter
1602; //Soul Linker/Rod
if ($@kejc_wBonusLv == 0) //Don't touch.
end;
//Improved versions awarded to second classes
set $@kejc_w2Priest,1519; //Chain
set $@kejc_w2Monk,1811; //Finger
set $@kejc_w2Hunter,1714; //Gakkung
set $@kejc_w2Bard,1911; //Guh Moon Goh
set $@kejc_w2Dancer,1960; //Whip
set $@kejc_w2Wizard,1610; //Arc Wand
set $@kejc_w2Sage,1552; //Tablet
set $@kejc_w2Blacksmith,1360; //Two-Handed Axe
set $@kejc_w2Alchemist,1360; //Two-Handed Axe
set $@kejc_w2Knight,1160; //Broad-Sword
set $@kejc_w2Crusader,1119; //Tsurugi
set $@kejc_w2Assassin,1254; //Jamadhar
set $@kejc_w2Rogue,1222; //Damascus
set $@kejc_w2StarGladiator,1552; //Tablet
set $@kejc_w2SoulLinker,1610; //Arc Wand
setarray $@kejc_weapon2_21[0],
1519, //Priest/Chain
1714, //Hunter/Gakkung
1610, //Wizard/Arc Wand
1360, //Blacksmith/Two-Handed Axe
1160, //Knight/Broad-Sword
1254, //Assassin/Jamadhar
1552; //Star Gladiator/Tablet
setarray $@kejc_weapon2_22[0],
1811, //Monk/Finger
1714, //Bard/Dancer/Gakkung
1552, //Sage/Tablet
1360, //Alchemist/Two-Handed Axe
1119, //Crusader/Tsurugi
1222, //Rogue/Damascus
1610; //Soul Linker/Arc Wand
end;
//-------------------------------------------------------------------------------
//Config for the Job Swapping Module
//-------------------------------------------------------------------------------
OnLoadJobSwap:
set $@kejs_SNpolicy,0; //Super Novice is considered as...
//0: Super Novices can't swap job.
//1: 1st Class Range: Can only be swapped with First classes (including baby)
set $@kejs_disable,0; //Disable certain jobs from the swapper:
//1: Super Novice
//2: Taekwon/Star Gladiator/Soul Linker
//4: GunSlinger
//8: Ninja
set $@kejs_revertPolicy,1; //Allows reverting to the last Class one changed from...
// 0: do not allow reverting
@@ -319,34 +334,38 @@ OnLoadWarpDungeon:
//entrance of the cave, not the Island's shore.
//Dungeon Costs
set $@kewd_abyssLake,5000; //Abyss Lake base cost
set $@kewd_abyssLake,3250; //Abyss Lake base cost
set $@kewd_amatsu,2500; //Amatsu Dungeon base cost
set $@kewd_antHell,1750; //Anthell base cost
set $@kewd_ayothaya,1750; //Ayothaya Dungeon base cost
set $@kewd_byalan,1250; //Byalan base cost
set $@kewd_comodo,2500; //Comodo Caves base cost
set $@kewd_clockTower,6250; //Clock Tower base cost
set $@kewd_coalMines,3750; //Coal Mines base cost
set $@kewd_culvert,500; //Prontera Culvert base cost
set $@kewd_einbech,5000; //Einbech Mines base cost
set $@kewd_gefenia,25000; //Gefenia base cost
set $@kewd_geffen,5000; //Geffen Dungeon base cost
set $@kewd_glastHeim,10000; //Glast Heim base cost
set $@kewd_gonRyun,3750; //Gonryun Dungeon base cost
set $@kewd_hiddenTemple,250; //Hidden Temple base cost
set $@kewd_juperos,7500; //Juperos base cost
set $@kewd_lightHalzen,15000; //LightHalzen Rekkenber base cost
set $@kewd_antHell,750; //Anthell base cost
set $@kewd_ayothaya,2000; //Ayothaya Dungeon base cost
set $@kewd_byalan,1000; //Byalan base cost
set $@kewd_comodo,1500; //Comodo Caves base cost
set $@kewd_clockTower,2250; //Clock Tower base cost
set $@kewd_coalMines,1000; //Coal Mines base cost
set $@kewd_culvert,0500; //Prontera Culvert base cost
set $@kewd_einbech,2250; //Einbech Mines base cost
set $@kewd_gefenia,7000; //Gefenia base cost
set $@kewd_geffen,1500; //Geffen Dungeon base cost
set $@kewd_glastHeim,2500; //Glast Heim base cost
set $@kewd_gonRyun,2250; //Gonryun Dungeon base cost
set $@kewd_hiddenTemple,750; //Hidden Temple base cost
set $@kewd_juperos,3750; //Juperos base cost
set $@kewd_kiehl,3400; //Kiehl Doll Factory base cost
set $@kewd_iceCave,3750; //Ice Cave base cost
set $@kewd_lightHalzen,4500; //LightHalzen Rekkenber base cost
set $@kewd_louYang,2500; //Louyang Dungeon base cost
set $@kewd_magma,3750; //Magma Dungeon base cost
set $@kewd_orc,2500; //Orc Dungeon base cost
set $@kewd_payon,1100; //Payon Dungeon base cost
set $@kewd_pyramid,2500; //Pyramids base cost
set $@kewd_magma,3000; //Magma Dungeon base cost
set $@kewd_odin,2750; //Odin Temple base cost
set $@kewd_orc,1000; //Orc Dungeon base cost
set $@kewd_payon,1000; //Payon Dungeon base cost
set $@kewd_pyramid,2000; //Pyramids base cost
set $@kewd_rachel,3000; //Rachel Sanctuary base cost
set $@kewd_sphinx,1750; //Sphinx base cost
set $@kewd_sunkenShip,1000; //Sunken Ship base cost
set $@kewd_thanatosTower,15000; //Thanatos Tower base cost
set $@kewd_toyFactory,2500; //Toy Factory base cost
set $@kewd_turtleIsland,12500; //Turtle Island base cost
set $@kewd_umbala,3550; //Umbala Dungeon base cost
set $@kewd_sunkenShip,1250; //Sunken Ship base cost
set $@kewd_thanatosTower,3250; //Thanatos Tower base cost
set $@kewd_toyFactory,1250; //Toy Factory base cost
set $@kewd_turtleIsland,3250; //Turtle Island base cost
set $@kewd_umbala,1750; //Umbala Dungeon base cost
end;
//-------------------------------------------------------------------------------
//Config for the Pvp Warps Module

View File

@@ -3,7 +3,7 @@
//===== By: ==================================================
//= Skotlex
//===== Current Version: =====================================
//= 2.2
//= 2.7
//===== Compatible With: =====================================
//= Any eAthena Version with function support; RO Episode 8+ (LightHalzen)
//===== Description: =========================================
@@ -18,279 +18,303 @@
//callfunc "F_KafraExpress","NPC Name","Image File", type, "Save Map", Save X, Save Y;
//Town Kafras
alberta,113,60,5 script Kafra Express::Alberta 116,{
callfunc "F_KafraExpress","Kafra Express","kafra_02",0,"alberta",116,57;
alberta.gat,113,60,5 script Kafra Express::Alberta 116,{
callfunc "F_KafraExpress","Kafra Express","kafra_02",0,"alberta.gat",116,57;
}
aldebaran,133,124,5 script Kafra Express::AlDeBaran 115,{
callfunc "F_KafraExpress","Kafra Express","kafra_03",2,"aldebaran",139,131;
aldebaran.gat,133,124,5 script Kafra Express::AlDeBaran 115,{
callfunc "F_KafraExpress","Kafra Express","kafra_03",2,"aldebaran.gat",139,131;
}
amatsu,201,80,8 script Kafra Express::Amatsu 114,{
callfunc "F_KafraExpress","Kafra Express","kafra_04",0,"amatsu",197,81;
amatsu.gat,201,80,8 script Kafra Express::Amatsu 114,{
callfunc "F_KafraExpress","Kafra Express","kafra_04",0,"amatsu.gat",197,81;
}
ayothaya,195,160,8 script Kafra Express::Ayothaya 112,{
callfunc "F_KafraExpress","Kafra Express","kafra_06",0,"ayothaya",194,173;
ayothaya.gat,195,160,8 script Kafra Express::Ayothaya 112,{
callfunc "F_KafraExpress","Kafra Express","kafra_06",0,"ayothaya.gat",194,173;
}
comodo,190,153,5 script Kafra Express::Comodo 721,{
callfunc "F_KafraExpress","Kafra Express","kafra_07",0,"comodo",189,166;
comodo.gat,190,153,5 script Kafra Express::Comodo 721,{
callfunc "F_KafraExpress","Kafra Express","kafra_07",0,"comodo.gat",189,166;
}
geffen,121,62,8 script Kafra Express::Geffen 113,{
callfunc "F_KafraExpress","Kafra Express","kafra_05",0,"geffen",119,56;
geffen.gat,121,62,8 script Kafra Express::Geffen 113,{
callfunc "F_KafraExpress","Kafra Express","kafra_05",0,"geffen.gat",119,56;
}
gonryun,169,188,2 script Kafra Express::GonRyun 117,{
callfunc "F_KafraExpress","Kafra Express","kafra_01",2,"gonryun",168,199;
gonryun.gat,169,188,2 script Kafra Express::GonRyun 117,{
callfunc "F_KafraExpress","Kafra Express","kafra_01",2,"gonryun.gat",168,199;
}
einbech,143,243,3 script Kafra Express::Einbech 860,{
callfunc "F_KafraExpress","Kafra Express","kafra_08",0,"einbech",157,250;
einbech.gat,143,243,3 script Kafra Express::Einbech 860,{
callfunc "F_KafraExpress","Kafra Express","kafra_08",0,"einbech.gat",157,250;
}
einbroch,58,207,4 script Kafra Express::Einbroch 860,{
callfunc "F_KafraExpress","Kafra Express","kafra_08",0,"einbroch",64,184;
einbroch.gat,58,207,4 script Kafra Express::Einbroch 860,{
callfunc "F_KafraExpress","Kafra Express","kafra_08",0,"einbroch.gat",64,184;
}
hugel,101,117,1 script Kafra Express::Hugel 115,{
callfunc "F_KafraExpress","Kafra Express","kafra_03",0,"hugel",102,109;
hugel.gat,101,117,1 script Kafra Express::Hugel 115,{
callfunc "F_KafraExpress","Kafra Express","kafra_03",0,"hugel.gat",102,109;
}
izlude,136,94,2 script Kafra Express::Izlude 115,{
callfunc "F_KafraExpress","Kafra Express","kafra_03",0,"izlude",147,99;
izlude.gat,136,94,2 script Kafra Express::Izlude 115,{
callfunc "F_KafraExpress","Kafra Express","kafra_03",0,"izlude.gat",147,99;
}
jawaii,208,217,7 script Kafra Express::Jawaii 721,{
callfunc "F_KafraExpress","Kafra Express","kafra_07",0,"jawaii",213,209;
jawaii.gat,208,217,7 script Kafra Express::Jawaii 721,{
callfunc "F_KafraExpress","Kafra Express","kafra_07",0,"jawaii.gat",213,209;
}
lighthalzen,165,106,3 script Kafra Express::Lighthalzen 861,{
callfunc "F_KafraExpress","Kafra Express","kafra_09",0,"lighthalzen",152,106;
lighthalzen.gat,165,106,3 script Kafra Express::Lighthalzen 861,{
callfunc "F_KafraExpress","Kafra Express","kafra_09",0,"lighthalzen.gat",152,106;
}
louyang,220,123,3 script Kafra Express::LouYang 117,{
callfunc "F_KafraExpress","Kafra Express","kafra_01",0,"louyang",221,128;
louyang.gat,220,123,3 script Kafra Express::LouYang 117,{
callfunc "F_KafraExpress","Kafra Express","kafra_01",0,"louyang.gat",221,128;
}
xmas,148,126,4 script Kafra Express::Lutie 112,{
callfunc "F_KafraExpress","Kafra Express","kafra_06",0,"xmas",149,117;
xmas.gat,148,126,4 script Kafra Express::Lutie 112,{
callfunc "F_KafraExpress","Kafra Express","kafra_06",0,"xmas.gat",149,117;
}
morocc,156,97,3 script Kafra Express::Morocc 721,{
callfunc "F_KafraExpress","Kafra Express","kafra_07",0,"morocc",156,91;
morocc.gat,154,97,3 script Kafra Express::Morocc 721,{
callfunc "F_KafraExpress","Kafra Express","kafra_07",0,"morocc.gat",156,91;
}
niflheim,196,192,3 script Kafra Express::Niflheim 791,{
callfunc "F_KafraExpress","Kafra Express","",3,"niflheim",194,185;
niflheim.gat,196,192,3 script Kafra Express::Niflheim 791,{
callfunc "F_KafraExpress","Kafra Express","",3,"niflheim.gat",194,185;
}
payon,152,181,5 script Kafra Express::Payon 114,{
callfunc "F_KafraExpress","Kafra Express","kafra_04",0,"payon",162,182;
payon.gat,152,181,5 script Kafra Express::Payon 114,{
callfunc "F_KafraExpress","Kafra Express","kafra_04",0,"payon.gat",162,182;
}
prontera,147,177,7 script Kafra Express::Prontera 116,{
callfunc "F_KafraExpress","Kafra Express","kafra_02",0,"prontera",156,195;
prontera.gat,147,177,7 script Kafra Express::Prontera 116,{
callfunc "F_KafraExpress","Kafra Express","kafra_02",0,"prontera.gat",156,195;
}
umbala,89,159,4 script Kafra Express::Umbala 860,{
callfunc "F_KafraExpress","Kafra Express","kafra_08",0,"umbala",91,159;
rachel.gat,138,147,4 script Kafra Express::Rachel 114,{
callfunc "F_KafraExpress","Kafra Express","kafra_04",0,"rachel.gat",128,146;
}
yuno,159,87,5 script Kafra Express::Yuno 861,{
callfunc "F_KafraExpress","Kafra Express","kafra_09",0,"yuno",159,52;
umbala.gat,89,159,4 script Kafra Express::Umbala 860,{
callfunc "F_KafraExpress","Kafra Express","kafra_08",0,"umbala.gat",91,159;
}
yuno.gat,159,87,5 script Kafra Express::Yuno 861,{
callfunc "F_KafraExpress","Kafra Express","kafra_09",0,"yuno.gat",159,52;
}
//Dungeon Kafras
//Abyss Lake
hu_fild05,170,305,7 script Kafra Express::D_Abyss 861,{
callfunc "F_KafraExpress","Kafra Express","kafra_09",1,"hu_fild05",160,302;
hu_fild05.gat,170,305,7 script Kafra Express::D_Abyss 861,{
callfunc "F_KafraExpress","Kafra Express","kafra_09",1,"hu_fild05.gat",160,302;
}
//Amatsu D
ama_in02,115,184,6 script Kafra Express::D_Amatsu 117,{
callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"ama_in02",118,184;
ama_in02.gat,115,184,6 script Kafra Express::D_Amatsu 117,{
callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"ama_in02.gat",118,184;
}
//AntHell North
moc_fild04,208,323,1 script Kafra Express::D_Anthell1 114,{
callfunc "F_KafraExpress","Kafra Express","kafra_04",1,"moc_fild04",207,332;
moc_fild04.gat,208,323,1 script Kafra Express::D_Anthell1 114,{
callfunc "F_KafraExpress","Kafra Express","kafra_04",1,"moc_fild04.gat",207,332;
}
//AntHell South
moc_fild15,251,243,3 script Kafra Express::D_Anthell2 114,{
callfunc "F_KafraExpress","Kafra Express","kafra_04",1,"moc_fild15",246,251;
moc_fild15.gat,251,243,3 script Kafra Express::D_Anthell2 114,{
callfunc "F_KafraExpress","Kafra Express","kafra_04",1,"moc_fild15.gat",246,251;
}
//Ayothaya Dungeon
ayo_fild02,289,144,3 script Kafra Express::D_Ayothaya 116,{
callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"ayo_fild02",289,155;
ayo_fild02.gat,289,144,3 script Kafra Express::D_Ayothaya 116,{
callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"ayo_fild02.gat",289,155;
}
//Byalan Island
izlu2dun,101,82,7 script Kafra Express::D_Byalan 112,{
callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"izlu2dun",112,84;
izlu2dun.gat,101,82,7 script Kafra Express::D_Byalan 112,{
callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"izlu2dun.gat",112,84;
}
//Comodo East Cave
cmd_fild01,33,321,4 script Kafra Express::D_ComodoE 721,{
callfunc "F_KafraExpress","Kafra Express","kafra_07",1,"cmd_fild01",34,325;
cmd_fild01.gat,33,321,4 script Kafra Express::D_ComodoE 721,{
callfunc "F_KafraExpress","Kafra Express","kafra_07",1,"cmd_fild01.gat",34,325;
}
//Comodo West Cave
comodo,31,218,4 script Kafra Express::D_ComodoW 721,{
callfunc "F_KafraExpress","Kafra Express","kafra_07",1,"comodo",32,209;
comodo.gat,31,218,4 script Kafra Express::D_ComodoW 721,{
callfunc "F_KafraExpress","Kafra Express","kafra_07",1,"comodo.gat",32,209;
}
//Comodo North Cave
comodo,182,347,2 script Kafra Express::D_ComodoN 721,{
callfunc "F_KafraExpress","Kafra Express","kafra_07",1,"comodo",180,352;
comodo.gat,182,347,2 script Kafra Express::D_ComodoN 721,{
callfunc "F_KafraExpress","Kafra Express","kafra_07",1,"comodo.gat",180,352;
}
//Coal Mines
mjolnir_02,83,364,4 script Kafra Express::D_Coal 861,{
callfunc "F_KafraExpress","Kafra Express","kafra_09",1,"mjolnir_02",89,358;
mjolnir_02.gat,83,364,4 script Kafra Express::D_Coal 861,{
callfunc "F_KafraExpress","Kafra Express","kafra_09",1,"mjolnir_02.gat",89,358;
}
//Culvert
prt_fild05,275,219,5 script Kafra Express::D_Culvert 112,{
callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"prt_fild05",274,208;
prt_fild05.gat,275,219,5 script Kafra Express::D_Culvert 112,{
callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"prt_fild05.gat",274,208;
}
//Gefenia
gefenia01,56,171,6 script Kafra Express::D_Gefenia1 861,{
callfunc "F_KafraExpress","Kafra Express","kafra_09",1,"gefenia01",59,169;
gefenia01.gat,56,171,6 script Kafra Express::D_Gefenia1 861,{
callfunc "F_KafraExpress","Kafra Express","kafra_09",1,"gefenia01.gat",59,169;
}
//Geffen Dungeon
gef_tower,156,33,3 script Kafra Express::D_Geffen 113,{
callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"gef_tower",147,35;
gef_tower.gat,156,33,3 script Kafra Express::D_Geffen 113,{
callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"gef_tower.gat",147,35;
}
//GH: Church
glast_01,193,136,5 script Kafra Express::D_GHChurch 791,{
callfunc "F_KafraExpress","Kafra Express","",1,"glast_01",206,136;
glast_01.gat,193,136,5 script Kafra Express::D_GHChurch 791,{
callfunc "F_KafraExpress","Kafra Express","",1,"glast_01.gat",206,136;
}
//GH: Castle
glast_01,200,350,4 script Kafra Express::D_GHCastle 791,{
callfunc "F_KafraExpress","Kafra Express","",1,"glast_01",200,347;
glast_01.gat,200,350,4 script Kafra Express::D_GHCastle 791,{
callfunc "F_KafraExpress","Kafra Express","",1,"glast_01.gat",200,347;
}
//GH: Staircase
glast_01,58,103,7 script Kafra Express::D_GHStair 791,{
callfunc "F_KafraExpress","Kafra Express","",1,"glast_01",62,107;
glast_01.gat,58,103,7 script Kafra Express::D_GHStair 791,{
callfunc "F_KafraExpress","Kafra Express","",1,"glast_01.gat",62,107;
}
//GH: Chivalry
glast_01,62,198,6 script Kafra Express::D_GHChivalry 791,{
callfunc "F_KafraExpress","Kafra Express","",1,"glast_01",69,193;
glast_01.gat,62,198,6 script Kafra Express::D_GHChivalry 791,{
callfunc "F_KafraExpress","Kafra Express","",1,"glast_01.gat",69,193;
}
//Ice Dungeon
ra_fild01.gat,225,324,5 script Kafra Express::D_IceDungeon 861,{
callfunc "F_KafraExpress","Kafra Express","kafra_09",1,"ra_fild01.gat",244,326;
}
//Kiehl Machine Doll Factory
yuno_fild08.gat,72,184,4 script Kafra Express::D_Khiel 860,{
callfunc "F_KafraExpress","Kafra Express","kafra_08",1,"yuno_fild08.gat",67,182;
}
//LightHalzen Rekkenber (Sewer Entrance)
lighthalzen,311,293,1 script Kafra Express::D_Lhz 860,{
callfunc "F_KafraExpress","Kafra Express","kafra_08",1,"lighthalzen",301,286;
lighthalzen.gat,311,293,17 script Kafra Express::D_Lhz 860,{
callfunc "F_KafraExpress","Kafra Express","kafra_08",1,"lighthalzen.gat",301,286;
}
//LightHalzen Rekkenber (Rekkenber Entrance)(
//lighthalzen,69,57,7 script Kafra Express::D_Lhz 860,{
// callfunc "F_KafraExpress","Kafra Express","kafra_08",1,"lighthalzen",78,57;
//lighthalzen.gat,69,57,7 script Kafra Express::D_Lhz 860,{
// callfunc "F_KafraExpress","Kafra Express","kafra_08",1,"lighthalzen.gat",78,57;
//}
//Juperos
jupe_cave,45,55,5 script Kafra Express::D_Juperos 860,{
callfunc "F_KafraExpress","Kafra Express","kafra_08",1,"jupe_cave",45,48;
jupe_cave.gat,45,55,5 script Kafra Express::D_Juperos 860,{
callfunc "F_KafraExpress","Kafra Express","kafra_08",1,"jupe_cave.gat",45,48;
}
//Laberynth
prt_fild01,143,365,3 script Kafra Express::D_Maze 112,{
callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"prt_fild01",136,361;
prt_fild01.gat,143,365,3 script Kafra Express::D_Maze 112,{
callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"prt_fild01.gat",136,361;
}
//LouYang D
louyang,35,276,6 script Kafra Express::D_Louyang 117,{
callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"louyang",41,267;
louyang.gat,35,276,6 script Kafra Express::D_Louyang 117,{
callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"louyang.gat",41,267;
}
//Magma D
yuno_fild03,34,143,5 script Kafra Express::D_Magma 115,{
callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"yuno_fild03",35,135;
yuno_fild03.gat,34,143,5 script Kafra Express::D_Magma 115,{
callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"yuno_fild03.gat",35,135;
}
//Odin Temple
odin_tem01.gat,100,149,2 script Kafra Express::D_Odin 117,{
callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"odin_tem01.gat",100,142;
}
//Orc D North
in_orcs01,24,165,5 script Kafra Express::D_OrcsN 116,{
callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"in_orcs01",34,165;
in_orcs01.gat,24,165,5 script Kafra Express::D_OrcsN 116,{
callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"in_orcs01.gat",34,165;
}
//Orc D South
in_orcs01,103,99,5 script Kafra Express::D_OrcsS 116,{
callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"in_orcs01",112,99;
in_orcs01.gat,103,99,5 script Kafra Express::D_OrcsS 116,{
callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"in_orcs01.gat",112,99;
}
//Payon D
pay_arche,38,138,6 script Kafra Express::D_Payon 112,{
callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"pay_arche",41,133;
pay_arche.gat,38,138,6 script Kafra Express::D_Payon 112,{
callfunc "F_KafraExpress","Kafra Express","kafra_06",1,"pay_arche.gat",41,133;
}
//Pyramids D
moc_ruins,60,166,5 script Kafra Express::D_Pyramid 115,{
callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"moc_ruins",62,162;
moc_ruins.gat,60,166,5 script Kafra Express::D_Pyramid 115,{
callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"moc_ruins.gat",62,162;
}
//Rachel Temple
ra_temin.gat,268,325,5 script Kafra Express::D_Rachel 116,{
callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"ra_temin.gat",284,325;
}
//Sphinx D
moc_fild19,106,97,8 script Kafra Express::D_Sphinx 115,{
callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"moc_fild19",107,100;
moc_fild19.gat,106,97,8 script Kafra Express::D_Sphinx 115,{
callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"moc_fild19.gat",107,100;
}
//Sunken Ship
alb2trea,75,101,5 script Kafra Express::D_Sunken 114,{
callfunc "F_KafraExpress","Kafra Express","kafra_04",1,"alb2trea",87,103;
alb2trea.gat,75,101,5 script Kafra Express::D_Sunken 114,{
callfunc "F_KafraExpress","Kafra Express","kafra_04",1,"alb2trea.gat",87,103;
}
//Thanatos Tower
tha_scene01,139,194,0 script Kafra Express::D_Thanatos 113,{
callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"tha_scene01",132,220;
tha_scene01.gat,139,194,0 script Kafra Express::D_Thanatos 113,{
callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"tha_scene01.gat",132,220;
}
//Toy Factory
xmas,138,307,6 script Kafra Express::D_Toy 116,{
callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"xmas",144,306;
xmas.gat,138,307,6 script Kafra Express::D_Toy 116,{
callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"xmas.gat",144,306;
}
//Turtle Cave Entrance
tur_dun01,147,237,6 script Kafra Express::D_TCave 113,{
callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"tur_dun01",155,234;
tur_dun01.gat,147,237,6 script Kafra Express::D_TCave 113,{
callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"tur_dun01.gat",155,234;
}
//Turtle Island Entrance
tur_dun01,148,54,6 script Kafra Express::D_TIsland 113,{
callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"tur_dun01",153,47;
tur_dun01.gat,148,54,6 script Kafra Express::D_TIsland 113,{
callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"tur_dun01.gat",153,47;
}
//Umbala D
umbala,120,284,3 script Kafra Express::D_Umbala 117,{
callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"umbala",113,282;
umbala.gat,120,284,3 script Kafra Express::D_Umbala 117,{
callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"umbala.gat",113,282;
}
//Guild War Kafras: Disabled by Default!
//Al De Baran Guild Grounds
//alde_gld,156,165,3 script Kafra Express::G_AlDeBaran 116,{
// callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"alde_gld",156,157;
//alde_gld.gat,156,165,3 script Kafra Express::G_AlDeBaran 116,{
// callfunc "F_KafraExpress","Kafra Express","kafra_02",1,"alde_gld.gat",156,157;
//}
//Geffen Guild Grounds
//gef_fild13,237,182,6 script Kafra Express::G_Geffen 113,{
// callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"gef_fild13",231,181;
//gef_fild13.gat,237,182,6 script Kafra Express::G_Geffen 113,{
// callfunc "F_KafraExpress","Kafra Express","kafra_05",1,"gef_fild13.gat",231,181;
//}
//Payon Guild Grounds
//pay_gld,243,172,6 script Kafra Express::G_Payon 117,{
// callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"pay_gld",243,178;
//pay_gld.gat,243,172,6 script Kafra Express::G_Payon 117,{
// callfunc "F_KafraExpress","Kafra Express","kafra_01",1,"pay_gld.gat",243,178;
//}
//Prontera Guild Grounds
//prt_gld,127,163,5 script Kafra Express::G_Prontera 115,{
// callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"prt_gld",129,170;
//}
//prt_gld.gat,127,163,5 script Kafra Express::G_Prontera 115,{
// callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"prt_gld.gat",129,170;
//}

View File

@@ -3,7 +3,7 @@
//===== By: ==================================================
//= Skotlex
//===== Current Version: =====================================
//= 2.7
//= 2.8
//===== Compatible With: =====================================
//= eAthena SVN R3524+
//===== Description: =========================================
@@ -14,7 +14,7 @@
//= See config.txt for configuration.
//============================================================
- script keInit_bank -1,{
- script keInit_bank {
OnInit: //Load Config
donpcevent "keConfig::OnLoadBank";
end;
@@ -156,7 +156,12 @@ function SF_calcInterest {
}
set @qty,0;
if (#ke_bank > $@kebk_monMaintenance && #ke_bank < $@kebk_capacity)
set @qty,#ke_bank*$@kebk_dayInterest*(@banktick-#ke_banktick)/10000;
{
if (#ke_bank > 1000000) //Overflow protection
set @qty,(#ke_bank/10000)*$@kebk_dayInterest*(@banktick-#ke_banktick);
else
set @qty,#ke_bank*$@kebk_dayInterest*(@banktick-#ke_banktick)/10000;
}
set #ke_banktick,@banktick;
if (@qty == 0) return;
if (@qty < 0) {
@@ -172,3 +177,4 @@ function SF_calcInterest {
} //SF end
}

View File

@@ -3,9 +3,9 @@
//===== By: ==================================================
//= Skotlex
//===== Current Version: =====================================
//= 3.0
//= 3.1
//===== Compatible With: =====================================
//= eAthena SVN3424+
//= eAthena SVN8637+
//===== Description: =========================================
//= Part of the Kafra Express Script Package.
//= Offers broadcasting for party requests, pvp, general
@@ -17,7 +17,7 @@
//= Module are used.
//============================================================
- script keInit_broadcast -1,{
- script keInit_broadcast {
OnInit: //Load Config
donpcevent "keConfig::OnLoadBroadcast";
end;
@@ -70,7 +70,7 @@ function SF_broadcasts {
"- General Anonymous Broadcast ("+@anoncost+"z)"
)) {
case 2: //Party
SF_doBroadcast $@kebc_partyCost,@map$,"The "+callfunc("GF_getJobName",class)+" "+strcharinfo(0)+" (levels "+baselevel+"/"+joblevel+") is looking for a party to join.",0;
SF_doBroadcast $@kebc_partyCost,@map$,"The "+jobname(class)+" "+strcharinfo(0)+" (levels "+baselevel+"/"+joblevel+") is looking for a party to join.",0;
break;
case 3: //Pvp
if ($@kewp_advanced == 0)
@@ -204,21 +204,21 @@ function SF_bcPvp {
"- advertise 'Room Compass'"
)) {
case 2: //Sandwich
SF_doBroadcast @pvpcost,@map$,"The "+callfunc("GF_getJobName", class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Room Sandwich'!",0;
SF_doBroadcast @pvpcost,@map$,"The "+jobname(class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Room Sandwich'!",0;
break;
case 3: //Rockon
SF_doBroadcast @pvpcost,@map$,"The "+callfunc("GF_getJobName", class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Room Rock On'!",0;
SF_doBroadcast @pvpcost,@map$,"The "+jobname(class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Room Rock On'!",0;
break;
case 4: //Room Four
SF_doBroadcast @pvpcost,@map$,"The "+callfunc("GF_getJobName", class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Four Room'!",0;
SF_doBroadcast @pvpcost,@map$,"The "+jobname(class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Four Room'!",0;
break;
case 5: //Undercross
SF_doBroadcast @pvpcost,@map$,"The "+callfunc("GF_getJobName", class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Room Undercross'!",0;
SF_doBroadcast @pvpcost,@map$,"The "+jobname(class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Room Undercross'!",0;
break;
case 6: //Compass
SF_doBroadcast @pvpcost,@map$,"The "+callfunc("GF_getJobName", class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Room Compass'!",0;
SF_doBroadcast @pvpcost,@map$,"The "+jobname(class)+" "+strcharinfo(0)+" is looking for PvP challengers "+@lvls$+"in the 'Room Compass'!",0;
break;
}
} //SF_ end
}
}

View File

@@ -3,9 +3,9 @@
//===== By: ==================================================
//= Skotlex
//===== Current Version: =====================================
//= 1.9
//= 2.0
//===== Compatible With: =====================================
//= eAthena SVN 3424+
//= eAthena SVN8637+
//===== Description: =========================================
//= Part of the Kafra Express Script Package.
//= Offers dying of hair, clothes and hair-style adjusts
@@ -13,7 +13,7 @@
//= See config.txt for configuration.
//============================================================
- script keInit_dye -1,{
- script keInit_dye {
OnInit: //Load Config
donpcevent "keConfig::OnLoadDye";
end;
@@ -24,26 +24,21 @@ function script F_keStylist {
function SF_inputpalette;
function SF_wheelpalette;
set @jobClass,callfunc("GF_getJobLevel",class);
set @maxCDye,0;
switch (@jobClass) {
case 0:
set @maxCDye, $@kedy_clothJN;
break;
case 1:
set @maxCDye, $@kedy_clothJ1ST;
break;
case 2:
set @maxCDye, $@kedy_clothJ2ND;
break;
case 3:
set @maxCDye, $@kedy_clothJSN;
break;
case 4:
set @maxCDye, $@kedy_clothJWED;
break;
}
set @jobClass,eaclass(class);
if (@jobClass == -1)
set @maxCDye,0;
else {
if ((@jobClass&EAJ_BASEMASK) == EAJ_NOVICE) {
if (@jobClass&EAJL_2)
set @maxCDye, $@kedy_clothJSN;
else
set @maxCDye, $@kedy_clothJN;
} else {
if (@jobClass&EAJL_2)
set @maxCDye, $@kedy_clothJ2ND;
else
set @maxCDye, $@kedy_clothJ1ST;
} }
do {
if ($@kedy_enableHairstyle) {
set @kmenu, select(
@@ -136,4 +131,4 @@ function SF_wheelpalette {
emotion e_lv2;
} //SF_ end
}
}

View File

@@ -3,9 +3,9 @@
//===== By: ==================================================
//= Skotlex
//===== Current Version: =====================================
//= 3.5
//= 4.0
//===== Compatible With: =====================================
//= eAthena SVN R3579+
//= eAthena SVN R8840+
//===== Description: =========================================
//= Part of the Kafra Express Script Package.
//= Enables job changing through the class trees.
@@ -13,10 +13,10 @@
//===== Additional Comments: =================================
//= See config.txt for configuration.
//= When using Upper Job policy, previous jobs are stored in
//= the server wide variables kej_class1 and kej_class2
//= the permanent variables kej_class1 and kej_class2
//============================================================
- script keInit_jobchange -1,{
- script keInit_jobchange {
OnInit: //Load Config
donpcevent "keConfig::OnLoadJobChange";
end;
@@ -26,157 +26,116 @@ function script F_keJobChange {
function SF_to1stJob;
function SF_to2ndJob;
function SF_getJobIndex;
function SF_getJobNames;
function SF_testChangeJob;
function SF_changeJob;
set @job, callfunc("GF_getJobLevel", class);
set @upper, Upper; //Because it is changed when rebirthing
set @job, eaClass(class);
set @type, @job&~EAJ_UPPERMASK; //Because it is changed when rebirthing
set @reset, 0; //Base Level is reset only on rebirths
switch (@job) {
case 0: //Novices
if ((@job&EAJ_BASEMASK) == EAJ_NOVICE)
{ //Novices
if (@job&EAJL_2) //S. Novices
goto L_FAIL;
if ($@kejc_skipNovice)
set @jobLv, 0; //jobLv is used again when checking for S.Novice's base level restriction.
else
set @jobLv, 10;
if (SF_testChangeJob(0,0,@jobLv))
SF_to1stJob(0);
break;
case 1: //First Classes
} else
if(@job&EAJL_2){
//Second classes
if (@job&~EAJ_UPPERMASK) //rebirth/baby
goto L_FAIL;
if (SF_testChangeJob($@kejc_costRebirth,$@kejc_baseRebirth,$@kejc_jobRebirth)) {
set @type, EAJL_UPPER;
if ($@kejc_skipNovice)
SF_to1stJob(1);
else
SF_changeJob @job,EAJ_NOVICE_HIGH,0,0,$@kejc_costRebirth,1,$@kejc_rebirthReset;
}
} else {
//First classes
if (SF_testChangeJob($@kejc_cost2ND,$@kejc_base2ND,$@kejc_job2ND))
SF_to2ndJob();
break;
case 2: //Second Classes
if (Upper == 0 && BaseClass != Job_Taekwon) {
if (SF_testChangeJob($@kejc_costRebirth,$@kejc_baseRebirth,$@kejc_jobRebirth)) {
set @upper, 1;
if ($@kejc_skipNovice)
SF_to1stJob(1);
else
SF_changeJob @job,Upper,Job_Novice,1,0,0,$@kejc_costRebirth,1,$@kejc_rebirthReset;
}
break;
}
default: //Dead End
callfunc "F_keIntro", e_swt2, "I cannot change you from your current job.";
break;
}
return;
L_FAIL:
//Dead End
callfunc "F_keIntro", e_swt2, "I cannot change you from your current job.";
return;
//Handles changing to 1st job.
function SF_to1stJob {
setarray @classes[0],
EAJ_Acolyte|@type,
EAJ_Archer|@type,
EAJ_Mage|@type,
EAJ_Merchant|@type,
EAJ_Swordman|@type,
EAJ_Thief|@type,
EAJ_Taekwon|@type,
EAJ_Super_Novice|@type,
EAJ_GunSlinger|@type,
EAJ_Ninja|@type;
do {
set @submenu, 1;
if (@upper == 1 && $@kejc_upperPolicy && kej_class1) {
switch (kej_class1) {
case Job_Acolyte:
set @submenu, 2;
break;
case Job_Archer:
set @submenu, 3;
break;
case Job_Mage:
set @submenu, 4;
break;
case Job_Merchant:
set @submenu, 5;
break;
case Job_Swordman:
set @submenu, 6;
break;
case Job_Thief:
set @submenu, 7;
break;
case Job_Taekwon:
set @submenu, 8;
break;
set @newjob, -1;
if (@type == EAJL_UPPER && $@kejc_upperPolicy && kej_class1) {
set @newjob, eaclass(kej_class1);
set @newjob, (@newjob&EAJ_UPPERMASK)|@type;
if (roclass(@newjob) == -1)
set @newjob, -1;
set @submenu, 1;
}
if (@newjob == -1) {
SF_getJobNames getarraysize(@classes);
if (@type&EAJL_UPPER || $@kejc_disable&1)
set @names$[7], ""; //No S.Novice
if (@type&~EAJ_UPPERMASK)
{ //No TK/NJ/GS for Baby/Advanced
set @names$[6], "";
set @names$[8], "";
set @names$[9], "";
} else {
if ($@kejc_disable&2) //No TK
set @names$[6], "";
if ($@kejc_disable&4) //No GS
set @names$[8], "";
if ($@kejc_disable&8) //No NJ
set @names$[9], "";
}
set @submenu, select(
"- Cancel job change",
@names$[0], @names$[1], @names$[2],
@names$[3], @names$[4], @names$[5],
@names$[6], @names$[7], @names$[8],
@names$[9]
);
if (@submenu > 1) {
if (@submenu == 9 && //S. Novice's own change check.
SF_testChangeJob(0,$@kejc_baseSN,@jobLv) == 0)
return;
set @newjob, @classes[@submenu-2];
}
}
if (@submenu == 1) {
SF_getJobNames 8,Job_Acolyte,Job_Archer,Job_Mage,Job_Merchant,Job_Swordman,Job_Thief,Job_Taekwon,Job_SuperNovice;
switch (@upper) {
case 0: //All
set @submenu, select(
"- Cancel job change",
"- "+@name1$,
"- "+@name2$,
"- "+@name3$,
"- "+@name4$,
"- "+@name5$,
"- "+@name6$,
"- "+@name7$,
"- "+@name8$
);
break;
case 1: //No Taekwon/S.Novice
set @submenu, select(
"- Cancel job change",
"- "+@name1$,
"- "+@name2$,
"- "+@name3$,
"- "+@name4$,
"- "+@name5$,
"- "+@name6$
);
break;
case 2: //No Taekwon
set @submenu, select(
"- Cancel job change",
"- "+@name1$,
"- "+@name2$,
"- "+@name3$,
"- "+@name4$,
"- "+@name5$,
"- "+@name6$,
"- "+@name8$
);
if (@submenu == 8)
set @submenu, 9;
break;
}
}
switch (@submenu) {
case 2: //Acolyte
set @newJob,Job_Acolyte;
set @weapon, $@kejc_wAcolyte;
break;
case 3: //Archer
set @newJob,Job_Archer;
set @weapon, $@kejc_wArcher;
break;
case 4: //Mage
set @newJob,Job_Mage;
set @weapon, $@kejc_wMage;
break;
case 5: //Merchant
set @newJob,Job_Merchant;
set @weapon, $@kejc_wMerchant;
break;
case 6: //Swordman
set @newJob,Job_Swordman;
set @weapon, $@kejc_wSwordman;
break;
case 7: //Thief
set @newJob,Job_Thief;
set @weapon, $@kejc_wThief;
break;
case 8: //Taekwon
set @newJob,Job_Taekwon;
set @weapon, $@kejc_wTaekwon;
break;
case 9: //S. Novice
set @newJob,Job_SuperNovice;
set @weapon, $@kejc_wSuperNovice;
if (SF_testChangeJob(0,$@kejc_baseSN,@jobLv) == 0)
return;
break;
}
if (@submenu > 1) {
if (@newjob > -1) {
set @i, SF_getJobIndex(@newjob);
if (@i > -1)
set @weapon, $@kejc_weapon1[@i];
else
set @weapon, 0;
if (getarg(0)) { //Skipping High Novice, charge rebirth costs.
if (SF_changeJob(@job,Upper,@newJob,1,@weapon,0,$@kejc_costRebirth,2,$@kejc_rebirthReset))
if (SF_changeJob(@job,@newJob,@weapon,0,$@kejc_costRebirth,2,$@kejc_rebirthReset))
return;
} else {
if (SF_changeJob(@job,Upper,@newJob,@upper,@weapon,0,0,2,0))
if (SF_changeJob(@job,@newJob,@weapon,0,0,2,0))
return;
}
}
@@ -185,179 +144,50 @@ function SF_to1stJob {
function SF_to2ndJob {
do {
set @submenu, 1;
if (@upper == 1 && $@kejc_upperPolicy && kej_class2) {
switch (kej_class2) {
case Job_Priest:
case Job_Hunter:
case Job_Wizard:
case Job_Blacksmith:
case Job_Knight:
case Job_Knight2:
case Job_Assassin:
case Job_Star_Gladiator:
case Job_Star_Gladiator2:
set @submenu, 2;
break;
case Job_Monk:
case Job_Bard:
case Job_Dancer:
case Job_Sage:
case Job_Alchem:
case Job_Crusader:
case Job_Crusader2:
case Job_Rogue:
case Job_Soul_Linker:
set @submenu, 3;
break;
}
set @newjob, -1;
if (@type == EAJL_UPPER && $@kejc_upperPolicy && kej_class2) {
set @newjob, eaclass(kej_class2);
set @newjob, (@newjob&EAJ_UPPERMASK)|@type;
if (roclass(@newjob) == -1)
set @newjob, -1; //Invalid class.
else
if ((@newjob&EAJ_BASEMASK) != (@job&EAJ_BASEMASK))
set @newjob, -1; //Saved next job does not corresponds to current 1st!
}
if (@submenu == 1) { //Fetch from menu.
switch (BaseClass) {
case Job_Acolyte:
SF_getJobNames 2,Job_Priest,Job_Monk;
break;
case Job_Archer:
SF_getJobNames 3,Job_Hunter,Job_Bard,Job_Dancer;
if (sex == 0)
set @name2$, @name3$;
break;
case Job_Mage:
SF_getJobNames 2,Job_Wizard,Job_Sage;
break;
case Job_Merchant:
SF_getJobNames 2,Job_Blacksmith,Job_Alchem;
break;
case Job_Swordman:
SF_getJobNames 2,Job_Knight,Job_Crusader;
break;
case Job_Thief:
SF_getJobNames 2,Job_Assassin,Job_Rogue;
break;
case Job_Taekwon:
SF_getJobNames 2,Job_Star_Gladiator,Job_Soul_Linker;
break;
default:
callfunc "F_keIntro", e_swt2, "I don't know how to change you from your current job.";
if (@newjob == -1) { //Fetch from menu.
setarray @classes[0],
(@job&EAJ_UPPERMASK)|@type|EAJL_2_1,
(@job&EAJ_UPPERMASK)|@type|EAJL_2_2;
if (roclass(@classes[0]) == -1)
{ //Can't upgrade?
callfunc "F_keIntro", e_swt2, "I cant' change you from your current job.";
return;
}
SF_getJobNames 2;
set @submenu, select(
"- Cancel job change",
"- "+@name1$,
"- "+@name2$
@names$[0],@names$[1]
);
if (@submenu > 1)
set @newjob, @classes[@submenu-2];
}
switch (BaseClass) {
case Job_Acolyte:
switch (@submenu) {
case 2: //Priest
set @newJob,Job_Priest;
set @weapon,$@kejc_wPriest;
set @weapon2,$@kejc_w2Priest;
break;
case 3: //Monk
set @newJob,Job_Monk;
set @weapon,$@kejc_wMonk;
set @weapon2,$@kejc_w2Monk;
break;
}
break;
case Job_Archer:
switch (@submenu) {
case 2: //Hunter
set @newJob,Job_Hunter;
set @weapon,$@kejc_wHunter;
set @weapon2,$@kejc_w2Hunter;
break;
case 3: //Bard/Dancer
if (sex == 1) { //Bard
set @newJob,Job_Bard;
set @weapon,$@kejc_wBard;
set @weapon2,$@kejc_w2Bard;
} else { //Dancer
set @newJob,Job_Dancer;
set @weapon,$@kejc_wDancer;
set @weapon2,$@kejc_w2Dancer;
if (@newjob > -1) {
set @i, SF_getJobIndex(@newjob);
if (@i > -1) {
if (@newjob&EAJL_2_2) { //2-2 classes
set @weapon, $@kejc_weapon_22[@i];
set @weapon2,$@kejc_weapon2_22[@i];
} else { //2-1 classes
set @weapon, $@kejc_weapon_21[@i];
set @weapon2,$@kejc_weapon2_21[@i];
}
break;
} else {
set @weapon, 0;
set @weapon2, 0;
}
break;
case Job_Mage:
switch (@submenu) {
case 2: //Wizard
set @newJob,Job_Wizard;
set @weapon,$@kejc_wWizard;
set @weapon2,$@kejc_w2Wizard;
break;
case 3: //Sage
set @newJob,Job_Sage;
set @weapon,$@kejc_wSage;
set @weapon2,$@kejc_w2Sage;
break;
}
break;
case Job_Merchant:
switch (@submenu) {
case 2: //Blacksmith
set @newJob,Job_Blacksmith;
set @weapon,$@kejc_wBlacksmith;
set @weapon2,$@kejc_w2Blacksmith;
break;
case 3: //Alchemist
set @newJob,Job_Alchem;
set @weapon,$@kejc_wAlchemist;
set @weapon2,$@kejc_w2Alchemist;
break;
}
break;
case Job_Swordman:
switch (@submenu) {
case 2: //Knight
set @newJob,Job_Knight;
set @weapon,$@kejc_wKnight;
set @weapon2,$@kejc_w2Knight;
break;
case 3: //Crusader
set @newJob,Job_Crusader;
set @weapon,$@kejc_wCrusader;
set @weapon2,$@kejc_w2Crusader;
break;
default:
mes "uh oh";
break;
}
break;
case Job_Thief:
switch (@submenu) {
case 2: //Assassin
set @newJob,Job_Assassin;
set @weapon,$@kejc_wAssassin;
set @weapon2,$@kejc_w2Assassin;
break;
case 3: //Rogue
set @newJob,Job_Rogue;
set @weapon,$@kejc_wRogue;
set @weapon2,$@kejc_w2Rogue;
break;
}
break;
case Job_Taekwon:
switch (@submenu) {
case 2: //Star Gladiator
set @newJob,Job_Star_Gladiator;
set @weapon,$@kejc_wStarGladiator;
set @weapon2,$@kejc_w2StarGladiator;
break;
case 3: //Soul Linker
set @newJob,Job_Soul_Linker;
set @weapon,$@kejc_wSoulLinker;
set @weapon2,$@kejc_w2SoulLinker;
break;
}
break;
}
if (@submenu > 1) {
if (SF_changeJob(@job,Upper,@newJob,@upper,@weapon,@weapon2,$@kejc_cost2ND,0,0))
if (SF_changeJob(@job,@newJob,@weapon,@weapon2,$@kejc_cost2ND,0,0))
return;
}
} while (@submenu > 1);
@@ -370,9 +200,9 @@ function SF_testChangeJob {
if (Zeny < getarg(0))
set @fail, 1;
if (BaseLevel < getarg(1))
set @fail, @fail+2;
set @fail, @fail|2;
if (JobLevel < getarg(2))
set @fail, @fail+4;
set @fail, @fail|4;
if (@fail > 0) {
if (@fail&1)
mes "You need "+getarg(0)+"z for the conversion process.";
@@ -391,11 +221,11 @@ function SF_testChangeJob {
return 1;
}
//SubFunction: SF_changeJob (CurrentJobLv, CurrentJobType, NewJobBase, NewJobType
//Weapon, Weapon2, Zeny, WipeSkills, ResetLv)
//SubFunction: SF_changeJob (CurrentJob, NewJob, Weapon, Weapon2,
// Zeny, WipeSkills, ResetLv)
//Attempts to change to the Jobgiven.
//CurrentJobLv is 0-3 (novice, 1st class, 2nd class, s.novice)
//Type is 0-2 (Normal, Advanced Class, Baby)
//CurrentJob is actual job in eA format.
//NewJob is job to change to in eA format.
//Weapon is the ID of the weapon to grant
//Weapon2 is the alternative weapon granted when your job level is above $@kejc_wBonusLv
//Zeny is the money required (if negative, it is money awarded)
@@ -404,18 +234,23 @@ function SF_testChangeJob {
//Reset Level indicates the base lv must be reset to 1.
//Note: Zeny/Base/Job requirements should had been checked with SF_testChangeJob already!
function SF_changeJob {
set @newjob,getarg(2);
set @newtype,getarg(3);
set @weapon,getarg(4);
set @weapon2,getarg(5);
set @cost,getarg(6);
set @wipeSkill,getarg(7);
set @resetLv,getarg(8);
set @job, getarg(0);
set @newjob,getarg(1);
set @weapon,getarg(2);
set @weapon2,getarg(3);
set @cost,getarg(4);
set @wipeSkill,getarg(5);
set @resetLv,getarg(6);
set @jobStr$, callfunc("GF_getJobName2",@newjob, @newtype);
if (roclass(@newjob) == -1) { //Invalid job?
callfunc "F_keIntro", -1, "I can't change you to this job...";
return 0;
}
set @jobStr$, jobname(roclass(@newjob));
if (@wipeSkill == 0 && SkillPoint > 0 && $@kejc_skillsPolicy == 1) {
set @selection, select(
"- Do not change yet",
"- Do not change yet.",
"- Change to "+@jobStr$+" (skill points lost)",
"- View details"
);
@@ -441,14 +276,14 @@ function SF_changeJob {
if (@cost > 0)
mes "- You will be charged "+@cost+"z.";
else if (@cost < 0)
mes "- You will be aided with "+(0-@cost)+"z.";
mes "- You will be awarded with "+(0-@cost)+"z.";
if (@weapon > 0) {
if (@weapon2 > 0 && $@kejc_wBonusLv) {
if (JobLevel < $@kejc_wBonusLv) {
mes "- You will receive a "+getitemname(@weapon)+"["+getitemslots(@weapon)+"].";
mes "- If you wait until Job Lv"+$@kejc_wBonusLv+", you can receive instead a "+getitemname(@weapon2)+"["+getitemslots(@weapon)+"].";
mes "- If you wait until Job Lv"+$@kejc_wBonusLv+", you can receive instead a "+getitemname(@weapon2)+"["+getitemslots(@weapon2)+"].";
} else {
mes "- You will receive a "+getitemname(@weapon2)+"["+getitemslots(@weapon)+"] for reaching Job Lv"+$@kejc_wBonusLv+".";
mes "- You will receive a "+getitemname(@weapon2)+"["+getitemslots(@weapon2)+"] for reaching Job Lv"+$@kejc_wBonusLv+".";
}
} else
mes "- You will receive a "+getitemname(@weapon)+".";
@@ -465,16 +300,15 @@ function SF_changeJob {
case 2: //Change
//Set/Unset job path variables as needed.
if($@kejc_upperPolicy) {
set @class,getarg(0);
set @type, getarg(1);
if(@class == 1 && @type == 0)
if((@job&EAJ_BASEMASK) == @job && @job != EAJ_NOVICE)
set kej_class1,class; //Advancing to second class, so...
if(@class == 2)
if(@job&EAJL_2)
set kej_class2,class; //Only way of being here is by doing a rebirth
if(@type > 0)
if(@job&~EAJ_UPPERMASK) {
set kej_class1,0; //Clear when one is a high class
if(@type > 0 && @class == 1)
set kej_class2,0; //Clear when leaving high 1st class
if(@job&~EAJL_2 && @job&EAJ_BASEMASK != EAJ_NOVICE)
set kej_class2,0; //Clear when leaving high 1st class
}
}
if (@resetLv) {
jobchange Job_Novice_High; //Done to give players those 100 points from High classes
@@ -490,44 +324,62 @@ function SF_changeJob {
skill 1,9,0;
if($@kejc_resetDye)
setlook 7,0;
jobchange @newjob, @newtype;
if ($@kejc_weaponPolicy && @weapon > 0) {
if ($@kejc_wBonusLv && @weapon2 > 0 && JobLevel >= $@kejc_wBonusLv)
getitem @weapon2,1;
else
getitem @weapon,1;
}
jobchange roclass(@newjob);
if ($@kejc_announce)
announce strcharinfo(0)+" has been promoted to "+@jobStr$+"!",8;
set Zeny,Zeny-@cost;
if ($@kejc_weaponPolicy && @weapon > 0) {
if ($@kejc_wBonusLv && @weapon2 > 0) {
if (JobLevel < $@kejc_wBonusLv)
getitem @weapon,1;
else
getitem @weapon2,1;
} else
getitem @weapon,1;
}
emotion e_grat;
return 1;
default: //Cancel...
callfunc "F_keIntro", e_dots, "...alright.";
return 0;
}
}
//SubFunction: SF_getJobNames(Qty, Jobid1, Jobid2,...)
//Workaround until eA gets a fix for the bug where you can't use callfunc or
//callsub within a menu
function SF_getJobNames {
switch (getarg(0)) {
case 8:
set @name8$, callfunc("GF_getJobName2",getarg(8),@upper);
set @name7$, callfunc("GF_getJobName2",getarg(7),@upper);
set @name6$, callfunc("GF_getJobName2",getarg(6),@upper);
set @name5$, callfunc("GF_getJobName2",getarg(5),@upper);
set @name4$, callfunc("GF_getJobName2",getarg(4),@upper);
case 3:
set @name3$, callfunc("GF_getJobName2",getarg(3),@upper);
case 2:
set @name2$, callfunc("GF_getJobName2",getarg(2),@upper);
set @name1$, callfunc("GF_getJobName2",getarg(1),@upper);
//SubFunction: SF_getJobIndex(Job)
//Given a job in eA format, retrieves the basic index which is used for the
//config arrays.
function SF_getJobIndex {
set @i, getarg(0);
set @i, @i&EAJ_BASEMASK;
switch (@i) {
case EAJ_ACOLYTE:
return 0;
case EAJ_ARCHER:
return 1;
case EAJ_MAGE:
return 2;
case EAJ_MERCHANT:
return 3;
case EAJ_SWORDMAN:
return 4;
case EAJ_THIEF:
return 5;
case EAJ_TAEKWON:
return 6;
case EAJ_NOVICE: //Super Novice, actually
return 7;
case EAJ_GUNSLINGER:
return 8;
case EAJ_NINJA:
return 9;
default:
return -1;
}
return;
}
}
//SubFunction: SF_getJobNames(Qty)
//Fills an array @names$ with the job names taken from the array "classes",
// making each entry start with "- " followed by the job name.
function SF_getJobNames {
set @size, getarg(0);
for (set @i, 0; @i < @size; set @i, @i+1)
setd "@names$["+@i+"]", "- "+jobname(roclass(@classes[@i]));
}
}

View File

@@ -3,9 +3,9 @@
//===== By: ==================================================
//= Skotlex
//===== Current Version: =====================================
//= 3.4
//= 3.8
//===== Compatible With: =====================================
//= eAthena SVN R7896+
//= eAthena SVN8840+
//===== Description: =========================================
//= Part of the Kafra Express Script Package.
//= Enables job changing among classes of the same 'type'
@@ -19,7 +19,7 @@
//= kej_prev_dye (cloth dye)
//============================================================
- script keInit_jobSwap -1,{
- script keInit_jobSwap {
OnInit: //Load Config
donpcevent "keConfig::OnLoadJobSwap";
end;
@@ -36,18 +36,11 @@ function SF_testSwap;
function SF_swapJob;
function SF_getJobNames;
set @thisLevel, callfunc("GF_getJobLevel", Class);
set @prevId, kej_prev_job;
set @thisJob, eaclass(Class);
set @type, @thisJob&~EAJ_UPPERMASK;
set @prevJob, eaclass(kej_prev_job);
set @prevLv, kej_prev_joblv;
set @prevLevel, 0;
set @prevType, 0;
if ($@kejs_revertPolicy && @prevId && @prevLv) {
set @prevLevel, callfunc("GF_getJobLevel", @prevId);
set @prevType, callfunc("GF_getJobType", @prevId);
}
if (SF_canRevert())
{ //Qualifies for Reverting
do {
@@ -62,7 +55,7 @@ function SF_getJobNames;
return;
break;
case 3: //Switch
if (SF_switch() == 0)
if (SF_switch())
return;
break;
}
@@ -80,166 +73,170 @@ function SF_getJobNames;
//SubFunction SF_canRevert, specifies if the character can revert to previous job.
function SF_canRevert {
if ($@kejs_revertPolicy == 0 || @prevId == 0 || (Upper == 2 && @prevType != 2))
if ($@kejs_revertPolicy == 0 || @prevLv == 0 ||
(@thisJob&EAJL_BABY != @prevJob&EAJL_BABY))
return 0;
if((@thisLevel == @prevLevel && Upper == @prevType) || $@kejs_revertPolicy == 2)
if ($@kejs_revertPolicy == 2)
return 1;
if ($@kejs_SNpolicy && @prevType == Upper && ((@prevLevel == 3 && @thisLevel == 1) || (@prevLevel == 1 && @thisLevel == 3)))
if ((@thisJob&EAJ_BASEMASK) == EAJ_NOVICE)
{
if ($@kejs_disable&1)
return 0;
if (@prevJob&(EAJL_UPPER|EAJL_2))
return 0;
return 1;
return 0;
}
if ((@prevJob&EAJ_BASEMASK) == EAJ_NOVICE)
{
if ($@kejs_disable&1)
return 0;
if (@thisJob&(EAJL_UPPER|EAJL_2))
return 0;
return 1;
}
if (@thisJob&~EAJ_UPPERMASK != @prevJob&~EAJ_UPPERMASK)
return 0;
if (@thisJob&EAJL_2 && !(@prevJob&EAJL_2))
return 0;
if (@prevJob&EAJL_2 && !(@thisJob&EAJL_2))
return 0;
return 1;
}
//SubFunction SF_canSwitch, specifies if character can change to another job.
function SF_canSwitch {
if (@thisLevel == 3)
return $@kejs_SNpolicy;
if (@thisLevel == 1 || @thisLevel == 2)
return 1;
return 0;
switch(@thisJob&EAJ_BASEMASK) {
case EAJ_NOVICE:
if ($@kejs_disable&1 || !@thisJob&EAJL_2)
return 0;
break;
case EAJ_TAEKWON:
if ($@kejs_disable&2)
return 0;
break;
case EAJ_GUNSLINGER:
if ($@kejs_disable&4)
return 0;
break;
case EAJ_NINJA:
if ($@kejs_disable&8)
return 0;
break;
}
return 1;
}
//Sub Function SF_switch. Presents the switch job menu. Returns 1 only if the
//menu was left by picking "Cancel".
function SF_switch {
switch (@thisLevel) {
case 1:
case 3: //First Classes
set @cost, SF_calcSwapCost($@kejs_job1ST, $@kejs_cost1ST, $@kejs_discount1ST);
set @preserve, $@kejs_preserve1ST;
if (SF_testSwap($@kejs_job1ST, @cost)) {
do {
if ($@kejs_SNpolicy && Upper != 1) { //S. Novice Menu
SF_getJobNames 7,Job_Acolyte,Job_Archer,Job_Mage,Job_Merchant,Job_Swordman,Job_Thief,Job_SuperNovice;
set @kmenu, select(
"- Cancel job swap",
"- "+@name1$,"- "+@name2$,"- "+@name3$,"- "+@name4$,"- "+@name5$,"- "+@name6$,"- "+@name7$
);
} else {
SF_getJobNames 6,Job_Acolyte,Job_Archer,Job_Mage,Job_Merchant,Job_Swordman,Job_Thief;
set @kmenu, select(
"- Cancel job swap",
"- "+@name1$,"- "+@name2$,"- "+@name3$,"- "+@name4$,"- "+@name5$,"- "+@name6$
);
}
switch (@kmenu) {
case 2: //Acolyte
if (SF_swapJob(callfunc("GF_getJobId", Job_Acolyte, Upper),@cost,@preserve))
return 0;
break;
case 3: //Archer
if (SF_swapJob(callfunc("GF_getJobId", Job_Archer, Upper),@cost,@preserve))
return 0;
break;
case 4: //Mage
if (SF_swapJob(callfunc("GF_getJobId", Job_Mage, Upper),@cost,@preserve))
return 0;
break;
case 5: //Merchant
if (SF_swapJob(callfunc("GF_getJobId", Job_Merchant, Upper),@cost,@preserve))
return 0;
break;
case 6: //Swordman
if (SF_swapJob(callfunc("GF_getJobId", Job_Swordman, Upper),@cost,@preserve))
return 0;
break;
case 7: //Thief
if (SF_swapJob(callfunc("GF_getJobId", Job_Thief, Upper),@cost,@preserve))
return 0;
break;
case 8: //S. Novice
if (SF_swapJob(callfunc("GF_getJobId", Job_SuperNovice, Upper),@cost,@preserve))
return 0;
break;
}
} while (@kmenu > 1);
return 1;
}
break;
case 2: //Second Classes
if (@thisJob&EAJL_2 && (@thisJob&EAJ_BASEMASK) != EAJ_NOVICE) {
//Second Classes
set @cost, SF_calcSwapCost($@kejs_job2ND, $@kejs_cost2ND, $@kejs_discount2ND);
set @preserve, $@kejs_preserve2ND;
if (SF_testSwap($@kejs_job2ND, @cost)) {
do {
if (sex == 1) {
SF_getJobNames 12,Job_Alchem,Job_Assassin,Job_Bard,Job_Blacksmith,Job_Crusader,Job_Hunter,Job_Knight,Job_Monk,Job_Priest,Job_Rogue,Job_Sage,Job_Wizard;
set @kmenu, select(
"- Cancel job change",
"- "+@name1$,"- "+@name2$,"- "+@name3$,"- "+@name4$,"- "+@name5$,"- "+@name6$,
"- "+@name7$,"- "+@name8$,"- "+@name9$,"- "+@name10$,"- "+@name11$,"- "+@name12$
);
if (@kmenu >= 7) //Dancer should be at pos 7.
set @kmenu, @kmenu+1;
} else {
SF_getJobNames 12,Job_Alchem,Job_Assassin,Job_Blacksmith,Job_Crusader,Job_Dancer,Job_Hunter,Job_Knight,Job_Monk,Job_Priest,Job_Rogue,Job_Sage,Job_Wizard;
set @kmenu, select(
"- Cancel job change",
"- "+@name1$,"- "+@name2$,"- "+@name3$,"- "+@name4$,"- "+@name5$,"- "+@name6$,
"- "+@name7$,"- "+@name8$,"- "+@name9$,"- "+@name10$,"- "+@name11$,"- "+@name12$
);
if (@kmenu >= 4) //Bard should be at pos 4.
set @kmenu, @kmenu+1;
}
switch (@kmenu)
{
case 2: //ALCHEMIST
if (SF_swapJob(callfunc("GF_getJobId", Job_Alchem, Upper),@cost,@preserve))
return 0;
break;
case 3: //ASSASSIN
if (SF_swapJob(callfunc("GF_getJobId", Job_Assassin, Upper),@cost,@preserve))
return 0;
break;
case 4: //BARD
if (SF_swapJob(callfunc("GF_getJobId", Job_Bard, Upper),@cost,@preserve))
return 0;
break;
case 5: //BLACKSMITH
if (SF_swapJob(callfunc("GF_getJobId", Job_Blacksmith, Upper),@cost,@preserve))
return 0;
break;
case 6: //CRUSADER
if (SF_swapJob(callfunc("GF_getJobId", Job_Crusader, Upper),@cost,@preserve))
return 0;
break;
case 7: //DANCER
if (SF_swapJob(callfunc("GF_getJobId", Job_Dancer, Upper),@cost,@preserve))
return 0;
break;
case 8: //HUNTER
if (SF_swapJob(callfunc("GF_getJobId", Job_Hunter, Upper),@cost,@preserve))
return 0;
break;
case 9: //KNIGHT
if (SF_swapJob(callfunc("GF_getJobId", Job_Knight, Upper),@cost,@preserve))
return 0;
break;
case 10: //MONK
if (SF_swapJob(callfunc("GF_getJobId", Job_Monk, Upper),@cost,@preserve))
return 0;
break;
case 11: //PRIEST
if (SF_swapJob(callfunc("GF_getJobId", Job_Priest, Upper),@cost,@preserve))
return 0;
break;
case 12: //ROGUE
if (SF_swapJob(callfunc("GF_getJobId", Job_Rogue, Upper),@cost,@preserve))
return 0;
break;
case 13: //SAGE
if (SF_swapJob(callfunc("GF_getJobId", Job_Sage, Upper),@cost,@preserve))
return 0;
break;
case 14: //WIZARD
if (SF_swapJob(callfunc("GF_getJobId", Job_Wizard, Upper),@cost,@preserve))
return 0;
break;
}
} while (@kmenu > 1);
return 1;
if (!SF_testSwap($@kejs_job2ND, @cost))
return 0;
setarray @classes[0],
EAJ_Assassin|@type,
EAJ_Rogue|@type,
EAJ_Blacksmith|@type,
EAJ_Alchemist|@type,
EAJ_Hunter|@type,
EAJ_BardDancer|@type,
EAJ_Knight|@type,
EAJ_Crusader|@type,
EAJ_Priest|@type,
EAJ_Monk|@type,
EAJ_Wizard|@type,
EAJ_Sage|@type,
EAJ_Star_Gladiator|@type,
EAJ_Soul_Linker|@type;
SF_getJobNames getarraysize(@classes);
if (@type || $@kejs_disable&2)
{ //No SG/SL
set @names$[12], "";
set @names$[13], "";
}
do {
set @kmenu, select(
"- Cancel job change",
@names$[0], @names$[1], @names$[2], @names$[3],
@names$[4], @names$[5], @names$[6], @names$[7],
@names$[8], @names$[9], @names$[10], @names$[11],
@names$[12], @names$[13]
);
if (@kmenu > 1) {
set @job, roclass(@classes[@kmenu-2]);
if (@job > -1 && SF_swapJob(@job,@cost,@preserve))
return 1;
}
} while (@kmenu > 1);
return 0;
} else {
//First Classes
set @cost, SF_calcSwapCost($@kejs_job1ST, $@kejs_cost1ST, $@kejs_discount1ST);
set @preserve, $@kejs_preserve1ST;
if (!SF_testSwap($@kejs_job1ST, @cost))
return 0;
setarray @classes[0],
EAJ_Acolyte|@type,
EAJ_Archer|@type,
EAJ_Mage|@type,
EAJ_Merchant|@type,
EAJ_Swordman|@type,
EAJ_Thief|@type,
EAJ_Taekwon|@type,
EAJ_Super_Novice|@type,
EAJ_GunSlinger|@type,
EAJ_Ninja|@type;
SF_getJobNames getarraysize(@classes);
if ($@kejs_disable&1 || @type&EAJL_UPPER)
set @names$[7], ""; //No S.Novice
if (@type)
{ //No TK/NJ/GS for Baby/Advanced
set @names$[6], "";
set @names$[8], "";
set @names$[9], "";
} else {
if ($@kejs_disable&2) //No TK
set @names$[6], "";
if ($@kejs_disable&4) //No GS
set @names$[8], "";
if ($@kejs_disable&8) //No NJ
set @names$[9], "";
}
do {
set @kmenu, select(
"- Cancel job swap",
@names$[0], @names$[1], @names$[2],
@names$[3], @names$[4], @names$[5],
@names$[6], @names$[7], @names$[8],
@names$[9]
);
if (@kmenu > 1) {
set @job, roclass(@classes[@kmenu-2]);
if (@job > -1 && SF_swapJob(@job,@cost,@preserve))
return 0;
}
} while (@kmenu > 1);
return 0;
}
return 0;
}
//SubFunction: SF_calcSwapCost (MinJob, BaseCost, Discount)
@@ -282,8 +279,8 @@ function SF_swapJob {
return 0;
}
set @newJob$, callfunc("GF_getJobName",@newjobId);
set @oldJob$, callfunc("GF_getJobName",Class);
set @newJob$, jobname(@newjobId);
set @oldJob$, jobname(Class);
set @newjoblv, JobLevel*@preserve/100;
if (@newjoblv > 1) {
@@ -296,10 +293,10 @@ function SF_swapJob {
}
set @basic, getSkilllv(1);
set @preserve, skillpointcount() -JobLevel -@basic +@newjoblv; //Preserve holds the final amount of SkillPoints you should have.
set @skillpoint, skillpointcount() -JobLevel -@basic +@newjoblv; //Preserve holds the final amount of SkillPoints you should have.
if (@preserve < 0) {
callfunc "F_keIntro", e_gasp, "You need "+(-@preserve)+" more skill points to change class!";
if (@skillpoint < 0) {
callfunc "F_keIntro", e_gasp, "You need "+(-@skillpoint)+" more skill points to change class!";
return 0;
}
@@ -311,6 +308,8 @@ function SF_swapJob {
set kej_prev_job, Class;
set kej_prev_joblv, @thisJoblevel;
set kej_prev_skills, SkillPoint;
if($@kejs_saveDye)
set kej_prev_dye,getlook(7);
}
if ($@kejs_announce)
announce strcharinfo(0)+" has changed from "+@oldJob$+" to "+@newJob$+"...",16;
@@ -320,10 +319,10 @@ function SF_swapJob {
jobchange @newjobId, 0;
skill 1,@basic,0;
set JobLevel, @newjoblv;
set SkillPoint, @preserve;
set SkillPoint, @skillpoint;
setoption(0);
sc_end -1;
callfunc "F_keCharge",getarg(2),$@kejs_swapDiscount,1;
callfunc "F_keCharge",getarg(1),$@kejs_swapDiscount,1;
emotion e_ok;
return 1;
@@ -332,11 +331,11 @@ function SF_swapJob {
//SubFunction: SF_revertJob (cost)
//Reverts to the previous job.
function SF_revertJob {
if (Class == kej_prev_job) {
if (@thisJob == @prevJob) {
callfunc "F_keIntro", e_no, "Hmm... You can't go back, because your previous class is the same as your current one??";
return 0;
}
set @newjob$, callfunc ("GF_getJobName",kej_prev_job);
set @newjob$, jobname(kej_prev_job);
set @cost,callfunc("F_keCost",$@kejs_revertCost,$@kejs_revertDiscount);
@@ -377,42 +376,17 @@ function SF_revertJob {
sc_end -1;
if ($@kejs_announce)
announce strcharinfo(0)+" has changed from "+callfunc ("GF_getJobName",@thisJobId)+" to "+@newjob$+"...",16;
announce strcharinfo(0)+" has changed from "+jobname(@thisJobId)+" to "+@newjob$+"...",16;
return 1;
}
//SubFunction: SF_getJobNames(Qty, Jobid1, Jobid2,...)
//Workaround until eA gets a fix for the bug where you can't use callfunc or
//callsub within a menu
//SubFunction: SF_getJobNames(Qty)
//Fills an array @names$ with the job names taken from the array "classes",
// making each entry start with "- " followed by the job name.
function SF_getJobNames {
switch (getarg(0)) {
case 12:
set @name12$, callfunc("GF_getJobName2",getarg(12),Upper);
case 11:
set @name11$, callfunc("GF_getJobName2",getarg(11),Upper);
case 10:
set @name10$, callfunc("GF_getJobName2",getarg(10),Upper);
case 9:
set @name9$, callfunc("GF_getJobName2",getarg(9),Upper);
case 8:
set @name8$, callfunc("GF_getJobName2",getarg(8),Upper);
case 7:
set @name7$, callfunc("GF_getJobName2",getarg(7),Upper);
case 6:
set @name6$, callfunc("GF_getJobName2",getarg(6),Upper);
case 5:
set @name5$, callfunc("GF_getJobName2",getarg(5),Upper);
case 4:
set @name4$, callfunc("GF_getJobName2",getarg(4),Upper);
case 3:
set @name3$, callfunc("GF_getJobName2",getarg(3),Upper);
case 2:
set @name2$, callfunc("GF_getJobName2",getarg(2),Upper);
case 1:
set @name1$, callfunc("GF_getJobName2",getarg(1),Upper);
default:
return;
}
set @size, getarg(0);
for (set @i, 0; @i < @size; set @i, @i+1)
setd "@names$["+@i+"]", "- "+jobname(roclass(@classes[@i]));
}
}
}

View File

@@ -3,7 +3,7 @@
//===== By: ==================================================
//= Skotlex
//===== Current Version: =====================================
//= 5.4
//= 5.7
//===== Compatible With: =====================================
//= eAthena SVN R3424+
//===== Description: =========================================
@@ -23,8 +23,8 @@
function script F_KafraExpress {
set @name$,getarg(0);
set @ke_type,getarg(2);
if ($@kekp_reset)
set @kafraPass,0;
if ($@kekp_reset && @kafraPass > 0)
set @kafraPass,@kafraPass-1;
if (getarg(1) != "")
cutin getarg(1),2;
callfunc "F_keIntro",-1,"";
@@ -352,7 +352,10 @@ function script F_kePass {
return;
}
delitem 1084,1;
set @kafraPass,1;
if ($@kekp_reset > 0)
set @kafraPass,$@kekp_reset;
else
set @kafraPass,1;
callfunc "F_keIntro", e_lv, "Your Kafra Pass has been activated.";
return;
}
@@ -402,4 +405,4 @@ function script F_keWarp {
emotion getarg(2);
warp getarg(3),getarg(4),getarg(5);
end;
}
}

View File

@@ -3,7 +3,7 @@
//===== By: ==================================================
//= Skotlex
//===== Current Version: =====================================
//= 2.7
//= 2.8
//===== Compatible With: =====================================
//= eAthena SVN R3424+
//===== Description: =========================================
@@ -14,7 +14,7 @@
//= See config.txt for configuration.
//============================================================
- script keInit_refine -1,{
- script keInit_refine {
OnInit: //Load Config
donpcevent "keConfig::OnLoadRefine";
end;
@@ -336,4 +336,4 @@ function SF_sellOres {
} while (@submenu > 1);
}
}
}

View File

@@ -13,7 +13,7 @@
//= See config.txt for configuration.
//============================================================
- script keInit_rent -1,{
- script keInit_rent {
OnInit: //Load Config
donpcevent "keConfig::OnLoadRent";
end;
@@ -78,4 +78,4 @@ function script F_keRent {
break;
}
return;
}
}

View File

@@ -13,7 +13,7 @@
//= See config.txt for configuration.
//============================================================
- script keInit_shop -1,{
- script keInit_shop {
OnInit: //Load Config
donpcevent "keConfig::OnLoadShop";
end;
@@ -63,4 +63,4 @@ function script F_keShop {
cutin getarg(1), 255;
callshop @shop$, @kmenu-1;
end;
}
}

View File

@@ -13,7 +13,7 @@
//= See config.txt for configuration.
//============================================================
- script keInit_statmarket -1,{
- script keInit_statmarket {
OnInit: //Load Config
donpcevent "keConfig::OnLoadStatMarket";
end;
@@ -125,4 +125,4 @@ function script F_keStatMarket {
}
} while (@kmenu > 1);
return;
}
}

View File

@@ -13,7 +13,7 @@
//= See config.txt for configuration.
//============================================================
- script keInit_stats -1,{
- script keInit_stats {
OnInit: //Load Config
donpcevent "keConfig::OnLoadStats";
end;
@@ -127,4 +127,4 @@ function SF_statRaise {
} while (@submenu > 1);
}
}
}

View File

@@ -3,7 +3,7 @@
//===== By: ==================================================
//= Skotlex
//===== Current Version: =====================================
//= 1.5
//= 1.6
//===== Compatible With: =====================================
//= eAthena SVN R3424+
//===== Description: =========================================
@@ -13,7 +13,7 @@
//= See config.txt for configuration.
//============================================================
- script keInit_uncard -1,{
- script keInit_uncard {
OnInit: //Load Config
donpcevent "keConfig::OnLoadUncard";
end;
@@ -162,4 +162,4 @@ function SF_uncard {
return 1;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -13,7 +13,7 @@
//= See config.txt for configuration.
//============================================================
- script keInit_warpPvp -1,{
- script keInit_warpPvp {
OnInit: //Load Config
donpcevent "keConfig::OnLoadWarpPvp";
end;
@@ -33,29 +33,29 @@ function script F_keWarpPvp {
if ($@kewp_showOnline) {
set @kmenu, select(
"- Cancel",
"- All Levels Rooms ("+($@kewp_cost*@cost)+"z/"+(getmapusers("pvp_n_8-1")+getmapusers("pvp_n_8-2")
+getmapusers("pvp_n_8-3")+getmapusers("pvp_n_8-4")+getmapusers("pvp_n_8-5"))+" "+$@ked_users$+")",
"- All Levels Rooms ("+($@kewp_cost*@cost)+"z/"+(getmapusers("pvp_n_8-1.gat")+getmapusers("pvp_n_8-2.gat")
+getmapusers("pvp_n_8-3.gat")+getmapusers("pvp_n_8-4.gat")+getmapusers("pvp_n_8-5.gat"))+" "+$@ked_users$+")",
"- Levels "+($@kewp_baseLv1-$@kewp_range)+"-"+($@kewp_baseLv1+$@kewp_range)+" Rooms ("+($@kewp_cost1*@cost)+"z/"
+(getmapusers("pvp_n_1-1")+getmapusers("pvp_n_1-2")+getmapusers("pvp_n_1-3")
+getmapusers("pvp_n_1-4")+getmapusers("pvp_n_1-5"))+" "+$@ked_users$+")",
+(getmapusers("pvp_n_1-1.gat")+getmapusers("pvp_n_1-2.gat")+getmapusers("pvp_n_1-3.gat")
+getmapusers("pvp_n_1-4.gat")+getmapusers("pvp_n_1-5.gat"))+" "+$@ked_users$+")",
"- Levels "+($@kewp_baseLv2-$@kewp_range)+"-"+($@kewp_baseLv2+$@kewp_range)+" Rooms ("+($@kewp_cost2*@cost)+"z/"
+(getmapusers("pvp_n_2-1")+getmapusers("pvp_n_2-2")+getmapusers("pvp_n_2-3")
+getmapusers("pvp_n_2-4")+getmapusers("pvp_n_2-5"))+" "+$@ked_users$+")",
+(getmapusers("pvp_n_2-1.gat")+getmapusers("pvp_n_2-2.gat")+getmapusers("pvp_n_2-3.gat")
+getmapusers("pvp_n_2-4.gat")+getmapusers("pvp_n_2-5.gat"))+" "+$@ked_users$+")",
"- Levels "+($@kewp_baseLv3-$@kewp_range)+"-"+($@kewp_baseLv3+$@kewp_range)+" Rooms ("+($@kewp_cost3*@cost)+"z/"
+(getmapusers("pvp_n_3-1")+getmapusers("pvp_n_3-2")+getmapusers("pvp_n_3-3")
+getmapusers("pvp_n_3-4")+getmapusers("pvp_n_3-5"))+" "+$@ked_users$+")",
+(getmapusers("pvp_n_3-1.gat")+getmapusers("pvp_n_3-2.gat")+getmapusers("pvp_n_3-3.gat")
+getmapusers("pvp_n_3-4.gat")+getmapusers("pvp_n_3-5.gat"))+" "+$@ked_users$+")",
"- Levels "+($@kewp_baseLv4-$@kewp_range)+"-"+($@kewp_baseLv4+$@kewp_range)+" Rooms ("+($@kewp_cost4*@cost)+"z/"
+(getmapusers("pvp_n_4-1")+getmapusers("pvp_n_4-2")+getmapusers("pvp_n_4-3")
+getmapusers("pvp_n_4-4")+getmapusers("pvp_n_4-5"))+" "+$@ked_users$+")",
+(getmapusers("pvp_n_4-1.gat")+getmapusers("pvp_n_4-2.gat")+getmapusers("pvp_n_4-3.gat")
+getmapusers("pvp_n_4-4.gat")+getmapusers("pvp_n_4-5.gat"))+" "+$@ked_users$+")",
"- Levels "+($@kewp_baseLv5-$@kewp_range)+"-"+($@kewp_baseLv5+$@kewp_range)+" Rooms ("+($@kewp_cost5*@cost)+"z/"
+(getmapusers("pvp_n_5-1")+getmapusers("pvp_n_5-2")+getmapusers("pvp_n_5-3")
+getmapusers("pvp_n_5-4")+getmapusers("pvp_n_5-5"))+" "+$@ked_users$+")",
+(getmapusers("pvp_n_5-1.gat")+getmapusers("pvp_n_5-2.gat")+getmapusers("pvp_n_5-3.gat")
+getmapusers("pvp_n_5-4.gat")+getmapusers("pvp_n_5-5.gat"))+" "+$@ked_users$+")",
"- Levels "+($@kewp_baseLv6-$@kewp_range)+"-"+($@kewp_baseLv6+$@kewp_range)+" Rooms ("+($@kewp_cost6*@cost)+"z/"
+(getmapusers("pvp_n_6-1")+getmapusers("pvp_n_6-2")+getmapusers("pvp_n_6-3")
+getmapusers("pvp_n_6-4")+getmapusers("pvp_n_6-5"))+" "+$@ked_users$+")",
+(getmapusers("pvp_n_6-1.gat")+getmapusers("pvp_n_6-2.gat")+getmapusers("pvp_n_6-3.gat")
+getmapusers("pvp_n_6-4.gat")+getmapusers("pvp_n_6-5.gat"))+" "+$@ked_users$+")",
"- Levels "+($@kewp_baseLv7-$@kewp_range)+"-"+($@kewp_baseLv7+$@kewp_range)+" Rooms ("+($@kewp_cost7*@cost)+"z/"
+(getmapusers("pvp_n_7-1")+getmapusers("pvp_n_7-2")+getmapusers("pvp_n_7-3")
+getmapusers("pvp_n_7-4")+getmapusers("pvp_n_7-5"))+" "+$@ked_users$+")"
+(getmapusers("pvp_n_7-1.gat")+getmapusers("pvp_n_7-2.gat")+getmapusers("pvp_n_7-3.gat")
+getmapusers("pvp_n_7-4.gat")+getmapusers("pvp_n_7-5.gat"))+" "+$@ked_users$+")"
);
} else {
set @kmenu, select(
@@ -101,7 +101,7 @@ function script F_keWarpPvp {
//SubFunction: SF_pvpMenu (int map-group, int cost, int min level, int max level)
//Displays the list of the five available Pvp rooms to warp to.
//map-group is the first index of the pvp map names (in pvp_n_2-3 it would be 2)
//map-group is the first index of the pvp map names (in pvp_n_2-3.gat it would be 2)
function SF_pvpMenu {
if (getarg(4)) {
if (BaseLevel < getarg(3)) {
@@ -118,11 +118,11 @@ function SF_pvpMenu {
if ($@kewp_showOnline) {
set @submenu, select(
"- Cancel Warp (Rooms for "+@msg$+"/"+(getarg(1)*@cost)+"z)",
"- Room Sandwich ("+getmapusers("pvp_n_"+getarg(0)+"-1")+" "+$@ked_users$+")",
"- Room Rock On ("+getmapusers("pvp_n_"+getarg(0)+"-2")+" "+$@ked_users$+")",
"- Four Room ("+getmapusers("pvp_n_"+getarg(0)+"-3")+" "+$@ked_users$+")",
"- Room Undercross ("+getmapusers("pvp_n_"+getarg(0)+"-4")+" "+$@ked_users$+")",
"- Room Compass ("+getmapusers("pvp_n_"+getarg(0)+"-5")+" "+$@ked_users$+")"
"- Room Sandwich ("+getmapusers("pvp_n_"+getarg(0)+"-1.gat")+" "+$@ked_users$+")",
"- Room Rock On ("+getmapusers("pvp_n_"+getarg(0)+"-2.gat")+" "+$@ked_users$+")",
"- Four Room ("+getmapusers("pvp_n_"+getarg(0)+"-3.gat")+" "+$@ked_users$+")",
"- Room Undercross ("+getmapusers("pvp_n_"+getarg(0)+"-4.gat")+" "+$@ked_users$+")",
"- Room Compass ("+getmapusers("pvp_n_"+getarg(0)+"-5.gat")+" "+$@ked_users$+")"
);
} else {
set @submenu, select(
@@ -136,21 +136,21 @@ function SF_pvpMenu {
}
switch (@submenu) {
case 2:
callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-1",-1,-1;
callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-1.gat",-1,-1;
break;
case 3:
callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-2",-1,-1;
callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-2.gat",-1,-1;
break;
case 4:
callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-3",-1,-1;
callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-3.gat",-1,-1;
break;
case 5:
callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-4",-1,-1;
callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-4.gat",-1,-1;
break;
case 6:
callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-5",-1,-1;
callfunc "F_keWarp",getarg(1),getarg(2),e_com,"pvp_n_"+getarg(0)+"-5.gat",-1,-1;
break;
}
}
}
}

View File

@@ -3,7 +3,7 @@
//===== By: ==================================================
//= Skotlex
//===== Current Version: =====================================
//= 2.1
//= 2.2
//===== Compatible With: =====================================
//= eAthena SVN R3424+, RO Episode 8+ (Hugel)
//===== Description: =========================================
@@ -33,9 +33,10 @@
//= 0x00040000 Prontera
//= 0x00080000 Umbala
//= 0x00100000 Yuno
//= 0x00200000 Rachel
//============================================================
- script keInit_warpTown -1,{
- script keInit_warpTown {
OnInit: //Load Config
donpcevent "keConfig::OnLoadWarpTown";
end;
@@ -54,37 +55,40 @@ function script F_keWarpTown {
if ($@kewt_showOnline) {
set @kmenu, select(
"- Cancel",
"- Alberta ("+@cost+"z/"+(getmapusers("alberta")+getmapusers("alberta_in"))+" "+$@ked_users$+")",
"- Al De Baran ("+@cost+"z/"+(getmapusers("aldebaran")+getmapusers("aldeba_in"))+" "+$@ked_users$+")",
"- Amatsu ("+@cost+"z/"+(getmapusers("amatsu")+getmapusers("ama_in01")+getmapusers("ama_in02"))
"- Alberta ("+@cost+"z/"+(getmapusers("alberta.gat")+getmapusers("alberta_in.gat"))+" "+$@ked_users$+")",
"- Al De Baran ("+@cost+"z/"+(getmapusers("aldebaran.gat")+getmapusers("aldeba_in.gat"))+" "+$@ked_users$+")",
"- Amatsu ("+@cost+"z/"+(getmapusers("amatsu.gat")+getmapusers("ama_in01.gat")+getmapusers("ama_in02.gat"))
+" "+$@ked_users$+")",
"- Ayothaya ("+@cost+"z/"+(getmapusers("ayothaya")+getmapusers("ayo_in01")+getmapusers("ayo_in02"))
"- Ayothaya ("+@cost+"z/"+(getmapusers("ayothaya.gat")+getmapusers("ayo_in01.gat")+getmapusers("ayo_in02.gat"))
+" "+$@ked_users$+")",
"- Comodo ("+@cost+"z/"+(getmapusers("comodo")+getmapusers("cmd_in01")+getmapusers("cmd_in02"))
"- Comodo ("+@cost+"z/"+(getmapusers("comodo.gat")+getmapusers("cmd_in01.gat")+getmapusers("cmd_in02.gat"))
+" "+$@ked_users$+")",
"- Einbech ("+@cost+"z/"+(getmapusers("einbech"))+" "+$@ked_users$+")",
"- Einbroch ("+@cost+"z/"+(getmapusers("einbroch")+getmapusers("ein_in01"))+" "+$@ked_users$+")",
"- Geffen ("+@cost+"z/"+(getmapusers("geffen")+getmapusers("geffen_in")+getmapusers("gef_tower"))
"- Einbech ("+@cost+"z/"+(getmapusers("einbech.gat"))+" "+$@ked_users$+")",
"- Einbroch ("+@cost+"z/"+(getmapusers("einbroch.gat")+getmapusers("ein_in01.gat"))+" "+$@ked_users$+")",
"- Geffen ("+@cost+"z/"+(getmapusers("geffen.gat")+getmapusers("geffen_in.gat")+getmapusers("gef_tower.gat"))
+" "+$@ked_users$+")",
"- Gon Ryun ("+@cost+"z/"+(getmapusers("gonryun")+getmapusers("gon_in"))+" "+$@ked_users$+")",
"- Hugel ("+@cost+"z/"+(getmapusers("hugel")+getmapusers("hu_in01"))+" "+$@ked_users$+")",
"- Izlude ("+@cost+"z/"+(getmapusers("izlude")+getmapusers("izlude_in"))+" "+$@ked_users$+")",
"- Jawaii ("+@cost+"z/"+(getmapusers("jawaii")+getmapusers("jawaii_in"))+" "+$@ked_users$+")",
"- LightHalzen ("+@cost+"z/"+(getmapusers("lighthalzen")+getmapusers("lhz_in01")
+getmapusers("lhz_in02")+getmapusers("lhz_in03"))+" "+$@ked_users$+")",
"- Lou Yang ("+@cost+"z/"+(getmapusers("louyang")+getmapusers("lou_in01")+getmapusers("lou_in02"))
"- Gon Ryun ("+@cost+"z/"+(getmapusers("gonryun.gat")+getmapusers("gon_in.gat"))+" "+$@ked_users$+")",
"- Hugel ("+@cost+"z/"+(getmapusers("hugel.gat")+getmapusers("hu_in01.gat"))+" "+$@ked_users$+")",
"- Izlude ("+@cost+"z/"+(getmapusers("izlude.gat")+getmapusers("izlude_in.gat"))+" "+$@ked_users$+")",
"- Jawaii ("+@cost+"z/"+(getmapusers("jawaii.gat")+getmapusers("jawaii_in.gat"))+" "+$@ked_users$+")",
"- LightHalzen ("+@cost+"z/"+(getmapusers("lighthalzen.gat")+getmapusers("lhz_in01.gat")
+getmapusers("lhz_in02.gat")+getmapusers("lhz_in03.gat"))+" "+$@ked_users$+")",
"- Lou Yang ("+@cost+"z/"+(getmapusers("louyang.gat")+getmapusers("lou_in01.gat")+getmapusers("lou_in02.gat"))
+" "+$@ked_users$+")",
"- Lutie ("+@cost+"z/"+(getmapusers("xmas")+getmapusers("xmas_in"))+" "+$@ked_users$+")",
"- Morocc ("+@cost+"z/"+(getmapusers("morocc")+getmapusers("morocc_in")+getmapusers("moc_castle"))
"- Lutie ("+@cost+"z/"+(getmapusers("xmas.gat")+getmapusers("xmas_in.gat"))+" "+$@ked_users$+")",
"- Morocc ("+@cost+"z/"+(getmapusers("morocc.gat")+getmapusers("morocc_in.gat")+getmapusers("moc_castle.gat"))
+" "+$@ked_users$+")",
"- Niflheim ("+@niflcost+"z/"+(getmapusers("niflheim")+getmapusers("nif_in"))+" "+$@ked_users$+")",
"- Payon ("+@cost+"z/"+(getmapusers("payon")+getmapusers("payon_in01")+getmapusers("payon_in02"))
"- Niflheim ("+@niflcost+"z/"+(getmapusers("niflheim.gat")+getmapusers("nif_in.gat"))+" "+$@ked_users$+")",
"- Payon ("+@cost+"z/"+(getmapusers("payon.gat")+getmapusers("payon_in01.gat")+getmapusers("payon_in02.gat"))
+" "+$@ked_users$+")",
"- Prontera ("+@cost+"z/"+(getmapusers("prontera")+getmapusers("prt_castle")
+getmapusers("prt_church")+getmapusers("prt_in"))+" "+$@ked_users$+")",
"- Umbala ("+@cost+"z/"+(getmapusers("umbala")+getmapusers("um_in"))+" "+$@ked_users$+")",
"- Yuno ("+@cost+"z/"+(getmapusers("yuno")+getmapusers("yuno_in01")+getmapusers("yuno_in02")
+getmapusers("yuno_in03")+getmapusers("yuno_in04")+getmapusers("yuno_in05"))+" "+$@ked_users$+")"
"- Prontera ("+@cost+"z/"+(getmapusers("prontera.gat")+getmapusers("prt_castle.gat")
+getmapusers("prt_church.gat")+getmapusers("prt_in.gat"))+" "+$@ked_users$+")",
"- Rachel ("+@cost+"z/"+(getmapusers("rachel.gat")+getmapusers("ra_in01.gat")
+getmapusers("ra_temple.gat")+getmapusers("ra_temin.gat")+getmapusers("ra_temsky.gat")
+getmapusers("que_rachel.gat"))+" "+$@ked_users$+")",
"- Umbala ("+@cost+"z/"+(getmapusers("umbala.gat")+getmapusers("um_in.gat"))+" "+$@ked_users$+")",
"- Yuno ("+@cost+"z/"+(getmapusers("yuno.gat")+getmapusers("yuno_in01.gat")+getmapusers("yuno_in02.gat")
+getmapusers("yuno_in03.gat")+getmapusers("yuno_in04.gat")+getmapusers("yuno_in05.gat"))+" "+$@ked_users$+")"
);
} else {
set @kmenu, select(
@@ -108,6 +112,7 @@ function script F_keWarpTown {
"- Niflheim ("+@niflcost+"z)",
"- Payon ("+@cost+"z)",
"- Prontera ("+@cost+"z)",
"- Rachel ("+@cost+"z)",
"- Umbala ("+@cost+"z)",
"- Yuno ("+@cost+"z)"
);
@@ -115,67 +120,67 @@ function script F_keWarpTown {
switch (@kmenu) {
case 2: //Alberta
if (SF_check(0x1))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"alberta",117,56;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"alberta.gat",117,56;
break;
case 3: //AlDeBaran
if (SF_check(0x2))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"aldebaran",139,124;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"aldebaran.gat",139,124;
break;
case 4: //Amatsu
if (SF_check(0x4))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"amatsu",197,88;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"amatsu.gat",197,88;
break;
case 5: //Ayathoya
if (SF_check(0x8))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"ayothaya",202,174;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"ayothaya.gat",202,174;
break;
case 6: //Comodo
if (SF_check(0x10))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"comodo",189,150;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"comodo.gat",189,150;
break;
case 7: //Einbech
if (SF_check(0x20))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"einbech",137,220;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"einbech.gat",137,220;
break;
case 8: //Einbroch
if (SF_check(0x40))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"einbroch",64,199;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"einbroch.gat",64,199;
break;
case 9: //Geffen
if (SF_check(0x80))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"geffen",120,66;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"geffen.gat",120,66;
break;
case 10: //GonRyun
if (SF_check(0x100))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"gonryun",160,180;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"gonryun.gat",160,180;
break;
case 11: //Hugel
if (SF_check(0x200))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"hugel",96,105;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"hugel.gat",96,105;
break;
case 12: //Izlude
if (SF_check(0x400))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"izlude",127,97;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"izlude.gat",127,97;
break;
case 13: //Jawaii
if (SF_check(0x800))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"jawaii",214,223;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"jawaii.gat",214,223;
break;
case 14: //LightHalzen
if (SF_check(0x1000))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"lighthalzen",158,92;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"lighthalzen.gat",158,92;
break;
case 15: //LouYang
if (SF_check(0x2000))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"louyang",218,118;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"louyang.gat",218,118;
break;
case 16: //Lutie
if (SF_check(0x4000))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"xmas",148,133;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"xmas.gat",148,133;
break;
case 17: //Morocc
if (SF_check(0x8000))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"morocc",162,91;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"morocc.gat",162,91;
break;
case 18: //Niflheim
if (SF_check(0x10000)) {
@@ -183,30 +188,34 @@ function script F_keWarpTown {
mes "...?";
callfunc "F_keIntro", e_no, "For some reason I can't warp you there!";
} else
callfunc "F_keWarp",$@kewt_niflCost,$@kewd_discount,e_yawn,"niflheim",194,185;
callfunc "F_keWarp",$@kewt_niflCost,$@kewd_discount,e_yawn,"niflheim.gat",194,185;
}
break;
case 19: //Payon
if (SF_check(0x20000))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"payon",159,181;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"payon.gat",159,181;
break;
case 20: //Prontera
if (SF_check(0x40000))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"prontera",156,175;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"prontera.gat",156,175;
break;
case 21: //Umbala
case 21: //Rachel
if (SF_check(0x200000))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"rachel.gat",137,133;
break;
case 22: //Umbala
if (SF_check(0x80000))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"umbala",88,153;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"umbala.gat",88,153;
break;
case 22: //Yuno
case 23: //Yuno
if (SF_check(0x100000))
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"yuno",158,77;
SF_warp $@kewt_cost,$@kewt_discount,e_yawn,"yuno.gat",158,77;
break;
}
} while (@kmenu > 1);
return;
//SubFunction SF_check(char-flag, account_flag)
//SubFunction SF_check(flag)
//Checks if the character can warp to that town taking into consideration
//traveller's mode.
function SF_check {
@@ -410,91 +419,95 @@ function script F_keAddTravelTown {
// End update code.
if ($@kewt_travel > 1) {
if (@map$ == "alberta" || kewt_travel&0x1)
if (@map$ == "alberta.gat" || kewt_travel&0x1)
set #kewt_travel,#kewt_travel|0x1;
if (@map$ == "aldebaran" || kewt_travel&0x2)
if (@map$ == "aldebaran.gat" || kewt_travel&0x2)
set #kewt_travel,#kewt_travel|0x2;
if (@map$ == "amatsu" || kewt_travel&0x4)
if (@map$ == "amatsu.gat" || kewt_travel&0x4)
set #kewt_travel,#kewt_travel|0x4;
if (@map$ == "ayothaya" || kewt_travel&0x8)
if (@map$ == "ayothaya.gat" || kewt_travel&0x8)
set #kewt_travel,#kewt_travel|0x8;
if (@map$ == "comodo" || kewt_travel&0x10)
if (@map$ == "comodo.gat" || kewt_travel&0x10)
set #kewt_travel,#kewt_travel|0x10;
if (@map$ == "einbech" || kewt_travel&0x20)
if (@map$ == "einbech.gat" || kewt_travel&0x20)
set #kewt_travel,#kewt_travel|0x20;
if (@map$ == "einbroch" || kewt_travel&0x40)
if (@map$ == "einbroch.gat" || kewt_travel&0x40)
set #kewt_travel,#kewt_travel|0x40;
if (@map$ == "geffen" || kewt_travel&0x80)
if (@map$ == "geffen.gat" || kewt_travel&0x80)
set #kewt_travel,#kewt_travel|0x80;
if (@map$ == "gonryun" || kewt_travel&0x100)
if (@map$ == "gonryun.gat" || kewt_travel&0x100)
set #kewt_travel,#kewt_travel|0x100;
if (@map$ == "hugel" || kewt_travel&0x200)
if (@map$ == "hugel.gat" || kewt_travel&0x200)
set #kewt_travel,#kewt_travel|0x200;
if (@map$ == "izlude" || kewt_travel&0x400)
if (@map$ == "izlude.gat" || kewt_travel&0x400)
set #kewt_travel,#kewt_travel|0x400;
if (@map$ == "jawaii" || kewt_travel&0x800)
if (@map$ == "jawaii.gat" || kewt_travel&0x800)
set #kewt_travel,#kewt_travel|0x800;
if (@map$ == "lighthalzen" || kewt_travel&1000)
if (@map$ == "lighthalzen.gat" || kewt_travel&1000)
set #kewt_travel,#kewt_travel|0x1000;
if (@map$ == "louyang" || kewt_travel&0x2000)
if (@map$ == "louyang.gat" || kewt_travel&0x2000)
set #kewt_travel,#kewt_travel|0x2000;
if (@map$ == "xmas" || kewt_travel&0x4000)
if (@map$ == "xmas.gat" || kewt_travel&0x4000)
set #kewt_travel,#kewt_travel|0x4000;
if (@map$ == "morocc" || kewt_travel&0x8000)
if (@map$ == "morocc.gat" || kewt_travel&0x8000)
set #kewt_travel,#kewt_travel|0x8000;
if (@map$ == "niflheim" || kewt_travel&0x10000)
if (@map$ == "niflheim.gat" || kewt_travel&0x10000)
set #kewt_travel,#kewt_travel|0x10000;
if (@map$ == "payon" || kewt_travel&0x20000)
if (@map$ == "payon.gat" || kewt_travel&0x20000)
set #kewt_travel,#kewt_travel|0x20000;
if (@map$ == "prontera" || kewt_travel&0x40000)
if (@map$ == "prontera.gat" || kewt_travel&0x40000)
set #kewt_travel,#kewt_travel|0x40000;
if (@map$ == "umbala" || kewt_travel&0x80000)
if (@map$ == "umbala.gat" || kewt_travel&0x80000)
set #kewt_travel,#kewt_travel|0x80000;
if (@map$ == "yuno" || kewt_travel&0x100000)
if (@map$ == "yuno.gat" || kewt_travel&0x100000)
set #kewt_travel,#kewt_travel|0x100000;
if (@map$ == "rachel.gat" || kewt_travel&0x200000)
set #kewt_travel,#kewt_travel|0x200000;
} else {
if (@map$ == "alberta")
if (@map$ == "alberta.gat")
set kewt_travel,kewt_travel|0x1;
if (@map$ == "aldebaran")
if (@map$ == "aldebaran.gat")
set kewt_travel,kewt_travel|0x2;
if (@map$ == "amatsu")
if (@map$ == "amatsu.gat")
set kewt_travel,kewt_travel|0x4;
if (@map$ == "ayothaya")
if (@map$ == "ayothaya.gat")
set kewt_travel,kewt_travel|0x8;
if (@map$ == "comodo")
if (@map$ == "comodo.gat")
set kewt_travel,kewt_travel|0x10;
if (@map$ == "einbech")
if (@map$ == "einbech.gat")
set kewt_travel,kewt_travel|0x20;
if (@map$ == "einbroch")
if (@map$ == "einbroch.gat")
set kewt_travel,kewt_travel|0x40;
if (@map$ == "geffen")
if (@map$ == "geffen.gat")
set kewt_travel,kewt_travel|0x80;
if (@map$ == "gonryun")
if (@map$ == "gonryun.gat")
set kewt_travel,kewt_travel|0x100;
if (@map$ == "hugel")
if (@map$ == "hugel.gat")
set kewt_travel,kewt_travel|0x200;
if (@map$ == "izlude")
if (@map$ == "izlude.gat")
set kewt_travel,kewt_travel|0x400;
if (@map$ == "jawaii")
if (@map$ == "jawaii.gat")
set kewt_travel,kewt_travel|0x800;
if (@map$ == "lighthalzen")
if (@map$ == "lighthalzen.gat")
set kewt_travel,kewt_travel|0x1000;
if (@map$ == "louyang")
if (@map$ == "louyang.gat")
set kewt_travel,kewt_travel|0x2000;
if (@map$ == "xmas")
if (@map$ == "xmas.gat")
set kewt_travel,kewt_travel|0x4000;
if (@map$ == "morocc")
if (@map$ == "morocc.gat")
set kewt_travel,kewt_travel|0x8000;
if (@map$ == "niflheim")
if (@map$ == "niflheim.gat")
set kewt_travel,kewt_travel|0x10000;
if (@map$ == "payon")
if (@map$ == "payon.gat")
set kewt_travel,kewt_travel|0x20000;
if (@map$ == "prontera")
if (@map$ == "prontera.gat")
set kewt_travel,kewt_travel|0x40000;
if (@map$ == "umbala")
if (@map$ == "umbala.gat")
set kewt_travel,kewt_travel|0x80000;
if (@map$ == "yuno")
if (@map$ == "yuno.gat")
set kewt_travel,kewt_travel|0x100000;
if (@map$ == "rachel.gat")
set kewt_travel,kewt_travel|0x200000;
}
return;
}
}

View File

@@ -3,7 +3,7 @@
//===== By: ==================================================
//= Skotlex
//===== Current Version: =====================================
//= 1.7
//= 1.8
//===== Compatible With: =====================================
//= eAthena SVN R3424+, RO Episode 4.1+ (War of Emperium)
//===== Description: =========================================
@@ -14,7 +14,7 @@
//= Remove the comment on lines 52,53 and 63 to enable direct G. Dungeon warping
//============================================================
- script keInit_warpWoe -1,{
- script keInit_warpWoe {
OnInit: //Load Config
donpcevent "keConfig::OnLoadWarpWoe";
end;
@@ -25,7 +25,7 @@ function script F_keWarpWOE {
callfunc "F_keIntro", e_srt, "Sorry, these warps are only available to people who belong to a Guild.";
return;
}
if ($@kewg_checkAgit && !agitcheck()) {
if ($@kewg_checkAgit && agitcheck() == 0) {
callfunc "F_keIntro", e_srt, "Sorry, these warps are only enabled during the Guild Wars.";
return;
}
@@ -37,20 +37,20 @@ function script F_keWarpWOE {
if ($@kewg_showOnline) {
set @kmenu, select(
"- Cancel",
"- Al De Baran Guild ("+($@kewg_alDeBaran*@cost/100)+"z/"+(getmapusers("alde_gld")
+getmapusers("aldeg_cas01")+getmapusers("aldeg_cas02")+getmapusers("aldeg_cas03")
+getmapusers("aldeg_cas04")+getmapusers("aldeg_cas05"))+" "+$@ked_users$+")",
"- Geffen Guild ("+($@kewg_geffen*@cost/100)+"z/"+(getmapusers("gef_fild13")
+getmapusers("gefg_cas01")+getmapusers("gefg_cas02")+getmapusers("gefg_cas03")
+getmapusers("gefg_cas04")+getmapusers("gefg_cas05"))+" "+$@ked_users$+")",
"- Payon Guild ("+($@kewg_payon*@cost/100)+"z/"+(getmapusers("pay_gld")
+getmapusers("payg_cas01")+getmapusers("payg_cas02")+getmapusers("payg_cas03")
+getmapusers("payg_cas04")+getmapusers("payg_cas05"))+" "+$@ked_users$+")",
"- Prontera Guild ("+($@kewg_prontera*@cost/100)+"z/"+(getmapusers("prt_gld")
+getmapusers("prtg_cas01")+getmapusers("prtg_cas02")+getmapusers("prtg_cas03")
+getmapusers("prtg_cas04")+getmapusers("prtg_cas05"))+" "+$@ked_users$+")",
// "- Guild Dungeons ("+(getmapusers("gld_dun01")+getmapusers("gld_dun02")
// +getmapusers("gld_dun03")+getmapusers("gld_dun04"))+" "+$@ked_users$+")",
"- Al De Baran Guild ("+($@kewg_alDeBaran*@cost/100)+"z/"+(getmapusers("alde_gld.gat")
+getmapusers("aldeg_cas01.gat")+getmapusers("aldeg_cas02.gat")+getmapusers("aldeg_cas03.gat")
+getmapusers("aldeg_cas04.gat")+getmapusers("aldeg_cas05.gat"))+" "+$@ked_users$+")",
"- Geffen Guild ("+($@kewg_geffen*@cost/100)+"z/"+(getmapusers("gef_fild13.gat")
+getmapusers("gefg_cas01.gat")+getmapusers("gefg_cas02.gat")+getmapusers("gefg_cas03.gat")
+getmapusers("gefg_cas04.gat")+getmapusers("gefg_cas05.gat"))+" "+$@ked_users$+")",
"- Payon Guild ("+($@kewg_payon*@cost/100)+"z/"+(getmapusers("pay_gld.gat")
+getmapusers("payg_cas01.gat")+getmapusers("payg_cas02.gat")+getmapusers("payg_cas03.gat")
+getmapusers("payg_cas04.gat")+getmapusers("payg_cas05.gat"))+" "+$@ked_users$+")",
"- Prontera Guild ("+($@kewg_prontera*@cost/100)+"z/"+(getmapusers("prt_gld.gat")
+getmapusers("prtg_cas01.gat")+getmapusers("prtg_cas02.gat")+getmapusers("prtg_cas03.gat")
+getmapusers("prtg_cas04.gat")+getmapusers("prtg_cas05.gat"))+" "+$@ked_users$+")",
// "- Guild Dungeons ("+(getmapusers("gld_dun01.gat")+getmapusers("gld_dun02.gat")
// +getmapusers("gld_dun03.gat")+getmapusers("gld_dun04.gat"))+" "+$@ked_users$+")",
"- See "+$@ked_users$+" distribution"
);
} else {
@@ -65,16 +65,16 @@ function script F_keWarpWOE {
}
switch (@kmenu) {
case 2: //Al De Baran
callfunc "F_keWarp",$@kewg_alDeBaran,$@kewg_discount,44,"alde_gld",153,160;
callfunc "F_keWarp",$@kewg_alDeBaran,$@kewg_discount,44,"alde_gld.gat",153,160;
break;
case 3: //Geffen
callfunc "F_keWarp",$@kewg_geffen,$@kewg_discount,44,"gef_fild13",243,180;
callfunc "F_keWarp",$@kewg_geffen,$@kewg_discount,44,"gef_fild13.gat",243,180;
break;
case 4: //Payon
callfunc "F_keWarp",$@kewg_payon,$@kewg_discount,44,"pay_gld",249,177;
callfunc "F_keWarp",$@kewg_payon,$@kewg_discount,44,"pay_gld.gat",249,177;
break;
case 5: //Prontera
callfunc "F_keWarp",$@kewg_prontera,$@kewg_discount,44,"prt_gld",119,160;
callfunc "F_keWarp",$@kewg_prontera,$@kewg_discount,44,"prt_gld.gat",119,160;
break;
case 6: //Guild Dungeons
SF_dungeons();
@@ -83,36 +83,36 @@ function script F_keWarpWOE {
mes "The current distribution of "+$@ked_users$+" is as follows:";
next;
mes "[Al De Baran]";
mes "- Guild Grounds: "+getmapusers("alde_gld");
mes "- Castle 1 - Noisyubantian: "+getmapusers("aldeg_cas01");
mes "- Castle 2 - Hohensyubangawoo: "+getmapusers("aldeg_cas02");
mes "- Castle 3 - Nyirenverk: "+getmapusers("aldeg_cas03");
mes "- Castle 4 - Byirtsburi: "+getmapusers("aldeg_cas04");
mes "- Castle 5 - Rotenburk: "+getmapusers("aldeg_cas05");
mes "- Guild Grounds: "+getmapusers("alde_gld.gat");
mes "- Castle 1 - Noisyubantian: "+getmapusers("aldeg_cas01.gat");
mes "- Castle 2 - Hohensyubangawoo: "+getmapusers("aldeg_cas02.gat");
mes "- Castle 3 - Nyirenverk: "+getmapusers("aldeg_cas03.gat");
mes "- Castle 4 - Byirtsburi: "+getmapusers("aldeg_cas04.gat");
mes "- Castle 5 - Rotenburk: "+getmapusers("aldeg_cas05.gat");
next;
mes "[Geffen]";
mes "- Guild Grounds: "+getmapusers("gef_fild13");
mes "- Castle 1 - Reprion: "+getmapusers("gefg_cas01");
mes "- Castle 2 - Yolbriger: "+getmapusers("gefg_cas02");
mes "- Castle 3 - Isinlife: "+getmapusers("gefg_cas03");
mes "- Castle 4 - Berigel: "+getmapusers("gefg_cas04");
mes "- Castle 5 - Melsedetsu: "+getmapusers("gefg_cas05");
mes "- Guild Grounds: "+getmapusers("gef_fild13.gat");
mes "- Castle 1 - Reprion: "+getmapusers("gefg_cas01.gat");
mes "- Castle 2 - Yolbriger: "+getmapusers("gefg_cas02.gat");
mes "- Castle 3 - Isinlife: "+getmapusers("gefg_cas03.gat");
mes "- Castle 4 - Berigel: "+getmapusers("gefg_cas04.gat");
mes "- Castle 5 - Melsedetsu: "+getmapusers("gefg_cas05.gat");
next;
mes "[Payon]";
mes "- Guild Grounds: "+getmapusers("pay_gld");
mes "- Castle 1 - Mingting: "+getmapusers("payg_cas01");
mes "- Castle 2 - Tiantan: "+getmapusers("payg_cas02");
mes "- Castle 3 - Fuying: "+getmapusers("payg_cas03");
mes "- Castle 4 - Honglou: "+getmapusers("payg_cas04");
mes "- Castle 5 - Zhulinxian: "+getmapusers("payg_cas05");
mes "- Guild Grounds: "+getmapusers("pay_gld.gat");
mes "- Castle 1 - Mingting: "+getmapusers("payg_cas01.gat");
mes "- Castle 2 - Tiantan: "+getmapusers("payg_cas02.gat");
mes "- Castle 3 - Fuying: "+getmapusers("payg_cas03.gat");
mes "- Castle 4 - Honglou: "+getmapusers("payg_cas04.gat");
mes "- Castle 5 - Zhulinxian: "+getmapusers("payg_cas05.gat");
next;
mes "[Prontera]";
mes "- Guild Grounds: "+getmapusers("prt_gld");
mes "- Castle 1 - Creamhilt: "+getmapusers("prtg_cas01");
mes "- Castle 2 - Sbanhealt: "+getmapusers("prtg_cas02");
mes "- Castle 3 - Lazrigees: "+getmapusers("prtg_cas03");
mes "- Castle 4 - Squagul: "+getmapusers("prtg_cas04");
mes "- Castle 5 - Guindull: "+getmapusers("prtg_cas05");
mes "- Guild Grounds: "+getmapusers("prt_gld.gat");
mes "- Castle 1 - Creamhilt: "+getmapusers("prtg_cas01.gat");
mes "- Castle 2 - Sbanhealt: "+getmapusers("prtg_cas02.gat");
mes "- Castle 3 - Lazrigees: "+getmapusers("prtg_cas03.gat");
mes "- Castle 4 - Squagul: "+getmapusers("prtg_cas04.gat");
mes "- Castle 5 - Guindull: "+getmapusers("prtg_cas05.gat");
next;
callfunc "F_keIntro", -1, "";
break;
@@ -125,10 +125,10 @@ function SF_dungeons {
if ($@kewg_showOnline) {
set @submenu, select(
"- Cancel",
"- Baldur Dungeon ("+($@kewg_baldur*@cost/100)+"z/"+getmapusers("gld_dun01")+" "+$@ked_users$+")",
"- Luina Dungeon ("+($@kewg_luina*@cost/100)+"z/"+getmapusers("gld_dun02")+" "+$@ked_users$+")",
"- Valkyrie Dungeon ("+($@kewg_valkyrie*@cost/100)+"z/"+getmapusers("gld_dun03")+" "+$@ked_users$+")",
"- Britoniah Dungeon ("+($@kewg_britoniah*@cost/100)+"z/"+getmapusers("gld_dun04")+" "+$@ked_users$+")"
"- Baldur Dungeon ("+($@kewg_baldur*@cost/100)+"z/"+getmapusers("gld_dun01.gat")+" "+$@ked_users$+")",
"- Luina Dungeon ("+($@kewg_luina*@cost/100)+"z/"+getmapusers("gld_dun02.gat")+" "+$@ked_users$+")",
"- Valkyrie Dungeon ("+($@kewg_valkyrie*@cost/100)+"z/"+getmapusers("gld_dun03.gat")+" "+$@ked_users$+")",
"- Britoniah Dungeon ("+($@kewg_britoniah*@cost/100)+"z/"+getmapusers("gld_dun04.gat")+" "+$@ked_users$+")"
);
} else {
set @submenu, select(
@@ -141,19 +141,19 @@ function SF_dungeons {
}
switch (@submenu) {
case 2: //Baldur
callfunc "F_keWarp",$@kewg_baldur,$@kewg_discount,44,"gld_dun01",119,18;
callfunc "F_keWarp",$@kewg_baldur,$@kewg_discount,44,"gld_dun01.gat",119,18;
break;
case 3: //Luina
callfunc "F_keWarp",$@kewg_luina,$@kewg_discount,44,"gld_dun02",174,113;
callfunc "F_keWarp",$@kewg_luina,$@kewg_discount,44,"gld_dun02.gat",174,113;
break;
case 4: //Valkyrie
callfunc "F_keWarp",$@kewg_valkyrie,$@kewg_discount,44,"gld_dun03",37,34;
callfunc "F_keWarp",$@kewg_valkyrie,$@kewg_discount,44,"gld_dun03.gat",37,34;
break;
case 5: //Britoniah
callfunc "F_keWarp",$@kewg_britoniah,$@kewg_discount,44,"gld_dun04",42,230;
callfunc "F_keWarp",$@kewg_britoniah,$@kewg_discount,44,"gld_dun04.gat",42,230;
break;
}
} while (@submenu > 1);
}
}
}

View File

@@ -6,7 +6,7 @@ This file's purpose is to give an indepth explanation about setting up, and
configuring the Kafra Express Script Package (KESP). It is intended to be
viewed by a text editor using fixed-width font and 80-character long lines.
Document Version v1.9 (15/June/2006)
Document Version v2.0 (27/September/2006)
////////////////////////////////////////////////////////////////////////////////
Table of Contents
////////////////////////////////////////////////////////////////////////////////
@@ -231,11 +231,14 @@ costs 100z to heal 1000.
-------------
The cost of using the storage, guild storage (respectively)
(1) kekp_reset
(#) kekp_reset
--------------
For Kafra Passes. When 1, the Pass expires when starting a chat with the
Kafra. Otherwise the variable remains active a pretty long time (probably all
session).
For Kafra Passes. When set, the Pass expires after starting a chat with the
Kafra the amount of times specified. Otherwise the variable remains active a
pretty long time (probably all session). For example, if set to 2, after
activating the pass and opening the storage, the Pass will still be active
the next time you speak to a kafra, it will expire on the "third" time you
speak to her.
($) kekp_reserveCost
--------------------
@@ -387,10 +390,12 @@ Specificies the number of hair dyes
(#) kedy_clothJ1ST
(#) kedy_clothJ2ND
(#) kedy_clothJSN
(#) kedy_clothJWED
------------------
Specifies the number of cloth dyes based on job-type: Novices, First Classes,
Second Classes, Super Novices, Wedding Class.
Second Classes, Super Novices.
Note that special classes like Xmas or Wedding tend to not have palettes, and
it should be handled server-side so that switching palettes with this module
will not cause you client crashes.
////////////////////////////////////////////////////////////////////////////////
[06] Module: Job Changer (ke_jobchange.txt)
@@ -426,6 +431,15 @@ What to do about the advanced classes?
case the path could not be determined (players changed jobs previously
using other npcs), players will be able to select their next job.
(#) kejc_disable
----------------
Permits disabling some job trees from the changer (add as required):
1: You can't change to a S. Novice
2: You can't change to Taekwon (but if you are a Taekwon already, you can
still change to Soul Linker/Star Gladiator)
4: Can't change to GunSlinger
8: Can't change to Ninja
(1) kejc_announce
-----------------
When 1, a global announce will be done upon change.
@@ -473,46 +487,21 @@ one.
-----------------
When characters reach this job level, they will receive the premium weapon instead of the normal one. If 0, premium weapons are disabled.
(#) kejc_wAcolyte
(#) kejc_wArcher
(#) kejc_wMage
(#) kejc_wMerchant
(#) kejc_wSwordman
(#) kejc_wThief
(#) kejc_wSuperNovice
(#) kejc_wPriest
(#) kejc_wMonk
(#) kejc_wHunter
(#) kejc_wBard
(#) kejc_wDancer
(#) kejc_wWizard
(#) kejc_wSage
(#) kejc_wBlacksmith
(#) kejc_wAlchemist
(#) kejc_wKnight
(#) kejc_wCrusader
(#) kejc_wAssassin
(#) kejc_wRogue
(#) kejc_weapon1[]
(#) kejc_weapon_21[]
(#) kejc_weapon_22[]
-----------------------
ID of the normal weapons received upon job change (if weapon policy is in
effect).
These arrays contain the IDs of the normal weapons received upon job change
for first, 2-1 and 2-2 classes (if weapon policy is in effect). Refer to the
comments in the config file for identifying which position is for which job.
(#) kejc_w2Priest
(#) kejc_w2Monk
(#) kejc_w2Hunter
(#) kejc_w2Bard
(#) kejc_w2Dancer
(#) kejc_w2Wizard
(#) kejc_w2Sage
(#) kejc_w2Blacksmith
(#) kejc_w2Alchemist
(#) kejc_w2Knight
(#) kejc_w2Crusader
(#) kejc_w2Assassin
(#) kejc_w2Rogue
(#) kejc_weapon2_21[]
(#) kejc_weapon2_22[]
--------------------
ID of the premium weapons received upon job chane (if bonus weapon policy is
in effect). Note that first classes can't get a bonus weapon.
These arrays contain the ID of the premium weapons received upon job change
(if bonus weapon policy is in effect). Note that first classes can't get a
bonus weapon, and that Bard/Dancers both receive the same weapon. Refer to the
comments in the config file for identifying which position is for which job.
////////////////////////////////////////////////////////////////////////////////
[07] Module: Job Swapper (ke_jobswap.txt)
@@ -531,10 +520,17 @@ classes, they can't change back to a normal one.
Variables
================================================================================
(1) kejs_SNpolicy
(#) kejs_disable
-----------------
Determines what to do with Super Novices. if 0, they can't swap jobs, if 1,
they are considered first classes.
You can disable some classes from swapping using this setting (add numbers as
appropiate):
1: Super Novices may not swap/swap to.
2: Disable swapping for Taekwon/Star Gladiator/Soul Linker classes.
4: Disable swapping to/from GunSlinger.
8: Disable swapping to/from Ninja.
For example, if you set it to 12 (8+4), the swap menu will not include
Gunslinger nor Ninja, and they will find that they can't swap to other classes
neither.
(#) kejs_revertPolicy
---------------------
@@ -965,9 +961,8 @@ saves, all charaters of the corresponding account have the warp unlocked).
(1) kewd_deep
-------------
This variable decides whether deep or short warps will be used. There's no
need to set it as it will be set automatically based on which file was
included (ke_warp_short.txt or ke_warp_deep.txt).
This variable decides whether deep or short warps will be used. As explained
on the description, enabling deep warps allows warping to any dungeon level.
(%) kewd_levelCost
------------------
@@ -989,31 +984,10 @@ Only used on short warps. If 1, then warping to Turtle Dungeon should lead
directly to the cave's entrance, otherwise it warps you to the Island's
entrance.
($) kewd_amatsu
($) kewd_antHell
($) kewd_ayothaya
($) kewd_byalan
($) kewd_comodo
($) kewd_clockTower
($) kewd_coalMines
($) kewd_culvert
($) kewd_gefenia
($) kewd_geffen
($) kewd_glastHeim
($) kewd_gonRyun
($) kewd_hiddenTemple
($) kewd_louYang
($) kewd_magma
($) kewd_orc
($) kewd_payon
($) kewd_pyramids
($) kewd_sphinx
($) kewd_sunkenShip
($) kewd_toyFactory
($) kewd_turtleIsland
($) kewd_umbala
($) kewd_<dungeon name>
---------------------
Base cost of warping to each dungeon, that is, the entrance level cost.
There is a config variable for every dungeon, it specifies the base cost of
warping to that dungeon (which is, the entrance level cost).
////////////////////////////////////////////////////////////////////////////////
[16] Module: PvP Warping (ke_pvp.txt)
@@ -1021,9 +995,9 @@ Base cost of warping to each dungeon, that is, the entrance level cost.
Description
================================================================================
The PvP warping module leads to the pvp maps named pvp_n_*-*. It has two
The PvP warping module leads to the pvp maps named pvp_n_*-*.gat. It has two
modes: simple and advanced. On simple mode, every player of every level gets
thrown into the pvp_n_1-* maps to nuke it out, on advanced mode each of
thrown into the pvp_n_1-*.gat maps to nuke it out, on advanced mode each of
the map groups gets their own range of permissible levels to enter. Since
there is no sure way how characters should escape from a pvp map, they are
currently given a butterfly wing when they warp.
@@ -1136,15 +1110,15 @@ sprite on-screen that characters speak with. An enabled kafra may look like
this:
//Alberta
alberta,113,53,7 script Kafra Express 116,{
callfunc "F_KafraExpress","Kafra Express","kafra_02",0,"alberta",116,57;
alberta.gat,113,53,7 script Kafra Express 116,{
callfunc "F_KafraExpress","Kafra Express","kafra_02",0,"alberta.gat",116,57;
}
And a disabled/commented Kafra would look like this:
//Prontera Guild Grounds
//prt_gld,127,163,5 script Kafra Express 115,{
// callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"prt_gld",129,170;
//prt_gld.gat,127,163,5 script Kafra Express 115,{
// callfunc "F_KafraExpress","Kafra Express","kafra_03",1,"prt_gld.gat",129,170;
//}
For scripters, the way to define an NPC is not new, and beyond the scope of

View File

@@ -10,7 +10,7 @@ L_Menu01:
mes "[Robert]";
mes "What would you like to do??";
next;
if((getgmlevel(0) >= 90)) menu "Public board",L_pubgmmenu,"Gm Board",L_gmmenu,"Close Public Board",L_clospub,"Open Public Board",L_openpub;
if((getgmlevel() >= 90)) menu "Public board",L_pubgmmenu,"Gm Board",L_gmmenu,"Close Public Board",L_clospub,"Open Public Board",L_openpub;
if(($messagepubclose == 1)) goto L_pubclosed;
menu "Read messages!",L_readmsg,"Post a message!",L_Postmsg,"Leave",L_leave;
L_pubgmmenu:
@@ -326,8 +326,8 @@ mes "Posted By: "+$messageboardpostname$[@tempview]+".";
mes "On: "+$messageboardpostdate$[@tempview]+".";
mes $messageboardpost$[@tempview]+".";
next;
if(($mymessage[@tempview] == 5) && (getgmlevel()>=99)) menu "Next Message",L_top2,"Delete My Message",L_delmy,"Edit my message",L_editmy,"Delete This message",L_Del;
if((getgmlevel()>=99)) menu "Next Message",L_top2,"Delete This message",L_Del;
if(($mymessage[@tempview] == 5) && (getgmlevel()>0)) menu "Next Message",L_top2,"Delete My Message",L_delmy,"Edit my message",L_editmy,"Delete This message",L_Del;
if((getgmlevel()>0)) menu "Next Message",L_top2,"Delete This message",L_Del;
if(($mymessage[@tempview] == 5)) menu "Next Message",L_top2,"Delete My Message",L_delmy,"Edit my message",L_editmy;
menu "Next message",L_top2;
close;

View File

@@ -4,7 +4,7 @@
//= Old Warper 2 by Darkchild - Remade with quest format by DZeroX
//= Huge Rewrite by Neouni
//===== Current Version: ==========================================
//= 2.0c
//= 2.0b
//===== Compatible With: ==========================================
//= Any eAthena Version
//===== Description: ==============================================
@@ -70,8 +70,8 @@
// - Limits dungeon based on Depth, access special setup menu thru GM-Menu
// - Dungeon fees split up based on Basic , Advanced & Overseas
// - Old Dungeon fee system removed, all dungeon fees now set to 0
//-2.0b - Special warpname menu option name bug fixed
//-2.0c - Parenthesis fixes [KarLaeda]
//-2.0b
// - Special warpname menu option name bug fixed
//=================================================================
//========================Function=&=Script========================
@@ -145,7 +145,7 @@ next;
if ($QW_HF == 1) mes "Healing full = ^00FF00 On ^000000";
//----------------Healpart
if ($QW_HP == 1) mes "Healing partly = ^00FF00 On ^000000";
if ($QW_HF == 0 && $QW_HP == 0) mes "Healing = ^FF0000 Off ^000000";
if (($QW_HF == 0)&&($QW_HP == 0)) mes "Healing = ^FF0000 Off ^000000";
//----------------Storage
if ($QW_Stor == 1) mes "Storage = ^00FF00 On ^000000";
if ($QW_Stor == 0) mes "Storage = ^FF0000 Off ^000000";
@@ -263,7 +263,7 @@ Setprice:
if ($QW_HP_S_PRICE != 0) mes "^0000FFSP ^000000Part Healing = ^00FF00 "+$QW_HP_S_PRICE+" ^000000 a point";
if ($QW_HP_S_PRICE == 0) mes "^0000FFSP ^000000Part Healing = ^FF0000 Free ^000000";
//----------------Storage
if ($QW_S_PRICE != 0 && $QW_S_PRICE != 60) mes "Storage = ^00FF00 "+$QW_S_PRICE+" ^000000";
if (($QW_S_PRICE != 0)&&($QW_S_PRICE != 60)) mes "Storage = ^00FF00 "+$QW_S_PRICE+" ^000000";
if ($QW_S_PRICE == 0) mes "Storage = ^FF0000 Free ^000000";
if ($QW_S_PRICE == 60) mes "Storage = ^0000FF Kafra Mode ^000000";
//----------------Guild-Storage
@@ -349,7 +349,7 @@ case 8:
case 9:
next;
if ($QW_S_PRICE != 0 && $QW_S_PRICE != 60) mes "Storage = ^00FF00 "+$QW_S_PRICE+" ^000000";
if (($QW_S_PRICE != 0)&&($QW_S_PRICE != 60)) mes "Storage = ^00FF00 "+$QW_S_PRICE+" ^000000";
if ($QW_S_PRICE == 0) mes "Storage = ^FF0000 Free ^000000";
if ($QW_S_PRICE == 60) mes "Storage = ^0000FF Kafra Mode ^000000";
mes "Storage cost, if set to 60 Kafra pricing will be handled";
@@ -391,8 +391,8 @@ case 1:
goto SpecialWarpMenu;
case 2:
next;
mes "set the map in the ^0000FFmapname^000000 format";
mes "when this warpmap is set the option for players will show once they meet the requirements";
mes "set the map in the ^0000FFmapname.gat^000000 format";
mes "when this warpmap is set the option for players will show once they meet the requirments";
mes "to disable Special Warp Menu option clear this !";
input $QW_SP_WarpMap$;
goto SpecialWarpMenu;
@@ -526,16 +526,16 @@ PHeal:
if(getarg(1) == 1) mes ""+@SpPrice+" Zeny for "+@Sp+" skill points";
set @total, @HpPrice+@SpPrice;
mes "for a total of "+@total+" zeny";
if (select("Heal me","Let me see the choices again")==2) goto L_heal_Part;
if(getarg(0) == 1)set @HpPrice, (MaxHp-Hp)*$QW_HP_H_PRICE;
if (select("Heal me","Let me see the choices again")==2) goto L_heal_Part;
if(getarg(0) == 1)set @HpPrice, (MaxHp-Hp)*$QW_HP_H_PRICE;
if(getarg(1) == 1)set @SpPrice, (MaxSp-Sp)*$QW_HP_S_PRICE;
set @healfee, @HpPrice+@SpPrice;
if (getarg(0) == 1 && getarg(1) == 1 && Zeny<@healfee) goto Zeny_Short_Both;
if (getarg(0) == 1 && Zeny<@healfee) goto Zeny_short_HP;
if (getarg(1) == 1 && Zeny<@healfee) goto Zeny_short_SP;
if (getarg(0) == 1)&&(getarg(1) == 1)&&(Zeny<@healfee) goto Zeny_Short_Both;
if (getarg(0) == 1)&&(Zeny<@healfee) goto Zeny_short_HP;
if (getarg(1) == 1)&&(Zeny<@healfee) goto Zeny_short_SP;
set Zeny, Zeny-@healfee;
if (getarg(0) == 1 && getarg(1) == 1) percentheal 100,100;
if (getarg(0) == 1)&&(getarg(1) == 1) percentheal 100,100;
if (getarg(0) == 1) percentheal 100,0;
if (getarg(1) == 1) percentheal 0,100;
close;
@@ -553,34 +553,37 @@ Zeny_short_HP:
mes "do you want me to partly heal your HP ?";
if (select("Yes","No") == 2) goto L_end;
set @Hp, Zeny/$QW_HP_H_PRICE;
set @HpPrice, @Hp*$QW_HP_H_PRICE;
if (@Hp == 1) mes "your not worth the effort";
if (@Hp == 1) goto L_end;
set Zeny, Zeny-@HpPrice;
set @HpPrice, @Hp*$QW_HP_H_PRICE;
if (@Hp == 1) mes "your not worth the effort";
if (@Hp == 1) goto L_end;
set Zeny, Zeny-@HpPrice;
heal @Hp,0;
close;
end;
Zeny_short_SP:
mes "[Warpra]";
mes "do you want me to partly heal your SP ?";
if (select("Yes","No") == 2) goto L_end;
set @Sp, Zeny/$QW_HP_S_PRICE;
set @SpPrice, @Sp*$QW_HP_S_PRICE;
if (@Sp == 1) mes "your not worth the effort";
if (@Sp == 1) goto L_end;
set Zeny, Zeny-@SpPrice;
set @SpPrice, @Sp*$QW_HP_S_PRICE;
if (@Sp == 1) mes "your not worth the effort";
if (@Sp == 1) goto L_end;
set Zeny, Zeny-@SpPrice;
heal 0,@Sp;
close;
end;
//=============================Storage=============================
L_Storage:
next;
if(basicskillcheck() > 0 && getskilllv(1) < 6) goto L_StorageJBlow;
set @fee, $QW_S_PRICE;
if ($QW_S_PRICE == 60 && BaseJob == Job_Novice) set @fee, 30;
if ($QW_S_PRICE == 60)&&(BaseJob == Job_Novice) set @fee, 30;
if ($QW_S_PRICE == 60)&&(BaseJob != Job_Novice) set @fee, 60;
if(Zeny<@fee) callsub L_Short_on_zeny,2;
set Zeny, Zeny-@fee;
if ($QW_KPoint == 1) set RESRVPTS, RESRVPTS + (@fee/5);
@@ -732,14 +735,14 @@ function script QWS_MMarray {
set @Mi,0; // That's our loop counter.
set @Mj,0; // That's the menu lines counter.
//----------------GameMaster-Menu
if (getgmlevel()>=80) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
if (getgmlevel()>=80) set @Mmenuref[@Mj],@Mi;
if (getgmlevel()>=80) set @Mj,@Mj+1;
if (getgmlevel()>= 80) set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
if (getgmlevel()>= 80) set @Mmenuref[@Mj],@Mi;
if (getgmlevel()>= 80) set @Mj,@Mj+1;
set @Mi,@Mi+1;
//----------------Special-Warp
callfunc "QWS_TownStamps";
callfunc "QWS_DungeonStamps";
if (@Tstamp == @MaxTstamp && @Dstamp == @MaxDstamp && $QW_SP_WarpMap$ != "") {
if (@Tstamp == @MaxTstamp)&&(@Dstamp == @MaxDstamp)&&($QW_SP_WarpMap$ != "") {
set @Mmenulist$[@Mj],@pMmenuitems$[@Mi];
set @Mmenuref[@Mj],@Mi;
set @Mj,@Mj+1;
@@ -799,14 +802,14 @@ function script QWS_MMarray {
// setarray @pTmenuitems$[@Ti], "Prontera"; // Name of Town shown in Town select Menu
// setarray @pTprice[@Ti], $QW_BW_PRICE; // warp prices (Basic ($QW_BW_PRICE), Advanced ($QW_AW_PRICE), Overseas $QW_OW_PRICE)
//
// setarray @pTmap$[@Ti], "prontera"; // mapfilename of town
// setarray @pTmap$[@Ti], "prontera.gat"; // mapfilename of town
// setarray @pTXcoords[@Ti], 156; // X warp coords
// setarray @pTYcoords[@Ti], 187; // Y warp coords
//
// QWS_Make_Town_Menu XXX;
//
// the full wap commands send out by this script for these example would be
//warp example_01 123 123
//warp example_01.gat 123 123
//
// use the same XXX number as you used when making your own town warpra
// Read below how
@@ -814,11 +817,11 @@ function script QWS_MMarray {
// example:
//
//syntax:
//mapname,xcoord,ycoord,directionfacing script Name of NPC NPC-ID,{
//mapname.gat,xcoord,ycoord,directionfacing script Name of NPC NPC-ID,{
//
// Full example using fake map & coords
//
//example_01,213,213,4 script Warpra 112,{
//example_01.gat,213,213,4 script Warpra 112,{
// callfunc "QWS_Town_Warpra",XXX,"A FAKE TOWN FOR EXAMPLE";
// close;
// }
@@ -833,7 +836,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Prontera";
setarray @pTprice[@Ti], $QW_BW_PRICE;
setarray @pTmap$[@Ti], "prontera";
setarray @pTmap$[@Ti], "prontera.gat";
setarray @pTXcoords[@Ti], 156;
setarray @pTYcoords[@Ti], 187;
@@ -842,7 +845,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Alberta";
setarray @pTprice[@Ti], $QW_BW_PRICE;
setarray @pTmap$[@Ti], "alberta";
setarray @pTmap$[@Ti], "alberta.gat";
setarray @pTXcoords[@Ti], 27;
setarray @pTYcoords[@Ti], 236;
@@ -851,7 +854,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Aldebaran";
setarray @pTprice[@Ti], $QW_AW_PRICE;
setarray @pTmap$[@Ti], "aldebaran";
setarray @pTmap$[@Ti], "aldebaran.gat";
setarray @pTXcoords[@Ti], 145;
setarray @pTYcoords[@Ti], 120;
@@ -860,7 +863,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Amatsu";
setarray @pTprice[@Ti], $QW_OW_PRICE;
setarray @pTmap$[@Ti], "amatsu";
setarray @pTmap$[@Ti], "amatsu.gat";
setarray @pTXcoords[@Ti], 197;
setarray @pTYcoords[@Ti], 86;
@@ -869,7 +872,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Ayothaya";
setarray @pTprice[@Ti], $QW_OW_PRICE;
setarray @pTmap$[@Ti], "ayothaya";
setarray @pTmap$[@Ti], "ayothaya.gat";
setarray @pTXcoords[@Ti], 150;
setarray @pTYcoords[@Ti], 57;
@@ -878,7 +881,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Comodo";
setarray @pTprice[@Ti], $QW_AW_PRICE;
setarray @pTmap$[@Ti], "comodo";
setarray @pTmap$[@Ti], "comodo.gat";
setarray @pTXcoords[@Ti], 188;
setarray @pTYcoords[@Ti], 161;
@@ -887,7 +890,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Einbech";
setarray @pTprice[@Ti], $QW_AW_PRICE;
setarray @pTmap$[@Ti], "einbech";
setarray @pTmap$[@Ti], "einbech.gat";
setarray @pTXcoords[@Ti], 172;
setarray @pTYcoords[@Ti], 126;
@@ -896,7 +899,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Einbroch";
setarray @pTprice[@Ti], $QW_AW_PRICE;
setarray @pTmap$[@Ti], "einbroch";
setarray @pTmap$[@Ti], "einbroch.gat";
setarray @pTXcoords[@Ti], 230;
setarray @pTYcoords[@Ti], 191;
@@ -905,7 +908,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Geffen";
setarray @pTprice[@Ti], $QW_BW_PRICE;
setarray @pTmap$[@Ti], "geffen";
setarray @pTmap$[@Ti], "geffen.gat";
setarray @pTXcoords[@Ti], 119;
setarray @pTYcoords[@Ti], 66;
@@ -914,7 +917,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Gonryun";
setarray @pTprice[@Ti], $QW_OW_PRICE;
setarray @pTmap$[@Ti], "gonryun";
setarray @pTmap$[@Ti], "gonryun.gat";
setarray @pTXcoords[@Ti], 150;
setarray @pTYcoords[@Ti], 130;
@@ -923,7 +926,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Hugel";
setarray @pTprice[@Ti], $QW_AW_PRICE;
setarray @pTmap$[@Ti], "hugel";
setarray @pTmap$[@Ti], "hugel.gat";
setarray @pTXcoords[@Ti], 95;
setarray @pTYcoords[@Ti], 121;
@@ -932,7 +935,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Izlude";
setarray @pTprice[@Ti], $QW_BW_PRICE;
setarray @pTmap$[@Ti], "izlude";
setarray @pTmap$[@Ti], "izlude.gat";
setarray @pTXcoords[@Ti], 128;
setarray @pTYcoords[@Ti], 111;
@@ -941,7 +944,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Jawaii";
setarray @pTprice[@Ti], $QW_AW_PRICE;
setarray @pTmap$[@Ti], "jawaii";
setarray @pTmap$[@Ti], "jawaii.gat";
setarray @pTXcoords[@Ti], 243;
setarray @pTYcoords[@Ti], 115;
@@ -950,7 +953,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Lighthalzen";
setarray @pTprice[@Ti], $QW_AW_PRICE;
setarray @pTmap$[@Ti], "lighthalzen";
setarray @pTmap$[@Ti], "lighthalzen.gat";
setarray @pTXcoords[@Ti], 158;
setarray @pTYcoords[@Ti], 110;
@@ -959,7 +962,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Louyang";
setarray @pTprice[@Ti], $QW_OW_PRICE;
setarray @pTmap$[@Ti], "louyang";
setarray @pTmap$[@Ti], "louyang.gat";
setarray @pTXcoords[@Ti], 210;
setarray @pTYcoords[@Ti], 108;
@@ -968,7 +971,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Lutie";
setarray @pTprice[@Ti], $QW_AW_PRICE;
setarray @pTmap$[@Ti], "xmas";
setarray @pTmap$[@Ti], "xmas.gat";
setarray @pTXcoords[@Ti], 148;
setarray @pTYcoords[@Ti], 131;
@@ -977,7 +980,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Morroc";
setarray @pTprice[@Ti], $QW_BW_PRICE;
setarray @pTmap$[@Ti], "morocc";
setarray @pTmap$[@Ti], "morocc.gat";
setarray @pTXcoords[@Ti], 159;
setarray @pTYcoords[@Ti], 93;
@@ -986,7 +989,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Niflheim";
setarray @pTprice[@Ti], $QW_AW_PRICE;
setarray @pTmap$[@Ti], "niflheim";
setarray @pTmap$[@Ti], "niflheim.gat";
setarray @pTXcoords[@Ti], 195;
setarray @pTYcoords[@Ti], 186;
@@ -995,7 +998,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Payon";
setarray @pTprice[@Ti], $QW_BW_PRICE;
setarray @pTmap$[@Ti], "payon";
setarray @pTmap$[@Ti], "payon.gat";
setarray @pTXcoords[@Ti], 152;
setarray @pTYcoords[@Ti], 75;
@@ -1004,7 +1007,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Umbala";
setarray @pTprice[@Ti], $QW_AW_PRICE;
setarray @pTmap$[@Ti], "umbala";
setarray @pTmap$[@Ti], "umbala.gat";
setarray @pTXcoords[@Ti], 130;
setarray @pTYcoords[@Ti], 130;
@@ -1013,7 +1016,7 @@ function script QWS_Tarray {
setarray @pTmenuitems$[@Ti], "Yuno";
setarray @pTprice[@Ti], $QW_AW_PRICE;
setarray @pTmap$[@Ti], "yuno";
setarray @pTmap$[@Ti], "yuno.gat";
setarray @pTXcoords[@Ti], 160;
setarray @pTYcoords[@Ti], 168;
@@ -1043,10 +1046,10 @@ menu_item:
set @Ti,@Ti+1;
return;
}
if (@pTprice[@Ti] != 0 && $QW_MapUserShow == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
if (@pTprice[@Ti] == 0 && $QW_MapUserShow == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
if (@pTprice[@Ti] != 0 && $QW_MapUserShow == 1) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" ["+getmapusers(@pTmap$[@Ti])+"]"+" -> "+@pTprice[@Ti];
if (@pTprice[@Ti] == 0 && $QW_MapUserShow == 1) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" ["+getmapusers(@pTmap$[@Ti])+"]";
if (@pTprice[@Ti] != 0)&&($QW_MapUserShow == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" -> "+@pTprice[@Ti];
if (@pTprice[@Ti] == 0)&&($QW_MapUserShow == 0) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti];
if (@pTprice[@Ti] != 0)&&($QW_MapUserShow == 1) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" ["+getmapusers(@pTmap$[@Ti])+"]"+" -> "+@pTprice[@Ti];
if (@pTprice[@Ti] == 0)&&($QW_MapUserShow == 1) set @Tmenulist$[@Tj], @pTmenuitems$[@Ti]+" ["+getmapusers(@pTmap$[@Ti])+"]";
set @Tmenuref[@Tj],@Ti;
set @Tj,@Tj+1;
set @Ti,@Ti+1;
@@ -1063,7 +1066,7 @@ menu_item:
// setarray @pDfee$[@Di], "$QW_BW_FEE"; // Identifyer for the Dungeon fee caluclation (Basic ("$QW_BW_FEE"), Advanced ("$QW_AW_FEE"), Overseas ("$QW_OW_FEE")) please use setting in relation with option above (Don't forget "")
// setarray @DLevels[@Di], 2; //number of levels in dungeon (very important if set to high will shift all leveldata!!)
//
// setarray @DGat$[@Dref], "example_01", "example_02"; // mapfilename of dungeon level
// setarray @DGat$[@Dref], "example_01.gat", "example_02.gat"; // mapfilename of dungeon level
// setarray @DLevelName$[@Dref], "Example Level 1", "Example Level 2"; // level name shown in dungeon level select
// setarray @DXcoords[@Dref], 123, 234; // X warp coords
// setarray @DYcoords[@Dref], 123, 234;// Y warp coords
@@ -1073,10 +1076,10 @@ menu_item:
//
// the full wap commands send out by this scripts for these examples would be
// for Example Level 1:
//warp example_01 123 123
//warp example_01.gat 123 123
//
// for Example Level 2:
//warp example_02 234 234
//warp example_02.gat 234 234
//
// use the same XXX number as you used when making your own dungeon unlocker (Warpra Helper) inside the dungeon
// (usually half way near a warp to next level)
@@ -1085,11 +1088,11 @@ menu_item:
// example:
//
//syntax:
//mapname,xcoord,ycoord,directionfacing script Name of NPC NPC-ID,{
//mapname.gat,xcoord,ycoord,directionfacing script Name of NPC NPC-ID,{
//
// Full example using fake map & coords
//
//example_01,213,213,4 script Warpra Helper 112,{
//example_01.gat,213,213,4 script Warpra Helper 112,{
// callfunc "QWS_Dungeon_Warpra",XXX,"A FAKE DUNGEON FOR EXAMPLE";
// close;
// }
@@ -1107,7 +1110,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_AW_FEE";
setarray @DLevels[@Di], 3;
setarray @DGat$[@Dref], "abyss_01", "abyss_02", "abyss_03";
setarray @DGat$[@Dref], "abyss_01.gat", "abyss_02.gat", "abyss_03.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3";
setarray @DXcoords[@Dref], 265, 275, 116;
setarray @DYcoords[@Dref], 273, 270, 27;
@@ -1121,7 +1124,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_OW_FEE";
setarray @DLevels[@Di], 3;
setarray @DGat$[@Dref], "ama_dun01", "ama_dun02", "ama_dun03";
setarray @DGat$[@Dref], "ama_dun01.gat", "ama_dun02.gat", "ama_dun03.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3";
setarray @DXcoords[@Dref], 227, 32, 119;
setarray @DYcoords[@Dref], 10, 43, 15;
@@ -1135,7 +1138,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_BW_FEE";
setarray @DLevels[2], 2;
setarray @DGat$[@Dref], "anthell01", "anthell02";
setarray @DGat$[@Dref], "anthell01.gat", "anthell02.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2";
setarray @DXcoords[@Dref], 32, 34;
setarray @DYcoords[@Dref], 262, 263;
@@ -1149,7 +1152,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_OW_FEE";
setarray @DLevels[3], 2;
setarray @DGat$[@Dref], "ayo_dun01", "ayo_dun02";
setarray @DGat$[@Dref], "ayo_dun01.gat", "ayo_dun02.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2";
setarray @DXcoords[@Dref], 275, 150;
setarray @DYcoords[@Dref], 17, 13;
@@ -1163,7 +1166,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_BW_FEE";
setarray @DLevels[4], 5;
setarray @DGat$[@Dref], "iz_dun00", "iz_dun01", "iz_dun02", "iz_dun03", "iz_dun04";
setarray @DGat$[@Dref], "iz_dun00.gat", "iz_dun01.gat", "iz_dun02.gat", "iz_dun03.gat", "iz_dun04.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5";
setarray @DXcoords[@Dref], 168, 41, 236, 32, 26;
setarray @DYcoords[@Dref], 168, 37, 204, 63, 27;
@@ -1177,7 +1180,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_AW_FEE";
setarray @DLevels[5], 8;
setarray @DGat$[@Dref], "c_tower1", "c_tower2", "c_tower3", "c_tower4", "alde_dun01", "alde_dun02", "alde_dun03", "alde_dun04";
setarray @DGat$[@Dref], "c_tower1.gat", "c_tower2.gat", "c_tower3.gat", "c_tower4.gat", "alde_dun01.gat", "alde_dun02.gat", "alde_dun03.gat", "alde_dun04.gat";
setarray @DLevelName$[@Dref], "Clock Tower Level 1", "Clock Tower Level 2", "Clock Tower Level 3", "Clock Tower Level 4", "Basement 1F", "Basement 2F", "Basement 3F", "Basement 4F";
setarray @DXcoords[@Dref], 200, 268, 64, 32, 197, 262, 276, 130;
setarray @DYcoords[@Dref], 163, 26, 148, 63, 25, 41, 53, 130;
@@ -1191,7 +1194,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_AW_FEE";
setarray @DLevels[6], 3;
setarray @DGat$[@Dref], "mjo_dun01", "mjo_dun02", "mjo_dun03";
setarray @DGat$[@Dref], "mjo_dun01.gat", "mjo_dun02.gat", "mjo_dun03.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3";
setarray @DXcoords[@Dref], 52, 381, 302;
setarray @DYcoords[@Dref], 17, 343, 261;
@@ -1205,7 +1208,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_BW_FEE";
setarray @DLevels[7], 4;
setarray @DGat$[@Dref], "prt_sewb1", "prt_sewb2", "prt_sewb3", "prt_sewb4";
setarray @DGat$[@Dref], "prt_sewb1.gat", "prt_sewb2.gat", "prt_sewb3.gat", "prt_sewb4.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4";
setarray @DXcoords[@Dref], 132, 19, 180, 100;
setarray @DYcoords[@Dref], 248, 19, 169, 92;
@@ -1219,7 +1222,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_AW_FEE";
setarray @DLevels[8], 2;
setarray @DGat$[@Dref], "ein_dun01", "ein_dun02";
setarray @DGat$[@Dref], "ein_dun01.gat", "ein_dun02.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2";
setarray @DXcoords[@Dref], 22, 292;
setarray @DYcoords[@Dref], 14, 290;
@@ -1233,7 +1236,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_BW_FEE";
setarray @DLevels[9], 4;
setarray @DGat$[@Dref], "gefenia01", "gefenia02", "gefenia03", "gefenia04";
setarray @DGat$[@Dref], "gefenia01.gat", "gefenia02.gat", "gefenia03.gat", "gefenia04.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4";
setarray @DXcoords[@Dref], 59, 201, 264, 33;
setarray @DYcoords[@Dref], 167, 35, 236, 270;
@@ -1247,7 +1250,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_BW_FEE";
setarray @DLevels[@Di], 4;
setarray @DGat$[@Dref], "gef_dun00", "gef_dun01", "gef_dun02", "gef_dun03";
setarray @DGat$[@Dref], "gef_dun00.gat", "gef_dun01.gat", "gef_dun02.gat", "gef_dun03.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4";
setarray @DXcoords[@Dref], 104, 115, 106, 203;
setarray @DYcoords[@Dref], 100, 236, 132, 200;
@@ -1261,7 +1264,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_BW_FEE";
setarray @DLevels[@Di], 17;
setarray @DGat$[@Dref], "glast_01", "gl_church", "gl_chyard", "gl_in01", "gl_cas01", "gl_cas02", "gl_knt01", "gl_knt02", "gl_prison", "gl_prison1", "gl_step", "gl_sew01", "gl_sew02", "gl_sew03", "gl_sew04", "gl_dun01", "gl_dun02";
setarray @DGat$[@Dref], "glast_01.gat", "gl_church.gat", "gl_chyard.gat", "gl_in01.gat", "gl_cas01.gat", "gl_cas02.gat", "gl_knt01.gat", "gl_knt02.gat", "gl_prison.gat", "gl_prison1.gat", "gl_step.gat", "gl_sew01.gat", "gl_sew02.gat", "gl_sew03.gat", "gl_sew04.gat", "gl_dun01.gat", "gl_dun02.gat";
setarray @DLevelName$[@Dref], "Glast Heim Entrance", "St. Abbey", "Churchyard", "Inside Glast Heim", "Castle 1", "Castle 2", "Chivalry 1", "Chivalry 2", "Prison 1", "Prison 2", "Steps", "Sewers 1", "Sewers 2", "Sewers 3", "Sewers 4", "Lowest Cave 1", "Lowest Cave 2";
setarray @DXcoords[@Dref], 370, 156, 147, 121, 199, 104, 150, 157, 14, 150, 117, 258, 108, 171, 68, 133, 224;
setarray @DYcoords[@Dref], 300, 8, 15, 59, 29, 25, 10, 287, 70, 14, 124, 255, 291, 273, 277, 271, 274;
@@ -1275,7 +1278,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_OW_FEE";
setarray @DLevels[@Di], 3;
setarray @DGat$[@Dref], "gon_dun01", "gon_dun02", "gon_dun03";
setarray @DGat$[@Dref], "gon_dun01.gat", "gon_dun02.gat", "gon_dun03.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3";
setarray @DXcoords[@Dref], 143, 17, 68;
setarray @DYcoords[@Dref], 59, 114, 9;
@@ -1289,7 +1292,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_BW_FEE";
setarray @DLevels[@Di], 3;
setarray @DGat$[@Dref], "prt_maze01", "prt_maze02", "prt_maze03";
setarray @DGat$[@Dref], "prt_maze01.gat", "prt_maze02.gat", "prt_maze03.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3";
setarray @DXcoords[@Dref], 176, 94, 23;
setarray @DYcoords[@Dref], 6, 19, 8;
@@ -1303,7 +1306,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_AW_FEE";
setarray @DLevels[@Di], 2;
setarray @DGat$[@Dref], "juperos_01", "juperos_02";
setarray @DGat$[@Dref], "juperos_01.gat", "juperos_02.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2";
setarray @DXcoords[@Dref], 53, 36;
setarray @DYcoords[@Dref], 247, 60;
@@ -1317,7 +1320,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_AW_FEE";
setarray @DLevels[@Di], 2;
setarray @DGat$[@Dref], "kh_dun01", "kh_dun02";
setarray @DGat$[@Dref], "kh_dun01.gat", "kh_dun02.gat";
setarray @DLevelName$[@Dref], "1st Floor", "2nd Floor";
setarray @DXcoords[@Dref], 63, 42;
setarray @DYcoords[@Dref], 10, 197;
@@ -1331,7 +1334,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_AW_FEE";
setarray @DLevels[@Di], 3;
setarray @DGat$[@Dref], "lhz_dun01", "lhz_dun02", "lhz_dun03";
setarray @DGat$[@Dref], "lhz_dun01.gat", "lhz_dun02.gat", "lhz_dun03.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3";
setarray @DXcoords[@Dref], 150, 150, 140;
setarray @DYcoords[@Dref], 287, 18, 137;
@@ -1345,7 +1348,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_OW_FEE";
setarray @DLevels[@Di], 2;
setarray @DGat$[@Dref], "lou_dun02", "lou_dun03";
setarray @DGat$[@Dref], "lou_dun02.gat", "lou_dun03.gat";
setarray @DLevelName$[@Dref], "Royal Tomb Level 1", "Royal Tomb Level 2";
setarray @DXcoords[@Dref], 282, 165;
setarray @DYcoords[@Dref], 20, 38;
@@ -1359,7 +1362,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_AW_FEE";
setarray @DLevels[@Di], 2;
setarray @DGat$[@Dref], "mag_dun01", "mag_dun02";
setarray @DGat$[@Dref], "mag_dun01.gat", "mag_dun02.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2";
setarray @DXcoords[@Dref], 126, 47;
setarray @DYcoords[@Dref], 69, 32;
@@ -1373,7 +1376,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_AW_FEE";
setarray @DLevels[@Di], 1;
setarray @DGat$[@Dref], "odin_tem01";
setarray @DGat$[@Dref], "odin_tem01.gat";
setarray @DLevelName$[@Dref], "Level 1";
setarray @DXcoords[@Dref], 96;
setarray @DYcoords[@Dref], 145;
@@ -1387,7 +1390,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_BW_FEE";
setarray @DLevels[@Di], 2;
setarray @DGat$[@Dref], "orcsdun01", "orcsdun02";
setarray @DGat$[@Dref], "orcsdun01.gat", "orcsdun02.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2";
setarray @DXcoords[@Dref], 32, 21;
setarray @DYcoords[@Dref], 169, 185;
@@ -1401,7 +1404,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_BW_FEE";
setarray @DLevels[@Di], 5;
setarray @DGat$[@Dref], "pay_dun00", "pay_dun01", "pay_dun02", "pay_dun03", "pay_dun04";
setarray @DGat$[@Dref], "pay_dun00.gat", "pay_dun01.gat", "pay_dun02.gat", "pay_dun03.gat", "pay_dun04.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5";
setarray @DXcoords[@Dref], 22, 19, 19, 155, 201;
setarray @DYcoords[@Dref], 180, 33, 63, 159, 204;
@@ -1415,7 +1418,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_BW_FEE";
setarray @DLevels[@Di], 6;
setarray @DGat$[@Dref], "moc_pryd01", "moc_pryd02", "moc_pryd03", "moc_pryd04", "moc_pryd05", "moc_pryd06";
setarray @DGat$[@Dref], "moc_pryd01.gat", "moc_pryd02.gat", "moc_pryd03.gat", "moc_pryd04.gat", "moc_pryd05.gat", "moc_pryd06.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Basement 1", "Basement 2";
setarray @DXcoords[@Dref], 192, 10, 100, 181, 94, 192;
setarray @DYcoords[@Dref], 9, 192, 92, 11, 96, 8;
@@ -1429,7 +1432,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_BW_FEE";
setarray @DLevels[@Di], 5;
setarray @DGat$[@Dref], "in_sphinx1", "in_sphinx2", "in_sphinx3", "in_sphinx4", "in_sphinx5";
setarray @DGat$[@Dref], "in_sphinx1.gat", "in_sphinx2.gat", "in_sphinx3.gat", "in_sphinx4.gat", "in_sphinx5.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5";
setarray @DXcoords[@Dref], 192, 149, 210, 10, 100;
setarray @DYcoords[@Dref], 9, 81, 54, 222, 99;
@@ -1443,7 +1446,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_BW_FEE";
setarray @DLevels[@Di], 2;
setarray @DGat$[@Dref], "treasure01", "treasure02";
setarray @DGat$[@Dref], "treasure01.gat", "treasure02.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2";
setarray @DXcoords[@Dref], 69, 102;
setarray @DYcoords[@Dref], 24, 27;
@@ -1457,7 +1460,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_AW_FEE";
setarray @DLevels[@Di], 13;
setarray @DGat$[@Dref], "tha_t01", "tha_t02", "tha_t03", "tha_t04", "tha_t05", "tha_t06", "tha_t07", "tha_t08", "tha_t09", "tha_t10", "tha_t11", "tha_t12", "thana_boss";
setarray @DGat$[@Dref], "tha_t01.gat", "tha_t02.gat", "tha_t03.gat", "tha_t04.gat", "tha_t05.gat", "tha_t06.gat", "tha_t07.gat", "tha_t08.gat", "tha_t09.gat", "tha_t10.gat", "tha_t11.gat", "tha_t12.gat", "thana_boss.gat";
setarray @DLevelName$[@Dref], "Level 1", "Level 2", "Level 3", "Level 4", "Level 5", "Level 6", "Level 7", "Level 8", "Level 9", "Level 10", "Level 11", "Level 12", "Thanatos Boss";
setarray @DXcoords[@Dref], 150, 150, 220, 59, 62, 206, 35, 105, 88, 168, 90, 129, 85;
setarray @DYcoords[@Dref], 35, 136, 158, 143, 11, 8, 166, 44, 145, 138, 36, 83, 76;
@@ -1471,7 +1474,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_AW_FEE";
setarray @DLevels[@Di], 2;
setarray @DGat$[@Dref], "xmas_dun01", "xmas_dun02";
setarray @DGat$[@Dref], "xmas_dun01.gat", "xmas_dun02.gat";
setarray @DLevelName$[@Dref], "Factory Warehouse", "Classifying Room";
setarray @DXcoords[@Dref], 205, 129;
setarray @DYcoords[@Dref], 16, 133;
@@ -1485,7 +1488,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_AW_FEE";
setarray @DLevels[@Di], 4;
setarray @DGat$[@Dref], "tur_dun01", "tur_dun02", "tur_dun03", "tur_dun04";
setarray @DGat$[@Dref], "tur_dun01.gat", "tur_dun02.gat", "tur_dun03.gat", "tur_dun04.gat";
setarray @DLevelName$[@Dref], "Outside", "Level 1", "Level 2", "Level 3";
setarray @DXcoords[@Dref], 161, 148, 132, 100;
setarray @DYcoords[@Dref], 34, 256, 190, 192;
@@ -1499,7 +1502,7 @@ function script QWS_Darray {
setarray @pDfee$[@Di], "$QW_OW_FEE";
setarray @DLevels[@Di], 3;
setarray @DGat$[@Dref], "um_dun01", "um_dun02", "yggdrasil01";
setarray @DGat$[@Dref], "um_dun01.gat", "um_dun02.gat", "yggdrasil01.gat";
setarray @DLevelName$[@Dref], "Carpenter's Shop in The Tree", "Passage to a Foreign World", "Hvergelmir's Fountain";
setarray @DXcoords[@Dref], 205, 48, 40;
setarray @DYcoords[@Dref], 16, 30, 63;
@@ -1569,16 +1572,17 @@ function script QWS_DLarray {
set @DWj,0; // That's the menu lines counter.
cleararray @DWLmenulist$[0],"",20; // Clearing the array to get rid off ghost items in menu
do {
if ($QW_DL == 0 || $QW_DDL >= @DDepth[@DWref]) {
if ($QW_DL == 0)||($QW_DDL >= @DDepth[@DWref]) {
set @warpprice, (@pDprice[@DwarpMenu]+ (getd(@pDfee$[@DwarpMenu])*@DDepth[@DWref]));
if (@warpprice != 0 && $QW_MapUserShow == 0) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" -> "+@warpprice;
if (@warpprice == 0 && $QW_MapUserShow == 0) set @DWLmenulist$[@DWj], @DLevelName$[@DWref];
if (@warpprice != 0 && $QW_MapUserShow == 1) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" ["+getmapusers(@DGat$[@DWref])+"] -> "+@warpprice;
if (@warpprice == 0 && $QW_MapUserShow == 1) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" ["+getmapusers(@DGat$[@DWref])+"]";
if (@warpprice != 0)&&($QW_MapUserShow == 0) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" -> "+@warpprice;
if (@warpprice == 0)&&($QW_MapUserShow == 0) set @DWLmenulist$[@DWj], @DLevelName$[@DWref];
if (@warpprice != 0)&&($QW_MapUserShow == 1) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" ["+getmapusers(@DGat$[@DWref])+"] -> "+@warpprice;
if (@warpprice == 0)&&($QW_MapUserShow == 1) set @DWLmenulist$[@DWj], @DLevelName$[@DWref]+" ["+getmapusers(@DGat$[@DWref])+"]";
set @DWLmenuref[@DWj],@DWref;
set @DWj,@DWj+1;
set @DWj,@DWj+1;
}
set @DWref, @DWref+1;
set @DWi,@DWi+1;
@@ -1777,7 +1781,7 @@ function script QWS_Dungeon_Warpra {
function QWS_D_getbin;
function QWS_D_setbin;
if (QWS_D_getbin(getarg(0)) == 0 && getarg(1) != "") {
if ((QWS_D_getbin(getarg(0)) == 0) && (getarg(1) != "")) {
mes "[Warpra]";
mes getarg(1)+" unlocked!";
QWS_D_setbin(getarg(0));
@@ -1823,7 +1827,7 @@ function script QWS_Town_Warpra {
function QWS_T_getbin;
function QWS_T_setbin;
if (QWS_T_getbin(getarg(0)) == 0 && getarg(1) != "") {
if ((QWS_T_getbin(getarg(0)) == 0) && (getarg(1) != "")) {
mes "[Warpra]";
mes getarg(1)+" unlocked!";
QWS_T_setbin(getarg(0));
@@ -1863,274 +1867,274 @@ binget:
}
//============================Warpras==============================
alb2trea,73,101,4 script Warpra 113,{
alb2trea.gat,73,101,4 script Warpra 113,{
callfunc "Q_Warpra",1;
}
ama_fild01,178,325,1 script Warpra 113,{
ama_fild01.gat,178,325,1 script Warpra 113,{
callfunc "Q_Warpra",1;
}
gef_fild10,71,339,4 script Warpra 113,{
gef_fild10.gat,71,339,4 script Warpra 113,{
callfunc "Q_Warpra",1;
}
izlu2dun,104,82,4 script Warpra 113,{
izlu2dun.gat,104,82,4 script Warpra 113,{
callfunc "Q_Warpra",1;
}
mjolnir_02,85,363,4 script Warpra 113,{
mjolnir_02.gat,85,363,4 script Warpra 113,{
callfunc "Q_Warpra",1;
}
moc_fild04,207,331,4 script Warpra 113,{
moc_fild04.gat,207,331,4 script Warpra 113,{
callfunc "Q_Warpra",1;
}
moc_fild19,106,97,4 script Warpra 113,{
moc_fild19.gat,106,97,4 script Warpra 113,{
callfunc "Q_Warpra",1;
}
moc_ruins,64,166,4 script Warpra 113,{
moc_ruins.gat,64,166,4 script Warpra 113,{
callfunc "Q_Warpra",1;
}
niflheim,197,192,3 script Warpra 113,{
niflheim.gat,197,192,3 script Warpra 113,{
callfunc "Q_Warpra",1;
}
pay_arche,39,135,4 script Warpra 113,{
pay_arche.gat,39,135,4 script Warpra 113,{
callfunc "Q_Warpra",1;
}
prt_fild05,273,215,4 script Warpra 113,{
prt_fild05.gat,273,215,4 script Warpra 113,{
callfunc "Q_Warpra",1;
}
tur_dun01,148,239,4 script Warpra 113,{
tur_dun01.gat,148,239,4 script Warpra 113,{
callfunc "Q_Warpra",1;
}
valkyrie,48,35,8 script Warpra 113,{
valkyrie.gat,48,35,8 script Warpra 113,{
callfunc "Q_Warpra",1;
}
yuno_fild03,37,135,4 script Warpra 113,{
yuno_fild03.gat,37,135,4 script Warpra 113,{
callfunc "Q_Warpra",1;
}
alberta,32,240,4 script Warpra 113,{
alberta.gat,32,240,4 script Warpra 113,{
callfunc "QWS_Town_Warpra",1,"Alberta Town";
close;
}
aldebaran,146,118,4 script Warpra 113,{
aldebaran.gat,146,118,4 script Warpra 113,{
callfunc "QWS_Town_Warpra",2,"Aldebaran Town";
close;
}
ayothaya,216,171,5 script Warpra 113,{
ayothaya.gat,216,171,5 script Warpra 113,{
callfunc "QWS_Town_Warpra",4,"Ayotaya Town";
close;
}
amatsu,193,81,1 script Warpra 113,{
amatsu.gat,193,81,1 script Warpra 113,{
callfunc "QWS_Town_Warpra",3,"Amatsu Town";
close;
}
comodo,195,158,4 script Warpra 113,{
comodo.gat,195,158,4 script Warpra 113,{
callfunc "QWS_Town_Warpra",5,"Comodo Town";
close;
}
einbroch,229,196,5 script Warpra 113,{
einbroch.gat,229,196,5 script Warpra 113,{
callfunc "QWS_Town_Warpra",7,"Einbroch Town";
close;
}
einbech,173,131,5 script Warpra 113,{
einbech.gat,173,131,5 script Warpra 113,{
callfunc "QWS_Town_Warpra",6,"Einbech Town";
close;
}
geffen,116,66,4 script Warpra 113,{
geffen.gat,116,66,4 script Warpra 113,{
callfunc "QWS_Town_Warpra",8,"Geffen Town";
close;
}
gonryun,152,130,4 script Warpra 113,{
gonryun.gat,152,130,4 script Warpra 113,{
callfunc "QWS_Town_Warpra",9,"Gonryun Town";
close;
}
hugel,90,127,5 script Warpra 113,{
hugel.gat,90,127,5 script Warpra 113,{
callfunc "QWS_Town_Warpra",10,"Hugel Town";
close;
}
jawaii,107,182,5 script Warpra 113,{
jawaii.gat,107,182,5 script Warpra 113,{
callfunc "QWS_Town_Warpra",12,"Jawaii Town";
close;
}
izlude,132,116,4 script Warpra 113,{
izlude.gat,132,116,4 script Warpra 113,{
callfunc "QWS_Town_Warpra",11,"Izlude Town";
close;
}
lighthalzen,153,100,5 script Warpra 113,{
lighthalzen.gat,153,100,5 script Warpra 113,{
callfunc "QWS_Town_Warpra",13,"Lighthalzen Town";
close;
}
louyang,211,106,4 script Warpra 113,{
louyang.gat,211,106,4 script Warpra 113,{
callfunc "QWS_Town_Warpra",14,"Louyang Town";
close;
}
morocc,157,95,4 script Warpra 113,{
morocc.gat,157,95,4 script Warpra 113,{
callfunc "QWS_Town_Warpra",16,"Morroc Town";
close;
}
nif_fild01,319,77,1 script Warpra 113,{
nif_fild01.gat,319,77,1 script Warpra 113,{
callfunc "QWS_Town_Warpra",17,"Niflheim Town";
close;
}
payon,183,110,4 script Warpra 113,{
payon.gat,183,110,4 script Warpra 113,{
callfunc "QWS_Town_Warpra",18,"Payon Town";
close;
}
prontera,147,172,5 script Warpra 113,{
prontera.gat,147,172,5 script Warpra 113,{
callfunc "QWS_Town_Warpra",0,"Prontera Town";
close;
}
umbala,133,130,4 script Warpra 113,{
umbala.gat,133,130,4 script Warpra 113,{
callfunc "QWS_Town_Warpra",19,"Umbala Town";
close;
}
xmas,151,136,4 script Warpra 113,{
xmas.gat,151,136,4 script Warpra 113,{
callfunc "QWS_Town_Warpra",15,"Lutie Town";
close;
}
yuno,138,162,4 script Warpra 113,{
yuno.gat,138,162,4 script Warpra 113,{
callfunc "QWS_Town_Warpra",20,"Yuno Town";
close;
}
abyss_02,274,266,1 script Warpra 113,{
abyss_02.gat,274,266,1 script Warpra 113,{
callfunc "QWS_Dungeon_Warpra",0,"Abyss Lake";
close;
}
ama_dun02,192,118,5 script Warpra Helper 112,{
ama_dun02.gat,192,118,5 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",1,"Amatsu Dungeon";
close;
}
anthell02,170,165,3 script Warpra Helper 112,{
anthell02.gat,170,165,3 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",2,"Ant Hell Dungeon";
close;
}
ayo_dun02,258,193,5 script Warpra Helper 112,{
ayo_dun02.gat,258,193,5 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",3,"Ayotaya Dungeon";
close;
}
ein_dun02,292,282,1 script Warpra Helper 112,{
ein_dun02.gat,292,282,1 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",8,"Einbech Dungeon";
close;
}
iz_dun03,202,47,2 script Warpra Helper 112,{
iz_dun03.gat,202,47,2 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",4,"Byalan Dungeon";
close;
}
c_tower3,129,106,4 script Warpra Helper 112,{
c_tower3.gat,129,106,4 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",5,"Clock Tower Dungeon";
close;
}
mjo_dun02,39,25,4 script Warpra Helper 112,{
mjo_dun02.gat,39,25,4 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",6,"Coal Mine Dungeon";
close;
}
prt_sewb2,176,30,3 script Warpra Helper 112,{
prt_sewb2.gat,176,30,3 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",7,"Culvert Dungeon";
close;
}
gefenia03,137,34,0 script Warpra Helper 112,{
gefenia03.gat,137,34,0 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",9,"Gefenia Dungeon";
close;
}
gef_dun02,218,61,2 script Warpra Helper 112,{
gef_dun02.gat,218,61,2 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",10,"Gefen Dungeon";
close;
}
glast_01,371,308,3 script Warpra Helper 112,{
glast_01.gat,371,308,3 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",11,"Glast Heim Dungeon";
close;
}
gon_dun01,167,273,4 script Warpra Helper 112,{
gon_dun01.gat,167,273,4 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",12,"Gonryun Dungeon";
close;
}
juperos_02,127,154,5 script Warpra Helper 112,{
juperos_02.gat,127,154,5 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",14,"Juperos Cave";
close;
}
kh_dun01,14,224,3 script Warpra Helper 112,{
kh_dun01.gat,14,224,3 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",28,"Kiel Dungeon";
close;
}
lhz_dun02,156,151,5 script Warpra Helper 112,{
lhz_dun02.gat,156,151,5 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",15,"Lighthalzen Bio Lab";
close;
}
lou_dun02,168,264,4 script Warpra Helper 112,{
lou_dun02.gat,168,264,4 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",16,"Louyang Dungeon";
close;
}
mag_dun02,46,41,3 script Warpra Helper 112,{
mag_dun02.gat,46,41,3 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",17,"Magma Dungeon";
close;
}
odin_tem01,115,148,3 script Warpra Helper 112,{
odin_tem01.gat,115,148,3 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",18,"Odin Temple";
close;
}
orcsdun01,185,11,3 script Warpra Helper 112,{
orcsdun01.gat,185,11,3 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",19,"Orc Dungeon";
close;
}
pay_dun03,162,143,3 script Warpra Helper 112,{
pay_dun03.gat,162,143,3 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",20,"Payon Dungeon";
close;
}
moc_pryd02,101,95,3 script Warpra Helper 112,{
moc_pryd02.gat,101,95,3 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",21,"Pyramides Dungeon";
close;
}
in_sphinx2,274,268,1 script Warpra Helper 112,{
in_sphinx2.gat,274,268,1 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",22,"Sphinx Dungeon";
close;
}
tha_t07,111,162,3 script Warpra Helper 112,{
tha_t07.gat,111,162,3 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",24,"Thanatos Tower";
close;
}
treasure02,104,40,3 script Warpra Helper 112,{
treasure02.gat,104,40,3 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",23,"Sunken Ship Dungeon";
close;
}
xmas_dun02,124,131,3 script Warpra Helper 112,{
xmas_dun02.gat,124,131,3 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",25,"Toy Factory Dungeon";
close;
}
um_dun02,44,28,3 script Warpra Helper 112,{
um_dun02.gat,44,28,3 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",27,"Umbala Dungeon";
close;
}
tur_dun02,162,23,3 script Warpra Helper 112,{
tur_dun02.gat,162,23,3 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",26,"Turtle Island Dungeon";
close;
}
prt_maze02,102,69,4 script Warpra Helper 112,{
prt_maze02.gat,102,69,4 script Warpra Helper 112,{
callfunc "QWS_Dungeon_Warpra",13,"Hidden Dungeon";
close;
}

View File

@@ -241,4 +241,4 @@ L_againa:
menu "Yes",L_play,"No",L_go;
}
}

View File

@@ -1,10 +1,12 @@
//=====================================
// Vending Machine Script
// v2.3
// v2.4
//=====================================
// by Celestria
//=====================================
// Changelog:
// 2.4 - Made optimizations according to suggestions made by erKURITA. Script is now significantly shorter.
//
// 2.3 - Added in "Slam" feature, as well as admin ability to turn machine on and off.
// - Added admin menu. Allows GMs to put machines in/out of service, and to clear
// all jammed items.
@@ -46,16 +48,8 @@ p_track01,45,58,4 script Vending Machine#1 910,{
setarray @item[0], 12143, 519, 565;
setarray @price[0], 100, 50, 200;
set @itemn$[0], getitemname(@item[0]);
set @itemn$[1], getitemname(@item[1]);
set @itemn$[2], getitemname(@item[2]);
set @itemn$[3], getitemname(@item[3]);
set @itemn$[4], getitemname(@item[4]);
set @itemn$[5], getitemname(@item[5]);
set @itemn$[6], getitemname(@item[6]);
set @itemn$[7], getitemname(@item[7]);
set @itemn$[8], getitemname(@item[8]);
set @itemn$[9], getitemname(@item[9]);
for (set @i,0; @i < 10; set @i,@i+1)
set @itemn$[@i],getitemname(@item[@i]);
set @menu$[0], @itemn$[0]+" - "+@price[0];
set @menu$[1], @itemn$[1]+" - "+@price[1];
@@ -127,32 +121,16 @@ M_Ooo3:
close;
M_Fix:
set $itemjam0$[@machine],"0";
set $itemjam1$[@machine],"0";
set $itemjam2$[@machine],"0";
set $itemjam3$[@machine],"0";
set $itemjam4$[@machine],"0";
set $itemjam5$[@machine],"0";
set $itemjam6$[@machine],"0";
set $itemjam7$[@machine],"0";
set $itemjam8$[@machine],"0";
set $itemjam9$[@machine],"0";
for (set @i,0; @i < 10; set @i,@i+1)
setd "$itemjam"+@i+"$[@machine]","";
mes "All jammed items have been fixed.";
close;
}
function script F_Vend2 {
if(strcharinfo(0)==$itemjam0$[@machine]) goto B_StillJammed;
if(strcharinfo(0)==$itemjam1$[@machine]) goto B_StillJammed;
if(strcharinfo(0)==$itemjam2$[@machine]) goto B_StillJammed;
if(strcharinfo(0)==$itemjam3$[@machine]) goto B_StillJammed;
if(strcharinfo(0)==$itemjam4$[@machine]) goto B_StillJammed;
if(strcharinfo(0)==$itemjam5$[@machine]) goto B_StillJammed;
if(strcharinfo(0)==$itemjam6$[@machine]) goto B_StillJammed;
if(strcharinfo(0)==$itemjam7$[@machine]) goto B_StillJammed;
if(strcharinfo(0)==$itemjam8$[@machine]) goto B_StillJammed;
if(strcharinfo(0)==$itemjam9$[@machine]) goto B_StillJammed;
for (set @i,0; @i < 10; set @i,@i+1)
if(strcharinfo(0)==getd("$itemjam"+@i+"$[@machine]")) goto B_StillJammed;
set @jammed,rand(1,@jamrate);
mes "You peek inside the vending machine to see what's available.";
next;
@@ -214,16 +192,8 @@ B_Broke:
B_Buy:
if (@menu$[@num] == "Cancel") goto B_Cancel;
if(@num==0){if($itemjam0$[@machine]!="0") set @jammed,0;}
if(@num==1){if($itemjam1$[@machine]!="0") set @jammed,0;}
if(@num==2){if($itemjam2$[@machine]!="0") set @jammed,0;}
if(@num==3){if($itemjam3$[@machine]!="0") set @jammed,0;}
if(@num==4){if($itemjam4$[@machine]!="0") set @jammed,0;}
if(@num==5){if($itemjam5$[@machine]!="0") set @jammed,0;}
if(@num==6){if($itemjam6$[@machine]!="0") set @jammed,0;}
if(@num==7){if($itemjam7$[@machine]!="0") set @jammed,0;}
if(@num==8){if($itemjam8$[@machine]!="0") set @jammed,0;}
if(@num==9){if($itemjam9$[@machine]!="0") set @jammed,0;}
for (set @i,0; @i < 10; set @i,@i+1)
if(@num==@i) if(getd("$itemjam"+@i+"$[@machine]")) set @jammed,0;
if(Zeny < @price[@num]) goto B_Broke;
set Zeny,Zeny-@price[@num];
if(@jammed == 1) goto B_Jamitem;
@@ -239,16 +209,8 @@ B_Get2:
mes "What the!?";
mes "Two "+@itemn$[@num]+"s popped out!";
mes "It must be your lucky day.";
if(@num==0) set $itemjam0$[@machine],"0";
if(@num==1) set $itemjam1$[@machine],"0";
if(@num==2) set $itemjam2$[@machine],"0";
if(@num==3) set $itemjam3$[@machine],"0";
if(@num==4) set $itemjam4$[@machine],"0";
if(@num==5) set $itemjam5$[@machine],"0";
if(@num==6) set $itemjam6$[@machine],"0";
if(@num==7) set $itemjam7$[@machine],"0";
if(@num==8) set $itemjam8$[@machine],"0";
if(@num==9) set $itemjam9$[@machine],"0";
for (set @i,0; @i < 10; set @i,@i+1)
if(@num==@i) setd "$itemjam"+@i+"$[@machine]","";
close;
B_Jamitem:
mes "Vrrrrrrrr~";
@@ -257,16 +219,8 @@ B_Jamitem:
mes "["+strcharinfo(0)+"]";
mes "Dammit!";
mes "I hate it when these damn things jam!";
if(@num==0) set $itemjam0$[@machine],strcharinfo(0);
if(@num==1) set $itemjam1$[@machine],strcharinfo(0);
if(@num==2) set $itemjam2$[@machine],strcharinfo(0);
if(@num==3) set $itemjam3$[@machine],strcharinfo(0);
if(@num==4) set $itemjam4$[@machine],strcharinfo(0);
if(@num==5) set $itemjam5$[@machine],strcharinfo(0);
if(@num==6) set $itemjam6$[@machine],strcharinfo(0);
if(@num==7) set $itemjam7$[@machine],strcharinfo(0);
if(@num==8) set $itemjam8$[@machine],strcharinfo(0);
if(@num==9) set $itemjam9$[@machine],strcharinfo(0);
for (set @i,0; @i < 10; set @i,@i+1)
if(@num==@i) setd "$itemjam"+@i+"$[@machine]",strcharinfo(0);
close;
}