Jump to content
  • 0

[SOLVED] Announce +7 above Refine


GM Winter

Question


  • Group:  Members
  • Topic Count:  176
  • Topics Per Day:  0.15
  • Content Count:  666
  • Reputation:   9
  • Joined:  12/04/20
  • Last Seen:  

hello everyone i would like to ask how to put announce if the item reach level 7 it will be announce in the whole server thanks in advance

Edited by chadness
Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  5
  • Topics Per Day:  0.00
  • Content Count:  171
  • Reputation:   68
  • Joined:  10/25/20
  • Last Seen:  

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;

 

Link to comment
Share on other sites

  • 1

  • Group:  Members
  • Topic Count:  5
  • Topics Per Day:  0.00
  • Content Count:  171
  • Reputation:   68
  • Joined:  10/25/20
  • Last Seen:  

4 hours ago, Slammer said:

refine.txt use this. maybe can help

If this one doesnt help you.

 

Try this.

 

 

 

Screenshot_1.png

refine.txt

  • Upvote 2
Link to comment
Share on other sites

  • 0

  • Group:  Content Moderator
  • Topic Count:  55
  • Topics Per Day:  0.02
  • Content Count:  1676
  • Reputation:   702
  • Joined:  12/21/14
  • Last Seen:  

the answer is above ^

just replace >= with == for only +7

Edited by sader1992
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  9
  • Topics Per Day:  0.00
  • Content Count:  477
  • Reputation:   269
  • Joined:  06/13/17
  • Last Seen:  

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

Link to comment
Share on other sites

  • 0

  • Group:  Content Moderator
  • Topic Count:  55
  • Topics Per Day:  0.02
  • Content Count:  1676
  • Reputation:   702
  • Joined:  12/21/14
  • Last Seen:  

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

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  176
  • Topics Per Day:  0.15
  • Content Count:  666
  • Reputation:   9
  • Joined:  12/04/20
  • Last Seen:  

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?

 

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  176
  • Topics Per Day:  0.15
  • Content Count:  666
  • Reputation:   9
  • Joined:  12/04/20
  • Last Seen:  

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

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  10
  • Topics Per Day:  0.00
  • Content Count:  218
  • Reputation:   152
  • Joined:  11/28/11
  • Last Seen:  

2 hours ago, chadness said:

no error but no announced

refine.txt use this. maybe can help

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  76
  • Topics Per Day:  0.02
  • Content Count:  455
  • Reputation:   57
  • Joined:  08/28/12
  • Last Seen:  

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;
			}
		}

 

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  176
  • Topics Per Day:  0.15
  • Content Count:  666
  • Reputation:   9
  • Joined:  12/04/20
  • Last Seen:  

its working but i wish theres no selection of refining just the announcement

 

On 1/21/2021 at 4:33 AM, cook1e said:

If this one doesnt help you.

Try this.

Screenshot_1.png

refine.txt 38.88 kB · 3 downloads

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

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  76
  • Topics Per Day:  0.02
  • Content Count:  455
  • Reputation:   57
  • Joined:  08/28/12
  • Last Seen:  

2 hours ago, chadness said:

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

The Announce comes every time something is refined to +7 or higher.
That means also +8, +9,+10.

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  10
  • Topics Per Day:  0.00
  • Content Count:  218
  • Reputation:   152
  • Joined:  11/28/11
  • Last Seen:  

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
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  176
  • Topics Per Day:  0.15
  • Content Count:  666
  • Reputation:   9
  • Joined:  12/04/20
  • Last Seen:  

On 2/19/2021 at 8:35 AM, Slammer said:

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 40.97 kB · 4 downloads

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

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  10
  • Topics Per Day:  0.00
  • Content Count:  218
  • Reputation:   152
  • Joined:  11/28/11
  • Last Seen:  

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
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  176
  • Topics Per Day:  0.15
  • Content Count:  666
  • Reputation:   9
  • Joined:  12/04/20
  • Last Seen:  

4 hours ago, Slammer said:

here you go...

 

 

thanks alot sir i will try this later

 

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  10
  • Topics Per Day:  0.00
  • Content Count:  218
  • Reputation:   152
  • Joined:  11/28/11
  • Last Seen:  

@rmon i share a new script

new refine announce.txt

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  13
  • Topics Per Day:  0.00
  • Content Count:  79
  • Reputation:   2
  • Joined:  04/27/16
  • Last Seen:  

5 hours ago, Slammer said:

@rmon i share a new script

new refine announce.txt

Thank you so much i will try this

does it include also for blacksmith skill ? 

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...