BYTE process_f1(BYTE* aPacket,DWORD len) { // if(len==1 && *aPacket==0) // {showinfo("done from f1, id:%x,x=%d,y=%d---x=%d,y=%d",_monster.id,_monster.pos.x,_monster.pos.y,_monster.pos1.x,_monster.pos1.y);return 0;} //showinfo("in f1, command:%rnd",command); /* case 3: //life mana update if(_player.id==0) _player.id=object_id; if(_player.id==object_id) { _player.life = *(aPacket+8) * 256+*(aPacket+9); _player.mana = *(aPacket+17) * 256+*(aPacket+18); _player.shield = *(aPacket+26) * 256+*(aPacket+27); if(_player.mana_max<_player.mana) _player.mana_max=_player.mana; if(_player.life_max<_player.life) _player.life_max=_player.life; if(_player.life<_player.life_max/1.5) if(DrinkLifePotion()) { sprintf_s(_tempbuf,"drink life potion, life: %d, life_max:%d",_player.life,_player.life_max); return _tempbuf;} if(_player.mana<_player.mana_max/4) if(DrinkManaPotion()) return "drink mana potion22"; sprintf_s(_tempbuf,"player life: %d, mana: %d, shield:%d ",_player.life,_player.mana,_player.shield); }*/ switch(_action.count) { case 0: break; case 1: _monster.id=htons(*((WORD*)(aPacket+2))); // showinfo("monster xx id:%x,%x",_monster.id,aPacket[0]); break; case 2: // showinfo("monster id:%x",_monster.id); _monster.action = *aPacket; //7 behave;1 drink;3 life update;5 die if(_monster.action == 4) { // showinfo("mouseter died:%x",_monster.id); MonsterDie(_monster.id); RemoveMonster(_monster.id); } break; case 3: if(_monster.action==7) _monster.action1 = *aPacket; //action1: //2 stop and hit //0 stop and do nothing //3 hit //1 move if(_monster.action ==3) _monster.life = *(aPacket+2)*256+*(aPacket+3);//life/mana/shield update break; case 4: if(_monster.action1 == 1 || _monster.action1==3) _monster.pos.x = htons(*((WORD*)(aPacket+2))); //move pos break; case 5: if(_monster.action1 == 1 || _monster.action1==3) { _monster.pos.y = htons(*((WORD*)(aPacket+2))); //_monster.type = OBJ_MONSTER; UpdateMonster(&_monster); } break; case 6: if(_monster.action ==3) _monster.mana = htons(*((WORD*)(aPacket+2)));//life/mana/shield update break; case 9: if(_monster.action1 == 1) _monster.pos1.x = htons(*((WORD*)(aPacket+2))); if(_monster.action ==3) { _monster.shield = htons(*((WORD*)(aPacket+2)));//life/mana/shield update if(_player.id==_monster.id) { _player.id=_monster.id; _player.life=_monster.life; _player.mana=_monster.mana; _player.shield=_monster.shield; if(_player.mana_max<_player.mana) _player.mana_max=_player.mana; if(_player.life_max<_player.life) _player.life_max=_player.life; if(_player.life<_player.life_max/1.5) if(DrinkLifePotion()) showinfo("drink life potion, life: %d, life_max:%d",_player.life,_player.life_max); if(_player.mana<_player.mana_max/4) if(DrinkManaPotion()) showinfo("drink mana"); for(int i=0;i<MAX_monster_array;i++) { if(_monster.id==_monster_array[i].id) { _player.pos.x=_monster_array[i].pos.x; _player.pos.y=_monster_array[i].pos.y; break; } } } } break; case 10: if(_monster.action1 == 1) { _monster.pos1.y = htons(*((WORD*)(aPacket+2))); if(_monster.id==_player.id) { _player.pos.x=_monster.pos.x; _player.pos.y=_monster.pos.y; } //UpdateMonster(_monster.id,_monster.pos.x,_monster.pos.y); //showinfo("moving"); } break; default: switch(_monster.action) { case 7: // return process_f1_action7(aPacket,len,command,_monster); break; case 3: //life mana update // return process_f1_action3(aPacket,len,command,monster); break; case 1: // drink // return process_f1_action1(aPacket,len,command,monster); break; } } // showinfo("in f1: count:%d,action:%d",_action.count,_monster.action); return 0; }
void NPCDie(Entity *self,Entity *other) { /*put in player history*/ MonsterDie(self,other); }