-
Content Count
556 -
Joined
-
Last visited
Reputation Activity
-
ThyroDree reacted to iamhyd in Daily Rewards
View File Daily Rewards
Features:
Full Customizable Can Set Number of Hours Between Login Prizes and Losing Consecutive Prizes make Days Weeks or even Months Can Item, Point, Exp or even Buff Rewards Includes Configurable Whisper Commands for checking status of and collecting next rewards Includes @Command for checking status of and collecting next rewards Includes Dynamic Buff Rewards
Video:
Youtube
What did i do?
I just ported his daily reward script so it can work properly on hercules.
[ Stolao Script Collection ]
Submitter iamhyd™ Submitted 04/22/20 Category Utility
-
ThyroDree reacted to MikZ in Euphy's Quest Shop Help with Preview
Used this npc/custom/quests/quest_shop.txt
//===== Hercules Script ====================================== //= Euphy's Quest Shop //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.6a //===== Description: ========================================= //= A dynamic quest shop based on Lunar's, with easier config. //= Includes support for multiple shops & cashpoints. //= Item Preview script by ToastOfDoom. //===== Additional Comments: ================================= //= 1.0 Initial script. //= 1.2 Added category support. //= 1.3 More options and fixes. //= 1.4 Added debug settings. //= 1.5 Replaced categories with shop IDs. //= 1.6 Added support for purchasing stackables. //= 1.6a Added support for previewing costumes and robes. //============================================================ // Shop NPCs -- supplying no argument displays entire menu. // callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}}; //============================================================ prontera,164,203,6 script Quest Shop#1 4_M_MOCASS2,{ callfunc "qshop"; } // Script Core //============================================================ - script quest_shop FAKE_NPC,{ function Add; function Chk; function Slot; function A_An; OnInit: freeloop(1); // ----------------------------------------------------------- // Basic shop settings. // ----------------------------------------------------------- set .Announce,1; // Announce quest completion? (1: yes / 0: no) set .ShowSlot,1; // Show item slots? (2: all equipment / 1: if slots > 0 / 0: never) set .ShowID,0; // Show item IDs? (1: yes / 0: no) set .ShowZeny,0; // Show Zeny cost, if any? (1: yes / 0: no) set .MaxStack,100; // Max number of quest items purchased at one time. // ----------------------------------------------------------- // Points variable -- optional quest requirement. // setarray .Points$[0],"<variable name>","<display name>"; // ----------------------------------------------------------- setarray .Points$[0],"#CASHPOINTS","Cash Points"; // ----------------------------------------------------------- // Shop IDs -- to add shops, copy dummy data at bottom of file. // setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...}; // ----------------------------------------------------------- setarray .Shops$[1],"Headgears","Weapons","Other"; // ----------------------------------------------------------- // Quest items -- do NOT use a reward item more than once! // Add(<shop ID>,<reward ID>,<reward amount>, // <Zeny cost>,<point cost>, // <required item ID>,<required item amount>{,...}); // ----------------------------------------------------------- Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2); Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600); Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1); Add(1,5045,1,0,0,2252,1,1054,450,943,1200); Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10); Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10); Add(3,531,1,3,0,512,1,713,1); Add(3,532,1,3,0,513,1,713,1); Add(3,533,1,3,0,514,1,713,1); Add(3,534,1,3,0,515,1,713,1); // ----------------------------------------------------------- freeloop(0); set .menu$,""; for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) { set .menu$, .menu$+.Shops$[.@i]+":"; npcshopdelitem "qshop"+.@i,909; } end; OnMenu: set .@size, getarraysize(@i); if (!.@size) set .@i, select(.menu$); else if (.@size == 1) set .@i, @i[0]; else { for(set .@j,0; .@j<.@size; set .@j,.@j+1) set .@menu$, .@menu$+.Shops$[@i[.@j]]+":"; set .@i, @i[select(.@menu$)-1]; } deletearray @i[0],getarraysize(@i); if (.Shops$[.@i] == "") { message strcharinfo(PC_NAME),"An error has occurred."; end; } dispbottom "Select one item at a time."; callshop "qshop"+.@i,1; npcshopattach "qshop"+.@i; end; OnBuyItem: // .@q[] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... } setarray .@q[0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]); copyarray .@q[3],getd(".q_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+.@q[0])); set .@q[2],.@q[1]*.@q[3]; if (!.@q[2] || .@q[2] > 30000) { message strcharinfo(PC_NAME),"You can't purchase that many "+getitemname(.@q[0])+"."; end; } mes "[Quest Shop]"; mes "Reward: ^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000"; mes "Requirements:"; if (.@q[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000"; if (.@q[5]) mes " > "+Chk(getd(.Points$[0]),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+(.@q[5]*.@q[1])+")^000000"; if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2) mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000"; next; setarray @qe[1], getiteminfo(.@q[0], ITEMINFO_LOC), getiteminfo(.@q[0], ITEMINFO_VIEWSPRITE); if (@qe[2] > 0 && ((@qe[1] & EQP_HEAD_LOW) || (@qe[1] & EQP_HEAD_TOP) || (@qe[1] & EQP_HEAD_MID) || (@qe[1] & EQP_COSTUME_HEAD_TOP) || (@qe[1] & EQP_COSTUME_HEAD_MID) || (@qe[1] & EQP_COSTUME_HEAD_LOW) || (@qe[1] & EQP_GARMENT) || (@qe[1] & EQP_COSTUME_GARMENT))) set .@preview,1; addtimer 1000, strnpcinfo(NPC_NAME)+"::OnEnd"; while(1) { switch(select(" ~ Purchase ^0055FF"+ getitemname(.@q[0]) +"^000000", ((.@preview && !@qe[7])?" ~ Preview...": ""), " ~ ^777777Cancel^000000")) { case 1: if (@qe[0]) { mes "[Quest Shop]"; mes "You're missing one or more quest requirements."; close; } if (!checkweight(.@q[0],.@q[2])) { mes "[Quest Shop]"; mes "^FF0000You need "+(((.@q[2] * getiteminfo(.@q[0], ITEMINFO_WEIGHT)) + Weight - MaxWeight) / 10)+" additional weight capacity to complete this trade.^000000"; close; } if (.@q[4]) Zeny -= (.@q[4]*.@q[1]); if (.@q[5]) setd .Points$[0], getd(.Points$[0])-(.@q[5]*.@q[1]); if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2) delitem .@q[.@i],.@q[.@i+1]*.@q[1]; getitem .@q[0],.@q[2]; if (.Announce) announce strcharinfo(PC_NAME)+" has created "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):A_An(getitemname(.@q[0])))+"!",0; specialeffect(EF_FLOWERLEAF, AREA, playerattached()); close; case 2: setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1; if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2]; else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2]; else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2]; else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2]; break; case 3: close; } } OnEnd: if (@qe[7]) { changelook LOOK_HEAD_BOTTOM, @qe[3]; changelook LOOK_HEAD_TOP, @qe[4]; changelook LOOK_HEAD_MID, @qe[5]; changelook LOOK_ROBE, @qe[6]; } deletearray @qe[0],8; end; function Add { if (getitemname(getarg(1)) == "null") { consolemes(CONSOLEMES_WARNING, "Quest reward #"+getarg(1)+" invalid (skipped)."); return; } setarray .@j[0],getarg(2),getarg(3),getarg(4); for(set .@i,5; .@i<getargcount(); set .@i,.@i+2) { if (getitemname(getarg(.@i)) == "null") { consolemes(CONSOLEMES_WARNING, "Quest requirement #"+getarg(.@i)+" invalid (skipped)."); return; } else setarray .@j[.@i-2],getarg(.@i),getarg(.@i+1); } copyarray getd(".q_"+getarg(1)+"[0]"),.@j[0],getarraysize(.@j); npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0); return; } function Chk { if (getarg(0) < getarg(1)) { set @qe[0],1; return "^FF0000"; } else return "^00FF00"; } function Slot { set .@s$,getitemname(getarg(0)); switch(.ShowSlot) { case 1: if (!getitemslots(getarg(0))) return .@s$; case 2: if (getiteminfo(getarg(0), ITEMINFO_TYPE) == IT_WEAPON || getiteminfo(getarg(0), ITEMINFO_TYPE) == IT_ARMOR) return .@s$+" ["+getitemslots(getarg(0))+"]"; default: return .@s$; } } function A_An { setarray .@A$[0],"a","e","i","o","u"; set .@B$, "_"+getarg(0); for(set .@i,0; .@i<5; set .@i,.@i+1) if (compare(.@B$,"_"+.@A$[.@i])) return "an "+getarg(0); return "a "+getarg(0); } } function script qshop { deletearray @i[0],getarraysize(@i); for(set .@i,0; .@i<getargcount(); set .@i,.@i+1) set @i[.@i],getarg(.@i); doevent "quest_shop::OnMenu"; end; } // Dummy shop data -- copy as needed. //============================================================ - shop qshop1 FAKE_NPC,909:-1 - shop qshop2 FAKE_NPC,909:-1 - shop qshop3 FAKE_NPC,909:-1 - shop qshop4 FAKE_NPC,909:-1 - shop qshop5 FAKE_NPC,909:-1
-
ThyroDree reacted to 4144 in Atcommand.c remove warning message when compiling
remove line with:
nullpo_retr(-1, sd); -
ThyroDree reacted to Patskie in Item Shower around player
- script asdfh FAKE_NPC,{ OnCmd: if (!.@atcmd_numparameters || .@atcmd_numparameters != 2) { message strcharinfo(0), "Usage: @itemshower <item_id> <item_quantity>"; end; } .@item = atoi(.@atcmd_parameters$[0]); .@q = atoi(.@atcmd_parameters$[1]); if (!.@q || getitemname(.@item) == "null") { message strcharinfo(0), "Invalid item/amount"; end; } getmapxy .@map$, .@x, .@y, UNITTYPE_PC; .@i = 0; while (.@i < .@q) { do { .@a = rand(.@x, .@x+200); .@b = rand(.@y, .@y+200); } while (!checkcell(.@map$, .@a, .@b, cell_chkpass)); makeitem .@item, 1, .@map$, .@a, .@b; .@i++; } end; OnInit: bindatcmd "itemshower", strnpcinfo(3) + "::OnCmd", 99, 99, true; end; }
-
ThyroDree reacted to Dastgir in Plugin Collections
Hello Community,
I am feeling like, there's many plugin on forum, but not been actively used, due to out-of-date plugin
I have updated Shikazu's Plugin first(as it was requested on the thread from 25th April), maybe Shikazu busy on his rl.
Also I have included My Plugins there.
I would like to add more plugins there(which are not updated on hercules forum <- please suggest if you find some outdated plugin and want me to update it )
List of Plugins and Owners:
https://github.com/dastgir/HPM-Plugins/blob/master/README.md
Repository: https://github.com/dastgir/HPM-Plugins
Thanks.
-
ThyroDree reacted to 4144 in Adding /lb and /b command to Lower Level GMs
look like you should allow commands
@kami and
@lkami
-
ThyroDree reacted to meko in Some map-server error
This is a known issue and will be fixed in today's release
-
ThyroDree reacted to Kenpachi in Buff Scroll
Hi.
More than one itemskill() invocation per item is not support due to the mechanics of server-client-communication.
When using the item, the first itemskill() invocation makes the server send a packet (ZC_AUTORUN_SKILL) to the client.
Now the item's script isn't attached to the character anymore and thus the second itemskill() invocation can't be executed.
Use sc_start() for the first skill, to "fix" this.
I have to investigate how Aegis handles this, since there are official items which cast more than one skill. For example Angeling Potion (ID=12350).
item Angeling_Potion event OnConsume: SkillToMe AL_BLESSING 5 Skill AL_ANGELUS 5 return
~Kenpachi
-
ThyroDree reacted to Kenpachi in Morphogenic Hat Script Convert
Hi.
Add this:
if (.@item_id < 5001 || (.@item_id > 5859 && .@item_id < 30000) || .@item_id > 31000) { dispbottom("---------------[Morpho Helper]---------------"); dispbottom(" "); dispbottom("Sorry, this headgear was not designed for this headgear slot."); dispbottom(" "); end; } Below:
if ((.@keyword$ == "upper" || .@keyword$ == "middle" || .@keyword$ == "lower") && .@view_id <= 0) { dispbottom("---------------[Morpho Helper]---------------"); dispbottom(" "); dispbottom("Invalid headgear ID."); dispbottom(" "); end; }
~Kenpachi
-
ThyroDree reacted to Zarbony in Item Shower around player
Hey, i think this will work like that...
Just an Freestyle Script in this Forum Code snippet
I hope it will work, this is my Fast Solution,
you can Improve this by Callfuncs to Config everything by typing the command once.
so you can Configure the Itemshower with the command itmshoconf
and let it rain with the command itemshower
the Items will Rain Around the Player Who use the command, so it isnt bind on an map.
The Command is only useable for GroupId 99 and Above so normal players wont see this in their command list
and in the Itemshower theres everytime an 1,7 random chance on whish place around the player who use the command the item will appear.
Please Test it before u use it and fix some errors
- script Sample -1,{ OnInit: bindatcmd "itemshower",strnpcinfo(0)+"::OnShower",99; //Fires The Configurated ItemShower bindatcmd "itmshoconf",strnpcinfo(0)+"::OnShowerC",99; //For Configurating the ItemShower end; OnShowerC: mes("Hey There, What would you do?"); switch(select("Change Item ID","Change Shower amount","Change Item Quantity","Nothing, Boy!")){ case 1: mes("Type in the Item ID!"); input .itemidIS; next; mes("The Item with the ID "+.itemidIS+" would "+getitemname(.itemidIS)+" is this correct?"); if(select("Yep!","Nope!")==1)close(); set .itemidIS,0; close(); case 2: mes("Type in the Shower amount!"); input .amount; next; mes("The Item Shower will rain about "+.amount+" is this correct?"); if(select("Yep!","Nope!")==2)close(); set .amount,.amount+1; close(); case 3: mes("Type in the Item Quantity every Item will Appear!"); input .quantityIS; next; mes("The Item Shower will drop every time "+.quantityIS+" items is this correct?"); if(select("Yep!","Nope!")==1)close(); set .quantityIS,0; close(); case 4: mes("Come back again if you need my help!Boy!"); close(); } end; OnShower: getmapxy(.@map$,.@mapx,.@mapy, UNITTYPE_PC, strcharinfo(0)); for(set .@i,0; .@i<.amount; .@i++){ .@r = rand (1,7); if(.@r == 1){ makeitem .itemidIS,.quantityIS,.@mapname$,.@mapx,.@mapy; sleep2 50; } else if(.@r == 2){ makeitem .itemidIS,.quantityIS,.@mapname$,.@mapx-1,.@mapy; sleep2 50; } else if(.@r == 3){ makeitem .itemidIS,.quantityIS,.@mapname$,.@mapx-1,.@mapy-1; sleep2 50; } else if(.@r == 4){ makeitem .itemidIS,.quantityIS,.@mapname$,.@mapx,.@mapy+1; sleep2 50; } else if(.@r == 5){ makeitem .itemidIS,.quantityIS,.@mapname$,.@mapx+1,.@mapy; sleep2 50; } else if(.@r == 6){ makeitem .itemidIS,.quantityIS,.@mapname$,.@mapx+1,.@mapy+1; sleep2 50; } else if(.@r == 7){ makeitem .itemidIS,.quantityIS,.@mapname$,.@mapx,.@mapy+1; sleep2 50; } end; } end; }
-
ThyroDree reacted to Kuya Jeo in 3rd Job Max Level Aura to Trans Job
check on official kRO files, (data.grf)
-
ThyroDree reacted to Kenpachi in Specific Monster Summon Scroll
Hi.
Script: <" monster("this", -1, -1, "Ifrit", 1832, 1); ">
~Kenpachi
-
ThyroDree reacted to Kenpachi in Low damage PVP is something wrong?
This was caused by custom modification. (https://herc.ws/board/topic/17974-adding-limit-or-cap-resistance-reflect-chance-and-skill-delay)
~Kenpachi
-
ThyroDree reacted to Kenpachi in Adding Limit or Cap Resistance, Reflect Chance, and Skill Delay
Okay.
First of all: I'M STUPID!
Second of all: I'M STUPID!
And thirdly: I'M STUPID!
Change "max" to "min" and 150 back to 50....
Did I mention, that I'm stupid?
~Kenpachi
-
ThyroDree reacted to Kenpachi in Blast Mine will bypass 1 damage for plant monster
Hi.
In src/map/battle.c find function battle_calc_misc_attack() and replace:
switch(skill_id){ case HT_LANDMINE: case MA_LANDMINE: case HT_BLASTMINE: case HT_CLAYMORETRAP: case RA_CLUSTERBOMB: #ifdef RENEWAL break; #endif default: md.damage = 1; } With:
switch(skill_id){ case HT_BLASTMINE: break; case HT_LANDMINE: case MA_LANDMINE: case HT_CLAYMORETRAP: case RA_CLUSTERBOMB: #ifdef RENEWAL break; #endif default: md.damage = 1; }
~Kenpachi
-
ThyroDree reacted to Jaburak in 3 Colored Credit Cards
View File 3 Colored Credit Cards
Colored Credit Cards
Just cleaning up my design folders. Hehe
Submitter Anakid Submitted 02/22/20 Category Sprites & Palettes
-
ThyroDree reacted to Kenpachi in [PVP Announcer] buildin_getcharid: invalid parameter (8)
Hi.
Replace:
set .AnnounceFlag$, "bc_all"; With:
set .AnnounceFlag, bc_all;
In line 189, 191, 193 and 273 replace:
16|.announce With:
.AnnounceFlag, .AnnounceColor$
In line 221 replace:
announce strcharinfo(0) +" , Stop killing "+ rid2name(killedrid) + " !!!",0; With:
announce strcharinfo(0) +" , Stop killing "+ rid2name(killedrid) + " !!!", .AnnounceFlag, .AnnounceColor$;
In line 294, 295, 303, 304, 310, 311, 317, 318, 324 and 325 replace:
16 With:
.AnnounceFlag, .AnnounceColor$
No you can change the color by modifying .AnnounceColor$.
~Kenpachi
-
ThyroDree reacted to Promeister in How to Make Cart Termination Skill affected by Card?
On your skill_db.conf
find
{ Id: 485 Name: "WS_CARTTERMINATION" Description: "Cart Termination" and look for the this:
DamageType: { IgnoreCards: true } It should be like this
DamageType: { //IgnoreCards: true } after that restart the server.
-
ThyroDree reacted to Haru in [BUG] Looter Monster
Kenpachi's fix for this is included in the v2020.03.08+2 release I just pushed, thank you!
-
ThyroDree reacted to Kenpachi in [BUG] Looter Monster
Hi.
In src/map/unit.c find function unit_walktobl() and replace:
if (unit->walk_toxy_sub(bl) == 0 && (flag & 2) != 0) { set_mobstate(bl); return 1; } with:
if (unit->walk_toxy_sub(bl) == 0) { if ((flag & 2) != 0) set_mobstate(bl); return 1; }
And re-compile.
~Kenpachi
-
ThyroDree reacted to Kenpachi in Morphogenic Hat Script Convert
Hi.
Here you go:
I re-wrote the original script, so if you have modifications in your version, you have to apply them again. Sorry.
~Kenpachi
-
ThyroDree reacted to Kenpachi in Morphogenic Hat Script Convert
Sorry, my fault.
It's ITEMINFO_VIEWSPRITE instead of ITEMINFO_VIEWID.
~Kenpachi
-
ThyroDree reacted to Kenpachi in Cloning Monster / Mob
Hi.
The mob_avail.txt was merged with the mob_db.conf.
See doc/mob_db.txt for more info.
~Kenpachi
-
ThyroDree reacted to Kenpachi in Adding Limit or Cap Resistance, Reflect Chance, and Skill Delay
No, since you can't use RC_ALL.
You can only use the following races. The other ones are combined types.
RC_FORMLESS ///< Formless RC_UNDEAD ///< Undead RC_BRUTE ///< Beast/Brute RC_PLANT ///< Plant RC_INSECT ///< Insect RC_FISH ///< Fish RC_DEMON ///< Demon RC_DEMIHUMAN ///< Demi-Human (not including Player) RC_ANGEL ///< Angel RC_DRAGON ///< Dragon RC_PLAYER ///< Player RC_BOSS ///< Boss RC_NONBOSS ///< Non-boss
Yes. The renewal code won't be compiled. But if you want to, you can add only pre-RE code. (Note the 'n' in #ifndef. This means "if NOT defined RENEWAL".)
#ifndef RENEWAL sd->subrace[RC_FORMLESS] = max(sd->subrace[RC_FORMLESS], 50); sd->subrace[RC_UNDEAD] = max(sd->subrace[RC_UNDEAD], 50); sd->subrace[RC_BRUTE] = max(sd->subrace[RC_BRUTE], 50); sd->subrace[RC_PLANT] = max(sd->subrace[RC_PLANT], 50); sd->subrace[RC_INSECT] = max(sd->subrace[RC_INSECT], 50); sd->subrace[RC_FISH] = max(sd->subrace[RC_FISH], 50); sd->subrace[RC_DEMON] = max(sd->subrace[RC_DEMON], 50); sd->subrace[RC_DEMIHUMAN] = max(sd->subrace[RC_DEMIHUMAN], 50); sd->subrace[RC_ANGEL] = max(sd->subrace[RC_ANGEL], 50); sd->subrace[RC_DRAGON] = max(sd->subrace[RC_DRAGON], 50); sd->subrace[RC_PLAYER] = max(sd->subrace[RC_PLAYER], 50); sd->subrace[RC_BOSS] = max(sd->subrace[RC_BOSS], 50); sd->subrace[RC_NONBOSS] = max(sd->subrace[RC_NONBOSS], 50); #endif
~Kenpachi
-
ThyroDree reacted to Kenpachi in [BUG] Experience Gained BUG?
We're working on that issue. (https://github.com/HerculesWS/Hercules/pull/2647)
~Kenpachi