jaBote
-
Content Count
2037 -
Joined
-
Last visited
-
Days Won
43
Reputation Activity
-
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 .
-
jaBote got a reaction from BFPkiller in Scuffle Event 2.1
Change the OnClockXXXX: to OnMinute00: and OnMinute30:
-
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.
-
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.
-
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
-
-
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*
-
jaBote got a reaction from Helmut Iarley in How do I enable this client command?
Here you go: broadcast atcommand.
-
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
-
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).
-
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.
-
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?
-
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.
-
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
-
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;} -
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
-
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...
-
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...
-
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 =/
-
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
-
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 .
-
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]
-
-
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
-
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)