337 | | |
338 | | }}} |
339 | | |
340 | | |
341 | | |
342 | | |
343 | | |
| 337 | }}} |
| 338 | |
| 339 | The process of converting a sequence into doubles is so common that it has been included in the client as "seq->doubles". |
| 340 | |
| 341 | {{{ |
| 342 | client.core=> (defn scan-area2 [quagent radius] |
| 343 | (send-and-get quagent :radar :now [radius] |
| 344 | {} |
| 345 | (fn [prev [_ item-type & pos]] |
| 346 | (merge-with concat |
| 347 | prev |
| 348 | {item-type (list (seq->doubles pos))})))) |
| 349 | #'client.core/scan-area |
| 350 | client.core=> (scan-area :Bob 8000) |
| 351 | {"quagent_item_gold" ([375.085327 56.309933 1.374918] ... (output truncated) |
| 352 | client.core=> (pp) |
| 353 | {"quagent_item_gold" |
| 354 | ([375.085327 56.309933 1.374918] |
| 355 | [1019.278626 42.455196 0.505915] |
| 356 | [905.141357 8.130102 0.569713]), |
| 357 | "quagent_item_treasure" |
| 358 | ([572.16864 20.462269 0.901278] [697.711304 63.434952 0.739097]), |
| 359 | "info_player_deathmatch" |
| 360 | ([32.000244 -90.0 0.223811] [0.125 0.0 90.0]), |
| 361 | "player" ([768.875366 90.065201 0.0] [32.0 -90.0 0.0])} |
| 362 | nil |
| 363 | }}} |
| 364 | |
| 365 | You can now use the predefined "move" command to make the quagent walk to an item. |
| 366 | |
| 367 | {{{ |
| 368 | client.core=> (apply (partial move :Bob) (take 2 (second (get (scan-area2 :Bob 8000) "quagent_item_gold")))) |
| 369 | [] |
| 370 | }}} |