Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 11/13/13 in Posts

  1. Hi! So what I suggest is to make a toggleable custom feature which enables the stacking of similar equipments. Why it can't be stacked right now is because equipments can have cards/refine/name/element/starcrumb/etc in/on them so items with the same id can be different. I think this was only a cheap excuse on gravity's part, because similar items technically CAN be stacked. For example: Chain Mail[1] can be stacked with other slotted chain mails that has exactly the same properties (no card/refine...etc) And the same goes to altered items. Different swords in the storage could look like: Sword[3] 2ea +7 Sword[3] 3ea Whitesmith's Very Strong Sword 5ea +10 Whitesmith's Very Strong Sword 4ea So as you can see we could stack items in case they are completely identical. Why I'm asking this is because: We can do this in many other games Castle drops wouldn't flood our storage (and we can't raise the storage limit above 700 because of some packet thingies........) To make +10 armors we need hundreds of them, and storing them is problematic (if you want to refine 'em all in the same time and not 1 by 1). It would be cool It doesen't seems to be a huge thing to implement. Instead of comparing only the item IDs we would need to compare the whole record, and ignore the stackable properties.
    1 point
  2. Euphy quest shop //===== rAthena Script ======================================= //= Euphy's Quest Shop //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.6b //===== Compatible With: ===================================== //= rAthena SVN r16862+ //===== Description: ========================================= //= A dynamic quest shop based on Lunar's, with easier config. //= Includes support for multiple shops & cashpoints. //= Item Preview script by ToastOfDoom. //===== Additional Comments: ================================= //= 1.0 Initial script. //= 1.2 Added category support. //= 1.3 More options and fixes. //= 1.4 Added debug settings. //= 1.5 Replaced categories with shop IDs. //= 1.6 Added support for purchasing stackables. //= 1.6a Added support for previewing costumes and robes. //= 1.6b Added 'disable_items' command. //============================================================ // Shop NPCs -- supplying no argument displays entire menu. // callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}}; //============================================================ prontera,164,203,6 script Quest Shop#1 998,{ callfunc "qshop"; } // Script Core //============================================================ - script quest_shop -1,{ function Add; function Chk; function Slot; function A_An; OnInit: freeloop(1); // ----------------------------------------------------------- // Basic shop settings. // ----------------------------------------------------------- set .Announce,1; // Announce quest completion? (1: yes / 0: no) set .ShowSlot,1; // Show item slots? (2: all equipment / 1: if slots > 0 / 0: never) set .ShowID,0; // Show item IDs? (1: yes / 0: no) set .ShowZeny,0; // Show Zeny cost, if any? (1: yes / 0: no) set .MaxStack,100; // Max number of quest items purchased at one time. // ----------------------------------------------------------- // Points variable -- optional quest requirement. // setarray .Points$[0],"<variable name>","<display name>"; // ----------------------------------------------------------- setarray .Points$[0],"#CASHPOINTS","Cash Points"; // ----------------------------------------------------------- // Shop IDs -- to add shops, copy dummy data at bottom of file. // setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...}; // ----------------------------------------------------------- setarray .Shops$[1],"Headgears","Weapons","Other"; // ----------------------------------------------------------- // Quest items -- do NOT use a reward item more than once! // Add(<shop ID>,<reward ID>,<reward amount>, // <Zeny cost>,<point cost>, // <required item ID>,<required item amount>{,...}); // ----------------------------------------------------------- Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2); Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600); Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1); Add(1,5045,1,0,0,2252,1,1054,450,943,1200); Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10); Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10); Add(3,531,1,3,0,512,1,713,1); Add(3,532,1,3,0,513,1,713,1); Add(3,533,1,3,0,514,1,713,1); Add(3,534,1,3,0,515,1,713,1); // ----------------------------------------------------------- freeloop(0); set .menu$,""; for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) { set .menu$, .menu$+.Shops$[.@i]+":"; npcshopdelitem "qshop"+.@i,909; } end; OnMenu: set .@size, getarraysize(@i); if (!.@size) set .@i, select(.menu$); else if (.@size == 1) set .@i, @i[0]; else { for(set .@j,0; .@j<.@size; set .@j,.@j+1) set .@menu$, .@menu$+.Shops$[@i[.@j]]+":"; set .@i, @i[select(.@menu$)-1]; } deletearray @i[0],getarraysize(@i); if (.Shops$[.@i] == "") { message strcharinfo(0),"An error has occurred."; end; } dispbottom "Select one item at a time."; callshop "qshop"+.@i,1; npcshopattach "qshop"+.@i; end; OnBuyItem: // .@q[] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... } setarray .@q[0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]); copyarray .@q[3],getd(".q_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+.@q[0])); set .@q[2],.@q[1]*.@q[3]; if (!.@q[2] || .@q[2] > 30000) { message strcharinfo(0),"You can't purchase that many "+getitemname(.@q[0])+"."; end; } mes "[Quest Shop]"; mes "Reward: ^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000"; mes "Requirements:"; disable_items; if (.@q[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000"; if (.@q[5]) mes " > "+Chk(getd(.Points$[0]),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+(.@q[5]*.@q[1])+")^000000"; if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2) mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000"; next; setarray @qe[1], getiteminfo(.@q[0],5), getiteminfo(.@q[0],11); if (@qe[2] > 0 && ((@qe[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512) || (@qe[1] & 1024) || (@qe[1] & 2048) || (@qe[1] & 4096) || (@qe[1] & 4) || (@qe[1] & 8192))) set .@preview,1; addtimer 1000, strnpcinfo(0)+"::OnEnd"; while(1) { switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[7])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) { case 1: if (@qe[0]) { mes "[Quest Shop]"; mes "You're missing one or more quest requirements."; close; } if (!checkweight(.@q[0],.@q[2])) { mes "[Quest Shop]"; mes "^FF0000You need "+(((.@q[2]*getiteminfo(.@q[0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000"; close; } if (.@q[4]) set Zeny, Zeny-(.@q[4]*.@q[1]); if (.@q[5]) setd .Points$[0], getd(.Points$[0])-(.@q[5]*.@q[1]); if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2) delitem .@q[.@i],.@q[.@i+1]*.@q[1]; getitem .@q[0],.@q[2]; if (.Announce) announce strcharinfo(0)+" has created "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):A_An(getitemname(.@q[0])))+"!",0; specialeffect2 EF_FLOWERLEAF; close; case 2: setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1; if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2]; else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2]; else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2]; else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2]; break; case 3: close; } } OnEnd: if (@qe[7]) { changelook LOOK_HEAD_BOTTOM, @qe[3]; changelook LOOK_HEAD_TOP, @qe[4]; changelook LOOK_HEAD_MID, @qe[5]; changelook LOOK_ROBE, @qe[6]; } deletearray @qe[0],8; end; function Add { if (getitemname(getarg(1)) == "null") { debugmes "Quest reward #"+getarg(1)+" invalid (skipped)."; return; } setarray .@j[0],getarg(2),getarg(3),getarg(4); for(set .@i,5; .@i<getargcount(); set .@i,.@i+2) { if (getitemname(getarg(.@i)) == "null") { debugmes "Quest requirement #"+getarg(.@i)+" invalid (skipped)."; return; } else setarray .@j[.@i-2],getarg(.@i),getarg(.@i+1); } copyarray getd(".q_"+getarg(1)+"[0]"),.@j[0],getarraysize(.@j); npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0); return; } function Chk { if (getarg(0) < getarg(1)) { set @qe[0],1; return "^FF0000"; } else return "^00FF00"; } function Slot { set .@s$,getitemname(getarg(0)); switch(.ShowSlot) { case 1: if (!getitemslots(getarg(0))) return .@s$; case 2: if (getiteminfo(getarg(0),2) == 4 || getiteminfo(getarg(0),2) == 5) return .@s$+" ["+getitemslots(getarg(0))+"]"; default: return .@s$; } } function A_An { setarray .@A$[0],"a","e","i","o","u"; set .@B$, "_"+getarg(0); for(set .@i,0; .@i<5; set .@i,.@i+1) if (compare(.@B$,"_"+.@A$[.@i])) return "an "+getarg(0); return "a "+getarg(0); } } function script qshop { deletearray @i[0],getarraysize(@i); for(set .@i,0; .@i<getargcount(); set .@i,.@i+1) set @i[.@i],getarg(.@i); doevent "quest_shop::OnMenu"; end; } // Dummy shop data -- copy as needed. //============================================================ - shop qshop1 -1,909:-1 - shop qshop2 -1,909:-1 - shop qshop3 -1,909:-1 - shop qshop4 -1,909:-1 - shop qshop5 -1,909:-1
    1 point
  3. instead of making unproductive criticsm, i recommend you to file a bug report on the bug tracker section regarding your issues in rathena..
    1 point
  4. this conf/import-tmpl/battle_conf.txt work for every single setting you set within this conf/battle folder. for db/re/item_db.txt or db/re/mob_db.txt you can simply make use of db/item_db2.txt or db/mob_db2.txt
    1 point
  5. Hi guys, I have recently started to play RO again and even found myself a nice server running rAthena. The thing I want to ask for opinion about is the damage of the Homunculus S. I have seen one of my pals create a Genetic and he raised an Eleanor. What I usually read about those homunculi is that they are hardly to be taken serious, but on rAthena at least Eleanor's damage is sick... Now I got myself a Genenic with an Eleanor too and here are some of her stats with lvl 160: She sits on 937 Atk and 190 Aspd. Her Sonic Claw does 20k damage and she can spam the stuff as fast as she usually attacks. I went to Bio Labs 2 and simply sent her to nuke the MvP. Ported away once she died, revived her, piched a blue pot and went back to send her on killing that MvP. And before someone asks: At lvl 150 she was only slightly weaker, maybe at 800 Atk and 188 Aspd. I just want to know whether this monster of a powerhouse is working as intended. Because my guts tell me that this damage plus the high hit and flee, the missing flee penalty for multiple mobs and the ease of reviving her with full hp makes one hell of a killing machine. This Eleanor of mine plus the Acid Demo of the Genetic make me wonder if I ever should try and play any other character till max level. Even my beloved Assassin, though I expect a GX to become somewhat stronger than this Eleanor, doesn't seem too attractive compared to this Homunculus anymore... So, here is my sweet Eleanor^^
    1 point
  6. Please test after applying 4d61cc0. Also, if necessary, perform a homshuffle to fix the stats.
    1 point
  7. In 9744ba4 I made the first update to what will be a series of updates to our source to standardize and document all functions and other things that are deemed important for both developers and aspiring hackers. We hope this ends up being a tool to help the standard user figure out what the functions are doing. We've had Doxygen available on the site, but no one ever decided to standardize code for it, so it just became an outdated, unused, unhelpful tool. We are aiming to change that by making everything be pulled into Doxygen, once it gets updated and pointed to GIT. So let me post some of the basics here as far as what we, the Core Development team, have decided upon. All documentation should have proper grammar and be understandable to degree All functions shall have standardized documentation directly above the function header (see below and file) Documentation shall not be nothing but a credit (IE: // [Akinari]) All documented code shall follow these comment standards'///' Is a Doxygen comment for one line '///<' Used for variable declaration commenting '/** **/' Standard function documentation '//!' For TODO and FIXME '//' Regular comment not shown in Doxygen Over the course of the next few weeks/months that these files are being standardized, it is very likely those with modified source files will run into conflicts. I highly advise you stay aware of these changes and update according to your time constraints. In general we attempt to avoid major file changes, but standardization has been held off for far too long. Occasionally with these file changes we will also do some small optimizations and, while we do test the changes, please know that these can cause new bugs, so report these accordingly. With that being said, I will keep a record as to what files get completed here and update it accordingly. Thanks for your time and if you have any comments or questions, feel free to post. status.c [ 9744ba4 ] - There are a few notes and a function or two without documentation, but standardizing it is done unit.c [ bf7e8ea ] Doxygen link has been updated to: http://rathena.org/doxygen/
    1 point
  8. hi, mind sharing a screenshot maybe? for clarity purposes
    1 point
×
×
  • Create New...