Jump to content

Question

Posted

How to change downrefitem to 3? instead of decreasing the failed refine to 1 to become to 3?

 

is this the one?

 
BUILDIN_FUNC(downrefitem)
{
    int i = -3,num,ep;
    TBL_PC *sd;
 
    num = script_getnum(st,2);
    sd = script_rid2sd(st);
    if( sd == NULL )
        return 0;
 
    if (num > 0 && num <= ARRAYLENGTH(equip))
        i = pc_checkequip(sd,equip[num-3]);
    if(i >= 0) {
        ep = sd->status.inventory[i].equip;
 
        //Logs items, got from (N)PC scripts [Lupus]
        log_pick_pc(sd, LOG_TYPE_SCRIPT, -1, &sd->status.inventory[i]);
 
        sd->status.inventory[i].refine++;
        pc_unequipitem(sd,i,2); // status calc will happen in pc_equipitem() below
 
        clif_refine(sd->fd,2,i,sd->status.inventory[i].refine = sd->status.inventory[i].refine - 2);
        clif_delitem(sd,i,1,3);
 
        //Logs items, got from (N)PC scripts [Lupus]
        log_pick_pc(sd, LOG_TYPE_SCRIPT, 1, &sd->status.inventory[i]);
 
        clif_additem(sd,i,1,0);
        pc_equipitem(sd,i,ep);
        clif_misceffect(&sd->bl,2);
    }
 
    return 0;
}

3 answers to this question

Recommended Posts

Posted

«You are doing it wrong». (= Try this:

BUILDIN_FUNC(downrefitem)
{
	int i = -1,num,ep;
	TBL_PC *sd;

	num = script_getnum(st,2);
	sd = script_rid2sd(st);
	if( sd == NULL )
		return 0;

	if (num > 0 && num <= ARRAYLENGTH(equip))
		i = pc_checkequip(sd,equip[num-1]);
	if(i >= 0) {
		ep = sd->status.inventory[i].equip;

		//Logs items, got from (N)PC scripts [Lupus]
		log_pick_pc(sd, LOG_TYPE_SCRIPT, -1, &sd->status.inventory[i]);

		sd->status.inventory[i].refine++;
		pc_unequipitem(sd,i,2); // status calc will happen in pc_equipitem() below

		if(sd->status.inventory[i].refine < 4)
			clif_refine(sd->fd,2,i,sd->status.inventory[i].refine = 0);
		else
			clif_refine(sd->fd,2,i,sd->status.inventory[i].refine = sd->status.inventory[i].refine - 4);
		clif_delitem(sd,i,1,3);

		//Logs items, got from (N)PC scripts [Lupus]
		log_pick_pc(sd, LOG_TYPE_SCRIPT, 1, &sd->status.inventory[i]);

		clif_additem(sd,i,1,0);
		pc_equipitem(sd,i,ep);
		clif_misceffect(&sd->bl,2);
	}

	return 0;
}

Or you could run the command 3 times...

Yeah, that's more simple >.<

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