From 99de37788255b7205d2ae93249499e510df3aab5 Mon Sep 17 00:00:00 2001 From: euphyy Date: Sun, 26 May 2013 05:21:44 +0000 Subject: [PATCH] * Added documentation for mapflags - thanks to Lighta for the idea and assistance. * Reformatted permissions documentation. * Corrected some mistakes in script_commands.txt - a huge thanks to JaBote for finding them! (Hercules d0c5018) * Re-added mob_boss entries deleted in r17330. * Code by Lighta: -- Added hook for 0x44A and 0x447 (unfinished). -- Added timestr for DumpUnknow packet and moved to proper function for visibility. -- Fixed VCC compile error with r17333. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17334 54d463be-8e91-2dee-dedb-b68131a5f0ec --- conf/channels.conf | 2 +- conf/mapflag/gvg.txt | 3 +- conf/mapflag/nowarp.txt | 7 +- conf/mapflag/nowarpto.txt | 5 +- db/const.txt | 2 +- db/packet_db.txt | 7 +- db/pre-re/mob_boss.txt | 1 + db/re/mob_boss.txt | 3 + doc/mapflags.txt | 356 ++++++++++++++++++++++++++++++++++++++ doc/permissions.txt | 195 ++++++++++++++++++--- doc/script_commands.txt | 27 ++- src/map/clif.c | 81 +++++---- src/map/elemental.c | 22 +-- src/map/map.c | 2 +- src/map/pc.c | 8 +- src/map/searchstore.c | 2 +- 16 files changed, 626 insertions(+), 97 deletions(-) create mode 100644 doc/mapflags.txt diff --git a/conf/channels.conf b/conf/channels.conf index 541126bd3d..a6e33cbd2c 100644 --- a/conf/channels.conf +++ b/conf/channels.conf @@ -1,4 +1,4 @@ -/* Channel system configuration file */ +// Channel System Configuration File chsys: ( { diff --git a/conf/mapflag/gvg.txt b/conf/mapflag/gvg.txt index 31430d856f..389178d145 100644 --- a/conf/mapflag/gvg.txt +++ b/conf/mapflag/gvg.txt @@ -9,8 +9,9 @@ //===== Description: ========================================= //= Players can attack other guilds, and will have their guild //= icons shown. WoE damage reductions will also take place. -//= gvg: Turns on GvG mode +//= gvg: Turns on GvG mode. //= gvg_castle: Describes castle maps for WoE. +//= gvg_dungeon: Describes dungeon maps for WoE. //===== Additional Comments: ================================= //= 1.1 - Added Novice Guild Castles. //= 1.2 - Updated with new meanings of gvg and gvg_castle. diff --git a/conf/mapflag/nowarp.txt b/conf/mapflag/nowarp.txt index bc41d29a6c..6e8b05a2c2 100644 --- a/conf/mapflag/nowarp.txt +++ b/conf/mapflag/nowarp.txt @@ -7,7 +7,12 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= -//= Disables use of @go to a map. +//= Disables warping from a map. +//= Script commands 'warpparty' and 'warpguild' will not warp +//= players. +//= Atcommands @warp, @go, @load, @jump, @partyrecall, +//= @guildrecall, and @recallall will not warp players. +//= GD_EMERGENCYCALL and UNT_CALLFAMILY will not warp players. //===== Additional Comments: ================================= //= 1.3 - Added WoE SE maps. //============================================================ diff --git a/conf/mapflag/nowarpto.txt b/conf/mapflag/nowarpto.txt index 0f97347996..0c373b5ab9 100644 --- a/conf/mapflag/nowarpto.txt +++ b/conf/mapflag/nowarpto.txt @@ -7,7 +7,10 @@ //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= -//= Disables use of @warp to a map. +//= Disables warping to a map. +//= Atcommands @warp, @go, @load, @jump, @partyrecall, +//= @guildrecall, and @recallall are disabled. +//= Command /memo is disabled. //===== Additional Comments: ================================= //= 1.0 - Initial script. //============================================================ diff --git a/db/const.txt b/db/const.txt index 9c4beae665..f9225221ac 100644 --- a/db/const.txt +++ b/db/const.txt @@ -368,7 +368,7 @@ mf_monster_noteleport 49 mf_pvp_nocalcrank 50 mf_battleground 51 mf_reset 52 -mf_channoautojoin 53 +mf_nomapchannelautojoin 53 mf_nousecart 54 mf_noitemconsumption 55 mf_sumstartmiracle 56 diff --git a/db/packet_db.txt b/db/packet_db.txt index 82da7d5eca..8b8a0bfc4f 100644 --- a/db/packet_db.txt +++ b/db/packet_db.txt @@ -1802,17 +1802,18 @@ packet_ver: 33 //2013-03-20Ragexe (Judas) packet_ver: 34 +0x014f,6,guildrequestinfo,2 0x01fd,15,repairitem,2 //0x0281,-1,itemlistwindowselected,2:4:8 0x035f,6,reqclickbuyingstore,2 0x0363,6,ticksend,2 0x0365,12,searchstoreinfolistitemclick,2:6:10 0x0438,6,dropitem,2:4 -0x0447,2 +0x0447,2,booking_playcancel,0 +0x044A,6,clientversion,2 0x0844,2,cashshopopen,0 0x0848,-1,cashshopbuy,0 -0x084a,2,cashshopclose,0 -0x084b,19 //fallitem4 +0x084a,2,cashshopclose,00x084b,19 //fallitem4 0x085a,90,useskilltoposinfo,2:4:6:8:10 0x085d,18,bookingregreq,2:4 0x0868,-1,itemlistwindowselected,2:4:8 diff --git a/db/pre-re/mob_boss.txt b/db/pre-re/mob_boss.txt index 89fef5f2b7..c48713580d 100644 --- a/db/pre-re/mob_boss.txt +++ b/db/pre-re/mob_boss.txt @@ -47,3 +47,4 @@ 1871,Falling Bishop,500000 1873,Beelzebub,500000 1885,Gopinich,500000 +2022,Nidhoggur's Shadow,500000 diff --git a/db/re/mob_boss.txt b/db/re/mob_boss.txt index 89fef5f2b7..80702d2fe1 100644 --- a/db/re/mob_boss.txt +++ b/db/re/mob_boss.txt @@ -47,3 +47,6 @@ 1871,Falling Bishop,500000 1873,Beelzebub,500000 1885,Gopinich,500000 +2022,Nidhoggur's Shadow,500000 +2068,Boitata,500000 +2087,Scaraba Queen,500000 diff --git a/doc/mapflags.txt b/doc/mapflags.txt new file mode 100644 index 0000000000..7f248e3d13 --- /dev/null +++ b/doc/mapflags.txt @@ -0,0 +1,356 @@ +//===== rAthena Documentation ================================ +//= Mapflag List +//===== By: ================================================== +//= rAthena Dev Team +//===== Current Version: ===================================== +//= 20130526 +//===== Description: ========================================= +//= List of available mapflags and their functions. +//============================================================ + +This file describes the functions of mapflags, which determine the behavior of a +map in various situations. For instructions on setting a mapflag, refer to the +documentation in '/doc/script_commands.txt'. + +To search for a mapflag, write "*" before its name. +The format of this file is as follows: + 1. Restrictions + 2. Battle-related + 3. Map Effects + 4. Miscellaneous + +=================== +| 1. Restrictions | +=================== +--------------------------------------- + +*noreturn + +Disables usage of map-warping items on a map: + - Butterfly Wing (ID 602) + - Yellow/Green/Red/Blue Butterfly Wing (IDs 14582-14585) + - Siege Teleport Scroll (ID 14591) + - Dungeon Teleport Scroll 1/2/3 (IDs 14527, 14581, 12352) + +The 'warpparty' and 'warpguild' script commands are also blocked for destinations outside the +player's current map. + +--------------------------------------- + +*noteleport + +Disables all means of teleportation within a map: + - Items Fly Wing (ID 601) and Giant Fly Wing (ID 12212) are disabled. + - Skills AL_TELEPORT, TK_HIGHJUMP, and SC_DIMENSIONDOOR are disabled. + - Skills RG_INTIMIDATE, NPC_EXPULSION, and CG_TAROTCARD will not teleport their intended targets. + - Script commands using "Random" as the destination will fail. + - Script command 'warpwaitingpc' will fail with "SavePoint" as the destination. + - Script command 'unitwarp' will fail for players. + - Atcommand @jump is disabled. + +--------------------------------------- + +*nowarp + +Disables warping from a map: + - Script commands 'warpparty' and 'warpguild' will not warp players on 'nowarp' maps. + - Atcommands @warp, @go, @load, and @jump are disabled. + - Atcommands @partyrecall, @guildrecall, and @recallall will not warp players on 'nowarp' maps. + - Skill GD_EMERGENCYCALL will not warp players on 'nowarp' maps. + - Unit UNT_CALLFAMILY will not warp players on 'nowarp' maps. + +--------------------------------------- + +*nowarpto + +Disables warping to a map: + - Atcommands @warp, @go, @load, and @jump are disabled to the 'nowarpto' map. + - Atcommands @partyrecall, @guildrecall, and @recallall are disabled. + - Command /memo is disabled. + - Skill GD_EMERGENCYCALL is disabled if flag 16 of 'emergency_call' is set in + '/conf/battle/skill.conf'. This will not work for 'gvg_castle' maps. + +--------------------------------------- + +*nogo + +Disables usage of command @go on a map. + +--------------------------------------- + +*nosave + +Disables auto-saving on a map. Players who log off on the map will be warped to when +they next log in. "SavePoint", without quotes, is also valid for this field. + +--------------------------------------- + +*nomemo + +Disables the /memo command to save a warp point on a map, and also disables usage of marriage +skills WE_CALLPARTNER, WE_CALLPARENT, and WE_CALLBABY. + +--------------------------------------- + +*noitemconsumption + +Disables usage of items on a map. + +--------------------------------------- + +*notrade + +Disables trading on a map. + +--------------------------------------- + +*nodrop + +Disables dropping items on a map. + +Note that items may still be dropped if a player's inventory is full and 'item_flooritem_check' +is disabled in '/conf/battle/items.conf'. + +--------------------------------------- + +*noloot +*nomobloot +*nomvploot + +Disables normal monsters and MVPs from dropping items on a map. Looted items will always drop. +'noloot' is the same as 'nomobloot' and 'nomvploot' combined. + +--------------------------------------- + +*noexp +*nobaseexp +*nojobexp + +Disables gaining base and job experience from monsters, including MVP bonuses, on a map. +'noexp' is the same as 'nobaseexp' and 'nojobexp' combined. + +--------------------------------------- + +*nopenalty +*noexppenalty +*nozenypenalty + +Disables the loss of experience and Zeny upon death on a map. +'nopenalty' is the same as 'noexppenalty' and 'nozenypenalty' combined. + +Notes: +'noexppenalty' also affects pets, and skills PR_REDEMPTIO and LG_INSPIRATION will not deduct EXP. +'nozenypenalty' only applies if 'zeny_penalty' is enabled in '/conf/battle/exp.conf'. + +--------------------------------------- + +*nochat +*novending + +Disables chatroom and shop creation on a map. + +--------------------------------------- + +*nousecart + +Disables cart usage on a map. + +--------------------------------------- + +*noskill + +Disables skill usage on a map. + +--------------------------------------- + +*restricted + +Disables certain items and skills on a map through a specified zone number. The zone databases are +located in 'db/(pre-)re/item_noequip.txt' and 'db/(pre-)re/skill_nocast_db.txt', both of which +contain explanations and examples of how this mapflag is used. + +--------------------------------------- + +*monster_noteleport + +Prevents monsters from teleporting on a map, including through the skill RG_INTIMIDATE. + +--------------------------------------- + +*nobranch + +Disables usage of monster-spawning items on a map: + - Dead Branch (ID 604) + - Bloody Branch (ID 12103) + - Poring Box (ID 12109) + - Red Pouch (ID 12024) + +Note that when 'mob_warp' is enabled in '/conf/battle/monster.conf' and flag 4 is set, this will +also prevent mobs from being warped onto the map. + +--------------------------------------- + +*noicewall + +Disables skill WZ_ICEWALL on a map. + +--------------------------------------- + +*nosumstarmiracle + +Disables Star Gladiator's "Solar, Lunar, and Stellar Miracle" from occurring on a map. + +--------------------------------------- + +*nomineeffect + +Disables mine effects on a map. +[More information needed.] + +--------------------------------------- + +*nolockon + +Disables locking on a map. +[More information needed.] + +--------------------------------------- + +===================== +| 2. Battle-related | +===================== +--------------------------------------- + +*pvp +*pvp_noparty +*pvp_noguild +*pvp_nocalcrank + +Enables Player vs. Player mode on a map and applies the corresponding damage adjustments. +'pvp_noparty' will ignore party alliances. +'pvp_noguild' will ignore guild alliances. +'pvp_nocalcrank' will disable calculation of PvP rankings. + +--------------------------------------- + +*pvp_nightmaredrop ,, + +Causes players to drop items upon death. This is not grouped with the other PvP mapflags +because it does not necessarily require PvP mode to be set. + + determines what will drop. It can be either a specific item ID or "random". + specifies where items are dropped from. It can be "inventory", "equip", or "all". + is the chance that an item will drop (10000 = 100%). + +--------------------------------------- + +*gvg +*gvg_noparty +*gvg_castle +*gvg_dungeon + +Enables Guild vs. Guild mode on a map and applies the corresponding damage adjustments. +'gvg_noparty' will ignore party alliances. +'gvg_castle' marks a guild castle. GvG mode will be active only during the War of Emperium. +'gvg_dungeon' marks a guild dungeon. Players will be warped out after two deaths. + +--------------------------------------- + +*battleground {} + +Enables Battlegrounds on a map and applies the corresponding damage adjustments. +If is 2, a scoreboard will be shown. The default is 1 (nothing). + +--------------------------------------- + +*partylock +*guildlock + +Prevents alteration of parties and guilds on a map. This includes creating, leaving, +inviting, expelling, breaking, and changing leaders. + +Notes: +'partylock' will still allow party options to be changed. +'guildlock' will also block changes to guild alliances. + +--------------------------------------- + +================== +| 3. Map Effects | +================== +--------------------------------------- + +*clouds +*clouds2 +*fireworks +*fog +*leaves +*sakura +*snow + +Displays a weather effect on a map. + +--------------------------------------- + +*nightenabled + +Displays night mode effects on a map. This is used on most outdoor maps. + +--------------------------------------- + +==================== +| 4. Miscellaneous | +==================== +--------------------------------------- + +*town + +Marks a map as a town. This allows players to access their mail and disables kill stealing. + +--------------------------------------- + +*reset + +Allows usage of item Neuralizer (ID 12213). + +--------------------------------------- + +*bexp +*jexp + +Changes the base and job experience rates on a map. + is given as a percentage (i.e. 100 = 1x EXP). This takes into account the modifiers +'base_exp_rate' and 'job_exp_rate' in '/conf/battle/exp.conf'. + +--------------------------------------- + +*loadevent + +Triggers the label "OnPCLoadMapEvent" when players enter a map (this also includes +teleporting within the map). More details can be found in '/doc/script_commands.txt'. + +--------------------------------------- + +*allowks + +Allows kill stealing on a map (rendering the @noks command useless). + +--------------------------------------- + +*autotrade + +Allows the @autotrade command on a map. + +This only applies if 'at_mapflag' is enabled in '/conf/battle/misc.conf'. Otherwise, the +atcommand is enabled on all maps by default. + +--------------------------------------- + +*nomapchannelautojoin + +Stops players from automatically joining the #map channel on a map. + +This only applies if map channels are enabled and 'map_local_channel_autojoin' is true +in '/conf/channels.conf'. + +--------------------------------------- diff --git a/doc/permissions.txt b/doc/permissions.txt index bdf8a048f6..0b6b686e63 100644 --- a/doc/permissions.txt +++ b/doc/permissions.txt @@ -1,35 +1,174 @@ //===== rAthena Documentation ================================ -//= Permission List +//= Permissions List //===== By: ================================================== //= rAthena Dev Team //===== Current Version: ===================================== -//= 20130402 +//= 20130526 //===== Description: ========================================= -//= Player group permissions, configured in /conf/groups.conf. +//= List of available permissions and their functions. //============================================================ -can_trade : Ability to trade or otherwise distribute items (drop, storage, vending etc...). -can_party : Ability to join parties. -all_skill : Ability to use all skills. -all_equipment : Ability to equip anything (can cause client errors). -skill_unconditional : Ability to use skills without meeting the required conditions (SP, items, etc...). -join_chat : Ability to join a password protected chatrooms. -kick_chat : Protection from being kicked from a chat. -hide_session : Hides player session from being displayed by @commands. -who_display_aid : Ability to see GMs and Account/Char IDs in the @who command. -hack_info : Ability to receive all informations about any player that try to hack, spoof a name, etc. -any_warp : Ability to bypass nowarp, nowarpto, noteleport and nomemo mapflags. - This option is mainly used in commands which modify a character's - map/coordinates (like @memo, @mapmove, @go, @jump, etc...). -view_hpmeter : Ability to see HP bar of every player. -view_equipment : Ability to view players equipment regardless of their setting. -use_check : Ability to use client command /check (display character status). -use_changemaptype : Ability to use client command /changemaptype. -all_commands : Ability to use all atcommands and charcommands. -receive_requests : Ability to receive @requests. -show_bossmobs : Ability to see boss mobs with @showmobs. -disable_pvm : Ability to disable Player vs. Monster. -disable_pvp : Ability to disable Player vs. Player. -disable_commands_when_dead : Ability to disable @command usage when dead. -channel_admin : Ability to modify channel settings regardless of ownership and join password-protected - channels without a password. \ No newline at end of file +This file describes the functions of player group permissions, +configured in '/conf/groups.conf' under the "permissions" bracket. + +To search for a permission, write "*" before its name. +The format of this file is as follows: + 1. Basic Permissions + 2. Extended Permissions + 3. Command-related + +======================== +| 1. Basic Permissions | +======================== +--------------------------------------- + +*can_trade + +Allows player to distribute items, such as through trades, dropping, +vending, storage, mail, etc. + +--------------------------------------- + +*can_party + +Allows player to create and join parties. + +--------------------------------------- + +=========================== +| 2. Extended Permissions | +=========================== +--------------------------------------- + +*all_skill + +Grants player all available skills in the player's skill tree. + +--------------------------------------- + +*all_equipment + +Allows player to equip any item, regardless of requirements (class, level, +etc.). Note that this can cause client errors if a sprite does not exist. + +--------------------------------------- + +*skill_unconditional + +Allows player to use any skill, regardless of required conditions (SP, +items, etc.). + +--------------------------------------- + +*join_chat + +Allows player to join password-protected chatrooms. + +--------------------------------------- + +*kick_chat + +Prevents player from being kicked from a chatroom. + +--------------------------------------- + +*view_hpmeter + +Allows player to see the HP bar of every player. + +--------------------------------------- + +*view_equipment + +Allows player to view the equipment of every player, regardless of that +player's setting. + +--------------------------------------- + +*hack_info + +Allows player to receive all information about players who try to hack, +spoof a name, etc. + +--------------------------------------- + +*disable_pvm + +Prevents player from attacking monsters. + +--------------------------------------- + +*disable_pvp + +Prevents player from attacking other players. + +--------------------------------------- + +====================== +| 3. Command-related | +====================== +--------------------------------------- + +*all_commands + +Allows usage of all atcommands and charcommands. + +--------------------------------------- + +*disable_commands_when_dead + +Disables usage of atcommands when player is dead. + +--------------------------------------- + +*hide_session + +Hides player session from being displayed by atcommands (@who, @whomap, +etc.). + +--------------------------------------- + +*who_display_aid + +Displays all GMs and character/account IDs in the @who command. + +--------------------------------------- + +*any_warp + +Allows player to bypass 'nowarp', 'nowarpto', 'noteleport', and 'nomemo' +mapflags in commands which modify a character's map or coordinates (@memo, +@mapmove, @go, @jump, etc.). + +--------------------------------------- + +*receive_requests + +Allows player to receive requests through the @requests command. + +--------------------------------------- + +*show_bossmobs + +Displays boss mobs in the @showmobs command. + +--------------------------------------- + +*channel_admin + +Allows player to modify #channel settings regardless of ownership and to +join password-protected channels without a password. + +--------------------------------------- + +*use_check + +Allows player to use the client command /check (displays character status). + +--------------------------------------- + +*use_changemaptype + +Allows player to use the client command /changemaptype. + +--------------------------------------- diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 2a9348626a..f9c7cdadd2 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -136,8 +136,8 @@ Here is a list of valid top-level commands: This will, upon loading, set a specified map flag on a map you like. These are normally in files inside 'conf/mapflag' and are loaded first, so by the time the server's up, all the maps have the flags they should have. Map flags determine -the behavior of the map regarding various common problems, for a better -explanation, see 'setmapflag'. +the behavior of the map in various situations. For more details, see 'setmapflag' +and 'doc/mapflags.txt'. ** Create a permanent monster spawn: @@ -997,9 +997,9 @@ From here on, we will have the commands sorted as follow: ===================== --------------------------------------- -*mes ""; +*mes ""{,""{,...}}; -This command will displays a box on the screen for the invoking character, if no +This command will display a box on the screen for the invoking character, if no such box is displayed already, and will print the string specified into that box. There is normally no 'close' or 'next' button on this box, unless you create one with 'close' or 'next', and while it's open the player can't do much @@ -1025,7 +1025,7 @@ English characters, the color codes might get screwed if they stick to letters with no intervening space. Separating them with spaces from the letters on either side solves the problem. -To display multiple lines of message while only using a single mes; command, +To display multiple lines of message while only using a single 'mes' command, use the script command in the following format: mes "Line 1", "Line 2", "Line 3"; @@ -1049,7 +1049,7 @@ will terminate. mes "[Woman]"; mes "This would appear on the page"; next; - // This is needed cause it is a new page and the top will now be blank + // This is needed since it is a new page and the top will now be blank mes "[Woman]"; mes "This would appear on the 2nd page"; @@ -1124,7 +1124,8 @@ of 'end' stops this, and ends the script. *set(,) This command will set a variable to the value that the expression results in. -This is the only way to set a variable directly. +Variables may either be set through this command or directly, much like any +other programming language (refer to the "Assigning variables" section). This is the most basic script command and is used a lot whenever you try to do anything more advanced than just printing text into a message box. @@ -4780,10 +4781,6 @@ about the guild skill trying to exceed the possible maximum. The full list of guild skills is available in 'db/(pre-)re/skill_db.txt', these are all the GD_ skills at the end. -The flag parameter is currently not functional and it's a mystery of what it -would actually do. (Though probably, like for character skills, it would allow -temporary bumping.) Using this command will bump the guild skill up permanently. - // This would give your character's guild one level of Approval (GD_APPROVAL ID // 10000). Notice that if you try to add two levels of Approval, or add // Approval when the guild already has it, it will only have one level of @@ -5045,7 +5042,7 @@ expected, refer only to an invoking character. What these commands do is 'attach' a script to the player which will get executed on attack (or when attacked in the case of autobonus2). -Rate is the trigger rate of the script (1000 = 100%). +Rate is the trigger rate of the script (10000 = 100%). Duration is the time that the bonus will last for since the script has triggered. @@ -6096,9 +6093,9 @@ specified. *setmapflag "",{,}; -This command marks a specified map with a map flag given. Map flags alter the -behavior of the map, you can see the list of the available ones in -'db/const.txt' under 'mf_'. +This command marks a specified map with the given map flag, which will alter the +behavior of the map. A full list of mapflags is located in 'db/const.txt' with +the 'mf_' prefix, and documentation can be found in 'doc/mapflags.txt'. The map flags alter the behavior of the map regarding teleporting (mf_nomemo, mf_noteleport, mf_nowarp, mf_nogo), storing location when disconnected diff --git a/src/map/clif.c b/src/map/clif.c index be01c4e873..03e6c76931 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -16403,7 +16403,56 @@ void clif_parse_reqworldinfo(int fd,struct map_session_data *sd){ if(sd) clif_ackworldinfo(sd); } +/// unknown usage (CZ_BLOCKING_PLAY_CANCEL) +/// 0447 +void clif_parse_blocking_playcancel(int fd,struct map_session_data *sd){ + //if(sd) + ; +} +/// req world info (CZ_CLIENT_VERSION) +/// 044A .L +void clif_parse_client_version(int fd,struct map_session_data *sd){ + //if(sd) + ; +} + +#ifdef DUMP_UNKNOWN_PACKET +void DumpUnknow(int fd,TBL_PC *sd,int cmd,int packet_len){ + const char* packet_txt = "save/packet.txt"; + FILE* fp; + time_t time_server; + struct tm *datetime; + char datestr[512]; + + time(&time_server); // get time in seconds since 1/1/1970 + datetime = localtime(&time_server); // convert seconds in structure + // like sprintf, but only for date/time (Sunday, November 02 2003 15:12:52) + strftime(datestr, sizeof(datestr)-1, "%A, %B %d %Y %X.", datetime); // Server time (normal time): %A, %B %d %Y %X. + + + if( ( fp = fopen( packet_txt , "a" ) ) != NULL ) { + if( sd ) { + fprintf(fp, "Unknown packet 0x%04X (length %d), %s session #%d, %d/%d (AID/CID) at %s \n", cmd, packet_len, sd->state.active ? "authed" : "unauthed", fd, sd->status.account_id, sd->status.char_id,datestr); + } else { + fprintf(fp, "Unknown packet 0x%04X (length %d), session #%d at %s\n", cmd, packet_len, fd,datestr); + } + WriteDump(fp, RFIFOP(fd,0), packet_len); + fprintf(fp, "\n"); + fclose(fp); + } else { + ShowError("Failed to write '%s'.\n", packet_txt); + // Dump on console instead + if( sd ) { + ShowDebug("Unknown packet 0x%04X (length %d), %s session #%d, %d/%d (AID/CID) at %s\n", cmd, packet_len, sd->state.active ? "authed" : "unauthed", fd, sd->status.account_id, sd->status.char_id,datestr); + } else { + ShowDebug("Unknown packet 0x%04X (length %d), session #%d at %s\n", cmd, packet_len, fd,datestr); + } + + ShowDump(RFIFOP(fd,0), packet_len); + } +} +#endif /*========================================== * Main client packet processing function @@ -16523,37 +16572,9 @@ static int clif_parse(int fd) packet_db[packet_ver][cmd].func(fd, sd); } #ifdef DUMP_UNKNOWN_PACKET - else { - const char* packet_txt = "save/packet.txt"; - FILE* fp; - - if( ( fp = fopen( packet_txt , "a" ) ) != NULL ) { - if( sd ) { - fprintf(fp, "Unknown packet 0x%04X (length %d), %s session #%d, %d/%d (AID/CID)\n", cmd, packet_len, sd->state.active ? "authed" : "unauthed", fd, sd->status.account_id, sd->status.char_id); - } else { - fprintf(fp, "Unknown packet 0x%04X (length %d), session #%d\n", cmd, packet_len, fd); - } - - WriteDump(fp, RFIFOP(fd,0), packet_len); - fprintf(fp, "\n"); - fclose(fp); - } else { - ShowError("Failed to write '%s'.\n", packet_txt); - - // Dump on console instead - if( sd ) { - ShowDebug("Unknown packet 0x%04X (length %d), %s session #%d, %d/%d (AID/CID)\n", cmd, packet_len, sd->state.active ? "authed" : "unauthed", fd, sd->status.account_id, sd->status.char_id); - } else { - ShowDebug("Unknown packet 0x%04X (length %d), session #%d\n", cmd, packet_len, fd); - } - - ShowDump(RFIFOP(fd,0), packet_len); - } - } + else DumpUnknow(fd,sd,cmd,packet_len); #endif - RFIFOSKIP(fd, packet_len); - }; // main loop end return 0; @@ -17021,6 +17042,8 @@ void packetdb_readdb(void) { clif_parse_MoveItem , "moveitem" }, { clif_parse_GuildInvite2 , "guildinvite2" }, { clif_parse_reqworldinfo, "reqworldinfo"}, + { clif_parse_client_version, "clientversion"}, + { clif_parse_blocking_playcancel, "booking_playcancel"}, {NULL,NULL} }; diff --git a/src/map/elemental.c b/src/map/elemental.c index 57e7baed85..1c0c695311 100644 --- a/src/map/elemental.c +++ b/src/map/elemental.c @@ -76,27 +76,27 @@ int elemental_create(struct map_session_data *sd, int class_, unsigned int lifet ele.mode = EL_MODE_PASSIVE; // Initial mode i = db->status.size+1; // summon level - //[(Caster�s Max HP/ 3 ) + (Caster�s INT x 10 )+ (Caster�s Job Level x 20 )] x [(Elemental Summon Level + 2) / 3] + //[(Caster's Max HP/ 3 ) + (Caster's INT x 10 )+ (Caster's Job Level x 20 )] x [(Elemental Summon Level + 2) / 3] ele.hp = ele.max_hp = (sd->battle_status.max_hp/3 + sd->battle_status.int_*10 + sd->status.job_level) * ((i + 2) / 3); - //Caster�s Max SP /4 + //Caster's Max SP /4 ele.sp = ele.max_sp = sd->battle_status.max_sp/4; - //Caster�s [ Max SP / (18 / Elemental Summon Skill Level) 1- 100 ] + //Caster's [ Max SP / (18 / Elemental Summon Skill Level) 1- 100 ] ele.atk = (sd->battle_status.max_sp / (18 / i) * 1 - 100); - //Caster�s [ Max SP / (18 / Elemental Summon Skill Level) ] + //Caster's [ Max SP / (18 / Elemental Summon Skill Level) ] ele.atk2 = sd->battle_status.max_sp / 18; - //Caster�s HIT + (Caster�s Base Level ) + //Caster's HIT + (Caster's Base Level) ele.hit = sd->battle_status.hit + sd->status.base_level; - //[Elemental Summon Skill Level x (Caster�s INT / 2 + Caster�s DEX / 4)] + //[Elemental Summon Skill Level x (Caster's INT / 2 + Caster's DEX / 4)] ele.matk = i * (sd->battle_status.int_ / 2 + sd->battle_status.dex / 4); - //150 + [Caster�s DEX / 10] + [Elemental Summon Skill Level x 3 ] + //150 + [Caster's DEX / 10] + [Elemental Summon Skill Level x 3 ] ele.amotion = 150 + sd->battle_status.dex / 10 + i * 3; - //Caster�s DEF + (Caster�s Base Level / (5 � Elemental Summon Skill Level) + //Caster's DEF + (Caster's Base Level / (5 - Elemental Summon Skill Level) ele.def = sd->battle_status.def + sd->status.base_level / (5-i); - //Caster�s MDEF + (Caster�s INT / (5 - Elemental Summon Skill Level) + //Caster's MDEF + (Caster's INT / (5 - Elemental Summon Skill Level) ele.mdef = sd->battle_status.mdef + sd->battle_status.int_ / (5-i); - //Caster�s FLEE + (Caster�s Base Level / (5 � Elemental Summon Skill Level) + //Caster's FLEE + (Caster's Base Level / (5 - Elemental Summon Skill Level) ele.flee = sd->status.base_level / (5-i); - //Caster�s HIT + (Caster�s Base Level ) + //Caster's HIT + (Caster's Base Level) ele.hit = sd->battle_status.hit + sd->status.base_level; //per individual bonuses diff --git a/src/map/map.c b/src/map/map.c index 57ea7f3f51..1d903a004f 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -1287,7 +1287,7 @@ int map_clearflooritem_timer(int tid, unsigned int tick, int id, intptr_t data) } /* - * clears a single bl item out of the bazooonga. + * clears a single bl item out of the map. */ void map_clearflooritem(struct block_list *bl) { struct flooritem_data* fitem = (struct flooritem_data*)bl; diff --git a/src/map/pc.c b/src/map/pc.c index e402c13854..b33e34d799 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -584,8 +584,7 @@ int pc_setnewpc(struct map_session_data *sd, int account_id, int char_id, int lo return 0; } -int pc_equippoint(struct map_session_data *sd,int n) -{ +int pc_equippoint(struct map_session_data *sd,int n){ int ep = 0; nullpo_ret(sd); @@ -4112,7 +4111,7 @@ int pc_isUseitem(struct map_session_data *sd,int n) return 0; // You cannot use this item while sitting. } - switch( nameid ) //@TODO, lot oh harcoded nameid here + switch( nameid ) //@TODO, lot of hardcoded nameid here { case 605: // Anodyne if( map_flag_gvg(sd->bl.m) ) @@ -4130,7 +4129,8 @@ int pc_isUseitem(struct map_session_data *sd,int n) } case 602: // ButterFly Wing case 14527: // Dungeon Teleport Scroll - case 14581: // Dungeon Teleport Scroll + case 14581: // Dungeon Teleport Scroll 2 + case 12352: // Dungeon Teleport Scroll 3 case 14582: // Yellow Butterfly Wing case 14583: // Green Butterfly Wing case 14584: // Red Butterfly Wing diff --git a/src/map/searchstore.c b/src/map/searchstore.c index 2d1019afe6..e924b1935d 100644 --- a/src/map/searchstore.c +++ b/src/map/searchstore.c @@ -114,6 +114,7 @@ void searchstore_query(struct map_session_data* sd, unsigned char type, unsigned struct s_search_store_search s; searchstore_searchall_t store_searchall; time_t querytime; + DBMap *vending_db = vending_getdb(); if( !battle_config.feature_search_stores ) { return; @@ -178,7 +179,6 @@ void searchstore_query(struct map_session_data* sd, unsigned char type, unsigned s.card_count = card_count; s.min_price = min_price; s.max_price = max_price; - DBMap *vending_db = vending_getdb(); iter = db_iterator(vending_db); for( pl_sd = dbi_first(iter); dbi_exists(iter); pl_sd = dbi_next(iter) ) {