ServerType8_3.pm
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:3k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. #########################################################################
  2. # OpenKore - Packet sending
  3. # This module contains functions for sending packets 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. # $Revision: 5761 $
  13. # $Id: ServerType8.pm 5761 2007-06-26 12:25:48Z bibian $
  14. # Modified by skseo, Jan-24-2007, Fixed bugs.
  15. ########################################################################
  16. # legacyRO, after February 2008
  17. # Servertype overview: http://www.openkore.com/wiki/index.php/ServerType
  18. package Network::Send::ServerType8_3;
  19. use strict;
  20. use Globals qw($accountID $sessionID $sessionID2 $accountSex $char $charID %config %guild @chars $masterServer $syncSync $net);
  21. use Network::Send::ServerType8;
  22. use base qw(Network::Send::ServerType8);
  23. use Log qw(message warning error debug);
  24. use I18N qw(stringToBytes);
  25. use Utils qw(getTickCount getHex getCoordString);
  26. sub new {
  27. my ($class) = @_;
  28. return $class->SUPER::new(@_);
  29. }
  30. sub sendMove {
  31. my $self = shift;
  32. my $x = int scalar shift;
  33. my $y = int scalar shift;
  34. my $msg = pack("C*", 0x14, 0x03, 0x00, 0x00) . getCoordString($x, $y);
  35. $self->sendToServer($msg);
  36. debug "Sent move to: $x, $yn", "sendPacket", 2;
  37. }
  38. sub sendSit {
  39. my $self = shift;
  40. my $msg;
  41. my %args;
  42. $args{flag} = 2;
  43. Plugins::callHook('packet_pre/sendSit', %args);
  44. if ($args{return}) {
  45. $self->sendToServer($args{msg});
  46. return;
  47. }
  48. $msg = pack("C2 x16 C1", 0x11, 0x03, 0x02);
  49. $self->sendToServer($msg);
  50. debug "Sittingn", "sendPacket", 2;
  51. }
  52. sub sendAttack {
  53. my ($self, $monID, $flag) = @_;
  54. my $msg;
  55. my %args;
  56. $args{monID} = $monID;
  57. $args{flag} = $flag;
  58. Plugins::callHook('packet_pre/sendAttack', %args);
  59. if ($args{return}) {
  60. $self->sendToServer($args{msg});
  61. return;
  62. }
  63. $msg = pack("C*", 0x11, 0x03, 0x00, 0x00, 0x00) .
  64. $monID . pack("C*",0x00, 0x00, 0x00, 0x00, 0x37, 0x66, 0x61, 0x32, 0x00, $flag);
  65. $self->sendToServer($msg);
  66. debug "Sent attack: ".getHex($monID)."n", "sendPacket", 2;
  67. }
  68. sub sendItemUse {
  69. my ($self, $ID, $targetID) = @_;
  70. my $msg = pack("C*", 0x13, 0x03, 0x61, 0x62) .
  71. pack("v*", $ID) .
  72. pack("C*", 0x34, 0x35, 0x32, 0x61) .
  73. $targetID;
  74. $self->sendToServer($msg);
  75. debug "Item Use: $IDn", "sendPacket", 2;
  76. }
  77. sub sendStand {
  78. my $self = shift;
  79. my $msg;
  80. my %args;
  81. $args{flag} = 3;
  82. Plugins::callHook('packet_pre/sendStand', %args);
  83. if ($args{return}) {
  84. $self->sendToServer($args{msg});
  85. return;
  86. }
  87. $msg = pack("C2 x16 C1", 0x11, 0x03, 0x03);
  88. $self->sendToServer($msg);
  89. debug "Standingn", "sendPacket", 2;
  90. }
  91. sub sendTake {
  92. my ($self, $itemID) = @_;
  93. my $msg = pack("v1 x2", 0x12, 0x03) . $itemID;
  94. $self->sendToServer($msg);
  95. debug "Sent taken", "sendPacket", 2;
  96. }
  97. 1;