/** * When clicking on an Entity * */ function onMouseDown() { var Entity = this.constructor; var pkt; switch (this.objecttype) { case Entity.TYPE_PET: break; case Entity.TYPE_ITEM: Cursor.setType( Cursor.ACTION.PICK, true, 2 ); pkt = new PACKET.CZ.ITEM_PICKUP(); pkt.ITAID = this.GID; // Too far, walking to it if (vec2.distance(Session.Entity.position, this.position) > 2) { Session.moveAction = pkt; pkt = new PACKET.CZ.REQUEST_MOVE(); pkt.dest[0] = Mouse.world.x; pkt.dest[1] = Mouse.world.y; Network.sendPacket(pkt); return true; } Network.sendPacket(pkt); Session.Entity.lookTo( this.position[0], this.position[1] ); return true; case Entity.TYPE_NPC: pkt = new PACKET.CZ.CONTACTNPC(); pkt.NAID = this.GID; pkt.type = 0; // TODO: what is it for ? Network.sendPacket(pkt); // Updare look Session.Entity.lookTo( this.position[0], this.position[1] ); pkt = new PACKET.CZ.CHANGE_DIRECTION(); pkt.headDir = Session.Entity.headDir; pkt.dir = Session.Entity.direction; Network.sendPacket(pkt); return true; case Entity.TYPE_WARP: pkt = new PACKET.CZ.REQUEST_MOVE(); pkt.dest[0] = this.position[0]; pkt.dest[1] = this.position[1]; Network.sendPacket(pkt); break; } return false; }
/** * Open entity room (chat room, shop, ...) */ function onRoomEnter() { var pkt; var Room = this.room.constructor; switch (this.room.type) { case Room.Type.SELL_SHOP: pkt = new PACKET.CZ.REQ_CLICK_TO_BUYING_STORE(); pkt.makerAID = this.room.id; Network.sendPacket(pkt); break; case Room.Type.BUY_SHOP: pkt = new PACKET.CZ.REQ_BUY_FROMMC(); pkt.AID = this.room.id; Network.sendPacket(pkt); break; case Room.Type.PUBLIC_CHAT: pkt = new PACKET.CZ.REQ_ENTER_ROOM(); pkt.roomID = this.room.id; pkt.passwd = ''; Network.sendPacket(pkt); /* Prepare the chat room UI */ ChatRoom.type = 1; //public ChatRoom.title = this.room.title; ChatRoom.limit = this.room.limit; ChatRoom.count = this.room.count; break; case Room.Type.PRIVATE_CHAT: pkt = new PACKET.CZ.REQ_ENTER_ROOM(); pkt.roomID = this.room.id; InputBox.append(); InputBox.setType('pass', false); var self = this; InputBox.onSubmitRequest = function( pass ) { InputBox.remove(); pkt.passwd = pass; Network.sendPacket(pkt); /* Prepare the chat room UI */ ChatRoom.type = 0; //private ChatRoom.title = self.room.title; ChatRoom.limit = self.room.limit; ChatRoom.count = self.room.count; }; return; } }
Inventory.onUseCard = function onUseCard(index) { _cardComposition = index; var pkt = new PACKET.CZ.REQ_ITEMCOMPOSITION_LIST(); pkt.cardIndex = index; Network.sendPacket(pkt); };
SkillWindow.onIncreaseSkill = function onIncreaseSkill( SKID ) { var pkt = new PACKET.CZ.UPGRADE_SKILLLEVEL(); pkt.SKID = SKID; Network.sendPacket(pkt); };
/** * Moving function */ function walkIntervalProcess() { // setTimeout isn't accurate, so reduce the value // to avoid possible errors. if (_walkLastTick + 450 > Renderer.tick) { return; } var isWalkable = (Mouse.world.x > -1 && Mouse.world.y > -1); var isCurrentPos = (Math.round(Session.Entity.position[0]) === Mouse.world.x && Math.round(Session.Entity.position[1]) === Mouse.world.y); if (isWalkable && !isCurrentPos) { var pkt = new PACKET.CZ.REQUEST_MOVE(); if (!checkFreeCell(Mouse.world.x, Mouse.world.y, 1, pkt.dest)) { pkt.dest[0] = Mouse.world.x; pkt.dest[1] = Mouse.world.y; } Network.sendPacket(pkt); } Events.clearTimeout(_walkTimer); _walkTimer = Events.setTimeout( walkIntervalProcess, 500); _walkLastTick = +Renderer.tick; }
ItemSelection.onIndexSelected = function(index) { if (index > -1) { var pkt = new PACKET.CZ.SELECT_PETEGG(); pkt.index = index; Network.sendPacket(pkt); } };
/** * Equip item * * @param {number} item's index * @param {number} where to equip */ function onEquipItem( index, location ) { var pkt = new PACKET.CZ.REQ_WEAR_EQUIP(); pkt.index = index; pkt.wearLocation = location; Network.sendPacket(pkt); }
MapEngine.onUseItem = function( index ) { var pkt = new PACKET.CZ.USE_ITEM(); pkt.index = index; pkt.AID = MapEngine.entity.GID; Network.sendPacket(pkt); };
/** * Update config * * @param {number} config id (only type:0 is supported - equip) * @param {number} val */ function onConfigUpdate( type, val ) { var pkt = new PACKET.CZ.CONFIG(); pkt.Config = type; pkt.Value = val; Network.sendPacket(pkt); }
/** * User want to create a character, send data to server * * @param {string} name * @param {number} Str - strength stat * @param {number} Agi - agility stat * @param {number} Vit - vitality stat * @param {number} Int - intelligence stat * @param {number} Dex - dexterity stat * @param {number} Luk - luck stat * @param {number} hair - hair style * @param {number} color - hair color */ function onCharCreationRequest( name, Str, Agi, Vit, Int, Dex, Luk, hair, color ) { var pkt; // Old Packet required stats if (PACKETVER.value < 20120307) { pkt = new PACKET.CH.MAKE_CHAR(); pkt.Str = Str; pkt.Agi = Agi; pkt.Vit = Vit; pkt.Int = Int; pkt.Dex = Dex; pkt.Luk = Luk; } else { pkt = new PACKET.CH.MAKE_CHAR2(); } pkt.name = name; pkt.head = hair; pkt.headPal = color; pkt.CharNum = _creationSlot; Network.sendPacket(pkt); }
Network.connect( Network.utils.longToIP( ip ), port, function onconnect( success ) { // Force reloading map MapRenderer.currentMap = ''; // Fail to connect... if (!success) { UIManager.showErrorBox( DB.getMessage(1) ); return; } // Success, try to login. var pkt = new PACKET.CZ.ENTER(); pkt.AID = Session.AID; pkt.GID = Session.GID; pkt.AuthCode = Session.AuthCode; pkt.clientTime = Date.now(); pkt.Sex = Session.Sex; Network.sendPacket(pkt); // Server send back AID Network.read(function(fp){ // if PACKETVER < 20070521, client send GID... if (fp.length === 4) { Session.Character.GID = fp.readLong(); } }); // Ping var ping = new PACKET.CZ.REQUEST_TIME(); Network.setPing(function(){ ping.time = Date.now(); Network.sendPacket(ping); }); }, true);
Trade.reqExchange = function requestExhange( GID, name ) { var pkt = new PACKET.CZ.REQ_EXCHANGE_ITEM(); pkt.AID = GID; Network.sendPacket(pkt); Trade.title = name; };
/** * If the character moved to attack, once it finished to move ask to attack */ function onWalkEnd() { // No action to do ? if (!Session.moveTarget) { return; } var pkt, entity = Session.moveTarget; Session.moveTarget = null; // Not in scene anymore. if (!EntityManager.get(entity.GID)) { return; } switch (entity.objecttype) { case Entity.TYPE_MOB: case Entity.TYPE_PC: entity.onFocus(); break; case Entity.TYPE_ITEM: pkt = new PACKET.CZ.ITEM_PICKUP(); pkt.ITAID = entity.GID; Network.sendPacket(pkt); break; } }
/** * Use an item * * @param {number} item's index */ function onUseItem( index ) { var pkt = new PACKET.CZ.USE_ITEM(); pkt.index = index; pkt.AID = Session.Entity.GID; Network.sendPacket(pkt); }
one('click',function(){ WinDeal.remove(); var _pkt = new PACKET.CZ.ACK_SELECT_DEALTYPE(); _pkt.type = 1; _pkt.NAID = NAID; Network.sendPacket(_pkt); }).
/** * Ask server to update status * * @param {number} id * @param {number} amount */ function onRequestStatUpdate(id, amount) { var pkt = new PACKET.CZ.STATUS_CHANGE(); pkt.statusID = id; pkt.changeAmount = amount; Network.sendPacket(pkt); }
NpcBox.onClosePressed = function onClosePressed( NAID ) { var pkt = new PACKET.CZ.CLOSE_DIALOG(); pkt.NAID = NAID; Network.sendPacket( pkt ); NpcBox.remove(); };
Trade.reqAddItem = function reqAddItem( index, count ) { var pkt = new PACKET.CZ.ADD_EXCHANGE_ITEM(); pkt.index = index; pkt.count = count; Network.sendPacket(pkt); };
ChatRoom.requestExpelMember = function requestExpelMember() { var pkt = new PACKET.CZ.REQ_EXPEL_MEMBER(); /* this.name = ''; */ Network.sendPacket( pkt ); };
PetInformations.reqBackToEgg = function reqBackToEgg() { var pkt = new PACKET.CZ.COMMAND_PET(); pkt.cSub = 3; Network.sendPacket(pkt); PetInformations.remove(); };
SkillWindow.onUseSkill = SkillTargetSelection.onUseSkillToId = function onUseSkill( id, level, targetID) { var pkt = new PACKET.CZ.USE_SKILL(); pkt.SKID = id; pkt.selectedLevel = level; pkt.targetID = targetID || Session.Entity.GID; Network.sendPacket(pkt); };
GroupEngine.onRequestLeave = function onRequestPartyLeave() { if (!Session.hasParty) { return; } var pkt = new PACKET.CZ.REQ_LEAVE_GROUP(); Network.sendPacket(pkt); };
ChatRoom.requestRoleChange = function requestRoleChange() { var pkt = new PACKET.CZ.REQ_ROLE_CHANGE(); /* this.role = 0; this.name = ''; */ Network.sendPacket(pkt); };
InputBox.onSubmitRequest = function(shopname) { InputBox.remove(); pkt.storeName = shopname; if(shopname) { this._shopname = shopname; Network.sendPacket(pkt); } };
/** * Drop item to the floor * * @param {number} index in inventory * @param {number} count to drop */ function onDropItem( index, count ) { if (count) { var pkt = new PACKET.CZ.ITEM_THROW(); pkt.Index = index; pkt.count = count; Network.sendPacket(pkt); } }
jQuery(window).on('keydown.map', function( event ){ if (event.which === KEYS.INSERT) { var pkt = new PACKET.CZ.REQUEST_ACT(); pkt.action = Session.Entity.action === Session.Entity.ACTION.SIT ? 3 : 2; Network.sendPacket(pkt); event.stopImmediatePropagation(); return false; } });
ChatRoomCreate.requestRoom = function requestRoom() { var pkt = new PACKET.CZ.CREATE_CHATROOM(); pkt.size = this.limit; pkt.type = this.type; pkt.passwd = this.password; pkt.title = this.title; Network.sendPacket( pkt ); };
ShortCut.onChange = function onChange( index, isSkill, ID, count ) { var pkt = new PACKET.CZ.SHORTCUT_KEY_CHANGE(); pkt.Index = index; pkt.ShortCutKey.isSkill = isSkill ? 1 : 0; pkt.ShortCutKey.ID = ID; pkt.ShortCutKey.count = count; Network.sendPacket(pkt); };
SkillTargetSelection.onUseSkillToPos = function onUseSkillToPos(id, level, x, y) { var pkt = new PACKET.CZ.USE_SKILL_TOGROUND(); pkt.SKID = id; pkt.selectedLevel = level; pkt.xPos = x; pkt.yPos = y; Network.sendPacket(pkt); };
ItemSelection.onIndexSelected = function(index) { if (index >= 0) { var pkt = new PACKET.CZ.REQ_ITEMCOMPOSITION(); pkt.cardIndex = _cardComposition; pkt.equipIndex = index; Network.sendPacket(pkt); } _cardComposition = null; };