-
Posts
1282 -
Joined
-
Last visited
-
Days Won
41
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Skorm
-
Hammer Time for Middle Headgear 2: The Enchantment
Skorm replied to johnbond's question in Script Requests
//v1.3 new_1-2,95,71,4 script Bling 100,{ //Character Variables set .@geid, getequipid(9); set .@cout, countitem(.item); set .@gin$, getitemname(.item); set .@gerf, getequiprefinerycnt(9); set .@crd1, getequipcardid(9,0); set .@crd2, getequipcardid(9,1); set .@crd3, getequipcardid(9,2); set .@crd4, getequipcardid(9,3); set .@itm, 4700+((rand(5)*10)+rand(2)); //Checks & Dialogue mes .npc$; mes "I can endow your glasses with mystical powers, but It'll cost yah "+.pric+" "+((.pric-1)?.@gin$+"s":.@gin$)+"."; next; if(!.@cout) { mes .npc$; mes "Sorry come back when you have "+.@gin$+"(s)."; close; } if(select("Yes:No")&2) { mes .npc$; mes "Alright, thanks anyways!"; close; } if(.@cout<.pric) { mes .npc$; mes "I'm sorry you don't have enough "+.@gin$+"(s) to for me to endow your specticals, please come back later."; close; } if(rand(3)) { mes .npc$; mes "I'm sorry but I've failed you!"; misceffect 155; emotion e_sob,0; delitem .item,.pric; close; } mes .npc$; //Workhorse query_sql("SELECT FIND_IN_SET('"+.@geid+"', '"+.uit$+"');",.@a); if(.@a) { delitem .item,.pric; delitem2 .@geid, 1, 1, .@gerf, 0, .@crd1, .@crd2, .@crd3, .@crd4; getitem2 .@geid, 1, 1, .@gerf, 0, .@crd1, .@crd2, .@crd3, callfunc("F_RandMes", 50, .@itm); misceffect .efet; mes "All done!"; equip .@geid; close; } mes "I'm sorry but you need to equipped a slotted mid-range headgear before we can continue."; close; //NPC Constants OnInit: //=-=-=-=-=-=-=Configuration=-=-=-=-=-=-= set .npc$, "[^0000FFBlinger^000000]"; // NPC Name set .pric, 1; // Price set .efet, 154; // Effect Number set .item, 6242; // Item Number set .uit$, "5074,5401,5104,18507,5068,2204,2260,5085,2202";// Item List /*18603(Black Devil Mask), Not included because it wasn't in my DB*/ /*2286 Unslotted version of 18507*/ /*2203 Unslotted version of 2204*/ /*2201 Unslotted version of 2202*/ //=-=-=-=-=-=-=-=-Skorm-=-=-=-=-=-=-=-=-= } You didn't say anything about it failing if you have any more information regarding the offical npc please provide it. -
So uhm... Nobody really just talks here (Lawl). This community is full of hard working talented individuals who- Well... Don't really have anything to talk about? This is the Off Topic section ("Talk about anything you want, but don't spam!") yet... RO related content everywhere!!! So my off RO related question to you, The Community, is: Do you have any other games you're incredibly interested in? Or something you dedicate your time to OUTSIDE of Ragnarok Online that you feel comfortable sharing? Anything! In my time away from Ragnarok Online I enjoy playing other games on my PS3 like Demon Soul's, Dark Souls, and my all-time favorite, Blazblue!... Here's me playing Makoto on my PSP. I'm all ears guys... Just give me something and I'll listen- Well actually I'll read but, you get the point!
-
Hate it when I run into codes like these they're so repetitive. I haven't tested it but, instead just did a quick proof read. Made more changes. http://pastebin.com/raw.php?i=1G8dUWVd If you're running rAthena you can Replace: set .@map$, callfunc "str_charat", strcharinfo(3), 6;With:set .@map$, substr(strcharinfo(3), 6, 6);And Delete:/// callfunc "str_charat", "<string>" , <pos> ; function script str_charat { sleep2 1; setarray .@char$[ 0 ], " ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "e", "i", "a", "s", "r", "n", "t", "o", "u", "l", "c", "p", "m", "d", "v", "h", "g", "f", "b", "y", "q", "k", "z", "x", "j", "w", "_", "-", ".", ","; set .@charsize, getarraysize(.@char$); set .@tmp$, "|~key~|"; set .@str$, .@tmp$ + getarg(0) ; set .@len, getstrlen(getarg(0)); set .@pos, getarg(1); if ( .@pos >= .@len ) return ""; while( .@len>.@s ) { set .@i,0; while( .@i<.@charsize ) { if ( ! ( set(.@l,.@l+1) % 650) ) sleep2 1; if ( compare( .@str$ , .@tmp$ + .@char$[.@i] ) ) { set .@tmp$, .@tmp$ + .@char$[.@i]; if ( .@s == .@pos ){ return .@char$[.@i] ; end; } else break; } set .@i, .@i+1; } if ( .@i == .@charsize ) return 0; else set .@s, .@s+1; } end; }
-
Damn Brian jealous I didn't think of this one first.
-
I was going to say https://github.com/johngerome/roclient-shield
-
Help Needed (normal monster card not droping 100%)
Skorm replied to JassMax's question in Database Support
1000000 = 100% 100000 = 10% 10000 = 1% 1000 = 0.1% 100 = 0.01% Try that. -
I'd like to request three npc's all part of one quest. Trying to build a server and going to college is very time consuming. So I thought to myself, perhaps the good people of rAthena could help me once again. 1. First NPC I'd like to request in the series is a shady character that hangs out behind a potion shop (Jazeera 209, 178). This is the start he will ask you to steal from the very shop he's behind. The shop should sell normal tool dealer potions. 2. Which leads me to my second request. I would probably use a hidden npcs for the "potion" you have to steal using the dispbar command and a 10% chance of success if you fail it does an effect and you lose 25% health and it warps you randomly on the map Jazeera. 3. If you pass you can simply take the item back to the Shady npc and he'll give you zeny... Which then opens trust with a smuggler npc located at Jazeera 163, 73 he sells the same stuff that the potion merchant does but for 25% cheaper. That's all - I can probably take if after that. + respect to anyone that can help me out. The specifics of this npc aren't set in stone you can change it as you please.
-
Help Needed (normal monster card not droping 100%)
Skorm replied to JassMax's question in Database Support
Hmm that's weird... Have you tried @rates? what does it return... As a temporary solution you can try my Drop Emulator https://code.google.com/p/ea-addicts/downloads/detail?name=dropemulator.txt&can=2&q= Do @mi what does it return? -
Thank you Sir, but how to use it? When you kill things it has random 1% chance to send you to Anti-bot event. O_O
-
Alright guys this one took me a while I even had to add some options to Key_Worlds Explode function to keep the script universal, but I'm not really sure how user friendly it is... Tell me what you think... I'll to and explain it. It's has a small delay right now, because it's the first version, and I had to use many functions to emulate rathena commands.... prontera.gat,149,180,5 script Freebie NPC 753,{ //Configurable Char Variables set @c, 1; // This is a variable for first letter Case-change. ( 1=on/0=off --Disable for speed up! ) set @npc$, "[^0000FFFreebie NPC^000000]"; setarray @cmds$, "getitemname", "getcharid", "strcharinfo"; //End //Character Vars set .@blvl, BaseLevel; set .@getitm$, ".itm"+#itmget+"$"; set .@getitm_len, getarraysize(getd(.@getitm$)); set .@nxtrblvl, atoi(getd(".itm"+(#itmget+1)+"$[2]")); set .@rblvl, atoi(getd(.@getitm$+"[2]")); //End //NPC Dialogue if(.@blvl>=.@rblvl) { for(set .@s,0;.@s<(.@getitm_len-3);set .@s,.@s+1){ set .@op$, callfunc("dispmes_func",getd(.@getitm$+"["+(.@s+3)+"]")); if(.@op$=="next;"||.@op$=="Next;") { set .@op$, ""; next; } if(.@op$=="menu;"||.@op$=="Menu;") { if(select("Yes:No")&2) close; set .@op$, ""; } if(.@op$=="close;"||.@op$=="Close;") { set .@op$, ""; close; } if(.@op$=="item;"||.@op$=="Item;") { set .@op$, ""; getitem atoi(getd(.@getitm$)),atoi(getd(.@getitm$+"[1]")); set #itmget,#itmget+1; } if(.@op$=="npc;"||.@op$=="Npc;") { set .@op$, @npc$; } if(.@op$!="") mes .@op$; } } mes @npc$; set .@message$, (.@blvl<=.@rblvl )? "You have already received this item, please come back when you are level "+.@rblvl+" for a special item." : ((.@rblvl<.@blvl )? "Sorry, I don't have anymore items to give you!" : ""); mes .@message$; close; //End end; OnInit: waitingroom "Free items!",0; //Configure NPC Items & Dialogue HERE! // ItemID Amount Required-BaseLevel setarray .itm0$, "501", "10", "1", "Npc;", "Hello, strcharinfo(0), do you want this free item?", "next;", "menu;", "Alright!", "item;", "Goodbye.", "close;"; setarray .itm1$, "502", "20", "70", "Npc;", "Wow, strcharinfo(0), you're really strong!", "I won't keep you waiting.", "Here is your item- You've earned it!", "item;", "Until we meet again.", "close;"; setarray .itm2$, "1599", "1", "180", "Npc;", "You, sir, are a true god!", "Hh-h-here is your getitemname(1599).", "item;", "close;"; //End /*Explanation: The first three values in each row are the only constant numbers. First is the item_id then the amount you want to give then the level you give it at. Every line after that is lucid. You can type what the npc is going to say. You can also use optional commands that I will list below to display information. Add new conditions by following my example just remember to change .itm<#>$ to the next value. I hope everyone can understand this x.x Keep in mind this is just the first version. It's still a little slow. You can change upper-case to ignore for speedup. Commands Explained: Commands that takeup one line: "Npc;", -> This will display the npcs name. "Item;", -> Will give the player item and increase quest value. "Menu;", -> This will display a Yes and No menu. "Close;", -> This will close the script. "Next;", -> This will refresh chat window and display Next button. Commands that can be used in chat: getitemname(<itemid>) -> Shows item name in chat. getcharid(<type>) -> Will return character id number. strcharinfo(<type>) -> displays information from charinfo. EX: strcharinfo(0) = Characters Name Skorm */ } function script dispmes_func { set .@len,callfunc("str_explode2","@explosion$",getarg(0), 3, " ", "(", ")"); for(set .@a,0;.@a<.@len;set .@a,.@a+1) { for(set .@b,0;.@b<getarraysize(@cmds$);set .@b,.@b+1){ if (compare(@explosion$[.@a],@cmds$[.@b])){ set .@output$, callfunc("commands_func",.@b,@explosion$[(.@a+1)]); set @explosion$[.@a], .@output$; set @explosion$[(.@a+1)], ""; } } if(!.@a&&@c) { callfunc "str_toarray", @explosion$[.@a], "@tmp$[0]"; set @tmp$[0],callfunc("str_changecase", @tmp$[0], 1); set @explosion$[.@a],""; set .@i,0; while(getstrlen(@explosion$[.@a])<getarraysize(@tmp$)){ set @explosion$[.@a],@explosion$[.@a]+@tmp$[.@i]; set .@i,.@i+1; } } set .@message$, .@message$+ ((@explosion$[.@a]!=""&&.@a<(.@len-1))? @explosion$[.@a]+" " : @explosion$[.@a]+""); } return .@message$; } function script commands_func { switch(getarg(0)){ case 0: return getitemname(atoi(getarg(1))); case 1: return getcharid(atoi(getarg(1))); case 2: return strcharinfo(atoi(getarg(1))); } } /// callfunc "str_explode2" , "<array output>", "<string>"{, <Amount of Delemiter>{, "<Delemiter>"{, "<Delemiter>"}}}; function script str_explode2 { if ( !getarg(2) ) return callfunc("str_toarray", getarg(1), getarg(0) ); sleep2 1; setarray .@char$[0], " ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "e", "i", "a", "s", "r", "n", "t", "o", "u", "l", "c", "p", "m", "d", "v", "h", "g", "f", "b", "y", "q", "k", "z", "x", "j", "w", "_", "-", "(", ")", ";", ",", ":", ".", "*", "!", "?", "'"; set .@charsize, getarraysize(.@char$); set .@tmp$, "|~key~|"; set .@str$, .@tmp$ + getarg(1) ; set .@len, getstrlen(getarg(1)); set .@delem_len, getarg(2); for( set .@g,0;.@g<.@delem_len;set .@g,.@g+1 ){ setd(".@parse_len"+.@g, getstrlen(getarg(3+.@g))); } while( .@len > .@s ) { set .@i, 0 ; while( .@i < .@charsize ) { if ( ! ( set(.@l,.@l+1) % 600) ) sleep2 1; if ( compare( .@str$ , .@tmp$ + .@char$[.@i] ) ) { set .@tmp$, .@tmp$ + .@char$[.@i]; set .@g, 0; while( .@g < .@delem_len ) { if ( ! ( set(.@l,.@l+1) % 600) ) sleep2 1; if ( .@char$[.@i] == getarg((3+.@g)) ) { set .@p, .@p + 1; set .@s, .@s + (getd(".@parse_len"+.@g)-1) ; break; } set .@g,.@g+1; } if ( .@delem_len == .@g ) set .@arr$[.@p], .@arr$[.@p] + .@char$[.@i]; break; } set .@i, .@i+1 ; } if ( .@i == .@charsize ) return 0; else set .@s, .@s+1 ; } deletearray getd(getarg(0)); copyarray getd(getarg(0)), .@arr$, .@p+1; return .@p+1; } function script str_changecase { sleep2 1; if ( getarg(1) ) { setarray .@char$[ 0 ], " ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "E", "I", "A", "S", "R", "N", "T", "O", "U", "L", "C", "P", "M", "D", "V", "H", "G", "F", "B", "Y", "Q", "K", "Z", "X", "J", "W", "_", "-", "(", ")", ";", ",", ":", ".", "*", "!", "?", "'"; } else { setarray .@char$[ 0 ], " ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "e", "i", "a", "s", "r", "n", "t", "o", "u", "l", "c", "p", "m", "d", "v", "h", "g", "f", "b", "y", "q", "k", "z", "x", "j", "w", "_", "-", "(", ")", ";", ",", ":", ".", "*", "!", "?", "'"; } set .@charsize, getarraysize(.@char$); set .@str$, "|~key~|" + getarg(0) ; set .@len, getstrlen(getarg(0)); while( .@len>.@s ) { set .@i,0; while( .@i<.@charsize ) { if ( ! ( set(.@l,.@l+1) % 650) ) sleep2 1; if ( compare( .@str$ , "|~key~|" + .@tmp$ + .@char$[.@i] ) ) { set .@tmp$, .@tmp$ + .@char$[.@i]; break; } set .@i, .@i+1; } if ( .@i == .@charsize ) return ""; else set .@s, .@s+1; } return .@tmp$; } function script str_toarray { sleep2 1; if ( getstrlen( getarg(0) ) > 128 ) return 0; setarray .@char$[ 0 ], " ", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "e", "i", "a", "s", "r", "n", "t", "o", "u", "l", "c", "p", "m", "d", "v", "h", "g", "f", "b", "y", "q", "k", "z", "x", "j", "w", "_", "-", "(", ")", ";", ",", ":", ".", "*", "!", "?", "'"; set .@charsize, getarraysize(.@char$); set .@tmp$, "|~key~|"; set .@str$, .@tmp$ + getarg(0) ; set .@len, getstrlen(getarg(0)); while( .@len>.@s ) { set .@i,0; while( .@i<.@charsize ) { if ( ! ( set(.@l,.@l+1) % 650) ) sleep2 1; if ( compare( .@str$ , .@tmp$ + .@char$[.@i] ) ) { set .@tmp$, .@tmp$ + .@char$[.@i]; set .@arr$[.@s], .@char$[.@i]; break; } set .@i, .@i+1; } if ( .@i == .@charsize ) return 0; else set .@s, .@s+1; } deletearray getd(getarg(1)); copyarray getd(getarg(1)), .@arr$, .@len; return .@len; }
-
This is a different kind of antibot function I made a long time ago... It might help :/ http://code.google.com/p/ea-addicts/downloads/detail?name=Antibot.txt&can=2&q=bot
-
From that script? You're going to have to be more specific.
-
- shop custom_seller1 -1,501:50 morocc,159,97,5 script SQL NPC Shop 60,{ mes "Welcome to my shop!"; callshop "custom_seller1",1; npcshopattach "custom_seller1"; end; OnBuyItem: for(set @i,0; .shop_list[@i]; set @i,@i+1) { for(set @d,0; @d<getarraysize(@bought_nameid); set @d,@d+1){ set .@shpl, .shop_list[@i]; set .@pril, .price_list[@i]; set .@boun, @bought_nameid[@d]; set .@bouq, @bought_quantity[@d]; if(.@boun==.@shpl) { if(checkweight(.@shpl,.@bouq)){ if(query_sql("SELECT `pontos` FROM `char` WHERE `char_id` = "+getcharid(0)+" AND `pontos` -"+( .@pril*.@bouq )+" > 0 FOR UPDATE;",.@a)){ query_sql("UPDATE `char` SET `pontos` = `pontos` -"+( .@pril*.@bouq )+" WHERE `char_id` = "+getcharid(0)+";"); getitem .@shpl,.@bouq; dispbottom "Transaction complete you have "+(.@a-(.@pril*.@bouq))+" points left."; } else { dispbottom "I'm sorry you don't have enough points for "+getitemname(.@shpl)+"s."; } } else { dispbottom "I'm sorry but you can't hold that many "+getitemname(.@shpl)+"s."; } } } } deletearray @bought_quantity, getarraysize(@bought_quantity); deletearray @bought_nameid, getarraysize(@bought_nameid); close; OnInit: //=================Configuration================ //Itemlist setarray .shop_list,607,678; setarray .price_list,20,15; //================================================= npcshopdelitem "custom_seller1",501; for(set .i,0; .i<getarraysize(.shop_list); set .i,.i+1) npcshopadditem "custom_seller1",.shop_list[.i],.price_list[.i]; end; } LOL I didn't see your post Chapuche! Chapuche, you forgot to add a weight check.
-
Very sorry I have to go to school right now x.x. Maybe someone else can fix it? It looks like the variable for .@boun is mistaken somewhere O_O. You wouldn't be getting that warning had the transaction not gone through. If nobody has fixed by the time I get home. Will help more. tytyty!
-
Untested! prontera,151,151,5 script Exchange 51,{ mes "[Ygg Exchange]"; mes "I can give all your guild members 100 Ygg Berries in exchange for 1 TCG!"; next; if(strcharinfo(0)!=getguildmaster(getcharid(2))) { mes "[Ygg Exchange]"; mes "I'm sorry but you're not the guild master."; close; } if(select("Yes:No")&2) { mes "[Ygg Exchange]"; mes "Alright comeback anytime!"; close; } if(!countitem(7227)) { mes "[Ygg Exchange]"; mes "I'm sorry but you don't seem to have any Ygg berries at all!"; close; } delitem 7227,1; query_sql( "SELECT `account_id` FROM `guild_member` WHERE `guild_id` = "+getcharid(2)+"", .@account_id ); for(set .@i,0; .@i<getarraysize(.@account_id);set .@i,.@i+1){ if(isloggedin(.@account_id[.@i])) charcommand "#item "+rid2name(.account_id[.@i])+" 607 100"; } end; }
-
- shop custom_seller1 -1,501:50 morocc,159,97,5 script SQL NPC Shop 60,{ mes "Welcome to my shop!"; callshop "custom_seller1",1; npcshopattach "custom_seller1"; end; OnBuyItem: for(set @i,0; .shop_list[@i]; set @i,@i+1) { for(set @d,0; @d<getarraysize(@bought_nameid); set @d,@d+1){ set .@shpl, .shop_list[@i]; set .@pril, .price_list[@i]; set .@boun, @bought_nameid[@d]; set .@bouq, @bought_quantity[@d]; if(.@boun==.@shpl) { if(checkweight(.@shpl,.@bouq)){ if(query_sql("UPDATE `char` SET `pontos` = `pontos` -"+( .@pril*.@bouq )+" WHERE `char_id` = "+getcharid(0)+" AND `pontos` -"+( .@pril*.@bouq )+" > 0;",.@a)){ getitem .@boun,.@bouq; } else { dispbottom "I'm sorry you don't have enough points for "+getitemname(.@shpl)+"s."; } } else { dispbottom "I'm sorry but you can't hold that many "+getitemname(.@shpl)+"s."; } } } } deletearray @bought_quantity, getarraysize(@bought_quantity); deletearray @bought_nameid, getarraysize(@bought_nameid); close; OnInit: //=================Configuration================ //Itemlist setarray .shop_list[0],607,678; setarray .price_list[0],20,15; //================================================= npcshopitem "custom_seller1",0,0; for(set .i,0; .shop_list[.i]; set .i,.i+1) npcshopadditem "custom_seller1",.shop_list[.i],.price_list[.i]; end; }
-
ALTER TABLE `char` ADD `pontos` int(11) unsigned NOT NULL default '0'; query_sql "UPDATE `char` SET `pontos` = `pontos` -1 WHERE `charid` = "+getcharid(0)+" AND `pontos` <> 0;";It's kind of hard for me to understand what you want exactly.
-
RObrew - The missing package manager for Ragnarok Online Emulator
Skorm replied to c0nsumer's topic in Abandoned Projects
This would've been useful had I found it earlier. -
nope
-
That's weird... I don't think you should be able to.
-
I'm not really sure if you can add new zones like this, but really there are around 500 IDs here the best way to add them is through your db-- No doubts. In conf/mapflag/restricted.txt, Add: aldeg_cas01 mapflag restricted 8 In db/re(pre-re)/item_noequip.txt, Add: Edit: Codebox didn't work O_O/// Uhm Spoiler added. Also if that doesn't work use restriction 7 and value 2048 or something.
-
- script Sample -1,{ OnNPCKillEvent: query_sql("SELECT FIND_IN_SET('"+killedrid+"', '"+.mobs$+"');",.@a); if(.@a) getitem 671,1; end; OnInit: set .mobs$, "1002,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"; }
-
Any items you add to setarray remove from your mob_db. tytyty! - script Drop Emulator -1,{ OnNPCKillEvent: set .@mid, killedrid; set .@ar$, ".mob"+.@mid; set .@len, getarraysize(getd(.@ar$)); if(.@len){ for(set .@p,1; .@p<.@len;set .@p,.@p+2 ) { set .@itm, getd(.@ar$+"["+(.@p-1)+"]"); set @itmtyp, getiteminfo(.@itm,2); set .@btflg, callfunc("Monster_DB",.@mid,@itmtyp); set .@itmrt, getd(.@ar$+"["+.@p+"]"); query_sql("SELECT ROUND("+.@itmrt+"*("+.@btflg+"/100));",.@rte); if(((.@rte<=10000)?((rand(1,10000/.@rte)==1)?1:0):1)) { getitem .@itm,1; } } } end; OnInit: //By Skorm //Example Poring Apple, 10%, Apple, 1.5%....etc setarray .mob1002, 512, 1000, 512, 150, 619, 20, 713, 1500, 909, 7000, 938, 400, 1202, 100, 4001, 1; // Mob List 10000=100% can support up to 128 values } function script Monster_DB { switch(getarg(0)){ case 1002: switch(@itmtyp){ // Keep in mind these are precents overall so 20% is actually lower while 140% is actually 40% higher. // Where 200% is double... It's like saying 2*400=800. case 0: // Heal Item Rate (Healing Items) return 20; // 20% for healing items. case 2: case 7: case 11: case 18: // Uasable Item Rate (Anything Usable that doesn't heal) return 100; // 100% for healing items. case 3: // Common Item Rate (ETC) return 200; //200% more for Common Items. case 4: case 5: case 8: case 10: // Equip Item Rate (Ammo, Pet Equip, Weapon, Armor) return 140; // 140% more for equip items. case 6: // Card Item Rate (Card) return 200; // 110% more for cards. } case 1003: case 1004: case 1005: //...to add new monsters simply do as I've done. } } As a side note there might be other factors that go into finding the drop-rate that are unforseen. I know some MMOs it depends on the time of day location and karma but I don't think RO has this.
-
Hammer Time for Middle Headgear 2: The Enchantment
Skorm replied to johnbond's question in Script Requests
Hmm... so it only works with the slotted version of those headgears??? Alright give me a sec to add that restriction, and as for the rates, I'm not sure. It says nothing about them, and I don't play Philippines ro. Edit: Some of the items --actually-- most of the "slotted" items didn't exist in my DB, but many of them had duplicates *_C that you could easily use as slotted versions of these items... I've noted the items I couldn't find and the items that were slotted. Thanks! new_1-2,95,71,4 script Bling 100,{ //Character Variables set .@geid, getequipid(9); set .@cout, countitem(.item); set .@gin$, getitemname(.item); set .@gerf, getequiprefinerycnt(9); set .@crd1, getequipcardid(9,0); set .@crd2, getequipcardid(9,1); set .@crd3, getequipcardid(9,2); set .@crd4, getequipcardid(9,3); //Checks & Dialogue mes .npc$; mes "I can endow your glasses with mystical powers, but It'll cost yah "+.pric+" "+((.pric-1)?.@gin$+"s":.@gin$)+"."; next; if(!.@cout) { mes .npc$; mes "Sorry come back when you have "+.@gin$+"(s)."; close; } if(select("Yes:No")&2) { mes .npc$; mes "Alright, thanks anyways!"; close; } if(.@cout<.pric) { mes .npc$; mes "I'm sorry you don't have enough "+.@gin$+"(s) to for me to endow your specticals, please come back later."; close; } mes .npc$; //Workhorse query_sql("SELECT FIND_IN_SET('"+.@geid+"', '"+.uit$+"');",.@a); if(.@a) { delitem .item,.pric; delitem2 .@geid, 1, 1, .@gerf, 0, .@crd1, .@crd2, .@crd3, .@crd4; getitem2 .@geid, 1, 1, .@gerf, 0, .@crd1, .@crd2, .@crd3, callfunc("F_RandMes", 50, 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); misceffect .efet; mes "All done!"; equip .@geid; close; } mes "I'm sorry but you need to equipped a slotted mid-range headgear before we can continue."; close; //NPC Constants OnInit: //=-=-=-=-=-=-=Configuration=-=-=-=-=-=-= set .npc$, "[^0000FFBlinger^000000]"; // NPC Name set .pric, 1; // Price set .efet, 154; // Effect Number set .item, 6242; // Item Number set .uit$, "5074,5401,5104,18507,5068,2204,2260,5085,2202";// Item List /*18603(Black Devil Mask), Not included because it wasn't in my DB*/ /*2286 Unslotted version of 18507*/ /*2203 Unslotted version of 2204*/ /*2201 Unslotted version of 2202*/ //=-=-=-=-=-=-=-=-Skorm-=-=-=-=-=-=-=-=-= }