55 Commits

Author SHA1 Message Date
ai4rei
a5326bd2b6 * Fixed a crash uncovered with r14501, caused by outdated local variables when a script is about to suspend or terminate (bugreport:4577).
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14511 54d463be-8e91-2dee-dedb-b68131a5f0ec
2010-11-28 02:02:30 +00:00
Inkfish
69bd8dced5 * Autobonus code cleanups.
- removed the 'script_parsed' flag to fix the issues with combo items.
- introduced a global cache for autobonus scripts so that we don't have to parse scripts everytime invoking status_calc_bl.
- fixed such script commands as 'getrefine()' not working inside autobonus scripts.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14180 54d463be-8e91-2dee-dedb-b68131a5f0ec
2009-12-02 10:30:10 +00:00
ultramage
a38fddad27 Hardcoded the even label config settings from r14097.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14099 54d463be-8e91-2dee-dedb-b68131a5f0ec
2009-10-25 11:59:09 +00:00
Inkfish
42987f61ad * Implemented the official version of 'OnTouch' named as 'OnTouch_'.(it can be defined in script_athena.conf)
* Adapted 'map_foreachinarea' to 'map_forsomeinarea' so that it allows you to specify the number of bl you wanna operate on.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14097 54d463be-8e91-2dee-dedb-b68131a5f0ec
2009-10-25 09:38:33 +00:00
zephyrus
6b710571ad - Optimization to instance system.
* Removed the crc feature to generate instance npc names. The instance npc name will be "dup_" + instanceid + "_" + srcnpcid.
* Removed the big array under map structure and coded in a different way. It was only used to generate map names, but i just used the instance_id + "origin map name".
* Moved all instance features to separated files.
* Moved the npc duplication for instances into npc.c as Ultramage says (removed npcname_db from npc.h).
* Added recomendations for scripts commands by Saithis.
- Testing required, i will prepare Endless Tower script soon. I hope this do almost anything in bugreport 3276.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14003 54d463be-8e91-2dee-dedb-b68131a5f0ec
2009-08-12 21:44:02 +00:00
zephyrus
33e1fbbd66 - Instancing System (Thanks to Sirius White who did most of the code, with some of my work to implement client side information, some optimizations and bugfixes). Also thanks to contributions from UEAUP team and Orcao.
- Fixed a bug on areamobuseskill and changed it to make it as Aegis.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13901 54d463be-8e91-2dee-dedb-b68131a5f0ec
2009-06-20 17:56:01 +00:00
FlavioJS
89d683d668 * Changes to the script engine:
- new stack datatype script_retinfo for C_RETINFO to hold all the return state info that was being stored in the stack. (the script engine in 64bit-ready now)
- pop_stack is responsible for adjusting all the stack pointers.
- push_* returns the created script_data.
- 'return' only converts to value scope variables of the current scope.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13427 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-12-31 15:54:33 +00:00
FlavioJS
cb8ef12df8 * Changes to the script engine:
- script ends when run_func can't find the buildin command. (script engine error)
- run_script_main doesn't change RERUNLINE to RUN automatically, the buildin command that set it is responsible for that now. The buildin command can use this to detect a rerun.
- created functions to alloc/free a script_state.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13426 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-12-30 03:27:46 +00:00
ultramage
c2ba03b6e2 Deleted zombie extern variable declaration which was causing a "static declaration follows non-static declaration" gcc compilation error.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13103 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-08-21 01:27:25 +00:00
ultramage
420cee95d9 Some cleaning in script.c
- documentation of functions translation of japanese comments
- usage of const char* instead of char* where appropriate
- removal of unused isstr() function

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13083 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-08-15 17:08:52 +00:00
ultramage
dcc2cdb5da Split off mapreg code from script.c
* new mapserver files, mapreg.h, mapreg_txt.c, mapreg_sql.c
 * removed MAPREGSQL from project files / makefiles
 * mapreg storage engine is now fully dependent on the server type
 * added config settings mapreg_txt and mapreg_db to inter config
 * added get_str() function to complement add_str()
 * fixed txt mapreg code allowing too long variable names

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13081 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-08-15 11:14:45 +00:00
ultramage
dac1c2d2df Removed unused guardian hp columns from the guild castles table in main.sql (should have been done in r11915).
Corrected incorrect use of the datetime column in the `login` table (bugreport:1962). Refreshed txt account savefile.
Cleaned up some random minor source code glitches.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13030 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-08-01 07:05:16 +00:00
FlavioJS
d903fda1c7 * Script parse errors displayed with one ShowError instead of several ShowMessage's.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12637 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-04-23 04:35:32 +00:00
FlavioJS
c880052f0f * Changed the data field of timers from int to intptr.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12633 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-04-21 21:34:31 +00:00
ultramage
94943b2b6a Adjusted eAthena code to compile cleanly in C++ mode.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12436 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-03-26 10:37:45 +00:00
ultramage
49f1f4434d * Reorganized the contents of the mapserver's header files.
- map.h is no longer a generic dumping spot of all the shared structs, and instead, each such structure now resides in its logical component
- map.h now only holds mostly map-related things (needs more cleaning)
- there's still a lot of room for improvement (reorganization within individual header files, etc...)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12429 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-03-24 21:20:48 +00:00
FlavioJS
549684872d * Expanded the script command 'input': (bugreport:811)
- two new optional arguments 'min' and 'max'
- return value indicating if it's in the correct range
- config variables for the default value of the arguments: 'input_min_value' and 'input_max_value' in script_athena.conf

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12192 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-02-11 10:40:52 +00:00
skotlex
fc7b4eaef0 - The default event script behaviour is to trigger on labels rather than NPCs now.
- Removed several script config options which break NPC compatibility when you mess with them (event_script_type, event_requires_trigger, die_event_name, kill_pc_event_name, kill_mob_event_name, logout_event_name, login_event_name, loadmap_event_name, baselvup_event_name, joblvup_event_name)
- LoadMap events no longer set the variable "@maploaded$" to the name of the new map.
- Optimized/simplified the code now that the previous config options were removed.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11859 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-12-06 12:59:12 +00:00
ultramage
3b742b114e Fixed some more gcc incompatibilities...
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11706 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-11-10 13:59:23 +00:00
ultramage
5eda6c0e57 Replaced several 'int' variables with enums that they represent.
Expanded weapon_type enum with dual-wield constants (bugreport:384).

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11704 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-11-09 22:42:56 +00:00
FlavioJS
9d2688ad87 * Changed EXIT_SUCCESS back to 0 in console.c to avoid an unnecessary include.
* Fixed gm_account_db not being deallocated in login-converter.c.
* Refactoring names and documentation in db.h/db.c:
  - changed 'struct dbt' to 'struct DBMap' and 'DB' to 'DBMap*'
  - changed 'struct db' to 'struct DBMap_impl' and 'DB_impl' to 'DBMap_impl*'
  - changed COUNT to DB_COUNTSTAT and made it's existence not depend on DB_ENABLE_STATS
  - removed some @see links and corrected small typos in the documentation

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11698 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-11-08 14:08:32 +00:00
FlavioJS
05134f3dcc * Reworked the parsing at npc.c.
- Fixes npc.c discarding the '}' at the end of file, when there is no newline. (uncovered as a side-effect of r11487)
* Empty script functions always have code now (won't report as missing when you try to call them).
* Changed userfunc_db to not limit the name to 50 characters.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11502 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-10-17 20:15:39 +00:00
FlavioJS
faa553103c * Fixed itemdb_read_sqldb blowing up the server with segmentation faults.
* Added an option for parse_script to ignore the checks for the set of brackets around the script.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11398 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-10-10 21:51:56 +00:00
ultramage
1069e3524c * the mapserver won't exit when no mapcache is found, with use_grf: yes
* Fixed some \r uses, now looks better; /thx to Ai4rei (topic:165952)
 * Removed that ridiculous spinner that displays during map/npc loading, and added a more informative progress indicator (idea from jA/eapp)

 * Checked/fixed/removed some old script and npc commands
  * cmdothernpc - a specialized 'donpcevent' with the event specified as two arguments
  * enablearena/disablearena - completely equivalent to enablewaitingroomevent & co.
  * inittimer/stoptimer - removed since its logic was incompatible with the code it depended on
 * Removed loads of code that supported these functions. Result: -100b per npc => -1,5MB of wasted memory
 * Fixed related npcs that erroneously used 'stoptimer'

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11374 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-10-06 15:35:31 +00:00
FlavioJS
a75ec9a547 * Changed the string hash of the script engine to SDBM.
* Reporting information about script data when an error occurs.
* More work on ticket #41 (array functions).

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10813 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-06-26 21:03:31 +00:00
FlavioJS
c292b087b5 * Internal changes to the script engine:
- modulus division detects division by 0.
  dividing by zero stops the script and gives an error
- underflow/overflow messages differentiated (warnings)
- when a script function doesn't return a value, a C_NOP value is pushed 
  instead (avoids stack corruption)
- op_add merged with op_2+op_2num/op2_str
- better type checking in the operators, int/string is never assumed.
  The script ends when an invalid type is found.
- other minor code cleanups

Changes made in consequence of:
Ref: http://www.eathena.ws/board/index.php?s=&showtopic=149237&view=findpost&p=823195

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10379 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-04-28 09:57:29 +00:00
skotlex
9387ff566b - Made conv_str return const char* since the script engine screws up if you mess with the position of the terminator on the received string.
- Because of this, many functions that handled the return of conv_str need to be changed, I haven't finished doing the conversion process because I must go already, if someone else can continue, please do so (I will resume work on this in ~5 hours


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9978 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-03-09 00:10:06 +00:00
ultramage
49096125fb Applied a consistent look to all header files (copyright, ifdefs)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9891 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-02-21 15:09:20 +00:00
Lance
6827bc726b * Hotfix: Freeing of freed pointer when replacing script functions. [Lance]
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9634 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-01-09 02:45:01 +00:00
FlavioJS
da5d22b67f - Fixed the sleep timers not being removed when the an npc was being unloaded and when reloading scripts.
Ref: http://www.eathena.ws/board/index.php?showtopic=131464

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9629 54d463be-8e91-2dee-dedb-b68131a5f0ec
2007-01-07 17:59:25 +00:00
FlavioJS
266f66cfff - Applied the rest of Rayce's suggestions and fixes (http://www.eathena.ws/board/index.php?showtopic=129185)
- warn_cmd_no_comma, warn_func_no_comma, warn_cmd_mismatch_paramnum are now warn_func_mismatch_paramnum and it only prevents showing the error, as it was probably intended in the first place. (correct me if i'm wrong)
- Merged the parsing of function calls in the script engine, removing the parse_cmd hackery, and made "heal (.@val+rand(0xff))&0xff,0;" valid again.
- Fixed a bug in eye_of_hellion.txt and a bug in hunter.txt

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9569 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-12-25 06:15:46 +00:00
FlavioJS
e75a8eca56 - Change strncpy to memcpy when parsing switches in the script engine since it's guaranteed to be a word of that size (skip_word).
- Made scriptlabel_db duplicate the key. When str_buf is reallocated, the keys in scriptlabel_db could become invalid, causing a crash in npc_convertlabel_db.
( removed the readded >=0x81 equivalent )
- Now npc_convertlabel_db clears scriptlabel_db after using it.
- parse_script has an extra parameter options. At the moment it only indicates if scriptlabel_db should be used or not.
- Fixed "UINT_MAX undeclared" on systems that don't declare it in limits.h

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9557 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-12-22 05:27:03 +00:00
skotlex
6bbec4a65d - Added an answer to a FlavioJS's comment, and added a question myself (npc.c/script.c respectively)
- Fixed add_str in script.h not being updated to const char as well. But why do we really need such a script-engine low-level function exposed to the rest of files? :/
- Moved the strip unequip code to before deleting the timer, this fixes trying to "re-strip" someone causing the skill to fail and on top of that terminate their current strip effect.
- Added an ugly work around to the issue of skills with additional effect causing opt1 status when they have just terminated them (in short, you shouldn't be able to hit someone with, say, sleep, and then have the same skill cause them stun, since both are opt1 values).
- Reading of TK Mission variables will now happen if you are a TK-class character regardless of whether you know TK_MISSION or not. Should fix being able to reset skills to reset your Mission data.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9537 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-12-20 15:54:11 +00:00
FlavioJS
40b389bc42 - Changed the script source from unsigned char* to const char*.
- Updated plugins Makefile.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9532 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-12-20 07:17:18 +00:00
FlavioJS
637ae9a4dc - Massive EOL normalization & 'svn:eol-style native' flag setting for all txt/conf/h/c files.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9410 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-12-05 13:23:07 +00:00
skotlex
7c8ec5366e - Reverted declaration of run_script to normal since it appears there's no longer any memory leaks related to it.
- Returned the MAX_PC_BONUS value to 10.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8928 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-10-03 16:19:14 +00:00
skotlex
4e9c745bdf - Corrected SC_INTRAVISION not starting.
- Small cleanups (line terminators, indenting)
- Fixed crash when attempting to read a Label as a string on a script (thanks to End of Exam)
- Fixed possible crash when changing a chat-room's owner (thanks to End of Exam)


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8639 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-09-05 19:49:38 +00:00
skotlex
abcf47cd67 - Fixed script code data not being free'd if a player quits in the middle of a script.
- Modified run_script so that when there are leaks, it will report the place where run_script was called from as source rather than the inner code of run_script (for debugging purposes)


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8057 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-08-02 15:40:25 +00:00
skotlex
c9e9b3b75b - Synced the script.c file with as much data as possible from jA's:
- A lot of functions were moved around, a bunch of indentation and space-usage changes were done to make it easier to diff against their files.
- Miscellanous addition and corrections were applied.
- Largest one is likely a restructuring of run_script_main, which hopes to solve the memory leaks.
- script engine now uses the setjmp functions to restore memory state when there's an error parsing scripts, which means that script errors won't cause the map-server to inmediately bail out anymore.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7926 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-07-27 21:00:19 +00:00
Lance
aa70823081 * [Fixed]
- Scripting system screwing up script position after mixing timers with menus. 
- NPC attached AI mobs display as alive when dead. 
- View data not updating after buildin_unitdeadsit. 
[Improved] 
- NPCE_LOADMAP to execute after all (area) objects are sent to the player. 
- Simplified scripting system. sd will now use pointer to the script state itself. 

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7388 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-06-29 08:47:14 +00:00
Lance
219f26b6a0 * [Optimized]:
- Setting of variables with defined scope in some frequently executed script events.
* [Added]: 
- Missing script_require_trigger flags for some power hungry events.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7325 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-06-24 02:41:32 +00:00
Lance
8320520472 * Mob control engine tested 99% working so far.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6770 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-26 09:46:45 +00:00
Lance
fa084e111c * Added 'setd' support for local NPC scope (') variables.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6704 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-23 08:35:22 +00:00
Lance
a7e5993400 * WARNING: New scripting system contains memory leak
TODO: Free all scripts using script_free_code() instead of old methods. 

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6690 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-05-22 12:15:49 +00:00
Lance
e051037bce * Dynamic shops support with script callback. (needs testing)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5841 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-04-01 07:29:54 +00:00
Lance
e804a51220 * Fixed misleading and inaccurately documented events and added a missing flag.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5649 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-03-17 16:47:21 +00:00
Valaris
2178a86317 AS OF SVN REV. 5901, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.  EVERYTHING ELSE
GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5094 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-01-29 16:10:48 +00:00
Valaris
fd99753f8e Clearing trunk.
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5091 54d463be-8e91-2dee-dedb-b68131a5f0ec
2006-01-29 16:00:45 +00:00
amber
0b091d02ee PCRE updates
git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@1157 54d463be-8e91-2dee-dedb-b68131a5f0ec
2005-02-22 05:01:20 +00:00
celest
899b3ebeeb * Fixed a typo in quests/all_quest.txt
* Set 'killerrid' and do PCKillEvent before calling PCDieEvent
* Added some new script event related options to script config
* Added 10 of the new card effects on the 2/15's patch
* Minor rewrites on self and enemy weapon/armor breaking
* Added missing code for 'bBreakWeaponRate' and 'bBreakWeaponRate' effects
* Added missing code for 'bAddStealRate' effect
* Removed redundant 'infinite_autospell' in map_session_data

git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@1116 54d463be-8e91-2dee-dedb-b68131a5f0ec
2005-02-16 08:25:45 +00:00