Skip to content

keelbismark/Screeps-Tutorial-JavaScript-Coding-Basics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 

Repository files navigation

Оглавление

  1. Режим симуляции
  2. Основы интерфейса и скриптинга
  3. Автоматизация работы крипов
  4. Улучшение контроллера
  5. Строительство структур
  6. Защита комнаты
  7. Что дальше?

1. Режим симуляции 🖥️

Зачем нужен:

  • Отладка кода локально.
  • Пауза/перезапуск без последствий.

Ссылки:


2. Основы интерфейса и скриптинга 🛠️

Создание первого крипа

// Консоль (одноразовый код)
Game.spawns['Spawn1'].spawnCreep([WORK, CARRY, MOVE], 'Harvester1');

Пояснение:

  • WORK — добыча энергии.
  • CARRY — перенос ресурсов.
  • MOVE — передвижение.

Автоматизация сбора энергии

// Скрипт (выполняется каждый тик)
module.exports.loop = () => {
  const creep = Game.creeps['Harvester1'];
  const source = creep.room.find(FIND_SOURCES)[0];
  
  if (creep.store.getFreeCapacity() > 0) {
    if (creep.harvest(source) === ERR_NOT_IN_RANGE) {
      creep.moveTo(source, { visualizePathStyle: { stroke: '#FFAA00' } });
    }
  } else {
    const target = creep.room.controller;
    if (creep.upgradeController(target) === ERR_NOT_IN_RANGE) {
      creep.moveTo(target);
    }
  }
};

Совет: Используйте creep.say('🚜') для визуализации действий.


3. Автоматизация работы крипов 🤖

Очистка памяти

for (const name in Memory.creeps) {
  if (!Game.creeps[name]) delete Memory.creeps[name];
}

Автоспавн сборщиков

const harvesters = _.filter(Game.creeps, c => c.memory.role === 'harvester');
if (harvesters.length < 2) {
  const newName = `Harvester_${Game.time}`;
  Game.spawns.Spawn1.spawnCreep([WORK, CARRY, MOVE], newName, {
    memory: { role: 'harvester' }
  });
}

4. Улучшение контроллера ⬆️

Модуль для улучшателя

// role.upgrader.js
const roleUpgrader = {
  run: (creep) => {
    if (creep.store[RESOURCE_ENERGY] === 0) {
      const source = creep.room.find(FIND_SOURCES)[0];
      if (creep.harvest(source) === ERR_NOT_IN_RANGE) {
        creep.moveTo(source);
      }
    } else {
      if (creep.upgradeController(creep.room.controller) === ERR_NOT_IN_RANGE) {
        creep.moveTo(creep.room.controller);
      }
    }
  }
};
module.exports = roleUpgrader;

5. Строительство структур 🏗️

Модуль для строителя

// role.builder.js
const roleBuilder = {
  run: (creep) => {
    if (creep.memory.building && creep.store[RESOURCE_ENERGY] === 0) {
      creep.memory.building = false;
      creep.say('🔄 Сбор');
    }
    if (!creep.memory.building && creep.store.getFreeCapacity() === 0) {
      creep.memory.building = true;
      creep.say('🚧 Стройка');
    }
    if (creep.memory.building) {
      const target = creep.room.find(FIND_CONSTRUCTION_SITES)[0];
      if (target) {
        if (creep.build(target) === ERR_NOT_IN_RANGE) {
          creep.moveTo(target);
        }
      }
    } else {
      const source = creep.room.find(FIND_SOURCES)[0];
      if (creep.harvest(source) === ERR_NOT_IN_RANGE) {
        creep.moveTo(source);
      }
    }
  }
};
module.exports = roleBuilder;

6. Защита комнаты 🛡️

Башня: атака и ремонт

const tower = Game.getObjectById('TOWER_ID');
if (tower) {
  const enemy = tower.pos.findClosestByRange(FIND_HOSTILE_CREEPS);
  if (enemy) tower.attack(enemy);
  
  const damagedWall = tower.pos.findClosestByRange(FIND_STRUCTURES, {
    filter: s => s.hits < s.hitsMax && s.structureType === STRUCTURE_WALL
  });
  if (damagedWall) tower.repair(damagedWall);
}

7. Что дальше? 🚀

Чек-лист для развития:

  • Построить 5 расширений.
  • Создать крипов с улучшенным телом (например, [WORK,WORK,CARRY,MOVE,MOVE]).
  • Настроить автоматическую защиту от NPC-вторжений.
  • Освоить межкомнатные перемещения.

Полезные ресурсы:


Успехов в освоении Screeps! 🌟
Ваша колония ждет великих свершений.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published