Jump to content

jaBote

Community Contributors
  • Content Count

    2037
  • Joined

  • Last visited

  • Days Won

    43

Reputation Activity

  1. Upvote
    jaBote got a reaction from Max in Script error with pict   
    Your player name's has a ' inbetween their nickname, so it breaks the text part.
     
    Examples: (see the coloring on the text)
     
    Broken string:
    'Wolf O'Donnell';  
    Correct string:
    'Wolf O'Donnell';  
    I've escaped the ' after the O so that it's taken as a literal ' on the string and thus will not be taken as a string end with a weird extension the MySQL engine won't know how to parse making it broken. More (extensive) info on this: http://php.net/mysqli_real_escape_string
     
    But you can't manually escape the char names since you don't know what they can contain, so you can use the escape_sql script command for that, which will handle it for you without any added problems other than editing your current SQL statement.
     
    P.S.: Nope, you can't unescape them without doing some minor string magic yourself .
  2. Upvote
    jaBote got a reaction from BFPkiller in Scuffle Event 2.1   
    Change the OnClockXXXX: to OnMinute00: and OnMinute30:
  3. Upvote
    jaBote reacted to Dies Irae in Custom Cards   
    Adding Custom Items
    Item Bonus Scripts (you can also find this into your "...doc" folder, check for item_bonus.txt file)
    Adding Card's Illustrations : this or this

    Search button is your best friend forever.
  4. Upvote
    jaBote got a reaction from Jamaeeeeecah in Problem with simple script ;-;   
    Do you have any warning or error on boot up or when reloading your scripts? According to online script checkers for Hercules, it works OK.
  5. Upvote
    jaBote reacted to Angelmelody in [Script CMD] s/getunitdir   
    get the direction  from an unit (pc、 npc or mob)
    or
    set the direction of an unit(pc、 npc or mob)
     
    CMD to use:
    getunitdir (<GID>{,<type>});
    setunitdir(<GID>,<body direction>{,<head drection>});
    the type and  head direction param  are only available for PC
    the value of type 1  means head direction ,otherwise if type =0  or with no  type param means body direction
    example:
    prontera,155,177,5 script testgetdirection 4W_SAILOR,{ if(!.mgid).mgid = bg_monster(1,strnpcinfo(4),157,179, "--ja--",1674,""); mes "your body direction is "+getunitdir(getcharid(3)); mes "your head is "+getunitdir(getcharid(3),1); mes "npc direction is "+getunitdir(getnpcid(0)); mes "mob direction is "+getunitdir(.mgid); next; mes "please input your body direction"; input .@pcbd; next; mes "please input your head direction"; input .@pchd; next; mes "please input npc body direction"; input .@npcbd; next; mes "please input mob body direction"; input .@mobbd; next; setunitdir(getcharid(3),.@pcbd,.@pchd); setunitdir(getnpcid(0),.@npcbd); setunitdir(.mgid,.@mobbd); next; mes "your body direction is "+getunitdir(getcharid(3)); mes "your head is "+getunitdir(getcharid(3),1); mes "npc direction is "+getunitdir(getnpcid(0)); mes "mob direction is "+getunitdir(.mgid); close;}  

    getunitdir.c
  6. Upvote
    jaBote reacted to JulioCF in Editar Carta   
    Pow puncker, não da a solução, ajude ele a aprender...
  7. Upvote
    jaBote got a reaction from Dies Irae in Failed to connect to server.   
    Sorry, it was map and char server conf files
     
    You should've edited out all usernames and passwords for security reasons, but if you're using them on your home server and you won't be using the same ones when opening a server to other people it's fine.
     
    In case you can't connect to your server for anything (most common situation is you can but you can't get past the login server) then the problem is fully clientside. Could you show us your <RO installation folder>dataclientinfo.xml file contents? You can't usually open that one unless you open it as text.
     
    Remember your clientinfo may be read from your data folder (if you diffed your exe that way) or from the GRF files. In case it's been read from GRF, it's on the GRF with highest priority on your DATA.INI that has that file (if you haven't renamed that file on the exe using a hex editor). In case you haven't that, then make one using this reference entry on the wiki.
     
    I'm not much better than this on clients BTW, so if I can't help you, hope someone else can. Anyways client-side is universal so you can ask the same question here and in rAthena, 3CeAM, brAthena, Cronus, itAthena (if it exists?) or wherever *tip*
  8. Upvote
    jaBote got a reaction from Helmut Iarley in How do I enable this client command?   
    Here you go: broadcast atcommand.
  9. Upvote
    jaBote reacted to AnnieRuru in Suggestion for restricted equipment (making a new conf for it)   
    http://upaste.me/f94d11052d9751e97
    this one should go inside SVN
    EDIT: suddenly I feel this one can be improve ....
     
    ok this one better
    http://upaste.me/d2ac11053eed06c03
  10. Upvote
    jaBote got a reaction from GM.PiXeL in MySQL Server Configuration   
    If that's your home computer, I'd reccommend installing that one as a Development machine for obvious reasons (since it won't use up a big piece of your available memory and processing time).
  11. Upvote
    jaBote reacted to latheesan in NPC Script Editor   
    Hi everyone,
     
    I am back from my long break. I have now completed the script parsing / checking functionality within NPC Script Editor.
     
    I got in touch with Ind from Hercules emu few months ago to discuss the posibility of using the script parsing functionality that is already inside map-server as a stand alone feature and one of the developer came up with this: https://github.com/HerculesWS/Hercules/pull/217
     
    This
    special edition of map-server_sql.exe (compiled from Hercules emu) is
    now integrated with NPC Script Editor. Here is how it looks like:
     
    When you are editing a script, press F6 to parse and synctax check the script you are working with. Any errors are reported like this:

     
    If you've fixed the error and pressed F6 again, it will highlight the next problem, etc...
     

     
    Now
    you can work on NPC Scripts and not have to load it into the live/test
    server to see if any syntax/coding error are in there. Hopefully this
    will speed up everyone's NPC Scripting.
     
    I am
    currently working on packaging this as a standalone installer and hope
    to have it released soon. This new build comes with new bug fixes and
    improvements also.
  12. Upvote
    jaBote got a reaction from AnnieRuru in Making Pull Requests on Hercules   
    Do you remember the many advantages Git has against Subversion (SVN)? One of those many advantages is the fact that in Git, you can send pull requests in order to directly collaborate with the community, without even the need of being an official Hercules dev, and if you contribute enough you can surely become a dev if you want. Well then, this is an – as detailed as possible – guide on how to make them.
     
    First of all: What is a pull request? It's a way of telling the original devs of a (commonly open-sourced) project what changes you've made yourself on their project supposedly for the better, and kindly ask them (request) to merge it (pull). In short, it's a way of collaborating to a project without the need of being related at all to it. Obviously, your pull request may be rejected if it doesn't meet some requirements, but this is another story.
     
    Git does also offer its own tools for pull requests (more info), but they're incompatible with the ones GitHub has. Moreover, GitHub pull request tools are easier to use than Git's.
     
    What steps are required in order to do a pull request? In abstract, you'll have to:
    Sign up for a GitHub account, if you don't have it already. Fork Hercules project in GitHub, if you haven't done this already. Clone your previous fork to a local repository in your computer, if you haven't done this already. Work on your fork. Commit your changes to your local repository. Push the changes you've previously committed to your remote repository on GitHub. Make the aforementioned pull request to the Hercules official repository. Steps 3 and 5 have already been shown on the Obtaining Hercules guide by @Ind (Obtaining Hercules through Git on *insert OS here* and Troubleshooting sections). These two steps will be slightly reviewed, but expect a fully detailed how-to in the others.
     
    By the way, GitHub also has its own (generic) guides on how to fork a repo and then make a pull request, which also explain the toughest parts of this guide (though they're not so tough) and cover steps 2-6 (supposing you have a Git console). You're encouraged to go and read them if you want.
     
    Well, here we go with the guide!
     
    Step 1: Sign up for a GitHub account



    Step 2: Fork Hercules project in GitHub



    Steps 3 to 6: Local computer work



    Step 7: (Finally) submitting the pull request


     
    Congratulations! You have successfully made your first pull request on Hercules! This is a reason to be proud of yourself, isnt it?
  13. Upvote
    jaBote got a reaction from Sephus in How to check if target is a boss?   
    A nifty way of doing that in scripting is checking if the mob has MvP experience to deliver when killed.
     
    I'm not that good on source but you could find a way to test if that assumption still works for SRC. It should, too.
  14. Upvote
    jaBote reacted to evilpuncker in Disable Abracadabra skill in certain area.   
    example, go to the bottom of map_zone_db.conf and add BEFORE the last ) the following:
     
     
    ,{ name: "Custom" disabled_skills: { SA_ABRACADABRA: "PLAYER" } mapflags: ( "noknockback", )}   
    now go to any npc script file and add this:
     
    yourmapname<tab>mapflag<tab>zone<tab>Custom
  15. Upvote
    jaBote got a reaction from dhaisuke in Help with my Guild NPC Buffer   
    First of all... Where do you assign the .@i var? O.o If it isn't assigned it defaults to 0 and you'll have a nifty stone curse for 10 minutes.
     
    I've also fixed a potential issue with close being used when there's no message windows, which happens to guild masters and now guild members too.
     
    You can have the guild member part fixed this way (I've also fixed indentation for making it more readable):
    prontera,155,181,5 script Guild Owner 718,{ set .Map$,"prtg_cas03"; if (getcharid(2) != getcastledata(.Map$,1) && getgmlevel() < 50) { mes "Only ^FF0000"+getguildname( getcastledata( .Map$,1 ) )+"^000000 members can use this services."; close; } else { sc_start .@i,600000,0; } close;}
  16. Upvote
    jaBote got a reaction from Like it~* in Oktoberfest ACT and SPR files   
    File Name: Oktoberfest ACT and SPR files
    File Submitter: jaBote
    File Submitted: 31 Dec 2013
    File Category: Sprites & Palettes
     
    These are the Oktoberfest ACT and SPR files available at fRO server GRF, just for these who don't have them, along with their correct location inside the GRF.
     
    I will provide no support for these since I didn't make them and the fact that I'm not quite good on client-side.
     
    You only have to download one of two files offered here:
     
    File 1 (data.zip) provides the content extracted from the GRF, while file 2 (oktoberfest.zip) contains an oktoberfest.grf file with the same contents, for easy management and merging with existing GRFs. It's not necessary to download both of them.
     
    Click here to download this file
  17. Upvote
    jaBote got a reaction from Cabrera in Is this possible?   
    Thanks for the setmapflag point, I just supposed Cabrera would have them set by himself somewhere else and didn't add them on the script.
     
    I usually prefer to make the scripts readable for the people, so that they could easily modify and/or use them for learning. At least in my hopes someone would ever get encouraged to jump upon the scripting because of my scripts...
  18. Upvote
    jaBote got a reaction from AnnieRuru in Is this possible?   
    Thanks for the setmapflag point, I just supposed Cabrera would have them set by himself somewhere else and didn't add them on the script.
     
    I usually prefer to make the scripts readable for the people, so that they could easily modify and/or use them for learning. At least in my hopes someone would ever get encouraged to jump upon the scripting because of my scripts...
  19. Upvote
    jaBote reacted to AnnieRuru in Is this possible?   
    a bit off-topic butyeah, 1 of the reason I move here because in hercules already has some powerful scripters around
     
    the only thing that jabote missed out is missing setmapflag
    - script warp_banned -1,{OnInit: setarray .not_2ndjob$[0], "morocc", "payon", "aldebaran"; // Maps NOT for second jobs. Add more with a comma, last member should have a semicolon setarray .not_3rdjob$[0], "amatsu", "gonryun", "geffen"; // Same as above, but for third jobs .not_2ndjob_size = getarraysize(.not_2ndjob$); .not_3rdjob_size = getarraysize(.not_3rdjob$); for ( .@i = 0; .@i < .not_2ndjob_size; .@i++ ) setmapflag .not_2ndjob$[.@i], mf_loadevent; // Thx to Keyworld <3 for ( .@i = 0; .@i < .not_3rdjob_size; .@i++ ) setmapflag .not_3rdjob$[.@i], mf_loadevent; end;OnPCLoadMapEvent: if ( eaclass() & ( EAJL_UPPER | EAJL_2 ) ) { // Player is 2nd trans job while ( strcharinfo(3) != .not_2ndjob$[.@i] && .@i < .not_2ndjob_size ) .@i++; } else if ( eaclass() & EAJL_THIRD ) { // Player is the 3rd job while ( strcharinfo(3) != .not_3rdjob$[.@i] && .@i < .not_3rdjob_size ) .@i++; } else end; if ( .@i != .not_2ndjob_size || .@i != .not_3rdjob_size ) { dispbottom "You're not supposed to be here..."; warp "SavePoint",0,0; } end;}... hmm .. why this {code} doesn't has cut the length ...edit ... oh ... have to refresh the page =/
  20. Upvote
    jaBote got a reaction from pan in [ Req ] Npc Reward Player online   
    You can modify the behavior of the script by using checkvending() or checkidle() if you want not to reward idle players. See how they work here: doc/script_commands.txt#L3797
     
  21. Upvote
    jaBote got a reaction from Cabrera in Is this possible?   
    If I were you, I'd just get rid of the item since you could try to cheat your way off the restrictions while using the class renders these cheats impossible. You could still give the item for the fun if you want, but do the checks based on the job.
     
    Keeping on the processor-intensive idea of using the loadevent mapflag on each map you want to restrict and add them to its respective list, for restricting 3rd jobs or 2nd trans jobs you should use bitmasks, which is minor magic but makes the restriction easier:
    - script warp_banned -1,{OnInit: setarray .not_2ndjob$[0], "prontera", "payon", "aldebaran"; // Maps NOT for second jobs. Add more with a comma, last member should have a semicolon setarray .not_3rdjob$[0], "amatsu", "gonryun", "geffen"; // Same as above, but for third jobs end;OnPCLoadMapEvent: if ( eaclass()&(EAJL_UPPER|EAJL_2) ) { // Player is 2nd trans job for (set .@i,0; .@i < getarraysize(.not_2ndjobs$); set .@i, .@i + 1){ if (strcharinfo(3) == .not_2ndjobs$[.@i]){ dispbottom "You're not supposed to be here..."; warp "SavePoint",0,0; } } } else if ( eaclass()&EAJL_THIRD ) { // Player is the 3rd job for (set .@i,0; .@i < getarraysize(.not_3rdjobs$); set .@i, .@i + 1){ if (strcharinfo(3) == .not_3rdjobs$[.@i]){ dispbottom "You're not supposed to be here..."; warp "SavePoint",0,0; } } } end;}  
    Again, I haven't tested it but should work as expected.
     
    If you want to make custom mapflags for checking if somebody is 2nd trans or 3rd job, then it's a source request and it's beyond my abilities ATM .
  22. Upvote
    jaBote reacted to themon in World of Fishing   
    [cbox]item_db: (
    /******************************************************************************
    ************* Entry structure ************************************************
    ******************************************************************************
    {
    // =================== Mandatory fields ===============================
    Id: ID (int)
    AegisName: "Aegis_Name" (string, optional if Inherit: true)
    Name: "Item Name" (string, optional if Inherit: true)
    // =================== Optional fields ================================
    Type: Item Type (int, defaults to 3 = etc item)
    Buy: Buy Price (int, defaults to Sell * 2)
    Sell: Sell Price (int, defaults to Buy / 2)
    Weight: Item Weight (int, defaults to 0)
    Atk: Attack (int, defaults to 0)
    Matk: Magical Attack (int, defaults to 0, ignored in pre-re)
    Def: Defense (int, defaults to 0)
    Range: Attack Range (int, defaults to 0)
    Slots: Slots (int, defaults to 0)
    Job: Job mask (int, defaults to all jobs = 0xFFFFFFFF)
    Upper: Upper mask (int, defaults to any = 0x3f)
    Gender: Gender (int, defaults to both = 2)
    Loc: Equip location (int, required value for equipment)
    WeaponLv: Weapon Level (int, defaults to 0)
    EquipLv: Equip required level (int, defaults to 0)
    EquipLv: [min, max] (alternative syntax with min / max level)
    Refine: Refineable (boolean, defaults to true)
    View: View ID (int, defaults to 0)
    BindOnEquip: true/false (boolean, defaults to false)
    Script: <"
    Script
    (it can be multi-line)
    ">
    OnEquipScript: <" OnEquip Script (can also be multi-line) ">
    OnUnequipScript: <" OnUnequip Script (can also be multi-line) ">
    // =================== Optional fields (item_db2 only) ================
    Inherit: true/false (boolean, if true, inherit the values
    that weren't specified, from item_db.conf,
    else override it and use default values)
    },
    ******************************************************************************/
     
    {
    Id: 15000
    AegisName: "FishingBox"
    Name: "FishingBox"
    Type: 0
    Buy: 50
    Weight: 70
    Script: <"
    getitem 15000,1;
    callfunc "Fishing_Box_Menu";
    ">
    },
    {
    Id: 15001
    AegisName: "Fish_"
    Name: "Hook Level-1"
    Type: 3
    Buy: 6
    Weight: 10
    },
    {
    Id: 15002
    AegisName: "Fish_"
    Name: "Line Level-1"
    Type: 3
    Buy: 6
    Weight: 10
    },
    {
    Id: 15003
    AegisName: "Rotten_Fish"
    Name: "Rotten Fish"
    Type: 3
    Buy: 6
    Weight: 10
    },
    {
    Id: 15004
    AegisName: "Fish_"
    Name: "Fishing Rod"
    Type: 4
    Buy: 10
    Weight: 10
    Atk: 10
    Range: 1
    Loc: 34
    Refine: false
    },
    {
    Id: 15005
    AegisName: "Manual_"
    Name: "Fishing Manual"
    Type: 0
    Buy: 50
    Weight: 70
    Script: <"
    getitem 15005,1;
    callfunc "Fishing_Manual";
    ">
    },
    )[/cbox]
  23. Upvote
    jaBote got a reaction from karazu in Onminute   
    Labels are also case-sensitive.
     
    Correct labels are OnMinuteXX:
     
    Try that and tell me if it works.
  24. Upvote
    jaBote got a reaction from Relzz in Soy yo o Rathena esta muy activo?   
    Y eso ha sido siempre cierto hasta este mes, que parece que es el primero en que rAthena adelanta a Hercules en cuanto a actividad.
     
    Tengo una ligera idea de qué puede estar ocurriendo debido a que me mantengo en contacto con los desarrolladores (son estudiantes en su mayoría y esta es una típica temporada de exámenes en muchos países), aunque veamos si se vuelve a recuperar el ritmo para febrero.
     
    P.D.: Los mega commits de Ind deberían valer por lo menos por cuatro o cinco
  25. Upvote
    jaBote reacted to ossi0110 in Preview of my New Client Package   
    Hello hercules
     
    Im working on a New Client atm , and here you can see a few Preview pics of it ,  the New client 2014-01-15 Ragexe with new world Map Support.
     
    Atm im working on the  Translation of the new Lub files,  when all is done i will upload a new package for it
     
    Special Thanks to
     
    Yommy 
    Neo 
     
    for helping me
     

     
     
    New World Map Main Page with Dungeon Names  (Translation Done)

     
     
    New Airship Route Display (Translation Done)

     
     
    Dungeon Browsing over Navigation Interface ( Translation 30% Done)

     
     
    Extended Map Interface for Episodes ( Translation done)

×
×
  • Create New...

Important Information

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