Jump to content

WalkingBad

Members
  • Content Count

    105
  • Joined

  • Last visited


Reputation Activity

  1. Upvote
    WalkingBad reacted to Jedzkie in [R] help make this 1 per character   
    try this. http://pastebin.com/S6U8YTHP
  2. Upvote
    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.
  3. Upvote
    WalkingBad reacted to Litro in Request: Timeholder Sprite   
    timeholder.zip
  4. Upvote
    WalkingBad reacted to quesoph in Robot Gloves   
    This is a free release.
    Please do not claim my work as yours.

    robotgloves.7z
     
  5. Upvote
    WalkingBad reacted to quesoph in request movespeed mapflag   
    This is an old modification by AnnieRuru
  6. Upvote
    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;}   
     

  7. Upvote
    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.
  8. Upvote
    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.}   
     

  9. Upvote
    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.
  10. Upvote
    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;  
     
     
  11. Upvote
    WalkingBad reacted to Dastgir in how to..   
    File Name: Data/texture/유저인터페이스/basic_interface/nc_cashshop.bmp
  12. Upvote
    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.
  13. Upvote
    WalkingBad reacted to jaBote in Do a @command when equipped.   
    Try this:
    OnEquipScript: <" { atcommand "@aura999"; } ">OnUnequipScript: <" { atcommand "@aura 0"; } ">
  14. Upvote
    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 =/
  15. Upvote
    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.
  16. Upvote
    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.
  17. Upvote
    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;
  18. Upvote
    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;}
  19. Upvote
    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;}
  20. Upvote
    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;}
  21. Upvote
    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
  22. Upvote
    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
  23. Upvote
    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!
  24. Upvote
    WalkingBad reacted to evilpuncker in 2013 Clients that read .........   
    use those files:
    http://herc.ws/board/topic/398-client-translation-project/
  25. Upvote
    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
×
×
  • Create New...

Important Information

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