Jump to content
  • 0

disguise npc modification


Saisho

Question


  • Group:  Members
  • Topic Count:  52
  • Topics Per Day:  0.01
  • Content Count:  185
  • Reputation:   20
  • Joined:  01/06/13
  • Last Seen:  

can someone help me w/ a modification in the disguise npc that comes w/ the rathena?

i want to know if theres a way to it start like 4 times a day only and if possible it sum points and give prizes to the person won more rounds.

Link to comment
Share on other sites

5 answers to this question

Recommended Posts


  • Group:  Members
  • Topic Count:  57
  • Topics Per Day:  0.01
  • Content Count:  248
  • Reputation:   7
  • Joined:  11/27/12
  • Last Seen:  

There's a disguise npc in

\npc\custom\events

I guess this is it:

OnClock0000:
OnClock0600:
OnClock1200:
OnClock1800:

  • Upvote 1
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  52
  • Topics Per Day:  0.01
  • Content Count:  185
  • Reputation:   20
  • Joined:  01/06/13
  • Last Seen:  

hmm

so OnClock find actual server hrs instead milliseconds?

i still have to find out how to make the points thing.

edit: is something i messed up or the script wont stop the disguise sequence until the number of wins match w/ the number rounds?

Edited by Saisho
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  57
  • Topics Per Day:  0.01
  • Content Count:  248
  • Reputation:   7
  • Joined:  11/27/12
  • Last Seen:  

Yes, you can use this OnClock so that when the servertime gets at 0600,1200. Then it triggers to start the event.

hmm
so OnClock find actual server hrs instead milliseconds?

If you set the number of rounds to 10. Then it will end at 10.

edit: is something i messed up or the script wont stop the disguise sequence until the number of wins match w/ the number rounds?

Maybe you should post your script here so Script Moderators could find and help you with the problem.

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  52
  • Topics Per Day:  0.01
  • Content Count:  185
  • Reputation:   20
  • Joined:  01/06/13
  • Last Seen:  

maybe i messed up when changed the npc sprite. the only 2 things i did was change the sprite and move it to another location.


//===== rAthena Script =======================================
//= Disguise Event
//===== By: ==================================================
//= GmOcean
//===== Current Version: =====================================
//= 5.1
//===== Compatible With: =====================================
//= rAthena SVN
//===== Additional Comments: =================================  
//= Note: This script requires PCRE to run properly.
//= 5.0 Last update by GmOcean.
//= 5.1 Cleaned and standardized, mostly. [Euphy]
//============================================================

prontera,156,284,4 script Disguise Event 435,{

// Currently set to run every two hours.
// To change times, edit the OnClock labels below.

set .@GMLevel,60; // GM level required to access NPC.
set .@n$,"[^0000FFDisguise NPC^000000]";

if (getgmlevel()>=.@GMLevel) {
mes .@n$;
mes "Select an option.";
next;
switch(select("Turn ON/OFF Event:Event Settings")) {
case 1:
mes .@n$;
if (.EventON) {
mes "The Event is currently: [^0000FFON^000000]";
mes "Would you like to turn it OFF?";
} else {
mes "The Event is currently: [^FF0000OFF^000000]";
mes "Would you like to turn it ON?";
}
if(select("Yes:No")==2) close;
if (.EventON) {
set .EventON,0; set .Timer,0;
setnpctimer 0; stopnpctimer;
announce "A GM has decided to turn the Disguise Event off. As a result no further prizes will be given.",bc_map | bc_blue;
deletepset 1;
setnpcdisplay "Disguise Event",795;
close;
}
set .EventON,1; set .Timer,1; setnpctimer 0; initnpctimer;
set .ResetCounter,.ResetCounter+1;
announce "The Disguise Event will begin in 3 minutes.",bc_all | bc_blue;
announce "The Event is being held in Prontera.",bc_all | bc_blue;
close;
case 2:
mes .@n$;
mes "Pick a setting to modify.";
next;
switch(select("Monster Display:Number of Rounds:Prize Settings")) {
case 1:
setarray .@r$[0],"Disguise as all monsters.","Disguise as MVPs only.";
mes .@n$;
mes "Choose a disguise rule.";
next;
set .Rule, select(implode(.@r$,":"));
mes .@n$;
mes "The Disguise Rule has been set:";
mes "  > ^0055FF"+.@r$[.Rule-1]+"^000000";
close;
case 2:
mes .@n$;
mes "Input the number of rounds you want the event to last.";
mes "Current number: [^0000FF"+.Rounds+"^000000]";
next;
input .@Rounds;
set .Rounds,.@Rounds;
mes .@n$;
mes "The number of rounds has been changed to "+.Rounds+".";
close;
case 3:
mes .@n$;
mes "Input the Item ID of the prize given each round.";
mes "Current item: [^0000FF"+getitemname(.Prize)+"^000000] (ID #"+.Prize+")";
next;
input .@Prize;
mes .@n$;
if (getitemname(.@Prize)=="" || getitemname(.@Prize)=="null") {
mes "That item does not exist. Please try again.";
close;
}
set .Prize,.@Prize;
mes "Input the amount to be given.";
next;
input .@amount;
mes .@n$;
if (.@amount<=0 || .@amount>=10000) {
mes "That amount is invalid. Using default ammount of 1.";
set .@amount,1;
next;
mes .@n$;
}
set .PrizeAmt,.@amount;
mes "The Prize has been changed successfully.";
mes "Prize: "+.PrizeAmt+"x [^0000FF"+getitemname(.Prize)+"^000000]";
close;
}
}
}
if (.EventON) end;
mes .@n$;
mes "Welcome.";
mes "How may I be of assistance?";
if(select("Information:Nothing, just passing through.")==2) close;
next;
mes .@n$;
mes "This event is quite simple.";
mes "At the start of the event, I will";
mes "disguise myself as a random";
mes "monster. You have to shout";
mes "that monter's name out loud.";
next;
mes "If you are correct, you will receive";
mes "a prize. If not, keep trying!";
mes "That's all that there is to this event.";
close;

OnInit:
set .EventON,0;
set .Wait,0;
set .Winner,0;
set .ResetCounter,0;
set .Rounds,10;
set .Prize,512;
set .PrizeAmt,1;
set .Rule,1;
setarray .MVP[0],1038,1039,1046,1059,1086,1087,1112,1115,1147,1150,1157,1159,1190,1251,1252,1272,1312,1373,
			 1389,1399,1418,1492,1502,1511,1583,1623,1630,1646,1647,1648,1649,1650,1651,1658,1685,1688,
 1708,1719,1734,1751,1768,1779,1785,1802,1832,1871,1874,1885,1917,1980,2022,2068,2087,2131,
 2156,2165;
set .BlackList$, "1003,1006,1017,1021,1022,1027,1043,1075,1136,1137,1168," +
  "1171,1172,1173,1181,1187,1210,1217,1218,1222,1223,1224,1225,1226,1227,1228," +
  "1233,1284,1407,1411,1414,1495,1501,1900,1996,2000,2001,2002,2003,2004," +
  "2005,2006,2007,2011,2012,2025,2028,2029,2030,2031,2032,2033,2034,2035," +
  "2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049," +
  "2050,2051,2052,2053,2054,2055,2056,2057,2058,2059,2060,2061,2062,2063," +
  "2064,2065,2066,2067,2075,2076,2077,2078,2079,2080,2081,2083,2084,2085," +
  "2086,2087,2088,2089,2090,2091,2092,2093,2094,2095,2096,2097,2098,2099," +
  "2100,2101,2012,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113," +
  "2114,2115,2116,2117,2118,2119,2120,2121,2123,2124,2125,1496,";
end;
OnClock0000:
OnClock0200:
OnClock0400:
OnClock0600:
OnClock0800:
OnClock1000:
OnClock1200:
OnClock1400:
OnClock1600:
OnClock1800:
OnClock2000:
OnClock2200:
set .ResetCounter,.ResetCounter+1;
set .EventON,1;
set .Timer,1;
set .Wait,1;
announce "The Disguise Event will begin in 3 minutes.",bc_all | bc_blue;
announce "The Event is being held in Prontera.",bc_all | bc_blue;
setnpctimer 0;
initnpctimer;
end;
OnTimer10000:
if (.Timer || .Change) end;
set .Wait,0;
goto iDisguise;
end;
OnTimer30000:
if (.Timer) end;
set .Change,0;
setnpcdisplay "Disguise Event",795;
npctalk "You took too long to guess what I was. Please wait 10 seconds while I disguise again.";
specialeffect 725;
set $MonsterName$,"";
deletepset 1;
stopnpctimer;
setnpctimer 0;
initnpctimer;
end;
OnTimer60000:
if (.Timer!=1) end;
announce "The Disguise Event will begin in 2 minutes.",bc_all | bc_blue;
announce "The Event is being held in Prontera.",bc_all | bc_blue;
end;
OnTimer120000:
if (.Timer!=1) end;
announce "The Disguise Event will begin 1 minute.",bc_all | bc_blue;
announce "The Event is being held in Prontera.",bc_all | bc_blue;
end;
OnTimer180000:
if (.Timer!=1) end;
announce "The Disguise Event has begun!",bc_all | bc_blue;
announce "The Event is being held in Prontera.",bc_all | bc_blue;
set .Timer,0; stopnpctimer;
setnpctimer 0; initnpctimer;
iDisguise:
if (.Rule==1) {
set .Winner,0;
set .Monster,1000+rand(1,995);
if (compare(","+.BlackList$+"," , ","+.Monster+",")) goto iDisguise;
if (.Monster==.LastMonster) goto iDisguise;
set .LastMonster,.Monster;
set $MonsterName$,getmonsterinfo(.Monster,0);
}
if (.Rule==2) {
set .Winner,0;
set .Monster,rand(49);
set $MonsterName$,getmonsterinfo(.MVP[.Monster],0);
}
deletepset 1;
defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".*", "iCorrect";
activatepset 1;
if (.Rule==1) setnpcdisplay "Disguise Event",.Monster;
if (.Rule==2) setnpcdisplay "Disguise Event",.MVP[.Monster];
set .Change,1;
setnpctimer 0;
end;
iCorrect:
if (.Winner) {
dispbottom "Someone has already won this round.";
end;
}
set .Winner,1;
set .RoundCount,.RoundCount+1;
deletepset 1;
activatepset 1;
getitem .Prize,.PrizeAmt;
announce strcharinfo(0)+" is correct! I was disguised as: "+$MonsterName$+"",bc_map | bc_blue;
if (.RoundCount>=.Rounds) {
setnpcdisplay "Disguise Event",795;
set .RoundCount,0; set .Change,0; set .EventON,0;
setnpctimer 0; stopnpctimer;
npctalk "Thank you all for playing. That was the last round of the Disguise Event. Come play again later.";
end;
}
setnpcdisplay "Disguise Event",795;
set .Change,0;
setnpctimer 0;
end;
}

another thing is i was thinking in a way too add a armor enchant option in this npc but it cant find a way to skip slots and prevent it to add the bonus in the wrong position.

//===== eAthena Script =======================================
//= Character Manager
//===== By ===================================================
//= llchrisll
//===== Version ==============================================
//= 1.0 - Script Made
//   Made some text modifings
//= 1.1 - Added the possibility to add cards to the item.
//   OnInit: > ".use_cards" to 1 (default) to use it.
//===== Compatible With ======================================
//= Every eAthena Version
//===== Description ==========================================
//= This script will be only usefull on Test Servers,,
//= because it can set the players Level/Stat Points/Skill Points
//= as well the Job. Also it can give you items.
//= These functions are unlimited, except that you can
//= Disable/Enable it who can use it, GM only or all.
//===== Comments =============================================
//= None yet
//============================================================
prontera.gat,160,192,4 script Character Manager 108,{

set .@n$,"[Character Manager]";
set .@last_it,70000; // Highest Item ID

mes .@n$;
if(!.GMOnly || (.GMOnly && getgmlevel()) ) {
mes "What do you want to do?";
switch(select(.ch_man_m$)) {

case 1:
next;
mes .@n$;
mes "What do you want to change?";
mes "^FF0000Note: The number in the";
mes "\"( X )\" is your current Level.^000000";
menu "Base Level ("+BaseLevel+")",C_BLevel,"Job Level ("+JobLevel

+")",C_JLevel,"Nothing",L_Quit;

C_BLevel:
next;
mes .@n$;
mes "The max Base Level you can";
mes "be is \""+.BLevel+"\"";
next;
input @new_base;
if(@new_base > .BLevel || !@new_base) {
mes .@n$;
mes "I'm sorry, but you have";
mes "put an invalid Level.";
close;
}
next;
set BaseLevel,@new_base;
mes .@n$;
mes "You're Base Level has been";
mes "changed. Thanks for using";
mes "this service.";
close;

C_JLevel:
next;
mes .@n$;
mes "The max Job Level you can";
mes "be is \""+.JLevel+"\"";
mes "^FF0000Note: The Job Level is";
mes "Class depended and can't";
mes "increase over the";
mes "Server Settings.^000000";
next;
input @new_job;
if(@new_job > .JLevel || !@new_job) {
mes .@n$;
mes "I'm sorry, but you have";
mes "put an invalid Level.";
close;
}
next;
set JobLevel,1;
set SkillPoint,0;
set JobLevel,@new_job;
mes .@n$;
mes "You're Job Level has been";
mes "changed. Thanks for using";
mes "this service.";
close;

case 2:
if(!.JobSwap) close;
next;
mes .@n$;
mes "Which Job do you want?";
menu "Normal",L_NC,"Transcendend",L_TC,"Baby",L_BC,"Rebirth",L_RC;

L_NC:
next;
mes "Now type the number of the Job:";
mes "Normal Jobs are";
mes " ";
mes "Novice - 0";
mes "Swordman - 1";
mes "Mage - 2";
mes "Archer - 3";
mes "Acolyte - 4";
mes "Merchant - 5";
mes "Thief - 6";
mes " ";
mes "Super Novice - 23";
mes "Knight - 7/Crusader - 14";
mes "Priest - 8/Monk - 15";
mes "Wizard - 9/Sage - 16";
mes "Blacksmith - 10/Alchemist - 18";
mes "Hunter - 11/Bard - 19/Dancer - 20";
mes "Assassin - 12/Rogue - 17";
next;
input @job_num;
if(@job_num > 23) {
mes "Number 23 is the highest Class";
mes "within the normal Jobs.";
mes "If you want to succeed,";
mes "try a another job row.";
close;
} else if(@job_num == Class) {
mes .@n$;
mes "You are already the chosen";
mes "Class.";
close;
}
goto Job_Swap;

L_TC:
next;
mes "Now type the number of the Job:";
mes "Transcended Jobs are";
mes " ";
mes "Gunslinger - 24";
mes "Ninja - 25";
mes "Taekwon - 4046";
mes "Star Gladiator - 4047";
mes "Soullinker - 4049";
next;
input @job_num;
if(Class == 24 || Class == 25 || Class == 4046 || Class == 4047 ||

Class == 4049) {
mes .@n$;
mes "You are already a";
mes Class;
close;
} else if(!(@job_num == 24 || @job_num == 25 || @job_num == 4046

|| @job_num == 4047 || @job_num == 4049)) {
mes .@n$;
mes "The number you have put is invalid";
close;
}
goto Job_Swap;

L_BC:
next;
mes "Now type the number of the Job:";
mes "Baby Jobs are";
mes " ";
mes "Baby Novice - 4023";
mes "Baby Swordman - 4024";
mes "Baby Mage - 4025";
mes "Baby Archer - 4026";
mes "Baby Acolyte - 4027";
mes "Baby Merchant - 4028";
mes "Baby Thief - 4029";
mes " ";
mes "Super Baby - 4045";
mes "Baby Knight: 4030";
mes "Baby Crusader: 4037";
mes "Baby Priest: 4031/Baby Monk: 4038";
mes "Baby Wizard: 4032/Baby Sage: 4039";
mes "Baby Blacksmith: 4033";
mes "Baby Alchemist: 4031";
mes "Baby Hunter: 4034";
mes "Baby Bard: 4042/Baby Dancer - 4043";
mes "Baby Assassin: 4035";
mes "Baby Rogue: 4040";
next;
input @job_num;
if(@job_num < 4023 || @job_num > 4045) {
mes .@n$;
mes "The lowest number is 4023 and";
mes "the highest is 4045.";
close;
} else if(@job_num == Class) {
mes .@n$;
mes "You are already a";
mes Class;
close;
}
goto Job_Swap;

L_RC:
next;
mes "Now type the number of the Job:";
mes "Rebirth Jobs are";
mes " ";
mes "High Novice - 4001";
mes "High Swordman - 4002";
mes "High Mage - 4003";
mes "High Archer - 4004";
mes "High Acolyte - 4005";
mes "High Merchant - 4006";
mes "High Thief - 4007";
mes " ";
mes "Lord Knight: 4008/Paladin: 4015";
mes "High Priest: 4009/Champion: 4016";
mes "High Wizard: 4010/Professor: 4017";
mes "Whitesmith: 4011/Creator: 4019";
mes "Sniper: 4012";
mes "Clown: 4020/Gypsy: 4021";
mes "Assassin Cross: 4013/Stalker: 4018";
next;
input @job_num;
if(@job_num < 4001 || @job_num > 4021) {
mes .@n$;
mes "The lowest number is 4001 and";
mes "the highest is 4021.";
close;
} else if(@job_num == Class) {
mes .@n$;
mes "You are already a";
mes Class;
close;
}

Job_Swap:
jobchange @job_num;
mes .@n$;
mes "You are now a";
mes jobname(@job_num);
close;

case 3:
if(!.StatP) close;
next;
mes .@n$;
mes "Do you want to gain or delete Status Points?";
mes "Note: \"Delete\" removes every single point.";
next;
if(select("- Gain:- Delete") == 2) set StatusPoint,0;
mes .@n$;
mes "Type the amount of Status Points,";
mes "maximum is 10,000";
next;
if(input(@new_st,1,10000) != 0) {
mes .@n$;
mes "You have put an invald number,";
mes "lowest is 1 and highest is 10,000.";
close;
}
set StatusPoint,@new_st;
mes .@n$;
mes "You have recieved";
mes @new_st+" Status Points.";
mes "^FF0000Note: Be aware then this";
mes "can be affected by the Server Settings.";
close;;


case 4:
if(!.SkillP) close;
next;
mes .@n$;
mes "Do you want to gain or delete Skill Points?";
mes "Note: \"Delete\" removes every single point.";
next;
if(select("- Gain:- Delete") == 2) set SkillPoint,0;
mes .@n$;
mes "Type the amount of Skill Points,";
mes "maximum is 200.";
next;
if(input(@new_sk,1,200) != 0) {
mes .@n$;
mes "You have put an invald number,";
mes "lowest is 1 and highest is 200.";
close;
}
set SkillPoint,@new_sk;
mes .@n$;
mes "You have recieved";
mes @new_sk+" Skill Points.";
close;


case 5:
if(!.FreeItem) close;
next;
mes .@n$;
mes "Wanna type a Item ID by yourself or open our Shop?";
if(select("- Item ID:- Open Custom Shop") == 2) goto CH_Shop;
next;
mes .@n$;
mes "Type the Item ID which you want.";
input .@item_id;
next;
mes .@n$;
if(.@item_id < 512 || .@item_id > .@last_it) {
mes "I'm sorry, but you have put a invalid ID.";
close;
} else if(getiteminfo(.@item_id,3) == -1) {
mes "I'm sorry, there is no such item.";
close;
}
mes "Chosen Item: "+getitemname(.@item_id)+ ( (getiteminfo(.@item_id,10) >

0)?" ["+getiteminfo(.@item_id,10)+"]":"");
if(getiteminfo(.@item_id,2) != 4 && getiteminfo(.@item_id,2) != 5) {
mes "Now the quantity:";
input .@item_am;
next;
mes .@n$;
if(.@item_am < 1 || .@item_am > 30000) {
mes "I'm sorry, but you have put a invalid value.";
close;
}
} else {
set .@item_am,1;
next;
mes .@n$;
}
if(checkweight(.@item_id,.@item_am) == 0) {
mes "I'm sorry, but this will exceed your weight limit.";
close;
}
set @ref,0;
if(getiteminfo(.@item_id,2) == 4 || getiteminfo(.@item_id,2) == 5)

{
mes "What refine do you want?";
next;
if(input(@ref,0,.max_ref) != 0) {
mes .@n$;
mes "Lowest 0, Highest "+.max_ref;
close;
}
mes .@n$;
if( set(@slot,getiteminfo(.@item_id,10) ) > 0 &&

.use_cards) {
mes "Do you want to add cards in it?";
if(select("- Yes:- No") == 1) {
close2;
set @n$,.@n$;
set @item_id,.@item_id;
set @item_am,.@item_am;
doevent "CH_CardShops::OnCardStart";
end;
}
next;
mes .@n$;
}
}
mes "You have recieved";
mes .@item_am+"x "+ ( (@ref)?"+"+@ref+" ":"") + getitemname

(.@item_id);
getitem2 .@item_id,.@item_am,1,@ref,0,0,0,0,0;
close;

CH_Shop:
callshop "CH_TestShop",1;
npcshopattach "CH_TestShop";
end;

OnBuyItem:
for( set @bid,0; @bid < getarraysize(@bought_nameid); set @bid,@bid + 1) {
for( set @sid,0; @sid < getarraysize(.cshop_id); set @sid,@sid +

1) {
if(.cshop_id[@sid] == @bought_nameid[@bid]) {
set @cost_item,(.cshop_cost[@sid]

*@bought_quantity[@bid]);
set @cost_total,(@cost_total+@cost_item);
break;
}
}
}
if(@cost_total > Zeny) {
dispbottom "You don't have enough Zeny.";
} else {
for( set @buy,0; @buy < getarraysize(@bought_nameid); set

@buy,@buy + 1) {
getitem @bought_nameid[@buy],@bought_quantity[@buy];
}
dispbottom "Thank you for shopping.";
}
set @cost_total,0;
deletearray @bought_nameid[0],128;
deletearray @bought_quantity[0],128;
end;
}

L_Quit:
next;
mes .@n$;
mes "See ya soon.";
close;

} else {
mes "I'm sorry, but";
mes "you are not allowed to";
mes "use my service.";
close;
}

OnInit:
set .BLevel,255; // Max Base Level
set .JLevel,90; // Max Job Level
// Settings - 1 > On/0 > Off:
set .JobSwap,1; //  Job Swap
set .StatP,1; // Stat Points
set .SkillP,1; // Skill Points
set .FreeItem,1; // Give Items
set .use_cards,1; // Allow adding cards?
set .max_ref,10; // Max Refine
set .GMOnly,0; // NPC Access, 1 > GM Only, 0 > All
// Menu - depending on the settings it's showing certain messages:
set .ch_man_m$,"- Base/Job Level Change:" + ( (.JobSwap)? "- Job Swap":"Job Swap

Disabled") + ":" + ( (.StatP)?"- I wanna Stat Points":"No Stat Points for you") + ":" + (

(.SkillP)?"- I wanna Skill Points":"No Skill Points for you") + ":" + ( (.FreeItem)?"-

Gimme Items":"No Items for you");
// Attaching Items To the Shop
npcshopdelitem "CH_TestShop",512;
setarray .cshop_id

[0],25000,25001,25002,25003,25004,25005,25006,25007,25008,25009,25010,25011,25012,25013,25

014,25015,25016,25017,25018,25019,25020,25021,25022,25023,25024,25025,25026,25027,25028,25

029,25030,25031,25032,25042,25043,25044,25045,25046,25047,25048,25049,25050,25051,25052,25

053,25054,25055,25056,25057,25058,25059,25060,25061,25062,25063,25064,25065,25067,25068,25

069,25070,25071,25072,25073,25074,25075,25076,25077,25500,25501,25502,25503,25504,25505,25

505,25506,25507,25508,25509,25510,25511,25512,25513,25514;
setarray .cshop_cost[0],100;
for ( set .@s,0; .@s < getarraysize(.cshop_id); set .@s,.@s + 1 ) {
npcshopadditem "CH_TestShop",.cshop_id[.@s],.cshop_cost[0];
}
end;
}
// Custom Item Shop
- shop CH_TestShop -1,512:-1

- script CH_CardShops -1,{
end;

OnInit:
// ======= Card Shops ==========
// ALL Cards included from ratemyserver.net ( Date: 12/19-2011 - 17:04 (5:04 pm)
// Credits for their database

// ".<Equip>_card" == Normal Cards
// ".<Equip>_card_boss" == Mini-Boss + MvP Cards
// 128 Cards maximum for each equip type

// Allow Mini-Boss/MvP cards to be added to the Shops?
set .mvp_allow,1;

// - Headgear:
setarray .head_card

[0],4438,4379,4288,4041,4296,4169,4112,4177,4052,4258,4330,4110,4271,4278,4087,4161,4343,4

269,4412,4366,4434,4195,4188,4122,4364,4046,4206,4127,4311,4185,4358,4039,4223,4229,4336,4

411,4010,4261,4260;
setarray .head_card_boss[0],4241,4354,4365,4403,4357,4198,4132,4143,4148,4374,4372;
//debugmes strnpcinfo(0)+": Headgear Cards - "+getarraysize(.head_card);
//debugmes strnpcinfo(0)+": Headgear Cards (Mini-Boss/MvP) - "+getarraysize

(.head_card_boss);
// - Weapons:
setarray .weap_card

[0],4140,4062,4043,4018,4094,4246,4247,4307,4214,4428,4390,4063,4289,4368,4452,4284,4153,4

297,4171,4388,4082,4125,4182,4398,4069,4180,4004,4421,4149,4418,4251,4360,4002,4316,4020,4

026,4080,4165,4157,4060,4155,4156,4072,4163,4323,4345,4453,4019,4362,4115,4035,4268,4065,4

292,4291,4394,4350,4184,4006,4395,4079,4030,4202,4055,4341,4057,4126,4317,4010,4203,4440,4

167,4255,4085,4310,4007,4329,4335,4024,4380,4104,4192,4005,4017,4068,4130,4312,4273,4117,4

406,4025,4092,4037,4086,4225,4111,4427,4172,4308,4049,4029,4096,4281,4274;
setarray .weap_card_boss

[0],4425,4147,4142,4134,4137,4276,4361,4399,4121,4407,4263,4367,4318,4305;
//debugmes strnpcinfo(0)+": Weapon Cards - "+getarraysize(.weap_card);
//debugmes strnpcinfo(0)+": Weapon Cards (Mini-Boss/MvP) - "+getarraysize

(.weap_card_boss);
// - Armor:
setarray .armor_card

[0],4409,4400,4387,4234,4243,4242,4371,4114,4023,4233,4450,4119,4213,4426,4300,4299,4061,4

298,4392,4170,4173,4370,4181,4098,4279,4410,4346,4141,4405,4280,4270,4150,4162,4286,4301,4

295,4191,4201,4105,4339,4393,4166,4388,4099,4031,4315,4008,4011,4337,4001,4003,4383,4353,4

021,4014,4194,4101,4216,4078,4222,4404,4158,4220,4042,4218,4089,4016,4369,4333,4332,4259,4

189,4382;
setarray .armor_card_boss[0],4054,4386,4451,4047,4408,4324,4363,4419,4135,4342,4302;
//debugmes strnpcinfo(0)+": Armor Cards - "+getarraysize(.armor_card);
//debugmes strnpcinfo(0)+": Armor Cards (Mini-Boss/MvP) - "+getarraysize

(.armor_card_boss);
// - Shield:
setarray .shield_card

[0],4253,4032,4248,4013,4138,4443,4240,4075,4074,4447,4448,4449,4397,4444,4217,4250,4439,4

322,4413,4045,4136,4445,4124,4067,4231,4090,4420,4207,4254,4066,4309,4314,4083,4414,4120,4

059,4226,4304,4442,4340,4058,4012,4277;
setarray .shield_card_boss[0],4128,4146;
//debugmes strnpcinfo(0)+": Shield Cards - "+getarraysize(.shield_card);
//debugmes strnpcinfo(0)+": Shield Cards (Mini-Boss/MvP) - "+getarraysize

(.shield_card_boss);
// - Garment:
setarray .garm_card

[0],4402,4219,4285,4015,4179,4178,4056,4266,4088,4303,4373,4325,4081,4116,4109,4287,4431,4

351,4432,4113,4095,4108,4159,4334,4375,4071,4313,4133,4422,4429,4306,4211,4210,4102,4328;
setarray .garm_card_boss[0],4359,4174,4197,4183;
//debugmes strnpcinfo(0)+": Garment Cards - "+getarraysize(.garm_card);
//debugmes strnpcinfo(0)+": Garment Cards (Mini-Boss/MvP) - "+getarraysize

(.garm_card_boss);
// - Shoes:
setarray .shoes_card

[0],4244,4245,4249,4009,4236,4070,4267,4160,4319,4151,4378,4381,4164,4417,4239,4050,4097,4

200,4199,4204,4208,4396,4186,4221,4100,4107,4257,4038,4275,4435;
setarray .shoes_card_boss[0],4236,4290,4168,4123,4441,4352,4376,4131;
//debugmes strnpcinfo(0)+": Shoes Cards - "+getarraysize(.shoes_card);
//debugmes strnpcinfo(0)+": Shoes Cards (Mini-Boss/MvP) - "+getarraysize

(.shoes_card_boss);
// - Accessory:
setarray .acce_card

[0],4252,4344,4347,4391,4356,4215,4327,4212,4262,4293,4040,4385,4151,4349,4152,4423,4149,4

418,4283,4355,4377,4331,4437,4232,4103,4321,4433,4265,4139,4091,4027,4193,4079,4196,4084,4

205,4036,4093,4256,4238,4237,4077,4073,4389,4048,4175,4033,4294,4436,4187,4219,4326,4230,4

416,4228,4044,4415,4022,4227,4424,4224,4028,4282,4209,4053,4348,4264,4034,4190,4051,4064,4

272;
setarray .acce_card_boss[0],4145,4384,4430,4144;
//debugmes strnpcinfo(0)+": Accessory Cards - "+getarraysize(.acce_card);
//debugmes strnpcinfo(0)+": Accessory Cards (Mini-Boss/MvP) - "+getarraysize

(.acce_card_boss);
//debugmes strnpcinfo(0)+": Card IDs loaded.";

// Auto Delete of Default Item > 512 = Apple
npcshopdelitem "Test_Headgear",512;
npcshopdelitem "Test_Weapon",512;
npcshopdelitem "Test_Armor",512;
npcshopdelitem "Test_Shield",512;
npcshopdelitem "Test_Garment",512;
npcshopdelitem "Test_Shoes",512;
npcshopdelitem "Test_Acce",512;
//debugmes strnpcinfo(0)+": Default Items deleted.";

// ============ Auto Add of Cards to their Shops ==========
// ======== Item Type: NPC Name =======
// Auto Normal Cards Add

// - Headgear: Test_Headgear
for( set .@c,0; .@c < getarraysize(.head_card); set .@c,.@c + 1)
npcshopadditem "Test_Headgear",.head_card[.@c],10;

// - Weapon: Test_Weapon
for( set .@c,0; .@c < getarraysize(.weap_card); set .@c,.@c + 1)
npcshopadditem "Test_Weapon",.weap_card[.@c],10;

// - Armor: Test_Armor
for( set .@c,0; .@c < getarraysize(.armor_card); set .@c,.@c + 1)
npcshopadditem "Test_Armor",.armor_card[.@c],10;

// - Shield: Test_Shield
for( set .@c,0; .@c < getarraysize(.shield_card); set .@c,.@c + 1)
npcshopadditem "Test_Shield",.shield_card[.@c],10;

// - Garment: Test_Garment
for( set .@c,0; .@c < getarraysize(.garm_card); set .@c,.@c + 1)
npcshopadditem "Test_Garment",.garm_card[.@c],10;

// - Shoes: Test_Shoes
for( set .@c,0; .@c < getarraysize(.shoes_card); set .@c,.@c + 1)
npcshopadditem "Test_Shoes",.shoes_card[.@c],10;

// - Accessory: Test_Acce
for( set .@c,0; .@c < getarraysize(.acce_card); set .@c,.@c + 1)
npcshopadditem "Test_Acce",.acce_card[.@c],10;

// ====  Mini-Boss/Mvp Cards ====
if(.mvp_allow) {
// - Headgears
for( set .@c,0; .@c < getarraysize(.head_card_boss); set .@c,.@c + 1)
npcshopadditem "Test_Headgear",.head_card_boss[.@c],10;

// - Weapons
for( set .@c,0; .@c < getarraysize(.weap_card_boss); set .@c,.@c + 1)
npcshopadditem "Test_Weapon",.weap_card_boss[.@c],10;

// - Armor
for( set .@c,0; .@c < getarraysize(.armor_card_boss); set .@c,.@c + 1)
npcshopadditem "Test_Armor",.armor_card_boss[.@c],10;

// - Shield
for( set .@c,0; .@c < getarraysize(.shield_card_boss); set .@c,.@c + 1)
npcshopadditem "Test_Shield",.shield_card_boss[.@c],10;

// - Garment
for( set .@c,0; .@c < getarraysize(.garm_card_boss); set .@c,.@c + 1)
npcshopadditem "Test_Garment",.garm_card_boss[.@c],10;

// - Shoes
for( set .@c,0; .@c < getarraysize(.shoes_card_boss); set .@c,.@c + 1)
npcshopadditem "Test_Shoes",.shoes_card_boss[.@c],10;

// - Accessory
for( set .@c,0; .@c < getarraysize(.acce_card_boss); set .@c,.@c + 1)
npcshopadditem "Test_Acce",.acce_card_boss[.@c],10;
}

//debugmes strnpcinfo(0)+": Corresponding Cards added to their Shops.";
end;

OnCardStart:
dispbottom "Character Manager: You can choose from this many cards for your item:";
switch(getiteminfo(@item_id,5)) {
case 1: // Lower Headgear
case 256: // Upper Headgear
case 512: // Middle Headgear
dispbottom "Headgear Cards - "+getarraysize(.head_card);
if(.mvp_allow) dispbottom "Mini-Boss/MvP: "+getarraysize(.head_card_boss);
break;

case 2: // One-Handed Weapons
case 34: // Two-Handed Weapons
dispbottom "Weapon Cards - "+getarraysize(.weap_card);
if(.mvp_allow) dispbottom "Mini-Boss/MvP: "+getarraysize(.weap_card_boss);
break;

case 16: // Armor
dispbottom "Armor Cards - "+getarraysize(.armor_card);
if(.mvp_allow) dispbottom "Mini-Boss/MvP: "+getarraysize(.armor_card_boss);
break;

case 32: // Shield
dispbottom "Shield Cards - "+getarraysize(.shield_card);
if(.mvp_allow) dispbottom "Mini-Boss/MvP: "+getarraysize(.shield_card_boss);
break;

case 4: // Garment
dispbottom "Garment Cards - "+getarraysize(.garm_card);
if(.mvp_allow) dispbottom "Mini-Boss/MvP: "+getarraysize(.garm_card_boss);
break;

case 64: // Footgear
dispbottom "Shoes Cards - "+getarraysize(.shoes_card);
if(.mvp_allow) dispbottom "Mini-Boss/MvP: "+getarraysize(.shoes_card_boss);
break;

case 8: // Accessory 1
case 128: // Accessory 2
dispbottom "Accessory Cards - "+getarraysize(.acce_card);
if(.mvp_allow) dispbottom "Mini-Boss/MvP: "+getarraysize(.acce_card_boss);
break;
}


set @max_c,@slot;
set @card1,0;
set @card2,0;
set @card3,0;
set @card4,0;
deletearray @bought_nameid[0],128;
deletearray @bought_quantity[0],128;
switch(getiteminfo(@item_id,5)) {
case 1: // Lower Headgear
case 256: // Upper Headgear
case 512: // Middle Headgear
set @card_type$,"head";
set @shop_type$,"Headgear";
break;

case 2: // One-Handed Weapons
case 34: // Two-Handed Weapons
set @card_type$,"weap";
set @shop_type$,"Weapon";
break;

case 16: // Armor
set @card_type$,"armor";
set @shop_type$,"Armor";
break;

case 32: // Shield
set @card_type$,"shield";
set @shop_type$,"Shield";
break;

case 4: // Garment
set @card_type$,"garm";
set @shop_type$,"Garment";
break;

case 64: // Footgear
set @card_type$,"shoes";
set @shop_type$,"Shoes";
break;

case 8: // Accessory 1
case 128: // Accessory 2
set @card_type$,"acce";
set @shop_type$,"Acce";
break;
}

// - Shop Call:
callshop "Test_"+@shop_type$,1;
npcshopattach "Test_"+@shop_type$;
end;

OnBuyItem:
dispbottom "Character Manager: Here is the list of the bought cards:";
dispbottom "Bought Cards - Quantity:";
for( set @s,0; @s < getarraysize(@bought_nameid); set @s,@s + 1)
dispbottom getitemname(@bought_nameid[@s])+" - "+@bought_quantity[@s];

for ( set @s,0; @s < getarraysize(@bought_nameid); set @s,@s + 1) {

for( set @i,0; @i < getarraysize(getd("."+@card_type$+"_card")); set @i,@i + 1) {
if(@bought_nameid[@s] == getd("."+@card_type$+"_card["+@i+"]")) {
if(@bought_quantity[@s] <= @max_c) {
set @max_c,@max_c - @bought_quantity[@s]; // Card Slots

left
set @cct,@bought_quantity[@s];
for ( set @sct,1; @sct <= @slot; set @sct,@sct + 1) { //

Slot Counter
if(getd("@card"+@sct) == 0) {
setd("@card"+@sct),@bought_nameid[@s];
set @cct,@cct - 1; // Card Counter
}
if(@cct == 0) break; // Next card...
}
} else {
dispbottom "Character Manager: The chosen Item has not the

required slots for that many Cards.";
end;
}
break;
}
}

for( set @i,0; @i < getarraysize(getd("."+@card_type$+"_card_boss")); set @i,@i +

1) {
if(@bought_nameid[@s] == getd("."+@card_type$+"_card_boss["+@i+"]")) {
if(@bought_quantity[@s] <= @max_c) {
set @max_c,@max_c - @bought_quantity[@s]; // Card Slots

left
set @cct,@bought_quantity[@s];
for ( set @sct,1; @sct <= @slot; set @sct,@sct + 1) { //

Slot Counter
if(getd("@card"+@sct) == 0) {
setd("@card"+@sct),@bought_nameid[@s];
set @cct,@cct - 1; // Card Counter
}
if(@cct == 0) break; // Next card...
}
} else {
dispbottom "Character Manager: The chosen Item has not the

required slots for that many Cards.";
end;
}
break;
}
}
}
dispbottom "Character Manager: You have recieved the following Item:";
dispbottom "Name:"+ ( (@ref)?" +"+@ref:"") +" "+ getitemname(@item_id) + ", Quantity:

"+@item_am +" with these cards:";
if(@card1) dispbottom "Card 1: "+ getitemname(@card1)+" ["+@card1+"]";  else { dispbottom

"No Cards inserted."; }
if(@card2) dispbottom "Card 2: "+ getitemname(@card2)+" ["+@card2+"]";
if(@card3) dispbottom "Card 3: "+ getitemname(@card3)+" ["+@card3+"]";
if(@card4) dispbottom "Card 4: "+ getitemname(@card4)+" ["+@card4+"]";
getitem2 @item_id,@item_am,1,@ref,0,@card1,@card2,@card3,@card4;
end;
}
- shop Test_Headgear -1,512:-1
- shop Test_Weapon -1,512:-1
- shop Test_Armor -1,512:-1
- shop Test_Shield -1,512:-1
- shop Test_Garment -1,512:-1
- shop Test_Shoes -1,512:-1
- shop Test_Acce -1,512:-1

if someone can help w/ this i have the ores array

//ores
setarray .armor_ore
4700,4701,4702,4703,4704,4705,4706,4707,4708,4709,4710,4711,4712,4713,4714,4715,4716,4717,4718,4719,4720,4721,4722,4723,4724,4725,4726,4727,4728,4729,4730,4731,4732,4733,4734,4735,4736,4737,4738,4739,4740,4741,4742,4743,4744,4745,4746,4747,4748,4749,4750,4751,4752,4753,4754,4755,4756,4757,4758,4759,4760,4761,4762,4763,4764,4765,4767,4767,4786,4787,4788,4789,4790,4791,4792,4793,4794,4795,4796,4797,4798,4799,4800,4801,4802,4805,4850,4851,4852,4806,4807,4842,4811,4810,4809,4808,4820,4821,4822,4823,4824,4825,4815,4814,4813,4812,4826,4827,4828,4829,4830,4831,4818,4817,4816,4843,4844,4859,4860,4861,4862,4848,4849,4819,4832,4833,4834,4835,4836,4837,4838,4839,4840,4841,4853,4854,4855,4856,4857,4858,4768,4769,4770,4771,4772,4773,4774,4775,4776,4777,4778,4779,4780,4781,4782,4783,4784,4785,4803,4804;

Edited by Saisho
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  52
  • Topics Per Day:  0.01
  • Content Count:  185
  • Reputation:   20
  • Joined:  01/06/13
  • Last Seen:  

even if its a request i think maybe this topic fall into script support?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...