﻿1
00:00:04,550 --> 00:00:11,000
‫Trong bài giảng này, chúng ta sẽ tập hợp một bộ điều khiển người chơi sẽ nhận được thông tin rằng

2
00:00:11,000 --> 00:00:18,140
‫trò chơi đã kết thúc từ chế độ trò chơi và sẽ tạo ra hành vi khởi động lại này sau 5 giây tải

3
00:00:18,140 --> 00:00:21,050
‫lại cấp độ sau khi người chơi đã chết.

4
00:00:21,050 --> 00:00:22,730
‫Hãy đi sâu vào và xem nó được thực hiện như thế nào.

5
00:00:23,360 --> 00:00:30,710
‫Vì vậy, khi trò chơi thực sự kết thúc, chúng tôi cần thông báo cho bộ điều khiển trình phát của mình và chúng tôi cũng cần có bộ

6
00:00:30,710 --> 00:00:37,190
‫điều khiển trình phát trong C ++ để chúng tôi có thể thực hiện hành vi cho phép chúng tôi bắt đầu lại cấp độ

7
00:00:37,190 --> 00:00:38,000
‫và tương tự.

8
00:00:38,210 --> 00:00:44,360
‫Vì vậy, điều đầu tiên cần làm là khi điểm này bị giết, trước hết, chúng ta chỉ khai thác một cách bừa bãi.

9
00:00:44,360 --> 00:00:48,200
‫Chúng tôi muốn kiểm tra xem trò chơi đã kết thúc hay chưa.

10
00:00:48,200 --> 00:00:50,390
‫Bây giờ, có hai kịch bản.

11
00:00:50,390 --> 00:00:52,730
‫Một là nơi chúng ta thắng và một là nơi chúng ta thua.

12
00:00:52,760 --> 00:00:55,580
‫Trận thua là lần đầu tiên tôi phải giải quyết vì nó dễ nhất.

13
00:00:55,580 --> 00:00:58,220
‫Nếu con tốt bị giết là người chơi bạn bị mất, đó là nó.

14
00:00:58,220 --> 00:01:04,130
‫Bạn có thể chọn có nhiều mạng sống với các lần lặp lại khác nhau của chế độ chơi này, nhưng tôi sẽ không làm

15
00:01:04,130 --> 00:01:04,850
‫điều đó.

16
00:01:04,850 --> 00:01:06,170
‫Tôi chỉ có một cuộc sống độc thân.

17
00:01:06,170 --> 00:01:07,520
‫Nếu bạn chết, trò chơi kết thúc.

18
00:01:07,520 --> 00:01:08,900
‫Bạn có thể muốn khởi động lại.

19
00:01:09,320 --> 00:01:13,640
‫Vậy làm cách nào để kiểm tra xem con tốt này có phải là bộ điều khiển người chơi hay không?

20
00:01:13,670 --> 00:01:14,990
‫Chà, điều đó khá đơn giản.

21
00:01:14,990 --> 00:01:22,700
‫Chúng tôi chỉ có thể nhập vai, vì vậy chúng tôi sẽ nhập vai cho một bộ điều khiển người chơi và cho con tốt bị giết.

22
00:01:22,700 --> 00:01:25,340
‫Và sau đó nếu điều này không phải là null.

23
00:01:25,340 --> 00:01:32,810
‫Vì vậy, hãy lấy con trỏ, một con trỏ bộ điều khiển trình phát, gọi nó là trình điều khiển trình phát và lưu trữ kết quả

24
00:01:32,810 --> 00:01:34,490
‫của con trỏ đó tại đây.

25
00:01:34,490 --> 00:01:42,890
‫Và chúng tôi sẽ nói về cơ bản nếu điều này không phải là null, vì vậy nếu bộ điều khiển trình phát không phải là một con trỏ null, thì chúng tôi biết

26
00:01:43,190 --> 00:01:47,540
‫rằng đó là người chơi đã chết và trò chơi đã kết thúc đối với người chơi.

27
00:01:47,630 --> 00:01:52,100
‫Vì vậy, những gì chúng tôi muốn làm là gọi phương thức trình điều khiển trình phát đó.

28
00:01:52,100 --> 00:01:57,500
‫Chúng tôi đã gợi ý về thực tế rằng có một trò chơi đã kết thúc phương pháp.

29
00:01:57,500 --> 00:01:58,460
‫Chúng ta hãy nhìn vào điều này.

30
00:01:58,460 --> 00:02:06,530
‫Nếu chúng ta điều khiển P và nhìn vào bộ điều khiển trình phát và chúng ta sẽ tìm kiếm một trò chơi đã kết thúc và bạn có thể thấy đủ

31
00:02:06,530 --> 00:02:12,950
‫chắc chắn rằng có một phương pháp ảo ở đây được gọi là trò chơi đã kết thúc và bạn có thể thấy rằng có

32
00:02:12,950 --> 00:02:14,780
‫một kết thúc trọng tâm trò chơi.

33
00:02:14,780 --> 00:02:19,070
‫Theo mặc định, chúng ta nên tập trung vào tác nhân nào trong trò chơi kết thúc, đây là con trỏ null và đó có thể là những gì

34
00:02:19,070 --> 00:02:19,970
‫chúng ta sẽ sử dụng.

35
00:02:20,690 --> 00:02:22,910
‫Và sau đó chúng ta sẽ nói, đây có phải là người chiến thắng không?

36
00:02:22,910 --> 00:02:28,340
‫Về cơ bản, bạn phải để người chơi kiểm soát và biết liệu họ có thắng hay không.

37
00:02:28,340 --> 00:02:31,760
‫Và điều đó khá đơn giản để nói trong trường hợp này.

38
00:02:31,760 --> 00:02:33,050
‫Không, họ không có.

39
00:02:33,140 --> 00:02:41,480
‫Vì vậy, chúng tôi sẽ chơi trò chơi mũi tên điều khiển đã kết thúc, sau đó tôi sẽ đặt con trỏ null cho tiêu điểm cuối trò

40
00:02:41,480 --> 00:02:47,540
‫chơi bởi vì chúng tôi không thực sự cần tính năng đó và sau đó là người chiến thắng.

41
00:02:47,540 --> 00:02:49,430
‫Nó chỉ đơn giản là sẽ sai.

42
00:02:49,430 --> 00:02:53,540
‫Đây không phải là bộ điều khiển trò chơi chiến thắng vì nó là bộ điều khiển vừa mới chết.

43
00:02:54,370 --> 00:02:56,950
‫Vì vậy, đã đến lúc một chút thử thách để bạn thực hiện.

44
00:02:56,950 --> 00:02:59,710
‫Trò chơi đã kết thúc trong một bộ điều khiển chơi.

45
00:02:59,860 --> 00:03:06,940
‫Điều đó có nghĩa là chúng ta cần tạo bộ điều khiển trình phát C ++, tạo lớp con bản thiết kế của nó, sinh ra lớp con bản thiết

46
00:03:06,940 --> 00:03:12,530
‫kế đó theo mặc định từ chế độ trò chơi của chúng ta và sau đó bạn muốn tiếp tục và ghi đè.

47
00:03:12,550 --> 00:03:17,350
‫Trò chơi đã kết thúc và đặt một thông báo nhật ký vào đó để kiểm tra xem chúng tôi có thực sự nhận được hay không.

48
00:03:17,350 --> 00:03:19,830
‫Trò chơi đó đã kết thúc đúng lúc.

49
00:03:19,840 --> 00:03:21,220
‫Tạm dừng video và tiếp tục.

50
00:03:21,250 --> 00:03:21,580
‫Được chứ.

51
00:03:21,580 --> 00:03:22,260
‫Chào mừng trở lại.

52
00:03:22,270 --> 00:03:29,740
‫Vì vậy, bước một, tạo bộ điều khiển trình phát C ++ đó, tạo một lớp C ++ mới, sau đó đi tìm bộ điều

53
00:03:29,740 --> 00:03:30,760
‫khiển trình phát.

54
00:03:30,760 --> 00:03:34,720
‫Tiếp theo, chúng tôi sẽ gọi đây là bộ điều khiển người chơi game bắn súng.

55
00:03:34,750 --> 00:03:36,010
‫Hãy tiếp tục và tạo lớp đó.

56
00:03:36,010 --> 00:03:44,560
‫Sau khi hoàn tất, chúng tôi muốn xem lại bản thiết kế của mình và tạo một lớp thiết kế dựa trên nó.

57
00:03:44,560 --> 00:03:50,680
‫Vì vậy, chúng tôi muốn bộ điều khiển người chơi game bắn súng làm cơ sở chọn điều đó và chúng tôi sẽ gọi nó là tiếng bíp

58
00:03:50,710 --> 00:03:53,200
‫dưới điểm nhấn bộ điều khiển người chơi game bắn súng.

59
00:03:53,200 --> 00:03:57,580
‫Điều này hiện không thực sự cần thiết, nhưng sau này, chúng tôi sẽ muốn kết nối một số nội dung giao diện người

60
00:03:57,580 --> 00:03:59,230
‫dùng với bộ điều khiển trình phát này.

61
00:03:59,230 --> 00:04:00,940
‫Vì vậy, chúng tôi sẽ chuẩn bị sẵn sàng ở đó.

62
00:04:01,150 --> 00:04:07,900
‫Sau đó, chúng tôi sẽ chuyển đến tiếng bíp, chế độ trò chơi khác và gắn nó vào vì chúng tôi muốn thay đổi lớp bộ điều khiển người chơi

63
00:04:07,900 --> 00:04:13,150
‫mặc định từ bộ điều khiển người chơi thành bộ điều khiển người chơi bắn súng gạch dưới tiếng bíp của chúng tôi.

64
00:04:13,450 --> 00:04:14,050
‫Mát mẻ.

65
00:04:14,380 --> 00:04:18,280
‫Sau đó, chúng tôi muốn ghi đè trò chơi của chúng tôi đã kết thúc.

66
00:04:18,490 --> 00:04:21,430
‫Vì vậy, hãy xem nếu chúng ta chuyển sang bộ điều khiển trình phát.

67
00:04:22,060 --> 00:04:24,550
‫Chúng ta có thể thấy rằng điều này nằm trong phần công khai.

68
00:04:24,550 --> 00:04:25,360
‫Đây là chữ ký.

69
00:04:25,360 --> 00:04:25,990
‫Hãy sao chép nó.

70
00:04:25,990 --> 00:04:31,390
‫Đi qua bộ điều khiển chơi game bắn súng H của chúng tôi và tạo công khai.

71
00:04:32,170 --> 00:04:35,650
‫Trò chơi trống ảo đó đã kết thúc.

72
00:04:35,650 --> 00:04:36,190
‫Mát mẻ.

73
00:04:36,190 --> 00:04:40,210
‫Và chúng tôi đã có một ghi đè bởi vì điều đó rõ ràng đã được ghi đè từ một nơi nào đó đến.

74
00:04:41,160 --> 00:04:45,330
‫Và sau đó những gì chúng ta có thể làm là chúng ta có thể tiếp tục và thực hiện nó.

75
00:04:45,340 --> 00:04:48,780
‫Điều khiển shift p mà chúng ta muốn gọi là siêu nhớ.

76
00:04:49,790 --> 00:04:53,060
‫Và chúng tôi muốn làm trò chơi đã kết thúc như vậy.

77
00:04:53,870 --> 00:05:01,770
‫Và chúng tôi muốn vượt qua trọng tâm của trò chơi kết thúc và người B là người chiến thắng và sau đó chúng tôi muốn ghi lại.

78
00:05:01,790 --> 00:05:02,810
‫Vì vậy, bạn đăng nhập.

79
00:05:02,900 --> 00:05:04,280
‫Sử dụng macro của tôi ở đó.

80
00:05:04,610 --> 00:05:07,240
‫Chúng tôi đã hoàn thành.

81
00:05:07,250 --> 00:05:10,310
‫Nó sẽ là thông báo nhật ký xuất hiện ở cuối.

82
00:05:10,310 --> 00:05:12,880
‫Vì vậy, hãy biên dịch và xem liệu nó có hoạt động hay không.

83
00:05:12,890 --> 00:05:14,540
‫Chúng ta sẽ đi đến nhật ký đầu ra.

84
00:05:14,690 --> 00:05:17,690
‫Đánh chơi, đi và bị giết.

85
00:05:17,690 --> 00:05:23,480
‫Về cơ bản, sức khỏe đang dần đi xuống và sau đó chúng ta sẽ thấy một thông báo.

86
00:05:23,480 --> 00:05:24,530
‫Chúng ta có nhận được tin nhắn không?

87
00:05:24,530 --> 00:05:24,920
‫Không.

88
00:05:24,920 --> 00:05:25,880
‫Vì vậy, chúng ta hãy xem xét.

89
00:05:25,880 --> 00:05:27,230
‫Bộ điều khiển trình phát ở đây là gì?

90
00:05:27,230 --> 00:05:32,870
‫Bộ điều khiển người chơi game bắn súng có dấu gạch dưới tiếng bíp dường như là bộ điều khiển chính xác.

91
00:05:32,870 --> 00:05:35,570
‫Chúng tôi có trò chơi ghi đè của chúng tôi đã kết thúc.

92
00:05:35,570 --> 00:05:37,250
‫Bây giờ ở đây tôi phát hiện ra một lỗi.

93
00:05:37,250 --> 00:05:42,170
‫Bây giờ đó là điều mà một số bạn có thể đã nhận thấy và đã hét vào màn hình là

94
00:05:42,170 --> 00:05:47,900
‫ở đây chúng tôi có bộ điều khiển trình phát của chúng tôi mà chúng tôi đang truyền đến và tôi đang nhầm lẫn

95
00:05:47,900 --> 00:05:49,760
‫với thực tế của người chơi -.

96
00:05:49,760 --> 00:05:57,260
‫Vì vậy, những gì chúng tôi muốn làm ở đây là chúng tôi muốn nói rằng hãy lấy bộ điều khiển của - cái đã bị giết.

97
00:05:57,260 --> 00:06:05,030
‫Vì vậy - kill dot get controller Aron để arrow get controller và sau đó chúng tôi muốn truyền nó tới bộ điều khiển player và

98
00:06:05,030 --> 00:06:08,600
‫nếu nó là null, được rồi, điều đó sẽ hoạt động.

99
00:06:08,600 --> 00:06:10,760
‫Vì vậy, chúng ta hãy tiếp tục và thử điều đó.

100
00:06:10,820 --> 00:06:12,320
‫Tiếp tục và nhấn chơi.

101
00:06:12,800 --> 00:06:14,030
‫Tự giết mình một lần nữa.

102
00:06:15,700 --> 00:06:18,940
‫Và lần này chúng tôi cũng không nhận được bất kỳ thông báo nhật ký nào.

103
00:06:18,940 --> 00:06:21,370
‫Và lần này là vì một lý do tế nhị.

104
00:06:21,490 --> 00:06:24,550
‫Đó là bởi vì chúng tôi đang tách khỏi bộ điều khiển.

105
00:06:24,640 --> 00:06:26,890
‫Trước khi chúng tôi gọi điều này - giết.

106
00:06:26,890 --> 00:06:32,740
‫Vì vậy, khi nó cố gắng có được quyền kiểm soát - đó thực sự là vô hiệu, không có quyền kiểm soát - nữa.

107
00:06:32,740 --> 00:06:38,470
‫Vì vậy, chúng tôi cần thực hiện thông báo này ngay trước khi thực hiện tách khỏi bộ điều khiển.

108
00:06:38,620 --> 00:06:42,220
‫Điều đó bao gồm việc di chuyển lên dòng nắm giữ chế độ chơi của chúng tôi.

109
00:06:42,220 --> 00:06:43,600
‫Tôi không nghĩ rằng điều đó sẽ quan trọng.

110
00:06:43,660 --> 00:06:47,200
‫Nhưng bây giờ tôi thực sự nghĩ về nó, vâng, tất nhiên là có.

111
00:06:47,200 --> 00:06:50,170
‫Vì vậy, chúng ta hãy đi vào cấp độ của chúng tôi và chơi.

112
00:06:50,500 --> 00:06:51,970
‫Hãy đi và bắn vào.

113
00:06:51,970 --> 00:06:56,940
‫Và khi điều đó được thực hiện, bạn có thể thấy rằng chúng tôi đã hoàn thành và được in như chúng tôi muốn.

114
00:06:56,950 --> 00:06:59,020
‫Vì vậy, chúng tôi đã có một vài trục trặc trên đường đi.

115
00:06:59,020 --> 00:07:01,660
‫Không phải lỗi của bạn nếu bạn không đạt được điều đó trong thử thách.

116
00:07:01,660 --> 00:07:03,730
‫Bạn đã làm mọi thứ khác cho đến thời điểm đó.

117
00:07:03,730 --> 00:07:04,990
‫Cái đó thật tuyệt.

118
00:07:04,990 --> 00:07:11,050
‫Vì vậy, hy vọng có thể bạn đã khắc phục được lỗi đó, nhưng đừng lo lắng nếu bạn gặp khó khăn với những thứ đó.

119
00:07:11,350 --> 00:07:17,890
‫Điều cuối cùng tôi muốn làm ở đây là thực sự khởi động lại trò chơi trên một bộ đếm thời gian.

120
00:07:17,980 --> 00:07:24,340
‫Bây giờ, cách chúng ta có thể làm điều này khá đơn giản vì bộ điều khiển trình phát thực sự có

121
00:07:24,340 --> 00:07:25,960
‫phương pháp khởi động lại.

122
00:07:25,960 --> 00:07:30,220
‫Vì vậy, nếu chúng tôi đi và xem xét điều này, nó phải là một mức khởi động lại.

123
00:07:30,220 --> 00:07:35,590
‫Đó là cuộc gọi mà chúng tôi muốn gọi và chúng tôi muốn thực hiện việc này vào bộ hẹn giờ.

124
00:07:35,590 --> 00:07:42,520
‫Vì vậy, chúng tôi đã sử dụng bộ hẹn giờ trước đây để thực hiện những công việc lặp lại, nhưng chúng tôi cũng có thể sử dụng nó chỉ để trì hoãn một hành

125
00:07:42,520 --> 00:07:44,050
‫động ở một số lượng nhất định.

126
00:07:44,050 --> 00:07:50,170
‫Vì vậy, tôi sẽ đi đến trình điều khiển người chơi game bắn súng H và tạo một tài sản riêng tại đây.

127
00:07:50,890 --> 00:07:56,740
‫Riêng tư có thể là tài sản của bạn được chỉnh sửa ở bất cứ đâu.

128
00:07:58,620 --> 00:07:59,160
‫Trôi nổi.

129
00:07:59,160 --> 00:08:02,940
‫Đó sẽ là độ trễ khởi động lại.

130
00:08:03,060 --> 00:08:05,760
‫Bạn có thể thấy lý do tại sao chúng tôi cần một cơ sở kế hoạch chi tiết cho việc này.

131
00:08:05,790 --> 00:08:08,400
‫Tôi sẽ đưa ra độ trễ 5/2.

132
00:08:08,610 --> 00:08:16,920
‫Sau đó, tôi sẽ chuyển sang C ++ và chúng tôi sẽ muốn thực hiện một trình quản lý bộ đếm thời gian thế giới hẹn giờ.

133
00:08:17,520 --> 00:08:19,850
‫Và sau đó chúng tôi có thể làm điều đó.

134
00:08:19,860 --> 00:08:21,870
‫Sau đó, chúng tôi cần phải bao gồm.

135
00:08:21,870 --> 00:08:27,120
‫Vì vậy, hash include và nó sẽ trở thành trình quản lý bộ đếm thời gian.

136
00:08:27,390 --> 00:08:33,210
‫H Sau đó, chúng ta sẽ có thể sử dụng toán tử DOT vì kiểu trả về ở đây là một tham chiếu và chúng ta sẽ thực

137
00:08:33,210 --> 00:08:38,160
‫hiện một bộ đếm thời gian và ở đây chúng ta cần chuyển vào một bộ điều khiển bộ đếm thời gian.

138
00:08:38,160 --> 00:08:40,590
‫Vì vậy, trong phần riêng tư, chúng ta hãy bắt đầu và tạo một phần.

139
00:08:40,590 --> 00:08:46,470
‫Vì vậy, nó sẽ là một tay cầm hẹn giờ F, tôi sẽ gọi nó là bộ hẹn giờ khởi động lại.

140
00:08:46,470 --> 00:08:51,230
‫Vì vậy, đó sẽ là xử lý mà chúng tôi chuyển vào bộ hẹn giờ đã đặt của chúng tôi.

141
00:08:51,240 --> 00:08:57,810
‫Điều tiếp theo chúng ta cần ở chữ ký thứ năm ở đây là thực sự có đối tượng mà chúng ta muốn gọi,

142
00:08:57,810 --> 00:08:59,130
‫sẽ là cái này.

143
00:08:59,460 --> 00:09:05,280
‫Và sau đó sẽ xảy ra, tôi nghĩ chỉ nên là chính phương pháp.

144
00:09:05,490 --> 00:09:08,280
‫Vì vậy, chúng ta có thể làm điều đó bằng cách thực hiện ký hiệu và.

145
00:09:08,280 --> 00:09:13,920
‫Và sau đó nó thực sự là phương thức, phương thức mức khởi động lại, mà chúng ta muốn gọi đã được xác

146
00:09:13,920 --> 00:09:16,200
‫định trên bộ điều khiển trình phát A.

147
00:09:16,200 --> 00:09:17,910
‫Vì vậy, một bộ điều khiển máy nghe nhạc.

148
00:09:19,300 --> 00:09:19,660
‫Cullen.

149
00:09:19,660 --> 00:09:27,340
‫Mức khởi động lại Cullen và sau đó chúng ta chỉ cần vượt qua độ trễ mà chúng ta đã xác định là độ trễ khởi

150
00:09:27,340 --> 00:09:28,210
‫động lại.

151
00:09:28,630 --> 00:09:35,830
‫Vì vậy, hãy làm điều đó, đặt dấu chấm phẩy ở cuối ở đó và hy vọng chúng ta sẽ tự khởi động lại

152
00:09:35,830 --> 00:09:36,800
‫sau 5 giây.

153
00:09:36,820 --> 00:09:41,650
‫Bây giờ sẽ làm cho việc thử nghiệm dễ dàng hơn một chút bằng cách mở khẩu súng trường của chúng tôi và làm cho nó chết

154
00:09:41,650 --> 00:09:42,520
‫người hơn một chút.

155
00:09:42,520 --> 00:09:48,160
‫Vì vậy, tôi sẽ chuyển sang mặc định, gây sát thương ở mức 50, vì vậy chúng tôi sẽ bị giết bằng hai phát súng.

156
00:09:48,280 --> 00:09:49,900
‫Hãy đi và chơi.

157
00:09:50,750 --> 00:09:52,250
‫Hãy tự giết chúng ta một cách nhanh chóng.

158
00:09:53,260 --> 00:10:00,460
‫Và sau 5 giây, hy vọng chúng ta sẽ khởi động lại cấp độ mà chúng ta khởi động lại và chúng ta trở lại cấp độ.

159
00:10:00,460 --> 00:10:03,130
‫Vì vậy, bộ đếm thời gian của chúng tôi đang hoạt động như chúng tôi mong đợi.

160
00:10:03,640 --> 00:10:11,410
‫Bây giờ trong các phiên bản sau, bạn sẽ thấy rằng thay vì khởi động lại, những gì bạn sẽ thấy là một thông báo lỗi giống

161
00:10:11,410 --> 00:10:17,740
‫như thế này và nói về sự cố khi di chuyển và nói điều gì đó về UUID, PID, sandbox, blah

162
00:10:17,740 --> 00:10:18,550
‫blah blah.

163
00:10:18,580 --> 00:10:23,650
‫Chà, cách chúng ta phải giải quyết vấn đề này khi chúng ta đang cố gắng khởi động lại và muốn kiểm tra

164
00:10:23,650 --> 00:10:29,890
‫xem quá trình khởi động lại của chúng ta có hoạt động hay không, chúng ta đi tới menu chấm, chấm, chấm thay vì menu phát và chúng ta

165
00:10:29,890 --> 00:10:31,920
‫phải chơi với tư cách trò chơi độc lập.

166
00:10:31,930 --> 00:10:38,110
‫Nếu, nếu bạn chơi như một trò chơi độc lập, sẽ mất một chút thời gian để khởi chạy, nhưng

167
00:10:38,110 --> 00:10:41,620
‫việc khởi động lại sẽ hoạt động như mong đợi.

168
00:10:41,620 --> 00:10:43,600
‫Và chúng tôi thấy mức được tải lại.

169
00:10:43,600 --> 00:10:46,570
‫Bây giờ, rõ ràng là không có nhiều dấu hiệu cho thấy điều này sẽ xảy ra.

170
00:10:46,570 --> 00:10:50,170
‫Vì vậy, chúng ta sẽ xem xét UI trong các bài giảng tiếp theo.

171
00:10:50,170 --> 00:10:51,010
‫Tôi sẽ gặp bạn ở đó.

