diff options
-rw-r--r-- | Changelog-Trunk.txt | 4 | ||||
-rw-r--r-- | doc/script_commands.txt | 19 | ||||
-rw-r--r-- | src/map/script.c | 42 |
3 files changed, 39 insertions, 26 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 2bb321461..d18763598 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -3,6 +3,10 @@ Date Added AS OF SVN REV. 5091, 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. +2008/04/25 + * Modified delitem/delitem2 to have the same behaviour as getitem/getitem2 (optional + account_id parameter) bugreport:1035 + * Modified doc in consequence [Toms] 2008/04/23 * Fixed script strings not being handled properly (only skipped the \). * Added skip_escaped_c to strlib.c/h. diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 6f428b36e..5f4aa13ab 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -110,6 +110,9 @@ //= Added documentation for the 'checkcell' command [ultramage] //= 3.19.20080407 //= Extended the behaviour of 'guardian'. [FlavioJS] +//= 3.20.20080425 +//= Corrected 'getitem', 'getitem2' & 'delitem2' (charid instead of accountid) [Toms] +//= Modified 'delitem' (added optional accountid parameter) [Toms] //========================================================= This document is a reference manual for all the scripting commands and functions @@ -3656,8 +3659,8 @@ you can look at, this may help you create a Stylist of your own: \\ --------------------------------------- -*getitem <item id>,<amount>{,<character ID>}; -*getitem "<item name>",<amount>{,<character ID>}; +*getitem <item id>,<amount>{,<account ID>}; +*getitem "<item name>",<amount>{,<account ID>}; This command will give a specific amount of specified items to the target character. If the character is not online, nothing will happen. @@ -3699,8 +3702,8 @@ quite a few item scripts. For more examples check just about any official script --------------------------------------- -*getitem2 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<character ID>}; -*getitem2 "<Item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<character ID>}; +*getitem2 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account ID>}; +*getitem2 "<Item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account ID>}; This command will give an amount of specified items to the invoking character. If an optional character ID is specified, and that character is currently @@ -3844,8 +3847,8 @@ If the map name is given as "this", the map the invoking character is on will be --------------------------------------- -*delitem <item id>,<amount>; -*delitem "<item name>",<amount>; +*delitem <item id>,<amount>{,<account ID>}; +*delitem "<item name>",<amount>{,<account ID>}; This command will take a specified amount of items from the invoking character. As all the item commands, this one uses the ID of the item found inside @@ -3866,8 +3869,8 @@ database. If the name is not found, nothing will be deleted. --------------------------------------- -*delitem2 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<character ID>}; -*delitem2 "<Item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<character ID>}; +*delitem2 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account ID>}; +*delitem2 "<Item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account ID>}; This command will take a specified amount of items from the invoking character. Check 'getitem2' to understand its expanded parameters. diff --git a/src/map/script.c b/src/map/script.c index 6c2f30c55..316bf113a 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -5366,18 +5366,16 @@ BUILDIN_FUNC(getitem) it.identify=1; else it.identify=itemdb_isidentified(nameid); + if( script_hasdata(st,4) ) - {// <character ID> - sd=map_id2sd(script_getnum(st,4)); - } else - {// attached player - sd=script_rid2sd(st); - } + sd=map_id2sd(script_getnum(st,4)); // <Account ID> + else + sd=script_rid2sd(st); // Attached player + if( sd == NULL ) // no target return 0; - - //Check if it's stackable. + //Check if it's stackable. if (!itemdb_isstackable(nameid)) get_count = 1; else @@ -5416,8 +5414,12 @@ BUILDIN_FUNC(getitem2) TBL_PC *sd; struct script_data *data; - sd = script_rid2sd(st); - if( sd == NULL ) + if( script_hasdata(st,11) ) + sd=map_id2sd(script_getnum(st,11)); // <Account ID> + else + sd=script_rid2sd(st); // Attached player + + if( sd == NULL ) // no target return 0; data=script_getdata(st,2); @@ -5440,10 +5442,6 @@ BUILDIN_FUNC(getitem2) c2=script_getnum(st,8); c3=script_getnum(st,9); c4=script_getnum(st,10); - if( script_hasdata(st,11) ) //アイテムを指定したIDに渡す - sd=map_id2sd(script_getnum(st,11)); - if(sd == NULL) //アイテムを渡す相手がいなかったらお帰り - return 0; if(nameid<0) { // ランダム nameid=itemdb_searchrandomid(-nameid); @@ -5657,8 +5655,12 @@ BUILDIN_FUNC(delitem) TBL_PC *sd; struct script_data *data; - sd = script_rid2sd(st); - if( sd == NULL ) + if( script_hasdata(st,4) ) + sd=map_id2sd(script_getnum(st,4)); // <Account ID> + else + sd=script_rid2sd(st); // Attached player + + if( sd == NULL ) // no target return 0; data=script_getdata(st,2); @@ -5763,8 +5765,12 @@ BUILDIN_FUNC(delitem2) TBL_PC *sd; struct script_data *data; - sd = script_rid2sd(st); - if( sd == NULL ) + if( script_hasdata(st,11) ) + sd=map_id2sd(script_getnum(st,11)); // <Account ID> + else + sd=script_rid2sd(st); // Attached player + + if( sd == NULL ) // no target return 0; data=script_getdata(st,2); |