Jump to content

Kubix

Members
  • Content Count

    150
  • Joined

  • Last visited

  • Days Won

    20

Posts posted by Kubix


  1. Try this.

    glast_01,210,270,0	script	Hugin's Craftsman	726,{
    	disable_items;
    	if (MaxWeight - Weight < 1000) {
    		mes "Your bag is too heavy. Reduce some weight and come back.";
    		close;
    	}
    	
    	mes "[Hugin's Craftsman]";
    	mes "That Magic Master always says that enchanting Temporal Boots is the best. But, I think quite different.";
    	next;
    	mes "[Hugin's Craftsman]";
    	mes "I think putting a slot into the item would be the best. Even with some risk of failing.";
    	next;
    	mes "[Hugin's Craftsman]";
    	mes "Bring me ^0000FF5 Temporal Crystals^000000, and I will try to put a slot into your advanced Temporal Boots. But, it's possible to ^FF0000fail and break the item^000000. Is that ok?";
    	next;
    	if (select("Cancel","Take the risk and try to add a slot") == 1) {
    		mes "[Hugin's Craftsman]";
    		mes "Ok, come back anytime you want.";
    		close;
    	}
    	
    	set .@part,EQI_SHOES;
    	if (!getequipisequiped(.@part)) {
    		mes "[Hugin's Craftsman]";
    		mes "Are you sure you are wearing the item?";
    		close;
    	}
    	set .@equip_id,getequipid(.@part);
    	
    	switch (.@equip_id) {
    		case 22000: //Temporal_Str_Boots
    			.@get_id = 22006,1; //Temporal_Str_Boots_
    			break;
    		case 22001: //Temporal_Int_Boots
    			.@get_id = 22009; //Temporal_Int_Boots_
    			break;
    		case 22002: //Temporal_Agi_Boots
    			.@get_id = 22010; //Temporal_Agi_Boots_
    			break;
    		case 22003: //Temporal_Vit_Boots
    			.@get_id = 22007; //Temporal_Vit_Boots_
    			break;
    		case 22004: //Temporal_Dex_Boots
    			.@get_id = 22008; //Temporal_Dex_Boots_
    			break;
    		case 22005: //Temporal_Luk_Boots
    			.@get_id = 22011; //Temporal_Luk_Boots_
    			break;
    		default:
    			mes "[Hugin's Craftsman]";
    			mes "This is not it! We need ^0000FFAdvanced Temporal Boots^000000 items! The item ^0000FFwith a stat effect and without a slot^000000!";
    			close;
    	}
    	
    	for( .@i = 0; .@i < 4; .@i ++ )
    		setd "Craft_Card" + .@i, getequipcardid( .@equip_id, .@i );
    	
    	mes "[Hugin's Craftsman]";
    	mes "And ^FF0000all enchant or refine rates will be lost if you fail this.^000000";
    	mes "Still want to risk it?";
    	next;
    	if (select("Cancel","I am ok with it!") == 1) {
    		mes "[Hugin's Craftsman]";
    		mes "Ok, come back anytime you want.";
    		close;
    	}
    	
    	mes "[Hugin's Craftsman]";
    	mes "Once again, ^FF0000That Magic Master won't enchant any item with a slot.^000000";
    	mes "Still want to proceed?";
    	next;
    	if (select("Cancel","I understand. Try to slot it.") == 1) {
    		mes "[Hugin's Craftsman]";
    		mes "Ok, come back anytime you want.";
    		close;
    	}
    	
    	if (countitem(6607) < 5) {
    		mes "[Hugin's Craftsman]";
    		mes "You must bring ^0000FF5 Temporal Crystal items^000000. Nothing is free you know...";
    		close;
    	}
    	
    	if (rand(1,100) <= 80) { //Custom rates
    		mes "[Hugin's Craftsman]";
    		mes "Arrggg, we failed. Better luck next time.";
    		specialeffect2 EF_PHARMACY_FAIL;
    		delitem 6607,5; //Temporal_Crystal
    		delequip .@part;
    		close;
    	}
    	
    	mes "[Hugin's Craftsman]"; //Custom text
    	mes "Yuhuu~ we succeed. Here you are...";
    	mes "A slot has been added to your advanced Temporal Boots.";
    	mes "Thank you for believing in me.";
    	specialeffect2 EF_PHARMACY_OK;
    	delitem 6607,5; //Temporal_Crystal
    	delequip .@part;
    	getitem2 .@get_id, 1, 1, 0, 0, getd( "Craft_Card0" ), getd( "Craft_Card1" ), getd( "Craft_Card2" ), getd( "Craft_Card3" );
    	close;
    }
    

  2.  

     

    -	script	OnPCDieViewMap	-1,{
    OnPCDieEvent:
    	if( getcharid(1) )
    	{
    		getmapxy( .map$, .x, .y, UNITTYPE_PC );
    		getpartymember getcharid(1), 1;
    		getpartymember getcharid(1), 2;
    		
    		copyarray .@paid[0], $@partymemberaid[0], $@partymembercount;
    		copyarray .@caid[0], $@partymembercid[0], $@partymembercount;
    		
    		for( .@i = 0; .@i < getarraysize(.@paid); .@i ++ )
    		{
    			if( isloggedin( .@paid[.@i], .@caid[.@i] ) )
    			{
    				attachrid( .@paid[.@i] );
    				.@id = rand(500);
    				if( strcharinfo(3) == .map$ )
    					viewpoint 0, .x, .y, .@id, 0xFF0000;
    				detachrid;
    			}
    			
    		}
    	}
    	end;
    }
    

    Preview:

     

    https://gyazo.com/1e8aaaa304e13d9f9745264c9a0def08

    https://gyazo.com/77928f04c9f80b8313200452bcfff33d

     

     

     

    How to make the View Point permanent pinging? it will be removed if the player is ALIVE, and i notice that a couple of seconds the viewpoint went gone?

     

    viewpoint 0, .x, .y, .@id, 0xFF0000;
     

     

     -> 

     

    viewpoint 1, .x, .y, .@id, 0xFF0000;
     

    There is no label that triggers when player is resurrected, so i can't help with  "it will be removed if the player is ALIVE"


  3. setarray .equipid[0], 1599; <= items that can be enchanted
    setarray .enchant[0], 9999; <= enchant item id
    setarray .itemsid[0], 909; <= items that need for enchant
    setarray .amounts[0], 1;
    
    .@menu$ = "";
    for( .i = 0; .i < getarraysize( .equipid ); .i ++ )
    {
       .@menu$ += ( .i + 1 ) + ". " + getitemname(.equipid[.i];
       .@menu$ += ":";
    }
    
    @select = select(.@menu$) - 1;
    
    if( !isequipped( .equipid[@select] ) )
    {
        mes "equip the item first.";
        close;
    }
    @error = 0;
    for( .a = 0; .a < getarraysize( .itemsid ); .a ++ )
    {
      if( countitem( .itemsid[.a] ) < .amounts[.a] )
        close; // no items
      
      delitem .itemsid[.a], .amounts[.a];
    }
    
    delitem .equipid[@select], 1;
    getitem2 .equipid[@select], 1, 1, 0, 1, 0, 0, 0, .enchant[0];
    close;
         
    

    this is sample.

    need a menu for select the enchant orbs. But you can use this code for create your script :)

    (not tested)


  4. -	script	OnPCDieViewMap	-1,{
    OnPCDieEvent:
    	if( getcharid(1) )
    	{
    		getmapxy( .map$, .x, .y, UNITTYPE_PC );
    		getpartymember getcharid(1), 1;
    		getpartymember getcharid(1), 2;
    		
    		copyarray .@paid[0], $@partymemberaid[0], $@partymembercount;
    		copyarray .@caid[0], $@partymembercid[0], $@partymembercount;
    		
    		for( .@i = 0; .@i < getarraysize(.@paid); .@i ++ )
    		{
    			if( isloggedin( .@paid[.@i], .@caid[.@i] ) )
    			{
    				attachrid( .@paid[.@i] );
    				.@id = rand(500);
    				if( strcharinfo(3) == .map$ )
    					viewpoint 0, .x, .y, .@id, 0xFF0000;
    				detachrid;
    			}
    			
    		}
    	}
    	end;
    }
    

    Preview:

     

    https://gyazo.com/1e8aaaa304e13d9f9745264c9a0def08

    https://gyazo.com/77928f04c9f80b8313200452bcfff33d


  5. // goto Hercules/src/map/skill.c, find HP_ASSUMPTIO skill and change this:
    			if( sd && dstmd )
    				clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
    			else
    				clif->skill_nodamage(src,bl,skill_id,skill_lv,
    					sc_start(src,bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv)));
    			break;
    					
    // to this:
    		case HP_ASSUMPTIO:
    
    			if(pc->isequipped(sd, ITEMID_ASSUMPTIOHEADGEAR))
    			{
    				int index = 0;
    				status->current_equip_item_index = index = sd->equip_index[EQI_HEAD_TOP];
    				
    				if( sd == NULL || sd->status.party_id == 0 || (flag & 1) )
    					clif->skill_nodamage(bl, bl, skill_id, skill_lv, sc_start(src,bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv)));
    				else if( sd )
    					party->foreachsamemap(skill->area_sub, sd, (sd->status.inventory[index].refine >= 5? 5:3), src, skill_id, skill_lv, tick, flag|BCT_ALL|1, skill->castend_nodamage_id);		
    			}
    			else
    			{
    				if( sd && dstmd )
    					clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
    				else
    					clif->skill_nodamage(src,bl,skill_id,skill_lv,
    						sc_start(src,bl,type,100,skill_lv,skill->get_time(skill_id,skill_lv)));				
    			}
    			break;
    			
    			
    // goto Hercules/src/map/itemdb.h, find enum item_itemid { and add below this:
    	ITEMID_ASSUMPTIOHEADGEAR	 = 1599, // 1599 = your item ID
    > Makes Assumptio affect friendly targets around your chosen target as well.

    > AOE will be 3x3 cell

    > if headgear is plus 5 AOE will be 5x5


  6. header: {
    OnPCLoadMapEvent:
    if( strcharinfo(3) == "prontera" )
        announce "Hello, " + strcharinfo(0), bc_self; // self-announce
    end;
    }
    
    prontera[tab]mapflag[tab]loadevent
    

    OnPCLoadMapEvent:
    
    This special label will trigger once a player steps in a map marked with 
    the 'loadevent' mapflag and attach its RID. The fact that this label 
    requires a mapflag for it to work is because, otherwise, it'd be 
    server-wide and trigger every time a player would change maps. Imagine the 
    server load with 1,000 players (oh the pain...)
    
    Only the special labels which are not associated with any script command 
    are listed here. There are other kinds of labels which may be triggered in 
    a similar manner, but they are described with their associated commands.
    
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.