• Добро пожаловать на сайт - Forumteam.wiki !

    Что бы просматривать темы форума необходимо зарегестрироваться или войти в свой аккаунт.

    Группа в телеграме (подпишитесь, что бы не потерять нас) - ForumTeam Chat [Подписатся]
    Связь с администратором - @ftmadmin

В Steam стартовала большая летняя распродажа Steam Intergalactic Summer Sale

Redman

<FORUMTEAM>
Команда форума
Регистрация
13.11.17
Сообщения
13.343
Реакции
8.371
Баллы
1.200
FTC
203¢

Конец недели встречает нас радостным известием о старте летней распродажи Steam Intergalactic Summer Sale, которая продлится с 21 июня по 5 июля. Помимо традиционных скидок на игры в сервисе также можно будет получить игры в подарок, играя в Summer Saliens Game.

В частности, скидки действуют на такие игры и франшизы:
  • Player Unknown’s Battlegrounds — 33%
  • Fallout Franchise — до 50%
  • Dead Cells — 40%
  • Grim Dawn — 70%
  • Everspace — 67%
  • Tyranny — 66%
  • Dark and Light — 50% и т.д.
Полный список скидок доступен на главной странице сервиса Steam, просто заходите и изучайте ассортимент.

Steam-Intergalactic-Summer-Sale-1-770x444.png

Steam-Intergalactic-Summer-Sale-2-770x446.png


Steam-Intergalactic-Summer-Sale-3-770x300.png

Steam-Intergalactic-Summer-Sale-4-770x450.png

Steam-Intergalactic-Summer-Sale-5-770x446.png

Steam-Intergalactic-Summer-Sale-6-770x446.png

Steam-Intergalactic-Summer-Sale-7-770x332.png

В игре Summer Saliens Game вам предстоит сразиться с инопланетянином Златошлемом, который прилетел на нашу планету со страшной миссией: уничтожить все игры. После того как сообщество Steam уничтожило этого врага, создав космические червоточины, сквозь них на Землю хлынули унылоиды…



Ну и дальше в том же духе, если будете играть (ссылка), наверняка разберетесь самостоятельно.

Источник: Steam
 

Mr.Heisenberg

Эксперт
Эксперт
Регистрация
19.05.18
Сообщения
639
Реакции
442
Баллы
800
FTC
Небольшое дополнение к твоей теме @redman, вот скрипт для автоматической игры в Saliens
(function(context) {
const pixi = gApp;
const GAME = gGame;
const SetMouse = function SetMouse(x, y) {
pixi.renderer.plugins.interaction.mouse.global.x = x;
pixi.renderer.plugins.interaction.mouse.global.y = y;
}
const EnemyManager = function EnemyManager() {
return GAME.m_State.m_EnemyManager;
}
const AttackManager = function AttackManager() {
return GAME.m_State.m_AttackManager;
}
// Let's challenge ourselves to be human here!
const CLICKS_PER_SECOND = 10;
const InGame = function InGame() {
return GAME.m_State.m_bRunning;
}
const WORST_SCORE = -1 / 0;
const START_POS = pixi.renderer.width;
const EnemySpeed = function EnemySpeed(enemy) {
return enemy.m_Sprite.vx;
}
const EnemyDistance = function EnemyDistance(enemy) {
return (enemy.m_Sprite.x - k_nDamagePointx) / (START_POS - k_nDamagePointx);
}
class Attack {
constructor() {
this.nextAttackDelta = 0;
}
shouldAttack(delta) {
throw new Error("shouldAttack not implemented");
}
process(enemies) {
throw new Error("process not implemented");
}
}
// Basic clicking attack, attack closest
class ClickAttack extends Attack {
shouldAttack(delta) {
this.nextAttackDelta -= delta;
return this.nextAttackDelta <= 0;;
}
score(enemy) {
if (enemy.m_bDead)
return WORST_SCORE;
return 1 - EnemyDistance(enemy);
}
process(enemies) {
let target, target_score = WORST_SCORE;
enemies.forEach((enemy) => {
if (!enemy.m_Sprite.visible)
return;
let now_score = this.score(enemy);
if (now_score > target_score) {
target = enemy, target_score = now_score;
}
});
if (target)
this.attack(target);
}
attack(enemy) {
enemy.m_Sprite.click();
this.nextAttackDelta = 1 / CLICKS_PER_SECOND;
}
}
// the '1' button (SlimeAttack PsychicAttack BeastAttack - depends on body type of your salien)
class SpecialAttack extends Attack {
getCurrent() {
if (gSalien.m_BodyType == "slime")
return "slimeattack";
else if (gSalien.m_BodyType == "beast")
return "beastattack";
else
return "psychicattack";
}
getData() {
return AttackManager().m_AttackData[this.getCurrent()];
}
shouldAttack(delta) {
let Manager = AttackManager().m_mapCooldowns.get(this.getCurrent());
let lastUsed = Manager.m_rtAttackLastUsed;
let canAttack = Manager.BAttack();
Manager.m_rtAttackLastUsed = lastUsed;
return canAttack
}
score(enemy) {
if (enemy.m_bDead)
return WORST_SCORE;
return enemy.m_nHealth;
}
process(enemies) {
let target, target_score = WORST_SCORE;
enemies.forEach((enemy) => {
if (!enemy.m_Sprite.visible)
return;
let now_score = this.score(enemy);
if (now_score > target_score) {
target = enemy, target_score = now_score;
}
});
if (target)
this.attack(target.m_Sprite.x, target.m_Sprite.y);
}
attack(x, y) {
SetMouse(x, y)
AttackManager().m_mapKeyCodeToAttacks.get(this.getData().keycode)()
}
}
let attacks = [
new ClickAttack(),
new SpecialAttack()
]
if (context.BOT_FUNCTION) {
pixi.ticker.remove(context.BOT_FUNCTION);
context.BOT_FUNCTION = undefined;
}
context.BOT_FUNCTION = function ticker(delta) {
delta /= 100;
if (!InGame()) {
return;
}
let state = EnemyManager();
let enemies = state.m_rgEnemies;
for (let attack of attacks)
if (attack.shouldAttack(delta))
attack.process(enemies);
}
pixi.ticker.add(context.BOT_FUNCTION);
})(window);
Нажмите f12 во время игры, выберите вкладку console и скопируйте содержимое в ней, не забудьте нажать enter)) ,дабы не было вылетов, играть нужно в отдельном окне не сворачивая его.
 
Сверху Снизу