Zirius
Members-
Content Count
261 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Staff Applications
Calendar
Everything posted by Zirius
-
Do I need to put somewhere in itemdb to make the status icon appear after using an item, example Cursed Water?
- 17 replies
-
oh I thought using map_zone is more formal? { /* PvP zone is applied to all maps with a pvp mapflag */ name: "PvP" /* changing this name requires MAP_ZONE_PVP_NAME to also be changed in src/map/map.h file */ disabled_skills: { BS_GREED: "PLAYER" CG_HERMODE: "PLAYER" } disabled_items: { Greed_Scroll: true } mapflags: ( "nocashshop", ) disabled_commands: { storage: 2 <~~~ makes @storage be used in PVP maps only by those group lv 2 and above } }, Assuming your default group for players is set to 0, on conf/groups.conf
-
From: http://herc.ws/board/topic/8100-remove-discounts/ How about specific item? I have an item I always give as a reward, (treasure box drop, event coin) and i want them to be sold at fixed price at NPC whatever their job/class. Is this possible?
-
Refined equipment rolled back to zero refine? Bug or Normal?
Zirius posted a question in General Server Support
Hello! A player in my server reported that he refined a Manteau [1] and Boots [1] up to +9 and that he is sure of. And then he said it suddenly disappeared... Upon checking his picklog table I found the Unique ID of those Manteau and Boots, interestingly... his story seems to be true.. Don't know if there's really a logical explanation for here please check the screen shot There are some players who reached even up to +10 without even bumping to his issue I am using pre-RE I am using the normal refine script just changed the safety limit and created a duplicate at the center of pront prontera,117,260,3 script Hollgrehenn#prt_mid 4_M_03,{callfunc "refinemain","Hollgrehenn",1;end;}//============================================================//= Main Refiner Function//============================================================//= To allow auto safe refining/multiple refining set the//= second argument to '1' in the function call.//= If you enable this function, be sure to edit the value of//= .@safe to the max safe refine in refine_db.txt as well.//============================================================function script refinemain {disable_items;.@features = getarg(1);mes "[" + getarg(0) + "]";mes "I'm the Armsmith.";mes "I can refine all kinds of weapons, armor and equipment, so let me";mes "know what you want me to refine.";next;setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3";.@menu$ = "";for(.@i = 1; .@i <= 10; ++.@i) {if(getequipisequiped(.@i)) {.@menu$ += .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]";.@equipped = 1;}.@menu$ += ":";}if (.@equipped == 0) {mes "[" + getarg(0) + "]";mes "I don't think I can refine any items you have...";close;}.@part = select(.@menu$);if(!getequipisequiped(.@part)) { //custom checkmes "[" + getarg(0) + "]";mes "You're not wearing";mes "anything there that";mes "I can refine.";emotion e_an;close;}//Check if the item is refinable...if(!getequipisenableref(.@part)) {mes "[" + getarg(0) + "]";mes "I don't think I can";mes "refine this item at all...";close;}//Check to see if the items is already +10if(getequiprefinerycnt(.@part) >= 10) {mes "[" + getarg(0) + "]";mes "I can't refine this";mes "any more. This is as";mes "refined as it gets!";close;}.@refineitemid = getequipid(.@part); // save id of the item.@refinerycnt = getequiprefinerycnt(.@part); //save refinery countswitch(getequipweaponlv(.@part)){case 0: //Refine Armor.@price = 20000;.@material = 985;.@safe = 5;break;case 1: //Refine Level 1 Weapon.@price = 500;.@material = 1010;.@safe = 8;break;case 2: //Refine Level 2 Weapon.@price = 2000;.@material = 1011;.@safe = 7;break;case 3: //Refine Level 3 Weapon.@price = 50000;.@material = 984;.@safe = 6;break;case 4: //Refine Level 4 Weapon.@price = 200000;.@material = 984;.@safe = 5;break;case 5: //Refine other stuff?.@price = 20000;.@material = 985;.@safe = 4;break;}if(.@features != 1) {mes "[" + getarg(0) + "]";mes "To refine this I need";mes "one ^003366"+getitemname(.@material)+"^000000 and";mes "a service fee of " + .@price + " Zeny.";mes "Do you really wish to continue?";next;if(select("Yes:No") == 2){mes "[" + getarg(0) + "]";mes "Yeah...";mes "There's no need to";mes "rush. Take your time.";close;}if(getequippercentrefinery(.@part) < 100) {mes "[" + getarg(0) + "]";mes "Oh no! If I continue to";mes "refine this, there's a risk it could";switch(.@material) {case 985:mes "be destroyed! That means that ^FF0000this equipment^000000, and ^FF0000any cards^000000 or special properties added to this armor, ^FF0000will be gone^000000.";break;default:mes "be destroyed, and you'd ^FF0000lose the weapon^000000, any ^FF0000cards in the weapon^000000,";mes "or any added special properties.";break;}next;mes "["+getarg(0)+"]";mes "I can't make it any clearer.";mes "Once a weapon is destroyed,";mes "there's no getting it back.";mes "You really have a chance to";mes "^FF0000lose this weapon^000000 forever.";mes "Do you still want to refine?";next;if(select("Yes:No") == 2){mes "[" + getarg(0) + "]";mes "I completely agree...";mes "I might be a great refiner, but sometimes even I make mistakes.";close;}}if((countitem(.@material) < 1) || (Zeny < .@price)) {mes "[" + getarg(0) + "]";mes "You don't seem to have";mes "enough Zeny or "+getitemname(.@material)+"...";mes "Go get some more. I'll be";mes "here all day if you need me.";close;}Zeny -= .@price;delitem .@material,1;//custom checksif(getequipisequiped(.@part) == 0) { // hacker has removed the item (not changed, why?)mes "[" + getarg(0) + "]";mes "Look here... you don't have any Items on...";close;}if(getequiprefinerycnt(.@part) != .@refinerycnt || getequipid(.@part) != .@refineitemid) { // hacker has changed the itemmes "[" + getarg(0) + "]";emotion e_an;mes "Wait a second...";mes "Do you think I'm stupid?!";mes "You switched the item while I wasn't looking! Get out of here!";close;}if(getequippercentrefinery(.@part) <= rand(100)) {failedrefitem .@part;mes "[" + getarg(0) + "]";emotion (!rand(5))?e_cash:e_omg;.@lose = rand(1,3);if (.@lose == 1) {mes "OH! MY GOD!";mes "Damn it! Not again!";mes "I'm terribly sorry, but you know practice does make perfect.";mes "Um, right? Heh heh...";} else if(.@lose == 2) {mes "Nooooooo!";mes "It broke!";mes "I-I'm sorry!";} else {mes "Crap!";mes "It couldn't take";mes "much more tempering!";mes "Sorry about this...";}close;}mes "["+getarg(0)+"]";successrefitem .@part;emotion e_heh;.@win = rand(1,3);if (.@win == 1) {mes "Perfect!";mes "Heh heh!";mes "Once again,";mes "flawless work";mes "from the master~";} else if(.@win == 2) {mes "Success...!";mes "Yet again, my amazing";mes "talent truly dazzles";mes "and shines today.";} else {mes "Heh heh!";mes "I'm all done.";mes "No doubt, my work is";mes "to your satisfaction.";mes "Sheer, utter perfection~";}close;}// New Refining Functions ========================if(getequiprefinerycnt(.@part) < .@safe) {mes "[" + getarg(0) + "]";mes "I can refine this to the safe limit or a desired number of times. It's your choice.";next;.@menu2 = select("To the safe limit, please.","I'll decide how many times.","I've changed my mind...");} else.@menu2 = 2;switch(.@menu2){case 1:.@refinecnt = .@safe - getequiprefinerycnt(.@part);break;case 2:next;mes "[" + getarg(0) + "]";mes "How many times would you like me to refine your item?";next;input .@refinecnt;.@refinecheck = .@refinecnt + getequiprefinerycnt(.@part);if (.@refinecnt < 1 || .@refinecheck > 10) {mes "[" + getarg(0) + "]";mes "I can't refine this item that many times.";close;}if(.@refinecheck > .@safe) {.@refinecheck -= .@safe;mes "[" + getarg(0) + "]";mes "This will try to refine the equipment " + .@refinecheck + " times past the safe limit. Your equipment may be destroyed... is that ok?";next;if(select("Yes...","No...") == 2){mes "[" + getarg(0) + "]";mes "You said so... So be it.";close;}}break;case 3:next;mes "[" + getarg(0) + "]";mes "You said so... So be it.";close;}.@fullprice = .@price * .@refinecnt;mes "[" + getarg(0) + "]";mes "That will cost you " + .@refinecnt + " " + getitemname(.@material) + " and " + .@fullprice + " Zeny. Is that ok?";next;if(select("Yes","No...") == 2){mes "[" + getarg(0) + "]";mes "You said so... So be it.";close;}if(countitem(.@material) < .@refinecnt || Zeny < .@fullprice) {mes "[" + getarg(0) + "]";mes "Is that all you got? Unfortunately I can't work for you at a lower price. Try putting yourself in my shoes.";close;}Zeny -= .@fullprice;delitem .@material,.@refinecnt;while(.@refinecnt){if (getequipisequiped(.@part) == 0) {mes "[" + getarg(0) + "]";mes "Look here... you don't have any items on...";close;}if (getequipid(.@part) != .@refineitemid || (.@menu2 == 1 && getequippercentrefinery(.@part) < 100)) {mes "[" + getarg(0) + "]";mes "Clang... No, but did you imagine I could be so stupid?!";mes "You changed it...";mes "Get out before I stun you with my Hammer!!";close;}mes "Clang, clang!!!";if(.@menu2 == 2 && getequippercentrefinery(.@part) <= rand(100)) {failedrefitem .@part;emotion e_omg;mes "[" + getarg(0) + "]";mes "WAHHHH!!! I'm so sorry... I warned you this could happen...";--.@refinecnt;if(.@refinecnt == 0) close;mes "Here's the unused Zeny and materials back...";getitem .@material,.@refinecnt;.@fullprice = .@refinecnt * .@price;Zeny += .@fullprice;close;}successrefitem .@part;emotion e_no1;--.@refinecnt;next;}mes "[" + getarg(0) + "]";mes "All finished... Come again soon.";close;} Here is my refine DB // Armors0,66,0,0,100:0,100:0,100:0,100:0,100:0,70:0,60:0,50:0,45:0,40:0// Level 1 weapons1,200,8,300,100:0,100:0,100:0,100:0,100:0,100:0,100:0,100:0,70:0,60:0// Level 2 weapons2,300,7,500,100:0,100:0,100:0,100:0,100:0,100:0,100:0,70:0,60:0,50:0// Level 3 weapons3,500,6,800,100:0,100:0,100:0,100:0,100:0,100:0,70:0,60:0,50:0,45:0// Level 4 weapons4,700,5,1300,100:0,100:0,100:0,100:0,100:0,70:0,60:0,50:0,45:0,40:0 Hope somebody can explain Thanks! -
my bad sorry for this. mistaken for addrid(). Good script bro!
-
/config/access.php 'command' => AccountLevel::ADMIN, to 'command' => AccountLevel::ANYONE,
-
conf/groups.conf permissions: { can_trade_bound: true }
-
Map server crash how to get dump or error log?
Zirius replied to Zirius's question in General Server Support
For sure I will use this to my live server since it is debian But for now in my local dev, windows platform, I enabled and compiled via the debug plugin, and is wondering where can I see the dump files it generated? -
Map server crash how to get dump or error log?
Zirius replied to Zirius's question in General Server Support
Where are the DUMP files generated? -
detect where is the bug that causes map server crash on linux
Zirius replied to Zirius's question in General Server Support
figured out it is because of http://herc.ws/board/index.php?app=tracker&showissue=8456 -
detect where is the bug that causes map server crash on linux
Zirius posted a question in General Server Support
Hello! Any method of debugging to know where is the cause of map server crash? My server crashed thrice today and it is really getting very annoying. Thanks! -
How to create shortcut to Thor patcher that will always make it run as Admin?
Zirius replied to Zirius's question in Client-Side Support
Oh.. well I guess it is because I am using an OLD thor, up to now I am in doubt if I would be in trouble if I use the new thor patcher because I am using old config. Thanks, I'll try to create a patcher and will update this thread. -
How to create shortcut to Thor patcher that will always make it run as Admin?
Zirius replied to Zirius's question in Client-Side Support
Hmm. Did I understand this clearly? I can only do this if I compiled the "thor patcher" via Visual Studio? But how can this be possible if I do not have the source code? Thanks! -
Hello! I made an installer via WinRAR using SFX option, it works great specially because I can install a shortcut to thor patcher to their desktop. The problem is some of my users seems like having problem with their patcher not overwriting files in their directory when I create a patch that overwrites non-grf files. The solution is to ask them to manually run the Thor patcher as Admin. The best thing I think I can do is to make the shortcut at their desktop to always run as Admin. How to do this? Hope somebody can help. Thanks!
-
This used to be issue on using old NEMO Patcher on diffing.
-
Reducing guild capacity and removing alliance => how to fix/ready DB
Zirius replied to Zirius's question in General Server Support
you mean at src/char/int_guild.c g->max_member = 6 + inter_guild->checkskill(g, GD_EXTENSION) * 6; and src/common/mmo.h #define MAX_GUILD (6+10*6) right? it was already done. anything else I should note bro? -
Reducing guild capacity and removing alliance => how to fix/ready DB
Zirius replied to Zirius's question in General Server Support
Thanks!I am referring to updating the sql database with the new guild capacity as based on new src edit. If the old max guild capacity is 36. 16 initial, and 2 per Guild extension level. A guild which capped their guild extension will have at SQL table guild capacity of 36. And this number won't get updated and keep on showing as warning on console because of this: Is there a way Herc would run on all guilds on server, update the `max_member` table based on src edit? Thanks. -
Reducing guild capacity and removing alliance => how to fix/ready DB
Zirius replied to Zirius's question in General Server Support
Yes removing alliance is easy how about this bro? : -
Hello! I successfully reduced the max guild capacity and also planning to remove guild alliance feature. I tried in local dev, but seems like existing guilds are giving console error since in DB they have max guild capacity greater than what the source allows. How can I: Make the max guild capacity applies then Kick all players from their guild IF NOT guild master Then also remove the alliance the guild has I don't wanna truncate all guild database Thanks!
-
Windows find all files that are different from latest pull?
Zirius posted a question in Source Support
Hello! I am just wondering if there's a tool in windows to check all the files in my current Hercules folder and its difference to the Latest Hercules git? Up to know I am still having problem compiling since 2 weeks ago after pull http://herc.ws/board/topic/7723-building-on-windows-platform-hpm-hooking-errors/ http://herc.ws/board/tracker/issue-8444-building-on-windows-platform-hpm-hooking-errors/ I only need to see the "src" folder diff so I can migrate my current "db", "npc", and "conf" folders to the latest Hercules git clone. Thanks! -
but do I install the Data english translation <~~ just for your ownRO.grf do I need the Loki launcher? <~~ if you want to get the Mac Address why? if you want to reduce amount of dual, and other stuff.
-
Building on Windows Platform HPM Hooking errors
Zirius replied to Zirius's question in Plugin Support
I already submitted a bug report, but it was confirmed to be not a bug. I think it was just me, is there a way I can re-pull those proj files. ? -
Building on Windows Platform HPM Hooking errors
Zirius replied to Zirius's question in Plugin Support
Here also error with login hpm hooking. Probably need update proj file or sln or may be both. Bro, if I delete "vcproj-10" folder and I pull, will I get rid of these errors? I pulled couple of minutes ago and still compiling gives me errors. Thanks!