Тут набросок кодов для торговца:
//show_json(character)
//show_json(G.monsters.squig)
//show_json(G.maps["main"].monsters)
//show_json(G.maps["main"].npcs)
//show_json(get_target())
/* eslint-disable no-undef */
const ITEM_TO_BUY_AND_UPGRADE = "helmet"
const NUM_TO_KEEP = 4
const NUM_TO_BUY = 5 // If this is less than NUM_TO_KEEP, we won't buy anything.
const LEVEL_TO_UPGRADE_TO = 8
// список для продажи через запятую
const itemsToSell = [
"cclaw",
"whiteegg",
"ringsj","hpamulet","hpbelt",
"wshoes", "wgloves","helmet"
]
// автопокупка вещей с ценой меньше рыночной
setInterval(function(){
buyCheapStuff()
sellAll()
loot()
},1000/4);
function sellAll()
{
// продажа не нужного
let tmp=find_npc("newupgrade")
//log(tmp)
if(distance(character,tmp) < 500)
{
for (let i = 0; i < character.isize; i++)
{
const item = character.items[i]
if (!item) continue // There is no item in this slot
if (!itemsToSell.includes(item.name)) continue // This item is not on our to-sell list
sell(i);
}
}
}
function buyCheapStuff(){
for (i in parent.entities){
let otherPlayer = parent.entities[i];
if(otherPlayer.player
&& otherPlayer.ctype === "merchant"
&& otherPlayer.slots
&& distance(character, otherPlayer) < G.skills.mluck.range){
let tradeSlots = Object.keys(otherPlayer.slots).filter(tradeSlot => tradeSlot.includes("trade"));
tradeSlots.forEach(tradeSlot => {
if(otherPlayer.slots[tradeSlot]
&& otherPlayer.slots[tradeSlot].price < item_value(otherPlayer.slots[tradeSlot])
&& character.gold > otherPlayer.slots[tradeSlot].price){
trade_buy(otherPlayer, tradeSlot);
log("Bought " + otherPlayer.slots[tradeSlot].name + " from player: " + otherPlayer.name)
}
});
}
}
}
/*
async function buyAndUpgradeLoop() {
try {
//** Buy items if we need
let numItems = 0
for (let i = 0; i < character.isize; i++) {
const item = character.items[i]
if (!item) continue // No item in this slot
if (item.name !== ITEM_TO_BUY_AND_UPGRADE) continue // Not the item we're looking for
numItems += 1
}
if (numItems < NUM_TO_BUY) {
await buy(ITEM_TO_BUY_AND_UPGRADE)
buyAndUpgradeLoop()
return
}
if (numItems <= NUM_TO_KEEP) return // No more to upgrade
//** Find the lowest level item, we'll upgrade that one
let lowestLevel = Number.MAX_SAFE_INTEGER
let lowestLevelPosition
for (let i = 0; i < character.isize; i++) {
const item = character.items[i]
if (!item) continue // No item in this slot
if (item.name == ITEM_TO_BUY_AND_UPGRADE) {
// This is an item we want to upgrade!
if (item.level < lowestLevel) {
lowestLevel = item.level
lowestLevelPosition = i
}
}
}
// Don't upgrade if it's already the level we want, or there's no items to upgrade
if (lowestLevel < LEVEL_TO_UPGRADE_TO) {
//** Find the scroll that corresponds with the grade of the item
const grade = item_grade(character.items[lowestLevelPosition])
const scroll = `scroll${grade}`
//** Buy a scroll if we don't have one
let scrollPosition = locate_item(scroll)
if (scrollPosition == -1) scrollPosition = (await buy(scroll)).num
//** Speed up the upgrade if we can
if (can_use("massproduction")) use_skill("massproduction")
//** Upgrade!
await upgrade(lowestLevelPosition, scrollPosition)
}
} catch (e) {
console.error(e)
}
buyAndUpgradeLoop()
}
buyAndUpgradeLoop()
// Move to a spot where we can buy scrolls and equipment, and upgrade.
smart_move({ map: "main", x: -225, y: -125 })
*/