Kubix
-
Content Count
150 -
Joined
-
Last visited
-
Days Won
20
Posts posted by Kubix
-
-
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; }
-
Sample plugin here https://github.com/HerculesWS/Hercules/blob/master/src/plugins/sample.c
In same dir exists some other plugins
Thanks!
-
why not plugin?
I don't know how to create a plugin, sorry.
-
Hello!
I find eAmod BGs in public and rewrite some src and scripts for Hercules.BG:
- Conquest
- Rush
- Flavius TD
Register - @joinbg or NPC, leave - @leavebg
This is queue BG with multiple windows checking by Gepard ID or IP.
Items:
- 56 BG consumable items (using only on BG) with boxes
- 56 WoE consumable items (using only on WoE) with boxes
- Item list
New script commands:
- bg_reward
- bg_team_reveal
- flooritem
- flooritem2xy
- bg_getitem
- bg_getkafrapoints
- bg_single
- bg_create_team (added OnPCDie and OnPCLogout events.)
Settings:
OnInit: // ===== Multiple Windows checking by ? // = 1 - Gepard Shield // = 2 - IP .MultipleCheck = 1; // ===== BG Colors setarray .BG_Color$[0], "0xDDA0DD", "0x7CCD7C", "0xFFA500"; // ===== BG NPC & Arena Names setarray .BG_Names$[0], "Rush", "Flavius TD", "Conquest"; setarray .BG_Arena$[0], "Rush", "Flavius_TD", "Conquest"; // ===== BG Player Amount setarray .BG_Min[0], 2, 2, 2; setarray .BG_Max[0], 30, 30, 30; // ===== BG Locations setarray .BG_Map$[0], "rush_cas04", "bat_b03", "schg_cas06"; // ===== BG X/Y Coordinates setarray .BG_GuillX[0], 270, 390, 264; setarray .BG_GuillY[0], 292, 10, 379; setarray .BG_CroixX[0], 270, 10, 295; setarray .BG_CroixY[0], 288, 290, 379; bindatcmd "joinbg", strnpcinfo(0) + "::OnJoinBG", 0, 99; bindatcmd "leavebg", strnpcinfo(0) + "::OnLeaveBG", 0, 99; // ===== Time to flood in seconds. .Flood_Time = 180; // ===== Enable debug mode? .debug = false;
Sorry, not all instructions translated to English now.
-
make all
-
Why you not use :
.bexp_rate = getbattleflag("base_exp_rates");
instead of :
.bexp_rate = 10;
-
@recall all?
-
setmount MOUNT_WUG;
-
upd. fixed cooldown issue
-
change Case to case
-
- 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:
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"
-
while( .loop < 12 )
{
killmonsterall "map";
.loop ++;
sleep 5000;
}
-
He will be at home in a few days.
-
up.
new version
converted global variables -> instance variables.
-
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)
-
- 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:
evilpuncker and Lamex reacted to this -
Information about release: here.
Sample NPC ingame, flux cp addons, sql-files.
Download: Google.Drive
can you make for smf ?
Maybe. I will try.
evilpuncker reacted to this -
-
// 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
-
up, cleared.
-
-
You mean SC_AUTOSHADOWSPELL ?
-
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.
almarket23 reacted to this -
Hey Kubix, I'll test this today because I might use it on my server for a revamp. This is great (the idea).
Thanks. All Hail.
Thanks !
Queue BG rewrite
in PvP, WoE, GvG, & Battleground Releases
Posted
Impossible, rA doesn't have queue commands.