WalkingBad
-
Content Count
105 -
Joined
-
Last visited
Reputation Activity
-
WalkingBad reacted to Jedzkie in [R] help make this 1 per character
try this. http://pastebin.com/S6U8YTHP
-
WalkingBad reacted to jaBote in @hatredreset?
Go look in src/map/atcommand.c
Basically, add it after another atcommand code has finished (for example, after the ACMD(skdebug) code) and you've got to also add a definition.
For adding an atcommand definition, just search this on the file:
ACMD_DEF(skdebug), and add an the corresponding definition for the atcommand after it:
ACMD_DEF(hatereset),
That's it.
-
-
WalkingBad reacted to quesoph in Robot Gloves
This is a free release.
Please do not claim my work as yours.
robotgloves.7z
-
-
WalkingBad reacted to malufett in Enable command upon reaching a certain 'Base Level'?
- script certainlevel -1,{OnInit: bindatcmd "certainlevel",strnpcinfo(3)+"::OnBaseLevel"; end;OnBaseLevel: if(BaseLevel < 10){ dispbottom "You must be level 10 above to use this command"; end; }; dispbottom "You can use the command"; end;}
-
WalkingBad reacted to jaBote in double drop on random mobs
I'm done with it, but I haven't tested.
Would like to release it, that's the reason of doing the script in a more general and configurable way than what you just asked.
Upaste mirror: http://upaste.me/fb7712684462cbaf3
//===== Hercules Script =======================================================//= Multiple droprate on mob elements from a set (default set: elements).//===== By: ===================================================================//= jaBote//===== Current Version: ======================================================//= 0.9.0 alpha//===== Changelog =============================================================//= 0.9.0 Initial version [jaBote]//===== Description: ==========================================================//= Implements multiple drop rates on mob sets that change each week.//===== Warning: ==============================================================//= -> addmonsterdrop/delmonsterdrop script commands don't work well with mobs//= that drop the same item more than once.//= -> Doesn't work well with @reloadscript and/or server restarts (it will//= reassign a new set).//===== Additional information: ===============================================//= Configurations are located from line 22 (OnInit label).//=============================================================================- script element_drops -1,{OnInit: // Configurations START. // Add in mob IDs on the place of the numbers setarray .set_0[0], 1001, 1002, 1004, 1005, 1007; // Neutral setarray .set_1[0], 1001, 1002, 1004, 1005, 1007; // Water setarray .set_2[0], 1001, 1002, 1004, 1005, 1007; // Earth setarray .set_3[0], 1001, 1002, 1004, 1005, 1007; // Fire setarray .set_4[0], 1001, 1002, 1004, 1005, 1007; // Wind setarray .set_5[0], 1001, 1002, 1004, 1005, 1007; // Poison setarray .set_6[0], 1001, 1002, 1004, 1005, 1007; // Holy setarray .set_7[0], 1001, 1002, 1004, 1005, 1007; // Shadow setarray .set_8[0], 1001, 1002, 1004, 1005, 1007; // Ghost setarray .set_9[0], 1001, 1002, 1004, 1005, 1007; // Undead // Set to the name of the type of each set of $@set_X // BEWARE! Number of set of this array MUST be the same than the total // amount of sets (which is quite obvious). This is VERY IMPORTANT. setarray .names$[0], "Neutral", "Water", "Earth", "Fire", "Wind", "Poison", "Holy", "Shadow", "Ghost", "Undead"; // Set to the multiplication rate of drops (should be >= 1) // Examples: 100 = x1 (useless); 200 = x2; 50 = x0.5 // Based on final drop rates after battle conf calculations. .multiplicator = 200; // Force change of element each week? (1 = Yes; 0 = No) .force_change = 1; // Text message. You can change or translate it if you want, but be careful // not to touch the %s since you'll screw the dynamic formatting .announce_format$ = "The element %s has been doubled for this week."; // Atcommand name you want to use for keeping your users informed .atcommand$ = "ddw"; // Configurations END. Don't touch unless you know what you're doing. // Bind an atcommand bindatcmd .atcommand$,strnpcinfo(3)+"::OnCommand"; // Get the amount of sets and use an impossible set .amount = getarraysize(.names$); .set = -1; // Let it fall through the OnMon0000: label to assign first set on server // startup (or reloadscript)OnMon0000: .@old_set = .set; // Force the change of set if required if (.force_change) { do { .set = rand(.amount); } while (.set == .@old_set); } else { .set = rand(.amount); } // Restore old drops and assign new ones... if set hasn't changed if (.@old_set != .set) { freeloop(1); // We could be needing it // Restoring old sets, just if there was an old set if (.@old_set >= 0) { .@old_set_size = getarraysize(getd( ".set_" + .@old_set)); for (.@i = 0; .@i < .@old_set_size; .@i++) { // This is pretty ugly, but there's no other mean to do this. .@mobid = getd( ".set_" + .@old_set + "[" + .@i + "]" ); .@drop_count = getd(".mobdrop_count_[" + .@i + "]"); for (.@j = 0; .@j <= .@drop_count; .@j++) { // We only have to restore previously saved originals .@drop_item = getd(".mobdrop_item_" + .@i + "[" + .@j + "]"); .@drop_rate = getd(".mobdrop_rate_" + .@i + "[" + .@j + "]"); // This updates monster drop back to original state addmonsterdrop(.@mobid, .@drop_item, .@drop_rate); } } } // Applying multiplicator to new set for (.@i = 0; .@i < getarraysize( getd( ".set_" + .set ) ); .@i++) { // Get original mob drops .@mobid = getd( ".set_" + .set + "[" + .@i + "]" ); getmobdrops(.@mobid); setd ".mobdrop_count_[" + .@i + "]", $@MobDrop_count; // We'll need it for (.@j = 0; .@j <= $@MobDrop_count; .@j++) { // We only have to save originals setd ".mobdrop_item_" + .@i + "[" + .@j + "]", $@MobDrop_item[.@i]; setd ".mobdrop_rate_" + .@i + "[" + .@j + "]", $@MobDrop_rate[.@i]; // Calculate new rate. If it gives a value out of bounds, // addmonsterdrop will then take care of capping it inbounds // along with a warning we can safely ignore. .@new_rate = ($@MobDrop_rate[.@i] * .multiplicator) / 100; // This updates monster drop item if the mob already drops it addmonsterdrop(.@mobid, $@MobDrop_item[.@i], .@new_rate); } } freeloop(0); } // Announce new set for everyone and finish. .@announce_text$ = sprintf(.announce_format$, .names$[.set]); announce .@announce_text$, bc_all|bc_blue; end;OnCommand: // Announce set just for yourself and finish. .@announce_text$ = sprintf(.announce_format$, .names$[.set]); announce .@announce_text$, bc_self|bc_blue; end;} Please test it and point any bugs or errors you can find on it.
P.S.: I've made an effort to make it extra readable so that anybody could modify it if they wanted.
-
WalkingBad reacted to malufett in How to change message when mount a Griffon
@atcommand.c
if (!pc_isriding(sd)) { // if actually no peco bool is_RG = (sd->class_&MAPID_THIRDMASK) == MAPID_ROYAL_GUARD; if (!pc->checkskill(sd, KN_RIDING)) { if(is_RG) clif->message(fd, "You can not mount a Griffon with your current job."); else clif->message(fd, msg_txt(213)); // You can not mount a Peco Peco with your current job. return false; } pc->setoption(sd, sd->sc.option | OPTION_RIDING); if(is_RG) clif->message(fd, "You have mounted a Griffon."); else clif->message(fd, msg_txt(102)); // You have mounted a Peco Peco.} else {//Dismount pc->setoption(sd, sd->sc.option & ~OPTION_RIDING); if(is_RG) clif->message(fd, "You have released your Griffon."); else clif->message(fd, msg_txt(214)); // You have released your Peco Peco.}
-
WalkingBad reacted to jaBote in Disable Transcendent and Third Job Classes
It's quite simple.
Just compile in pre-renewal mode to ensure you've got pre-renewal mechanics, and disable any job npc you're not interested to have in your server on the npc/scripts_jobs.conf file.
Then, if you have a job changer NPC, ensure it won't change your players to any trascendent class. Trascendent and third jobs will still be available on the server, just via atcommands or if a script changes them to these classes (this happens on every current emulator), so you have to avoid the usage of these atcommands. No other script than a jobchanger or these specified in the file I linked should arbitrarily be able to change jobs, based on current Hercules version.
-
WalkingBad reacted to jaBote in Item script that generates random cashpoints
Just make your own item, and make sure its on use script is like this one:
.@addition = rand(20,50);#CASHPOINTS += .@addition;announce "You've earned " + .@addition + " Cash Points. Your current total is " + #CASHPOINTS + " Cash Points.", bc_self;
-
WalkingBad reacted to Dastgir in how to..
File Name: Data/texture/유저인터페이스/basic_interface/nc_cashshop.bmp
-
WalkingBad reacted to jaBote in how to..
I don't know what is its file name (hope somebody else will tell you, I can't), but try to replace it with a transparent (color 0xFF00FF) 1x1 px image and it should work.
-
WalkingBad reacted to jaBote in Do a @command when equipped.
Try this:
OnEquipScript: <" { atcommand "@aura999"; } ">OnUnequipScript: <" { atcommand "@aura 0"; } "> -
WalkingBad reacted to AnnieRuru in [ Request ] @dealer command
just use bindatcmd
simple
- script slslfkdsscxvxc -1,{OnInit: bindatcmd "dealer", strnpcinfo(0)+"::Onaaa"; end;Onaaa: callshop "blahblah", 1; end;}- shop blahblah -1,678:-1,608:-1btw, if callshop with type 2, it ask you to sell items instead of want to buy it =/ -
WalkingBad reacted to jaBote in when talk to......
Check the cutin script command on doc/script_commands.txt.
Sorry for short answer, I'm on cellphone.
-
WalkingBad reacted to Virtue in Enable command upon reaching a certain 'Base Level'?
use this
---------------------------------------*bindatcmd "command","<NPC object name>::<event label>"{,<group level>,<group level char>,<log>};This command will bind a NPC event label to an atcommand. Upon execution of the atcommand, the user will invoke the NPC event label. Each atcommand is only allowed one binding. If you rebind, it will override the original binding. If group level is provided, only users of that group level or above will be able to access the command, if not provided, everyone will be able to access the command."group level char" is the minimum group level required for the label to be used on others like a char command would, e.g. "#command "target" params", when not provided, "group level char" defaults to 99."log" whether to log the usages of this command with the atcommand log (1 = log, 0 = no log), default is to not log.The following variables are set upon execution: .@atcmd_command$ = The name of the @command used. .@atcmd_parameters$[] = Array containing the given parameters, starting from an index of 0. .@atcmd_numparameters = The number of parameters defined.Example:When a user types the command "@test", an angel effect will be shown.- script atcmd_example -1,{OnInit: bindatcmd "test",strnpcinfo(3)+"::OnAtcommand"; end;OnAtcommand: specialeffect2 338; end;}---------------------------------------
there would be limitless possibilities using that command w/o having to edit the source.
for instance in your case
- script certainlevel -1,{OnInit: bindatcmd "certainlevel",strnpcinfo(3)+"::OnBaseLevel"; end;OnBaseLevel: if(BaseLevel < 10){ end; }; dispbottom "You can use the command"; end;}
if player is lower than level 10, nothing will happen.
-
WalkingBad reacted to Patskie in @rickroll
Change : OnAtcommand: atcommand "@me " +.Messages$[rand(getarraysize(.Messages$))]; end; to :
OnAtcommand: if ( gettimetick(2) < #timer ) end; atcommand "@me " +.Messages$[rand(getarraysize(.Messages$))]; #timer = gettimetick(2) + 10; end; -
WalkingBad reacted to Patskie in @rickroll
Try :
- script rickroll -1,{ OnInit: setarray .Messages$[0], "Never gonna give you up", "Never gonna let you down", "Never gonna run around and desert you", "Never gonna make you cry", "Never gonna say goodbye", "Never gonna tell a lie and hurt you"; bindatcmd "rickroll",strnpcinfo(3)+"::OnAtcommand"; end; OnAtcommand: atcommand "@me " +.Messages$[rand(getarraysize(.Messages$))]; end;} -
WalkingBad reacted to Mumbles in Can I request this awesome script? I hope it's easy
Here's a version that supports multiple items:
prontera,150,150,0 script testwarp WARPNPC,1,1,{ message strcharinfo(0), "You touched me!"; /*----------------------------------------------------- Configuration -----------------------------------------------------*/ OnInit: // Item constant/ID, amount setarray .item_id[0], Jellopy, 1, Clover, 5, Fluff, 10; // Warp destination .warp_map$ = "prontera"; .warp_x = 155; .warp_y = 179; end; /*----------------------------------------------------- Script -----------------------------------------------------*/ OnTouch: // Check items for (.@i = 0; .@i < getarraysize(.item_id); .@i += 2) { if (countitem(.item_id[.@i]) < .item_id[.@i + 1]) { message strcharinfo(0), "You need the following items to access this warp:"; for (.@j = 0; .@j < getarraysize(.item_id); .@j += 2) { message strcharinfo(0), .item_id[.@j + 1] +" "+ getitemname(.item_id[.@j]); } message strcharinfo(0), "Access denied."; end; } } // Delete items for (.@i = 0; .@i < getarraysize(.item_id); .@i += 2) { delitem .item_id[.@i], .item_id[.@i + 1]; } // Warp player warp .warp_map$, .warp_x, .warp_y; end;} -
WalkingBad reacted to Mumbles in Can I request this awesome script? I hope it's easy
Why would it be? OnPCLoadMapEvent doesn't run until the player is already on the map. Your example would leave the player on the map itself after simply prompting them that they needed to have something to be there; then with that close, they'd walk happily off, confused as to why they were even told such a thing.
Mhalicot's approach was on the right track, but I believe the topic starter would something more seamless. Here's my method:
prontera,150,150,0 script testwarp WARPNPC,1,1,{ /*----------------------------------------------------- Configuration -----------------------------------------------------*/ OnInit: .item_id = Jellopy; .item_amount = 1; .warp_map$ = "prontera"; .warp_x = 155; .warp_y = 179; end; /*----------------------------------------------------- Script -----------------------------------------------------*/ OnTouch: if (countitem(.item_id) < .item_amount) { message strcharinfo(0), "You need "+ .item_amount +" "+ getitemname(.item_id) +" to access this warp."; } else { delitem .item_id, .item_amount; warp .warp_map$, .warp_x, .warp_y; } end;} -
WalkingBad reacted to AnnieRuru in Custom Headgear (H) which gives SL_Spirit
https://github.com/rathena/rathena/blob/master/db/const.txt#L1304
rathena's SC_SPIRIT in hercules is SC_SOULLINK
https://github.com/HerculesWS/Hercules/blob/master/db/const.txt#L876
you'll get stoned if used your script
and also, that's outdated technique
http://upaste.me/f02211100e4c8f24d
-
WalkingBad reacted to Dastgir in Ultimate Guild Ranker
File Name: Ultimate Guild Ranker
File Submitter: Dastgir
File Submitted: 17 Mar 2014
File Category: PvP, WoE, GvG, & Battleground
Script By Request : http://herc.ws/board/topic/4756-ultimate-guild-ranking
Percentage Changes:AgitCount= 20%Emp Break = 50%Active Participants = 20%KDR = 10%
Features:
Guild Ranking
Previous Month Guild Ranking
Rewards based on previous month
Edits to made after installing the Script:
Open npc/guild/agit_main.txt
Add Following Line
doevent "UltimateRanker#00::OnEmpBreak";
Before
// Adjust Economy Invest Level for Castle set .@Economy,getcastledata(strnpcinfo(2),2) - 5;
Have a Custom WoE? And its not triggering the Script??
Solution: add the following line on EmperiumBreaking Label.
doevent "UltimateRanker#00::OnEmpBreak";
Please report any bugs/suggestions.
Click here to download this file
-
WalkingBad reacted to Ragnar Lothbrok in PK Title
Please help me on this: Please! Please! Please!
1. The Title will only be activated if the player have 200 kills,400 kills,600 kills,800 kills, 1k kills..
Thanks!
Thanks!
Thanks!
-
WalkingBad reacted to evilpuncker in 2013 Clients that read .........
use those files:
http://herc.ws/board/topic/398-client-translation-project/
-
WalkingBad reacted to Ragnar Lothbrok in 2013 Clients that read .........
go to system folder change your iteminfo.lub to iteminfo.lua.. and use this http://herc.ws/board/topic/398-client-translation-project/
remember to change mmo.h
#ifndef PACKETVER
#define PACKETVER 20130807