Advertisement
Guest User

Untitled

a guest
Oct 18th, 2013
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.58 KB | None | 0 0
  1. #################################################################################################
  2. # OpenKore - Network subsystem #
  3. # This module contains functions for sending messages to the server. #
  4. # #
  5. # This software is open source, licensed under the GNU General Public #
  6. # License, version 2. #
  7. # Basically, this means that you're allowed to modify and distribute #
  8. # this software. However, if you distribute modified versions, you MUST #
  9. # also distribute the source code. #
  10. # See http://www.gnu.org/licenses/gpl.html for the full license. #
  11. #################################################################################################
  12. # bRO (Brazil)
  13. package Network::Receive::bRO;
  14. use strict;
  15. use Log qw(message warning error debug);
  16. use base 'Network::Receive::ServerType0';
  17. use Globals;
  18. use Translation;
  19. use Misc;
  20.  
  21. # Sync_Ex algorithm developed by Fr3DBr
  22.  
  23. sub new {
  24. my ($class) = @_;
  25. my $self = $class->SUPER::new(@_);
  26.  
  27. my %packets = (
  28. '0097' => ['private_message', 'v Z24 V Z*', [qw(len privMsgUser flag privMsg)]], # -1
  29. '08A1' => ['sync_request_ex'],
  30. '08A4' => ['sync_request_ex'],
  31. '0950' => ['sync_request_ex'],
  32. '095B' => ['sync_request_ex'],
  33. '0438' => ['sync_request_ex'],
  34. '0941' => ['sync_request_ex'],
  35. '0882' => ['sync_request_ex'],
  36. '0943' => ['sync_request_ex'],
  37. '093A' => ['sync_request_ex'],
  38. '0946' => ['sync_request_ex'],
  39. '0893' => ['sync_request_ex'],
  40. '091E' => ['sync_request_ex'],
  41. '0948' => ['sync_request_ex'],
  42. '08AB' => ['sync_request_ex'],
  43. '0965' => ['sync_request_ex'],
  44. '0875' => ['sync_request_ex'],
  45. '092F' => ['sync_request_ex'],
  46. '0887' => ['sync_request_ex'],
  47. '0888' => ['sync_request_ex'],
  48. '0363' => ['sync_request_ex'],
  49. '0815' => ['sync_request_ex'],
  50. '0964' => ['sync_request_ex'],
  51. '0923' => ['sync_request_ex'],
  52. '08A2' => ['sync_request_ex'],
  53. '0863' => ['sync_request_ex'],
  54. '0367' => ['sync_request_ex'],
  55. '08AA' => ['sync_request_ex'],
  56. '0437' => ['sync_request_ex'],
  57. '0360' => ['sync_request_ex'],
  58. '02C4' => ['sync_request_ex'],
  59. '0928' => ['sync_request_ex'],
  60. '085A' => ['sync_request_ex'],
  61. '0958' => ['sync_request_ex'],
  62. '0869' => ['sync_request_ex'],
  63. '0886' => ['sync_request_ex'],
  64. '0918' => ['sync_request_ex'],
  65. '0366' => ['sync_request_ex'],
  66. '0880' => ['sync_request_ex'],
  67. '0938' => ['sync_request_ex'],
  68. '088D' => ['sync_request_ex'],
  69. '035F' => ['sync_request_ex'],
  70. '0885' => ['sync_request_ex'],
  71. '07E4' => ['sync_request_ex'],
  72. '08AD' => ['sync_request_ex'],
  73. '0955' => ['sync_request_ex'],
  74. '086A' => ['sync_request_ex'],
  75. '0878' => ['sync_request_ex'],
  76. '0927' => ['sync_request_ex'],
  77. '085B' => ['sync_request_ex'],
  78. '0961' => ['sync_request_ex'],
  79. '087D' => ['sync_request_ex'],
  80. '0922' => ['sync_request_ex'],
  81. '0899' => ['sync_request_ex'],
  82. '0969' => ['sync_request_ex'],
  83. '0929' => ['sync_request_ex'],
  84. '089D' => ['sync_request_ex'],
  85. '0868' => ['sync_request_ex'],
  86. '091A' => ['sync_request_ex'],
  87. '0935' => ['sync_request_ex'],
  88. '0932' => ['sync_request_ex'],
  89. '0945' => ['sync_request_ex'],
  90. '092A' => ['sync_request_ex'],
  91. '08A5' => ['sync_request_ex'],
  92. '0933' => ['sync_request_ex'],
  93. '0942' => ['sync_request_ex'],
  94. '086F' => ['sync_request_ex'],
  95. '0874' => ['sync_request_ex'],
  96. '092C' => ['sync_request_ex'],
  97. '088E' => ['sync_request_ex'],
  98. '0361' => ['sync_request_ex'],
  99. '096A' => ['sync_request_ex'],
  100. '091D' => ['sync_request_ex'],
  101. '0898' => ['sync_request_ex'],
  102. '0436' => ['sync_request_ex'],
  103. '0952' => ['sync_request_ex'],
  104. '094D' => ['sync_request_ex'],
  105. '092E' => ['sync_request_ex'],
  106. '0861' => ['sync_request_ex'],
  107. '0894' => ['sync_request_ex'],
  108. '0940' => ['sync_request_ex'],
  109. '093F' => ['sync_request_ex'],
  110. '094F' => ['sync_request_ex'],
  111. '085C' => ['sync_request_ex'],
  112. '093C' => ['sync_request_ex'],
  113. );
  114.  
  115. foreach my $switch (keys %packets) {
  116. $self->{packet_list}{$switch} = $packets{$switch};
  117. }
  118.  
  119. Plugins::addHook('packet_pre/received_characters' => sub {
  120. $self->{lockCharScreen} = 2;
  121. $timeout{charlogin}{time} = time;
  122. });
  123.  
  124. Plugins::addHook(charSelectScreen => sub {
  125. $_[1]{return} = $self->{lockCharScreen};
  126. });
  127.  
  128. return $self;
  129. }
  130.  
  131. sub items_nonstackable {
  132. my ($self, $args) = @_;
  133.  
  134. my $items = $self->{nested}->{items_nonstackable};
  135.  
  136. if($args->{switch} eq '00A4' || # inventory
  137. $args->{switch} eq '00A6' || # storage
  138. $args->{switch} eq '0122' # cart
  139. ) {
  140. return $items->{type4};
  141.  
  142. } elsif ($args->{switch} eq '0295' || # inventory
  143. $args->{switch} eq '0296' || # storage
  144. $args->{switch} eq '0297' # cart
  145. ) {
  146. return $items->{type4};
  147.  
  148. } elsif ($args->{switch} eq '02D0' || # inventory
  149. $args->{switch} eq '02D1' || # storage
  150. $args->{switch} eq '02D2' # cart
  151. ) {
  152. return $items->{type4};
  153. } else {
  154. warning("items_nonstackable: unsupported packet ($args->{switch})!\n");
  155. }
  156. }
  157.  
  158. sub sync_request_ex {
  159. my ($self, $args) = @_;
  160.  
  161. # Debug Log
  162. # message "Received Sync Ex : 0x" . $args->{switch} . "\n";
  163.  
  164. # Computing Sync Ex - By Fr3DBr
  165. my $PacketID = $args->{switch};
  166.  
  167. # Sync Ex Reply Array
  168. my %sync_ex_question_reply = (
  169. '08A1' => '095F',
  170. '08A4' => '08A6',
  171. '0950' => '0883',
  172. '095B' => '095C',
  173. '0438' => '0934',
  174. '0941' => '0202',
  175. '0882' => '094A',
  176. '0943' => '0963',
  177. '093A' => '089B',
  178. '0946' => '0957',
  179. '0893' => '0364',
  180. '091E' => '089A',
  181. '0948' => '0931',
  182. '08AB' => '08A7',
  183. '0965' => '0954',
  184. '0875' => '0924',
  185. '092F' => '0870',
  186. '0887' => '0866',
  187. '0888' => '0879',
  188. '0363' => '0835',
  189. '0815' => '088F',
  190. '0964' => '088C',
  191. '0923' => '087A',
  192. '08A2' => '0960',
  193. '0863' => '0890',
  194. '0367' => '0811',
  195. '08AA' => '0897',
  196. '0437' => '08AC',
  197. '0360' => '08A3',
  198. '02C4' => '08A8',
  199. '0928' => '0956',
  200. '085A' => '0838',
  201. '0958' => '092D',
  202. '0869' => '086E',
  203. '0886' => '0966',
  204. '0918' => '0930',
  205. '0366' => '083C',
  206. '0880' => '0895',
  207. '0938' => '0926',
  208. '088D' => '089C',
  209. '035F' => '086D',
  210. '0885' => '0369',
  211. '07E4' => '0865',
  212. '08AD' => '0873',
  213. '0955' => '0819',
  214. '086A' => '0921',
  215. '0878' => '0368',
  216. '0927' => '095A',
  217. '085B' => '0281',
  218. '0961' => '0919',
  219. '087D' => '0876',
  220. '0922' => '0892',
  221. '0899' => '0860',
  222. '0969' => '023B',
  223. '0929' => '095E',
  224. '089D' => '0967',
  225. '0868' => '093D',
  226. '091A' => '094B',
  227. '0935' => '0920',
  228. '0932' => '087B',
  229. '0945' => '0889',
  230. '092A' => '0962',
  231. '08A5' => '089E',
  232. '0933' => '086B',
  233. '0942' => '0947',
  234. '086F' => '0951',
  235. '0874' => '0817',
  236. '092C' => '093E',
  237. '088E' => '07EC',
  238. '0361' => '091F',
  239. '096A' => '094C',
  240. '091D' => '087C',
  241. '0898' => '0939',
  242. '0436' => '0867',
  243. '0952' => '0365',
  244. '094D' => '086C',
  245. '092E' => '094E',
  246. '0861' => '088B',
  247. '0894' => '0936',
  248. '0940' => '0877',
  249. '093F' => '085E',
  250. '094F' => '085F',
  251. '085C' => '087F',
  252. '093C' => '085D',
  253. );
  254.  
  255. # Getting Sync Ex Reply ID from Table
  256. my $SyncID = $sync_ex_question_reply{$PacketID};
  257.  
  258. # Cleaning Leading Zeros
  259. $PacketID =~ s/^0+//;
  260.  
  261. # Cleaning Leading Zeros
  262. $SyncID =~ s/^0+//;
  263.  
  264. # Debug Log
  265. # print sprintf("Received Ex Packet ID : 0x%s => 0x%s\n", $PacketID, $SyncID);
  266.  
  267. # Converting ID to Hex Number
  268. $SyncID = hex($SyncID);
  269.  
  270. # Dispatching Sync Ex Reply
  271. $messageSender->sendReplySyncRequestEx($SyncID);
  272. }
  273.  
  274. *parse_quest_update_mission_hunt = *Network::Receive::ServerType0::parse_quest_update_mission_hunt_v2;
  275. *reconstruct_quest_update_mission_hunt = *Network::Receive::ServerType0::reconstruct_quest_update_mission_hunt_v2;
  276.  
  277. 1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement