NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Bot for SalientGame // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author You // @match https://steamcommunity.com/saliengame/play/ // @grant none // @license MIT // ==/UserScript== window.onload = function() { CBattleSelectionState.prototype.OnLoadComplete = function(loader, resources) { //сonsole.log("CBattleSelectionState::OnLoadComplete()"); if(null == gSalien) { gSalien = new CSalien(resources); } var instance = this; this.m_Background = new PIXI.Sprite.fromImage( 'planet_select_bg' ); this.m_Background.width = gApp.screen.width; this.m_Background.height = gApp.screen.height; this.m_GridContainer = new PIXI.Container(); this.m_GridContainer.x = 408; this.m_GridContainer.y = 102; const gridBgHeight = 648; this.m_GridBox = new CUIBox(854, gridBgHeight); this.m_GridBox.SetTitleHeight(44); var titleStyle = jQuery.extend({}, k_TextStyleBold); titleStyle.fontSize = 20; this.m_GridBox.SetTitleStyle(titleStyle); this.m_GridBox.SetTitleText( this.m_PlanetData.state.name.toUpperCase() ); this.m_GridBox.x = -24; this.m_GridBox.y = -64; this.m_GridContainer.addChild(this.m_GridBox); this.m_MapImage = new PIXI.Sprite.fromImage( 'map_bg_' + instance.m_PlanetData.id ); this.m_GridContainer.addChild(this.m_MapImage); // initialize a grid the user can click on this.m_Grid = new CBattleSelect(resources, this.m_GridContainer); this.m_Grid.click = function(tileX, tileY) { var unPlanetID = instance.m_unPlanetID; var zoneIdx = _GetTileIdx( tileX, tileY ); if ( instance.m_PlanetData.zones[zoneIdx].captured ) { return; } gServer.JoinZone( zoneIdx, function ( results ) { gGame.ChangeState( new CBattleState( instance.m_PlanetData, zoneIdx ) ); }, GameLoadError ); }; this.m_RewardsContainer = new PIXI.Container(); this.m_RewardsContainer.x = 256; this.m_RewardsContainer.y = this.m_GridBox.y + gridBgHeight - 55; this.m_PossibleRewardsLabel = new PIXI.Text('Возможные награды:'.toUpperCase()); this.m_PossibleRewardsLabel.style = { fontFamily: k_FontType, fontSize: 12, fill: "white", fontWeight: 'bold', align: 'center', }; this.m_PossibleRewardsLabel.anchor.set( 0.5, 0.5 ); this.m_RewardsContainer.addChild(this.m_PossibleRewardsLabel); // show our game rewards for(var idx = 0; idx < this.m_PlanetData.giveaway_apps.length; idx++) { const boxScale = 0.80; var appId = this.m_PlanetData.giveaway_apps[idx]; var sprite = new PIXI.Sprite.fromImage('app_' + appId); sprite.x = idx * (k_GameBoxW * boxScale + k_GameBoxPadding); sprite.y = 12; sprite.width = k_GameBoxW * boxScale; sprite.height = k_GameBoxH * boxScale; sprite.interactive = true; sprite.buttonMode = true; sprite.appid = appId; sprite.click = function() { window.open( 'https://store.steampowered.com/app/'+this.appid, '_blank' ); }; this.m_RewardsContainer.addChild(sprite); } this.m_GridContainer.addChild(this.m_RewardsContainer); this.m_PossibleRewardsLabel.x = ( this.m_RewardsContainer.width / 2 ) - 40; this.m_RewardCountdown = new PIXI.Text( '' ); this.m_RewardCountdown.style = { fontFamily: k_FontType, fontSize: 14, fill: "white", fontWeight: 'bolder', align: 'center', }; this.m_RewardCountdown.anchor.set( 0.5, 0.5 ); this.m_RewardCountdown.x = this.m_PossibleRewardsLabel.x; this.m_RewardCountdown.y = this.m_PossibleRewardsLabel.y - 18; this.m_RewardsContainer.addChild( this.m_RewardCountdown ); this.m_rtPlanetCountUp = 0; gServer.GetPlayerInfo( function(results){ gPlayerInfo = results.response; instance.m_rtPlanetCountUp = Date.now(); var nSecondsOnPlanet = gPlayerInfo.time_on_planet; var strTime = PadZerosLeft( Math.floor( nSecondsOnPlanet / 3600 ), 2 ) + ':' + PadZerosLeft( Math.floor( ( nSecondsOnPlanet % 3600 ) / 60 ), 2 ) + ':' + PadZerosLeft( nSecondsOnPlanet % 60, 2 ); instance.m_RewardCountdown.text = 'Проведённое на планете время: '.toUpperCase() + strTime; }, function() {} ); // add button this.m_LeaveButton = new CUIButton( 134, 34, 'Покинуть планету'.toUpperCase() ); this.m_LeaveButton.x = 0; this.m_LeaveButton.y = this.m_GridBox.y + gridBgHeight - 55; this.m_LeaveButton.click = function(btn) { gAudioManager.PlaySound( 'ui_select_backwards' ); gServer.LeaveGameInstance( instance.m_PlanetData.id, function() { gGame.ChangeState( new CPlanetSelectionState() ); } ); }; this.m_GridContainer.addChild(this.m_LeaveButton); var nEasy = 0; var nMedium = 0; var nHard = 0; //var nBoss = 0; this.m_PlanetData.zones.forEach( function( zone ) { if ( zone.captured ) return; if ( zone.difficulty == 1 ) ++nEasy; else if ( zone.difficulty == 2 ) ++nMedium; else if ( zone.difficulty == 3 ) ++nHard; }); this.m_ZonesRemainingBox = new PIXI.Container(); this.m_ZonesRemainingBox.x = 660; this.m_ZonesRemainingBox.y = 524; this.m_GridContainer.addChild(this.m_ZonesRemainingBox); this.m_EnemiesRemainingText = new PIXI.Text( 'Вражеских участков:'.toUpperCase() ); this.m_EnemiesRemainingText.style = { fontFamily: k_FontType, fontSize: 10, fill: "white", fontWeight: 'bold', align: 'left', }; this.m_EnemiesRemainingText.y = -16; this.m_EnemiesRemainingText.x = -20; this.m_ZonesRemainingBox.addChild(this.m_EnemiesRemainingText); this.m_EasySprite = new PIXI.Sprite.fromImage( 'easy_difficulty' ); this.m_EasySprite.scale.set( 0.1, 0.1 ); this.m_EasyText = new PIXI.Text( 'x' + nEasy ); this.m_EasyText.x = this.m_EasySprite.x + this.m_EasySprite.width / 2; this.m_EasyText.y = this.m_EasySprite.height; this.m_EasyText.style = k_TextStyleZoneRemaining; this.m_ZonesRemainingBox.addChild( this.m_EasyText ); this.m_ZonesRemainingBox.addChild( this.m_EasySprite ); this.m_MediumSprite = new PIXI.Sprite.fromImage( 'medium_difficulty' ); this.m_MediumSprite.scale.set( 0.1, 0.1 ); this.m_MediumSprite.x = this.m_EasySprite.x + this.m_EasySprite.width + k_GameBoxPadding; this.m_MediumText = new PIXI.Text( 'x' + nMedium ); this.m_MediumText.x = this.m_MediumSprite.x + this.m_MediumSprite.width / 2; this.m_MediumText.y = this.m_MediumSprite.height; this.m_MediumText.style = k_TextStyleZoneRemaining; this.m_ZonesRemainingBox.addChild( this.m_MediumText ); this.m_ZonesRemainingBox.addChild( this.m_MediumSprite ); this.m_HardSprite = new PIXI.Sprite.fromImage( 'hard_difficulty' ); this.m_HardSprite.scale.set( 0.1, 0.1 ); this.m_HardSprite.x = this.m_MediumSprite.x + this.m_MediumSprite.width + k_GameBoxPadding; this.m_HardText = new PIXI.Text( 'x' + nHard ); this.m_HardText.x = this.m_HardSprite.x + this.m_HardSprite.width / 2; this.m_HardText.y = this.m_HardSprite.height; this.m_HardText.style = k_TextStyleZoneRemaining; this.m_ZonesRemainingBox.addChild( this.m_HardText ); this.m_ZonesRemainingBox.addChild( this.m_HardSprite ); for ( var i = 0; i < k_NumMapTilesW; ++i ) { for ( var j = 0; j < k_NumMapTilesH; ++j ) { var idx = _GetTileIdx( i, j ); var zone = this.m_PlanetData.zones[idx]; var bBoss = false; if ( zone.type == 4 ) { bBoss = true; } var bCaptured = false; if ( zone.captured !== undefined && zone.captured == true ) { bCaptured = true; } var difficulty = zone.difficulty; var clanavatar = null; var clanurl = null; if ( zone.leader !== undefined ) { clanurl = zone.leader.url; clanavatar = 'clanavatar_' + zone.leader.accountid; } var progress = 0.0; if ( zone.capture_progress !== undefined ) { progress = zone.capture_progress; } var clans = []; if ( zone.top_clans !== undefined ) { clans = zone.top_clans; } var params = { boss : bBoss, captured : bCaptured, difficulty : difficulty, clanurl : clanurl, clanavatar : clanavatar, progress:progress, clans:clans }; this.m_Grid.SetTile( i, j, params ); } } this.m_MapImage.width = this.m_Grid.width; this.m_MapImage.height = this.m_Grid.height; gApp.stage.addChild( this.m_Background ); this.m_LogoBG = new PIXI.Sprite.fromImage( 'logo_bg' ); gApp.stage.addChild(this.m_LogoBG); this.m_Logo = new PIXI.Sprite.fromImage( 'logo' ); this.m_Logo.x = 33; this.m_Logo.y = 17; gApp.stage.addChild(this.m_Logo); this.m_Elapsed = 0; this.m_Ship = new PIXI.Sprite.fromImage( 'ship' ); this.m_Ship.x = -8; this.m_Ship.y = k_ScreenHeight - this.m_Ship.height + 20; gApp.stage.addChild(this.m_Ship); this.m_ShipFlag = new PIXI.Sprite.fromImage( 'ship_flag' ); this.m_ShipFlag.x = 84; this.m_ShipFlag.y = 2; this.m_ShipFlag.interactive = true; this.m_ShipFlag.buttonMode = true; this.m_ShipFlag.click = function() { ShowRepresentGroupDialog( function( groupid, strAvatarHash ) { gPlayerInfo.clan_info = {}; gPlayerInfo.clan_info.accountid = groupid; gPlayerInfo.clan_info.avatar = strAvatarHash; gGame.ChangeState( new CBattleSelectionState( instance.m_unPlanetID ) ); } ); }; this.m_Ship.addChild(this.m_ShipFlag); if ( gPlayerInfo.clan_info !== undefined ) { this.m_ShipFlagClan = new PIXI.Sprite.fromImage( 'clanavatar_' + gPlayerInfo.clan_info.accountid ); this.m_ShipFlagClan.x = this.m_ShipFlag.x + 32; this.m_ShipFlagClan.y = this.m_ShipFlag.y + 12; this.m_Ship.addChild(this.m_ShipFlagClan); } // add the salien to the top gSalien.position.set(98, 386); gSalien.scale.set(0.13, 0.13); this.m_Ship.addChild(gSalien); // our info! this.m_SalienInfoBox = new CSalienInfoBox(); this.m_SalienInfoBox.x = 12; this.m_SalienInfoBox.y = k_ScreenHeight - 72; gApp.stage.addChild(this.m_SalienInfoBox); gApp.stage.addChild( this.m_GridContainer ); // button to customize the salien this.m_CustomizeButton = CreateCustomizeButton(220, 300); this.m_CustomizeButton.y = k_ScreenHeight - 320; gApp.stage.addChild(this.m_CustomizeButton); gAudioManager.PlayMusic( 'galaxy_music', true ); this.m_AudioIndicator = new PIXI.Sprite.fromImage( 'sound_toggle' ); this.m_AudioIndicator.x = k_ScreenWidth - this.m_AudioIndicator.width - 10; this.m_AudioIndicator.y = k_ScreenHeight - this.m_AudioIndicator.height - 10; this.m_AudioIndicator.alpha = gAudioManager.m_Muted ? 0.3 : 1.0; this.m_AudioIndicator.interactive = true; this.m_AudioIndicator.buttonMode = true; this.m_AudioIndicator.click = function() { gAudioManager.ToggleMute(); this.alpha = gAudioManager.m_Muted ? 0.3 : 1.0; }; gApp.stage.addChild( this.m_AudioIndicator ); for (var a in this.m_Grid.m_Tiles) { var tile = this.m_Grid.m_Tiles[a]; if (!tile.Info || tile.Info.captured) continue; var posX = parseInt(tile.x / this.m_Grid.m_TileSizeX); var posY = parseInt(tile.y / this.m_Grid.m_TileSizeY); gGame.m_State.m_Grid.click(posX, posY); break; } // gGame.m_State this.m_Grid.m_Tiles.forEach(function (tile) { if (!tile.Info || tile.Info.captured) return; var pos = tile.transform.position; console.log(pos); instance.m_Grid.click(pos._x + 5, pos._y + 5); }); }; CBattleState.prototype.RenderVictoryScreen = function( result ) { gApp.renderer.plugins.interaction.cursorStyles.default = 'inherit'; gApp.renderer.plugins.interaction.cursorStyles.pointer = 'pointer'; var instance = this; this.m_VictoryScreen = new PIXI.Container(); this.m_VictoryScreen.x = 375; this.m_VictoryScreen.y = 140; var victoryBackground = new PIXI.Graphics(); victoryBackground.beginFill( 0x000000, 1.0 ); victoryBackground.drawRect( 0, 0, 545, 405 ); victoryBackground.endFill(); this.m_VictoryScreen.addChild( victoryBackground ); var continueButton = new PIXI.Graphics(); continueButton.beginFill( k_UIWhite, 1.0 ); continueButton.drawRect( 0, 0, 230, 40 ); continueButton.endFill(); this.m_VictoryScreen.addChild( continueButton ); continueButton.x = 155; continueButton.y = 300; continueButton.interactive = true; continueButton.buttonMode = true; continueButton.click = function () { instance.m_VictoryScreen.visible = false; if ( continueButton.result.new_level > continueButton.result.old_level ) { instance.RenderLevelUpScreen( continueButton.result ); } else { gGame.ChangeState( new CBattleSelectionState( instance.m_PlanetData.id ) ); } }; var continueText = new PIXI.Text( 'Продолжить'.toUpperCase() ); continueText.style = { fontFamily: k_FontType, fontSize: 18, fontWeight: 'bold', fill: 'black', align: 'center', }; continueButton.addChild( continueText ); continueText.anchor.set( 0.5, 0.5 ); continueText.x = 115; continueText.y = 20; var reportingScoreText = new PIXI.Text( 'Отправляем ваш счёт командованию стимопланетян...'.toUpperCase() ); reportingScoreText.style = { fontFamily: k_FontType, fontSize: 18, fontWeight: 'bold', fill: 'white', align: 'center', }; reportingScoreText.anchor.set( 0.5, 0.5 ); reportingScoreText.x = victoryBackground.width / 2; reportingScoreText.y = 300; this.m_VictoryScreen.addChild( reportingScoreText ); continueButton.visible = false; var victoryText = new PIXI.Text( 'Битва завершена!'.toUpperCase() ); victoryText.style = { fontFamily: k_FontType, fontSize: 48, fontWeight: 'bold', fill: 'white', align: 'center', }; victoryText.anchor.set( 0.5, 0.5 ); victoryText.x = victoryBackground.width / 2; victoryText.y = 100; this.m_VictoryScreen.addChild( victoryText ); var planetVictoryText = new PIXI.Text( ' '.toUpperCase() + this.m_PlanetData.state.name ); planetVictoryText.style = { fontFamily: k_FontType, fontSize: 16, fontWeight: 'bold', fill: 'white', align: 'center', }; planetVictoryText.anchor.set( 0.5, 0.5 ); planetVictoryText.x = victoryText.x; planetVictoryText.y = victoryText.y + ( victoryText.height / 2 ) + 5; this.m_VictoryScreen.addChild( planetVictoryText ); var enemiesVanquishedText = new PIXI.Text( 'Врагов повержено: ' + this.m_EnemyManager.m_nDefeatedEnemies + ' ' ); enemiesVanquishedText.style = { fontFamily: k_FontType, fontSize: 24, fill: 'white', align: 'center', }; enemiesVanquishedText.anchor.set( 0.5, 0.5 ); enemiesVanquishedText.x = victoryText.x; enemiesVanquishedText.y = planetVictoryText.y + ( planetVictoryText.height / 2 ) + 40; this.m_VictoryScreen.addChild( enemiesVanquishedText ); var victoryScoreText = new PIXI.Text( 'Итоговый счёт: ' + this.m_Score ); victoryScoreText.style = { fontFamily: k_FontType, fontSize: 24, fill: 'white', align: 'center', }; victoryScoreText.anchor.set( 0.5, 0.5 ); victoryScoreText.x = victoryText.x; victoryScoreText.y = enemiesVanquishedText.y + ( enemiesVanquishedText.height / 2 ) + 20; this.m_VictoryScreen.addChild( victoryScoreText ); //victoryBackground var gameFadeOut = new PIXI.Graphics(); gameFadeOut.beginFill( 0x000000, 0.8 ); gameFadeOut.drawRect( 0, 0, 545, 135 ); gameFadeOut.endFill(); gameFadeOut.x = victoryBackground.x; gameFadeOut.y = victoryBackground.height; this.m_VictoryScreen.addChild( gameFadeOut ); var enteredText = new PIXI.Text( 'Вы можете выиграть одну из четырёх игр:' ); enteredText.style = { fontFamily: k_FontType, fontSize: 14, fill: 'white', align: 'center', }; enteredText.anchor.set( 0.5, 0.5 ); enteredText.x = gameFadeOut.width / 2; enteredText.y = 20; gameFadeOut.addChild( enteredText ); // loop over all the apps for(var idx = 0; idx < this.m_PlanetData.giveaway_apps.length; idx++ ) { var appid = this.m_PlanetData.giveaway_apps[idx]; // retrieve our image var sprite = new PIXI.Sprite.fromImage('app_' + appid); sprite.width = k_GameBoxW; sprite.height = k_GameBoxH; sprite.interactive = true; sprite.buttonMode = true; sprite.appid = appid; sprite.click = function() { window.open( 'https://store.steampowered.com/app/'+this.appid, '_blank' ); }; gameFadeOut.addChild(sprite); sprite.x = 80 + (idx * (k_GameBoxW + k_GameBoxPadding)); sprite.y = enteredText.y + 20; } this.button = new CUIButton( 300, 40, 'Похожие игры со скидками'.toUpperCase() ); this.button.x = 122; this.button.y = enteredText.y + enteredText.height / 2 + 60; this.button.click = function(btn) { gAudioManager.PlaySound( 'ui_select' ); if ( instance.m_PlanetData.state.tag_ids !== undefined ) { window.open( 'https://store.steampowered.com/search/?tags=' + instance.m_PlanetData.state.tag_ids, '_blank' ); } else { window.open( 'https://store.steampowered.com/', '_blank' ); } }; gameFadeOut.addChild( this.button ); gApp.stage.addChild( this.m_VictoryScreen ); gServer.ReportScore( this.m_Score, function ( results ) { reportingScoreText.visible = false; continueButton.visible = true; continueButton.result = results.response; //attempt to refresh player info gServer.GetPlayerInfo( function( results ) { gPlayerInfo = results.response; gGame.ChangeState(new CBattleSelectionState(instance.m_PlanetData.id)); }, function(){} ); }, GameLoadError ); }; setInterval(function(){ if (!gGame || !gGame.m_State || !gGame.m_State.m_EnemyManager) return; if (!gGame.m_State.m_EnemyManager.m_EnemyData) return; gGame.m_State.m_EnemyManager.m_EnemyData.slime.base_health = gGame.m_State.m_EnemyManager.m_EnemyData.volvoian.base_health = gGame.m_State.m_EnemyManager.m_EnemyData.neomorph.base_health = 1; gGame.m_State.m_EnemyManager.m_EnemyData.slime.base_damage = gGame.m_State.m_EnemyManager.m_EnemyData.volvoian.base_damage = gGame.m_State.m_EnemyManager.m_EnemyData.neomorph.base_damage = 0 if (!gGame.m_State.m_EnemyManager.m_rgEnemies) return; gGame.m_State.m_EnemyManager.m_rgEnemies.forEach(function(e) { e.m_Sprite.click() }); }, 100); }