the ITEMBOUND items became tradable when i converted them into a costume then restore them back.
can you help me ? i have no knowledge scripting.
but i think the solution is countitem so that it won't let the player to use the costume clown if he/she has an <itemid> in his inventory.
//===== Hercules Script ======================================//= Headgear to Costume converter >> Costume to Headgear converter//===== By: ==================================================//= Rebel, Zephyrus [rAthena]//= Mhalicot [Hercules]//===== Current Version: =====================================//= 1.1//===== Compatible With: =====================================//= Hercules//===== Description: =========================================//= Allows a user to convert the equipped headgear // (on Top, Mid or Low) into a costume item. // It will remove any card and refine of the Item.//= Allows a user to restore the equipped costume headgear // (on Top, Mid or Low) into its original form. // It will not return any card or refine of the item.//===== Additional Comments: =================================//= 1.0 Initial script [All of this script are credit to// Rebel, Zephyrus of [rAthena] and revised by [Mhalicot]// to make it compatible in Hercules.]//= 1.1 Denied if Headgear is rental, has refine,// or has card[Mhalicot]// Note: You must apply the patch in order to use this script//============================================================- script Costume Clown -1,{ mes "[Clown]"; mes "Here you can convert your headgears into a Costume Headgear or restore to its Original form."; switch(select("I want to convert.:I want to restore.:No thanks.")) { case 1: next; mes "[Clown]"; mes "Please, select what to convert."; mes "Remember, cards and refine will be removed."; next; setarray .@Position$[1],"Top","Mid","Low"; setarray .@Position[1], 1, 9, 10; set .@Menu$,""; for( set .@i, 1; .@i < 5; set .@i, .@i + 1 ) { if( getequipisequiped(.@Position[.@i]) ) set .@Menu$, .@Menu$ + .@Position$[.@i] + "-" + "[" + getequipname(.@Position[.@i]) + "]"; set .@Menu$, .@Menu$ + ":"; } set .@Part, .@Position[ select(.@Menu$) ]; set .@id, getequipid(.@Part); set .@ref, getequiprefinerycnt(.@Part); if( !getequipisequiped(.@Part) ) { mes "[Clown]"; mes "Your not wearing anything there..."; close; } mes "[Clown]"; mes "You want to Costume your " + getitemname(getequipid(.@Part)) + "?"; next; if( select("Yes, proceed:No, I am sorry.") == 2 ) { mes "[Clown]"; mes "Need some time to think about it, huh?"; mes "Alright, I can understand."; close; } for(set .@i,0; .@i<4; set .@i,.@i+1) set .@slot[.@i], getequipcardid(.@Part,.@i); if (.@slot[0]>4000 && .@slot[0]<5000) { // If it has card don't convert mes "[Clown]"; mes "A card? Here?!"; mes "As I said before, I don't convert headgear with cards."; emotion e_hmm; close; } getinventorylist; for(set .@i,0; .@i<@inventorylist_count; set .@i,.@i+1) if (@inventorylist_expire[.@i] != 0 && @inventorylist_equip[.@i] != 0) { // If rental don't convert mes "[Clown]"; mes "Sorry, I don't convert a rental headgear!"; emotion e_hmm; close; } if (.@ref > 0) { // If refine don't convert mes "[Clown]"; mes "Sorry please keep in mind."; mes "I don't convert headgear with refine."; emotion e_hmm; close; } if (!countitem(.@id)) { mes "[Clown]"; mes "Where is "+getitemname(@id)+"...?"; npctalk "You're a snoozy cheater!"; logmes "CHEATER: Tried to sign an item not having it: "+getitemname(@id); emotion e_wah; close; } costume .@Part; // Convert the Headgear mes "[Clown]"; mes "Done, enjoy your costume headgear."; close; case 2: next; mes "Please, select what to restore."; mes "Remember, I will only restore it back without refine and cards."; next; setarray .@Position$[1],"Top","Mid","Low"; setarray .@Position[1], 13, 12, 11; set .@Menu$,""; for( set .@i, 1; .@i < 5; set .@i, .@i + 1 ) { if( getequipisequiped(.@Position[.@i]) ) set .@Menu$, .@Menu$ + .@Position$[.@i] + "-" + "[" + getequipname(.@Position[.@i]) + "]"; set .@Menu$, .@Menu$ + ":"; } set .@Part, .@Position[ select(.@Menu$) ]; if( !getequipisequiped(.@Part) ) { mes "[Clown]"; mes "Your not wearing anything there..."; close; } mes "[Clown]"; mes "You want to restore your " + getitemname(getequipid(.@Part)) + "?"; next; if( select("Yes, proceed:No, I am sorry.") == 2 ) { mes "[Clown]"; mes "Need some time to think about it, huh?"; mes "Alright, I can understand."; close; } a = getequipid(.@Part); delitem a,1; getitem a,1; mes "[Clown]"; mes "Done, enjoy your restored headgear."; close; case 3: mes "[Clown]"; mes "Very well. Return at once if you seek my services."; close; }}// --------------------------------------------------------------------------// Use duplicates to put your npc on different cities// --------------------------------------------------------------------------mellina,120,75,4 duplicate(Costume Clown) Costume Clown#1 4_M_PIERROT
Specifications:
Party Based Instance (Control Max amount of Party members via .max_players
2 of the same Class cannot be in the party.
Easily edit monster waves via the setarrays.
Everyone obtains the cooldown, so if a party of people play, and they disband and a player joins a different party, it will say that certain player cannot play so they must leave your party or wait.
Everyone gets randomized Points at the end of each round (set at CASH POINTS, easily change at the bottom of the script. As the rounds increase, so do the amount of points you get.)
Different Modes: Easy (30 Minutes), Normal (45 Minutes), Hardcore (60 Minutes), Nightmare (90 Minutes)
Each Difficulty has 10 levels
MVP Ladder - Instanced Edition is a rewrite of the MVP Ladder event that is included in rAthena project custom NPC folder built rewritten for Hercules.
It retains 90% of original functionality except multiple parties can participate in the ladder without having to wait for the other party to finish anymore.
Features:
Killing every MvP from Weakest to Strongest
Party Ranking to see what Party beat the MvP Ladder the Fastest
Able to reset the Party Ranking Ladder.
Adding "|" delimiter to a range of monster IDs will cause that spawn to be randomized.
Special thanks to the original author Euphy and Secretdataz for having most of the script already done.
Hey! This is Event Manager, that helps you create new events.
I add new script command for test:D
Works like debugmes.
statusmes "message";
You can look in Return.c file, here you can find functions that helps you work with new Events.
I convert 2 standart events (RFYL & Bomb Poring).
For start event, use - @startevent <event name> For check event settings use - @checkevent <event name> For join - @joinevent Leave - @leaveevent For get prize - @event
For add new event: First goto Event_DB.c and add your event settings
Then add your event script to /Events/ folder
Also I can help you convert your scripts. Have questions? feel free to ask
Just saw this source when browsing the web. Although I believe there is already a script that utilizes this, I tried to convert it into a plugin (for self study purposes)
What does this plugin do?
Known bug: At login, the announcement is twice.. Still finding a way to correct it though..