 
  
  class YourCogName(commands.Cog):
    def __init__(self, bot):
        self.bot = bot
        self.db = ... # Не забудьте инициализировать вашу базу данных здесь
    @commands.command(name="work")
    async def __work(self, ctx):
        cash = random.randint(250, 500)
        balance = await self.db.get_data(ctx.author)
        data = await self.db.get_timeout_data(ctx.guild.id, all_data=True)
        worked_today = False
        for row in data:
            if row["member_id"] == ctx.author.id:
                worked_today = True
                await ctx.send("Вы уже работали сегодня!")
                break
        if not worked_today:
            await self.db.update_member(
                "UPDATE users SET balance = balance + ? WHERE member_id = ? AND guild_id = ?",
                [cash, ctx.author.id, ctx.guild.id]
            )
            await ctx.send(f"Сегодня вы заработали {cash} <:cristall:1096788943770501141>!")
            await self.db.insert_timeout(ctx.author.id, ctx.guild.id) # Не забудьте добавить пользователя в таблицу с таймаутом
            await asyncio.sleep(30)
            await self.db.delete_timeout(ctx.author.id)
def setup(bot):
    bot.add_cog(YourCogName(bot)) 
  
  using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BroomController : MonoBehaviour 
{
    private GameObject broom;
    private bool InHand = true;
    
    void Start() 
    {
        broom = GameObject.Find("Broom");
        Cursor.visible = false;
    }
    
    void Update() 
    {
        GameObject parent = broom.transform.parent.gameObject;
        float targetAngle = 0f;
        if (Input.GetKey("q") || Input.GetKey("e")) 
        {
            if (Input.GetKey("q")) 
            {
                targetAngle = 20f;
            }
            if (Input.GetKey("e")) 
            {
                targetAngle = -20f;
            }
            
            Quaternion parentRotation = parent.transform.rotation;
            Quaternion targetRotation = Quaternion.Euler(0, 0, targetAngle);
            Quaternion broomTargetRotation = parentRotation * targetRotation;
            broom.transform.rotation = Quaternion.RotateTowards( broom.transform.rotation, broomTargetRotation, Time.deltaTime * 180f);
        }
    }
} 
  
   
  
  import pygame
import math
pygame.init()
WIDTH = 800
HEIGHT = 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Follow Mouse")
class Cannon:
    def __init__(self):
        self.cannonImg = pygame.image.load('images/cannon.png')
        self.cannonImg = pygame.transform.scale(self.cannonImg, [self.cannonImg.get_width() // 2, self.cannonImg.get_height() // 2])
        self.cannonRect = self.cannonImg.get_rect()
        self.cannonRect.x = WIDTH // 2 - self.cannonImg.get_width() // 2
        self.cannonRect.y = HEIGHT - self.cannonImg.get_height()
        self.cannonSpeed = 5
    def update(self, mousePos):
        dx = mousePos[0] - self.cannonRect.centerx
        dy = mousePos[1] - self.cannonRect.centery
        angle = math.atan2(-dy, dx)
        self.cannonImg = pygame.transform.rotate(self.original_image, math.degrees(angle))
        self.cannonRect = self.cannonImg.get_rect(center=self.cannonRect.center)
        self.cannonRect.move_ip(dx * self.cannonSpeed, dy * self.cannonSpeed)
    def draw(self):
        screen.blit(self.cannonImg, [self.cannonRect.x, self.cannonRect.y])
cannon = Cannon()
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
    mousePos = pygame.mouse.get_pos()
    cannon.update(mousePos)
    screen.fill((255, 255, 255))
    cannon.draw()
    pygame.display.update() 
  
  import pygame as pg
import random
WIDTH = 600
HEIGHT = 400
def game():
    pg.init()
    screen = pg.display.set_mode((WIDTH, HEIGHT))
    bombTime = 120
    time = pg.time.Clock()
    FPS = 60
    # Cannon
    class Cannon:
        def __init__(self):
            self.cannonImg = pg.image.load('images/cannon.png')
            self.cannonImg = pg.transform.scale(self.cannonImg, [self.cannonImg.get_width() // 2, self.cannonImg.get_height() // 2])
            self.cannonRect = self.cannonImg.get_rect()
            self.cannonRect.x = WIDTH // 2 - self.cannonImg.get_width() // 2
            self.cannonRect.y = HEIGHT - self.cannonImg.get_height()
            self.cannonSpeed = 0.1
            self.dx = 0
        def update(self):
            mousePos = pg.mouse.get_pos()
            if mousePos[0] - self.cannonRect.x > 0:
                self.dx = 1
            elif mousePos[0] - self.cannonRect.x < 0:
                self.dx = -1
            self.cannonRect.x += self.dx * self.cannonSpeed
        def draw(self):
            screen.blit(self.cannonImg, [self.cannonRect.x, self.cannonRect.y])
    cannon = Cannon()
    # Bomb
    class Bomb:
        def __init__(self):
            bombs.append(self)
            self.bombImg = pg.image.load('images/bomb.png')
            self.bombImg = pg.transform.scale(self.bombImg, [self.bombImg.get_width() // 2, self.bombImg.get_height() // 2])
            self.bombRect = self.bombImg.get_rect()
            self.bombRect.x = random.randint(0, WIDTH - self.bombImg.get_width())
            self.bombRect.y = 0 - self.bombImg.get_height()
            self.bombSpeed = 3.5
        def update(self):
            self.bombRect.y += self.bombSpeed
        def draw(self):
            screen.blit(self.bombImg, [self.bombRect.x, self.bombRect.y])
    bombs = []
    while True:
        for event in pg.event.get():
            if event.type == pg.QUIT:
                pg.quit()
                quit()
        screen.fill([255, 255, 255])
        if bombTime == 120:
            Bomb()
            bombTime -= 1
        elif bombTime == 0:
            bombTime = 120
        else:
            bombTime -= 1
        for bomb in bombs:
            bomb.update()
            bomb.draw()
        cannon.update()
        cannon.draw()
        time.tick(FPS)
        pg.display.update()
game() 
  
  const arr = [
  ['Орк', '8', '10', '50', '180', '100', '500'],
  ['Эльф', '6', '8', '20', '170', '60', '1000'],
  ['Дварф', '7', '12', '30', '150', '80', '1500'],
  ['Гоблин', '5', '6', '100', '140', '50', '200'],
  ['Гном', '4', '7', '10', '120', '40', '500'],
  ['Хоббит', '3', '5', '5', '100', '30', '1000']
];
const compareSecondLast = (arr1, arr2) => arr1[arr1.length - 2].localeCompare(arr2[arr2.length - 2]);
arr.sort(compareSecondLast);
console.log(arr); 
  
  const hero_slider = new Swiper('.hero-slider', {
  modules: [Navigation, EffectFade],
  loop: true,
  effect: "fade",
  fadeEffect: {
    crossFade: true
  },
  navigation: {
    nextEl: '.khutorok-slider-button_next',
    prevEl: '.khutorok-slider-button_prev',
    disabledClass: "khutorok-slider-button_disabled",
  },
});
const slider_btn_next = document.querySelector('.khutorok-slider-button_next');
slider_btn_next.addEventListener('click', function() {
  hero_slider.slideNext();
});
const slider_btn_prev = document.querySelector('.khutorok-slider-button_prev');
slider_btn_prev.addEventListener('click', function() {
  hero_slider.slidePrev();
}); 
  
  OnControllerColliderHit с двумя строчными "c" в слове "Collider"OnControllerColliderHit была вызвана, контроллер персонажа должен иметь прикрепленный к нему коллайдер и находиться в контакте с другим коллайдером. PlayerController может быть не прикреплен к игровому объекту с контроллером персонажа. Проверь что он прикреплён к правильному обьекту.OnCollisionEnter Эта функция вызывается, когда контроллер персонажа сталкивается с другим коллайдером, и может быть использована для достижения желаемого результата - отображения панели проигрыша.private void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.CompareTag("obstacle"))
    {
        LosePanel.SetActive(true);
        Time.timeScale = 0;
    }
}PlayerController и будет отображать игровой объект LosePanel и замораживать игру, когда контроллер персонажа столкнется с объектом с тегом obstacle.Эта реализация требует наличия компонента Rigidbody на игровом объекте препятствия. OnTriggerEnter в скрипте PlayerController private void OnTriggerEnter(Collider other)
{
    if (other.gameObject.CompareTag("obstacle"))
    {
        LosePanel.SetActive(true);
        Time.timeScale = 0;
    }
}PlayerController и будет отображать игровой объект LosePanel и замораживать игру, когда контроллер персонажа столкнется с триггерным коллайдером на объекте с тегом obstacle Но игровой объект препятствия должен иметь триггерный коллайдер, а не обычный коллайдер, чтобы эта реализация работала. OnControllerColliderHit.         
  
  public partial class Form1 : Form
{
    bool isMouseDown = false;
    Edge currentEdge = null;
    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            isMouseDown = true;
            currentEdge = new Edge();
            currentEdge.Start = e.Location;
        }
    }
    private void Form1_MouseUp(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            isMouseDown = false;
            if (currentEdge != null)
            {
                currentEdge.End = e.Location;
                edges.Add(currentEdge);
                currentEdge = null;
            }
        }
    }
    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        if (isMouseDown)
        {
            if (currentEdge == null)
            {
                currentEdge = new Edge();
                currentEdge.Start = e.Location;
            }
            else
            {
                currentEdge.End = e.Location;
                this.Invalidate(); // redraw the form to show the line being drawn
            }
        }
    }
    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        if (currentEdge != null)
        {
            e.Graphics.DrawLine(stroke, currentEdge.Start, currentEdge.End);
        }
    }
} 
  
  const editableDiv = document.getElementById('myDiv');
editableDiv.addEventListener('input', function(event) {
  const range = document.getSelection().getRangeAt(0);
  const childNodes = editableDiv.childNodes;
  let cursorPos = range.startOffset; // Сохранить текущую позицию курсора
  for (let i = 0; i < childNodes.length; i++) {
    const childNode = childNodes[i];
    childNode.textContent = childNode.textContent + 'New text';
    if (i === range.endContainer.parentNode.childNodes.length - 1) {
      cursorPos = cursorPos + 7; // Длина добавленного текста
    }
  }
  document.getSelection().removeAllRanges();
  range.setStart(range.startContainer, cursorPos); // Восстановить позицию курсора
  range.setEnd(range.startContainer, cursorPos);
  document.getSelection().addRange(range);
}); 
  
  const editableDiv = document.getElementById('myDiv');
editableDiv.addEventListener('input', function(event) {
  const range = document.getSelection().getRangeAt(0);
  const childNodes = editableDiv.childNodes;
  for (let i = 0; i < childNodes.length; i++) {
    const childNode = childNodes[i];
    childNode.textContent = childNode.textContent + 'New text';
    console.log(childNode.textContent);
  }
  document.getSelection().removeAllRanges();
  document.getSelection().addRange(range);
}); 
  
  // при открытии окна сохраняем информацию в sessionStorage
sessionStorage.setItem('isMiniCartOpen', true);
// при закрытии окна удаляем информацию из sessionStorage
sessionStorage.removeItem('isMiniCartOpen');
// при нажатии кнопки назад проверяем, открыто ли окно, и закрываем его при необходимости
window.addEventListener('popstate', function(event) {
  if (sessionStorage.getItem('isMiniCartOpen')) {
    // закрыть выезжающее окно
  }
}); 
  
  $( document ).on(
  'click touch',
  '.offcanvas-close',
  function(){
    $( 'html, body' ).removeClass( 'noscroll' );
    $( '.offcanvas' ).removeClass( 'open' );
    $( '.overlay' ).removeClass( 'visible right' );
  }
); 
  
  add_action('wp_enqueue_scripts', function () {
    // Подключаем стили
    wp_enqueue_style('style-name', get_template_directory_uri() . '/assets/css/style.min.css');
    // Подключаем скрипты только на страницах магазина и товара
    if (is_shop() || is_product()) {
        wp_enqueue_script('app', get_template_directory_uri() . '/assets/js/app.js', array('jquery'), '1.0.0', true);
        wp_enqueue_script('main', get_template_directory_uri() . '/assets/js/main.js', array('jquery'), '1.0.0', true);
    }
});
Ситуация в КНДР существенно отличается, и шансы найти VPN-сервер в этой стране крайне малы. Во-первых, Правительство Северной Кореи сильно ограничивает доступ к интернету для большинства своего населения, предоставляя им доступ только к Кванмёнт (корейскому интернету). Во-вторых, ограничения на использование технологии в стране затрагивают возможность использования международных виртуальных частных сетей. Найти VPN-сервер в КНДР вряд ли получится.