Jump to content
  • 0

[SOLVED] Announce +7 above Refine


Question

17 answers to this question

Recommended Posts

  • 0
Posted

Go to npc/merchants/refine.txt

search for

successrefitem .@part;

below add

		if (getequiprefinerycnt(.@part) >= 7)
        announce strcharinfo(0)+" has refined "+getequipname(.@part)+" to +"+getequiprefinerycnt(.@part)+"!",0;

it would be like this

		successrefitem .@part;
		if (getequiprefinerycnt(.@part) >= 7)
        announce strcharinfo(0)+" has refined "+getequipname(.@part)+" to +"+getequiprefinerycnt(.@part)+"!",0;

 

  • 0
Posted

I would recommend to use find on all files the successrefitem and add the code after it.. a little note is that if the player use WEAPON REFINE of whitesmith. the announce won't show up since that would be source side

  • 0
Posted
On 1/20/2021 at 1:21 PM, cook1e said:

Go to npc/merchants/refine.txt

search for

successrefitem .@part;

below add

		if (getequiprefinerycnt(.@part) >= 7)
        announce strcharinfo(0)+" has refined "+getequipname(.@part)+" to +"+getequiprefinerycnt(.@part)+"!",0;

it would be like this

		successrefitem .@part;
		if (getequiprefinerycnt(.@part) >= 7)
        announce strcharinfo(0)+" has refined "+getequipname(.@part)+" to +"+getequiprefinerycnt(.@part)+"!",0;

 

thanks to this ill try it now

 

On 1/20/2021 at 3:27 PM, sader1992 said:

you can try src edit the command it self , would be easier then searching for every place it used in

where exactly sir in src?

 

  • 0
Posted
On 1/20/2021 at 2:10 PM, Haruka Mayumi said:

I would recommend to use find on all files the successrefitem and add the code after it.. a little note is that if the player use WEAPON REFINE of whitesmith. the announce won't show up since that would be source side

the code above?

 

On 1/20/2021 at 2:07 PM, sader1992 said:

the answer is above ^

just replace >= with == for only +7

double == sign sir?

 

On 1/20/2021 at 1:21 PM, cook1e said:

Go to npc/merchants/refine.txt

search for

successrefitem .@part;

below add

		if (getequiprefinerycnt(.@part) >= 7)
        announce strcharinfo(0)+" has refined "+getequipname(.@part)+" to +"+getequiprefinerycnt(.@part)+"!",0;

it would be like this

		successrefitem .@part;
		if (getequiprefinerycnt(.@part) >= 7)
        announce strcharinfo(0)+" has refined "+getequipname(.@part)+" to +"+getequiprefinerycnt(.@part)+"!",0;

 

no error but no announced

  • 0
Posted

Just as an idea, 
how about adding a filter?
Lv.1 and 2 weapons would also trigger the announce and Lv.1 is safe till +7.
Just change this:
 

if (getequiprefinerycnt(.@part) >= 7)
        announce strcharinfo(0)+" has refined "+getequipname(.@part)+" to +"+getequiprefinerycnt(.@part)+"!",0;

To this:

if (getequiprefinerycnt(.@part) >= 7) {
			if (.@part == EQI_GARMENT || .@part == EQI_HEAD_TOP || .@part == EQI_SHOES || .@part == EQI_ARMOR) {
				announce strcharinfo(0)+" has refined ["+getequipname(.@part)+"] to +"+getequiprefinerycnt(.@part)+"!",0;
			}
			if (getequipweaponlv(.@part) >= 3 ) {
				announce strcharinfo(0)+" has refined the weapon ["+getequipname(.@part)+"] to +"+getequiprefinerycnt(.@part)+"!",0;
			}
		}

 

  • 0
Posted
On 1/21/2021 at 1:56 PM, chadness said:

can you make the +8 +9 +10 also ?

here you go

weapon lv 1 +8 or high
weapon lv 2 +7 or high

weapon lv 3 +6 or high
weapon lv 4 +5 or high

and armor/acc/headgear +5

they will annouce

refine_announce.txt

  • Upvote 1
  • 0
Posted
3 hours ago, chadness said:

thankyou sir how about if the weapon or armors or headgear failed is there also an announcer?

here you go...

 

Quote

function    script    refinemain    {

    disable_items;
    .@npc_name$ = getarg(0);
    .@features = getarg(1);
    mes "["+ .@npc_name$ +"]";
    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 .@indices[1], EQI_HEAD_TOP, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R, EQI_HEAD_MID, EQI_HEAD_LOW;
    for(.@i = 1; .@i<getarraysize(.@indices); ++.@i) {
        if(getequipisequiped(.@indices[.@i])) {
            .@menu$ = .@menu$ + F_getpositionname(.@indices[.@i]) + "-[" + getequipname(.@indices[.@i]) + "]";
            .@equipped = 1;
        }
        .@menu$ = .@menu$ + ":";
    }
    if (.@equipped == 0) {
        mes "["+ .@npc_name$ +"]";
        mes "I don't think I can refine any items you have...";
        close;
    }
    .@part = .@indices[select(.@menu$)];

    if(!getequipisequiped(.@part)) { //custom check
        mes "["+ .@npc_name$ +"]";
        mes "You're not wearing";
        mes "anything there that";
        mes "I can refine.";
        emotion ET_FRET;
        close;
    }
    //Check if the item is refinable...
    if(!getequipisenableref(.@part)) {
        mes "["+ .@npc_name$ +"]";
        mes "I don't think I can";
        mes "refine this item at all...";
        close;
    }
    //Check to see if the items is already +10
    if(getequiprefinerycnt(.@part) >= 10) {
        mes "["+ .@npc_name$ +"]";
        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 count
    setarray .@card[0], getequipcardid(.@part,0), getequipcardid(.@part,1), getequipcardid(.@part,2), getequipcardid(.@part,3);
    .@price = getequiprefinecost(.@part, REFINE_COST_NORMAL, REFINE_ZENY_COST);
    .@material = getequiprefinecost(.@part, REFINE_COST_NORMAL, REFINE_MATERIAL_ID);

    switch (getequipweaponlv(.@part)) {
        case 1: .@safe = 7; break;
        case 2: .@safe = 6; break;
        case 3: .@safe = 5; break;
        case 4:
        default: .@safe = 4; break;
    }

    // If the VIP system is enabled, the prices for non-VIP players are considerably higher.
    if (VIP_SCRIPT && !vip_status(VIP_STATUS_ACTIVE)) {
        switch(getequipweaponlv(.@part)) {
            case 0: .@price = .@price * 10; break;
            case 1: .@price = .@price * 40; break;
            case 2: .@price = .@price * 50; break;
            case 3: .@price = .@price * 2; break;
            case 4: .@price = .@price * 2; break;
            case 5: .@price = .@price * 10; break;
        }
    }

    if(.@features != 1) {
        mes "["+ .@npc_name$ +"]";
        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 "["+ .@npc_name$ +"]";
            mes "Yeah...";
            mes "There's no need to";
            mes "rush. Take your time.";
            close;
        }
        if(getequippercentrefinery(.@part) < 100) {
            mes "["+ .@npc_name$ +"]";
            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 "["+ .@npc_name$ +"]";
                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 "["+ .@npc_name$ +"]";
            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 = Zeny-.@price;
        delitem .@material,1;

        // anti-hack
        if (callfunc("F_IsEquipIDHack", .@part, .@refineitemid) || callfunc("F_IsEquipCardHack", .@part, .@card[0], .@card[1], .@card[2], .@card[3]) ||
            callfunc("F_IsEquipRefineHack", .@part, .@refinerycnt)) {
            mes "["+ .@npc_name$ +"]";
            emotion ET_FRET;
            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)) {
            announce strcharinfo(0)+" has failed refined a "+getequipname(.@part)+"+"+getequiprefinerycnt(.@part)+" to "+getequipname(.@part)+"+"+(getequiprefinerycnt(.@part)+1)+"!",0;
            failedrefitem .@part;
            mes "["+ .@npc_name$ +"]";
            emotion (!rand(5))?ET_MONEY:ET_HUK;
            .@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;
        if (getequiprefinerycnt(.@part) >= 8 && getequipweaponlv(.@part) == 1){
        announce strcharinfo(0)+" has refined weapon "+getequipname(.@part)+" to +"+getequiprefinerycnt(.@part)+"!",0;}
        else if (getequiprefinerycnt(.@part) >= 7 && getequipweaponlv(.@part) == 2){
        announce strcharinfo(0)+" has refined weapon "+getequipname(.@part)+" to +"+getequiprefinerycnt(.@part)+"!",0;}
        else if (getequiprefinerycnt(.@part) >= 6 && getequipweaponlv(.@part) == 3){
        announce strcharinfo(0)+" has refined weapon "+getequipname(.@part)+" to +"+getequiprefinerycnt(.@part)+"!",0;}
        else if (getequiprefinerycnt(.@part) >= 5 && getequipweaponlv(.@part) == 4){
        announce strcharinfo(0)+" has refined weapon "+getequipname(.@part)+" to +"+getequiprefinerycnt(.@part)+"!",0;}
        else if (getequiprefinerycnt(.@part) >= 5) && (.@part == EQI_GARMENT || .@part == EQI_HEAD_TOP || .@part == EQI_SHOES || .@part == EQI_ARMOR){
        announce strcharinfo(0)+" has refined armor "+getequipname(.@part)+" to +"+getequiprefinerycnt(.@part)+"!",0;}
        emotion ET_SMILE;
        .@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 (.@refinerycnt < .@safe) {
        mes "["+ .@npc_name$ +"]";
        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 - .@refinerycnt;
        break;
    case 2:
        next;
        mes "["+ .@npc_name$ +"]";
        mes "How many times would you like me to refine your item?";
        next;
        input .@refinecnt;
        .@refinecheck = .@refinecnt + .@refinerycnt;
        if (.@refinecnt < 1 || .@refinecheck > 10) {
            mes "["+ .@npc_name$ +"]";
            mes "I can't refine this item that many times.";
            close;
        }
        if(.@refinecheck > .@safe) {
            .@refinecheck = .@refinecheck - .@safe;
            mes "["+ .@npc_name$ +"]";
            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 "["+ .@npc_name$ +"]";
                mes "You said so... So be it.";
                close;
            }
        }
        break;
    case 3:
        next;
        mes "["+ .@npc_name$ +"]";
        mes "You said so... So be it.";
        close;
    }
    .@fullprice = .@price * .@refinecnt;
    mes "["+ .@npc_name$ +"]";
    mes "That will cost you " + .@refinecnt + " " + getitemname(.@material) + " and " + .@fullprice + " Zeny. Is that ok?";
    next;
    if(select("Yes","No...") == 2){
        mes "["+ .@npc_name$ +"]";
        mes "You said so... So be it.";
        close;
    }
    if(countitem(.@material) < .@refinecnt || Zeny < .@fullprice) {
        mes "["+ .@npc_name$ +"]";
        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 = Zeny - .@fullprice;
    delitem .@material,.@refinecnt;
    while(.@refinecnt){
        if (getequipisequiped(.@part) == 0) {
            mes "["+ .@npc_name$ +"]";
            mes "Look here... you don't have any items on...";
            close;
        }
        // anti-hack
        if (callfunc("F_IsEquipIDHack", .@part, .@refineitemid) || callfunc("F_IsEquipCardHack", .@part, .@card[0], .@card[1], .@card[2], .@card[3]) ||
                callfunc("F_IsEquipRefineHack", .@part, .@refinerycnt) || (.@menu2 == 1 && getequippercentrefinery(.@part) < 100)) {
            mes "["+ .@npc_name$ +"]";
            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;
            announce strcharinfo(0)+" has failed refined a "+getequipname(.@part)+"+"+getequiprefinerycnt(.@part)+" to "+getequipname(.@part)+"+"+(getequiprefinerycnt(.@part)+1)+"!",0;
            emotion ET_HUK;
            mes "["+ .@npc_name$ +"]";
            mes "WAHHHH!!! I'm so sorry... I warned you this could happen...";
            .@refinecnt = .@refinecnt - 1;
            if(.@refinecnt == 0) close;
            mes "Here's the unused Zeny and materials back...";
            getitem .@material,.@refinecnt;
            .@fullprice = .@refinecnt * .@price;
            Zeny = Zeny + .@fullprice;
            close;
        }
        successrefitem .@part;
        if (getequiprefinerycnt(.@part) >= 8 && getequipweaponlv(.@part) == 1){
        announce strcharinfo(0)+" has refined weapon "+getequipname(.@part)+" to +"+getequiprefinerycnt(.@part)+"!",0;}
        else if (getequiprefinerycnt(.@part) >= 7 && getequipweaponlv(.@part) == 2){
        announce strcharinfo(0)+" has refined weapon "+getequipname(.@part)+" to +"+getequiprefinerycnt(.@part)+"!",0;}
        else if (getequiprefinerycnt(.@part) >= 6 && getequipweaponlv(.@part) == 3){
        announce strcharinfo(0)+" has refined weapon "+getequipname(.@part)+" to +"+getequiprefinerycnt(.@part)+"!",0;}
        else if (getequiprefinerycnt(.@part) >= 5 && getequipweaponlv(.@part) == 4){
        announce strcharinfo(0)+" has refined weapon "+getequipname(.@part)+" to +"+getequiprefinerycnt(.@part)+"!",0;}
        else if (getequiprefinerycnt(.@part) >= 5) && (.@part == EQI_GARMENT || .@part == EQI_HEAD_TOP || .@part == EQI_SHOES || .@part == EQI_ARMOR){
        announce strcharinfo(0)+" has refined armor "+getequipname(.@part)+" to +"+getequiprefinerycnt(.@part)+"!",0;}
        emotion ET_BEST;
        .@refinecnt = .@refinecnt - 1;
        .@refinerycnt = getequiprefinerycnt(.@part);
        next;
    }
    mes "["+ .@npc_name$ +"]";
    mes "All finished... Come again soon.";
    close;
}

 

  • MVP 1

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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...