Chuyển tới nội dung chính

If (Nếu)

Ra quyết định và đưa flow xuống một đường khác.

If cho năm cách viết cùng một loại điều kiện, nên gần như mọi nhánh "nếu thế này, làm thế kia" là một node. Tất cả phân giải qua một engine biểu thức chung, nên chế độ không-code và nâng cao không bao giờ vênh nhau.

Mục đích

Rẽ flow theo điều kiện — so giá trị, biểu thức thô, switch nhiều đường, khớp chữ OCR, hay kết cục thật của node phía trên.

Khi nào dùng

  • Chọn giữa hai đường theo một biến.
  • Điều phối sang một trong nhiều routine (switch/case).
  • Phản ứng với thứ OCR đọc được.
  • Phản ứng với việc một phát hiện sớm hơn có thấy gì không.

Khi nào không dùng

  • Rẽ ngay trên phát hiện sắp chạy. Find Image đã có port Success và Failure — If sau nó là thừa.
  • Chọn đường ngẫu nhiên — dùng Branch.
  • Lặp lại thứ gì — dùng Loop.

Năm chế độ điều kiện

Chế độBạn viếtPort
Compare ValuesBuilder không-code: giá trị, toán tử, giá trịTrue / False
ExpressionCông thức {{}} thôTrue / False
Multiple BranchesMột biểu thức mỗi nhánh (switch/case)case1caseN, Default
Match Text (OCR)Danh sách chuỗi ứng viên và chế độ khớpMatch / No match
Node outcomeNode phía trên và kết cục ngôn ngữ đời thườngTrue / False

Compare Values

Mỗi dòng là Value A, toán tử, Value B. Mỗi vế là biến hay giá trị cố định, và áp được một bước số học trước khi so — nên CASTLE_X > CURRENT_X - 5 diễn tả được không cần công thức.

Toán tử: =, !=, >, >=, <, <=, Contains, Not Contains, Starts With, Ends With, Is Empty, Is Not Empty.

Các dòng gộp bằng một AND (tất cả đạt) hoặc OR (bất kỳ đạt).

Expression

Biểu thức thô phải ra boolean:

{{gem_farmed_trip}} >= {{max_gem_per_trip}}
{{slot_1_current}} == {{slot_1_max}} || {{slot_2_current}} == {{slot_2_max}}
Biểu thức phải là boolean

{{gold}} là con số, không phải điều kiện. {{gold}} > 100 là điều kiện. Biểu thức không-boolean rẽ Fatal.

Multiple Branches (switch/case)

Danh sách có thứ tự tối đa 20 nhánh, mỗi nhánh một biểu thức cùng nhãn tùy chọn. Nhánh đầu tiên có biểu thức đúng lấy port Case của nó; không nhánh nào khớp thì Default.

Nhánh thử từ trên xuống, nên đặt điều kiện đặc hiệu nhất trước.

Match Text (OCR)

Đọc chữ từ node Read Text phía trên (hoặc biểu thức) rồi thử với danh sách tối đa 500 giá trị ứng viên dưới một chế độ khớp: Contains, Exact, Starts With, Ends With, Regex, hay Fuzzy. Bất kỳ giá trị nào khớp rẽ Match.

Trần 500 nghĩa là một node sàng được tập lớn thông điệp đã biết cùng lúc.

Node outcome

Kiểm kết quả thực thi thật của node phía trên qua kết cục ngôn ngữ đời thường, thay vì biểu thức thô trên tên trường nội bộ.

Loại node nguồnKết cục
Find ImageFound / Not found
Check RegionPassed / Not passed
Read TextHas text / No text
IfCondition true / false
CaptchaCaptcha solved / unsolved
Còn lạiSucceeded / Failed

Đây là cách rẽ trên một phát hiện xảy ra nhiều bước trước, không cần giữ biến đồng bộ.

Thiết lập

Thiết lậpKiểuKhoảngGhi chú
Condition typelựa chọnnăm chế độ trênQuyết các trường khác hiện ra
Conditionsdanh sách1–50 dòngChế độ Compare Values
Logiclựa chọnand / orCách các dòng gộp
Expressionstring≤ 1000 ký tựChế độ Expression
Branchesdanh sách1–20Chế độ Multiple Branches
Text sourcetham chiếu node hoặc biểu thứcChế độ Match Text
Match modelựa chọncontains, exact, startsWith, endsWith, regex, fuzzyChế độ Match Text
Valuesdanh sách1–500Ứng viên Match Text
Case sensitivebooleanChế độ Match Text
Fuzzy thresholdnumber0–1Độ ngặt khớp mờ
Source node + Outcometham chiếu node + lựa chọnChế độ Node outcome

Port

Port tùy chế độ:

PortChế độBắt buộc
True / FalseCompare Values, Expression, Node outcomeCả hai bắt buộc
Match / No matchMatch TextTùy chọn — đường không nối kết thúc nhẹ nhàng
case1…caseN / DefaultMultiple BranchesTùy chọn
FatalTất cảKhông bao giờ được đi
Vì sao có chế độ bắt buộc cả hai port, có chế độ không

Compare/Expression/Node-outcome là quyết định nhị phân thật — bỏ trống một vế gần như luôn là lỗi, nên kiểm tra bắt buộc cả hai.

Một case của switch hay nhánh match-text thì khác: chỉ nối các case bạn quan tâm là lựa chọn soạn thảo hợp lệ, nên case không nối đơn giản kết thúc đường đó.

Ví dụ cơ bản

Dừng khi đạt số đích:

  • Condition type: Expression
  • Expression: {{items_done}} >= {{max_per_trip}}
  • TrueStop: success
  • False → đi tiếp

Ví dụ thực tế — điều phối bằng switch

Một biến giữ hướng đã chọn; một node rẽ bốn chuyển động:

Luôn cho switch một Default. Nó là nhánh hứng ca bạn chưa nghĩ tới.

Ví dụ nâng cao — rẽ trên phát hiện sớm hơn

Mười node trước, một Find Image kiểm popup có hiện không. Giờ bạn cần câu trả lời đó:

  • Condition type: Node outcome
  • Source node: Find Image đó
  • Outcome: Not found
  • True → bỏ qua routine đóng
  • False → đóng popup

Không biến nào phải nuôi, không rủi ro nó lệch khỏi kết quả thật.

Best practices

  • Dùng Compare Values trừ khi cần công thức. Không cần cú pháp và picker hiện kiểu biến.
  • Chọn biến từ dropdown thay vì gõ tên — nó hiện kiểu, chặn bug "so chữ với số".
  • Luôn thêm Default cho switch.
  • Xếp nhánh switch đặc hiệu nhất trước.
  • Ưu tiên Node outcome hơn nhân đôi kết quả vào biến.
  • Nối cả True lẫn False. Chúng bắt buộc có lý do.

Ghi chú hiệu năng

  • If là tính toán thuần — không chụp hình, không input. Gần như miễn phí.
  • Đừng bao giờ tái cấu trúc đồ thị để "bớt If"; độ dễ đọc đáng giá hơn nhiều nanogiây liên quan.
  • Match Text sàng 500 ứng viên vẫn rẻ so với một lần OCR, nên dồn ứng viên vào một node là đúng.
  • Node outcome đọc kết quả đã ghi; nó không chạy lại node nguồn.

Ghi chú bộ nhớ

  • Việc định giá không cấp phát gì đáng kể.
  • Chế độ node-outcome đọc từ nodeResults của lần chạy, vốn đã giữ kết quả mọi node thực thi — nên nó không thêm lưu trữ nào.

Lỗi thường gặp

LỗiHậu quảCách sửa
Bỏ trống FalseLỗi kiểm tra (Compare/Expression/Outcome)Nối cả hai
Biểu thức không-booleanFatalSo sánh nó: {{gold}} > 100
Node outcome trước khi nguồn chạyFatalXếp đúng thứ tự cùng nhánh
So chữ OCR như sốPhép so âm thầm hỏngKiểu Number ở Read Text, hoặc convert bằng Variable
Switch không DefaultInput không khớp kết thúc đườngThêm Default
Nhánh switch sai thứ tựCa chung che ca riêngĐặc hiệu nhất trước

Khắc phục sự cố

Node rẽ Fatal. Điều kiện rỗng, không-boolean, tham chiếu kết cục lạ, hoặc node nguồn chưa thực thi trên nhánh này.

Phép so số không bao giờ nổ. Giá trị là chuỗi. Đặt kiểu Read TextNumber.

Case switch sai được lấy. Nhánh định giá trên xuống, cái đúng đầu tiên thắng. Xếp ca riêng trước ca chung.

Nhánh Match Text không bao giờ chạy. Kiểm case sensitivity và chế độ khớp. Chế độ fuzzy còn tùy threshold.

FAQ

Tối đa mấy nhánh switch? 20.

Tối đa mấy ứng viên Match Text? 500.

Trộn AND và OR trong Compare Values được không? Một node thì không — các dòng chung một AND/OR. Dùng Expression, hoặc nối hai If.

Gỡ một nhánh switch có vỡ dây không? Port cuối bị gỡ và editor cắt edge mồ côi của nó.

Node liên quan

  • Branch — chọn ngẫu nhiên thay vì điều kiện
  • Variable — tính giá trị bạn so
  • Read Text — cấp chữ cho chế độ Match Text
  • Find Image — cấp kết cục cho chế độ Node outcome
  • Loop — lặp thay vì quyết một lần

Trang liên quan