āĻšāĻžāĻ āĻ¸āĻŦāĻžāĻ
āĻāĻ āĻŦāĻ¸āĻ¨ā§āĻ¤ā§ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻā§āĻā§āĻ āĻĻā§āĻā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻā§āĻ˛ā§āĻ°āĻž āĻļāĻŋāĻā§āĻāĻŋāĻ˛ āĻā§āĻāĻžāĻŦā§ Dota 2 āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ 2014 āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻ¸ā§āĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§, āĻāĻāĻŋāĻ¤ā§ āĻā§āĻ˛āĻ¤ā§ āĻšāĻ¯āĻŧāĨ¤ āĻāĻŽāĻŋ āĻāĻ āĻā§āĻŽāĻāĻŋāĻ° āĻāĻāĻāĻ¨ āĻŦāĻĄāĻŧ āĻāĻā§āĻ¤, āĻāĻŦāĻ āĻāĻŽāĻŋ āĻāĻŽāĻžāĻ° āĻļā§āĻļāĻŦā§ āĻ¨āĻŋāĻā§āĻā§ āĻ¨āĻŋāĻŽāĻā§āĻāĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ āĻ āĻ¨āĻ¨ā§āĻ¯ āĻ¸ā§āĻ¯ā§āĻāĻāĻŋ āĻāĻžāĻĄāĻŧāĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĻ¨āĻŋāĨ¤
āĻāĻŽāĻŋ āĻā§āĻŦ āĻāĻā§āĻ°āĻāĻžāĻŦā§ āĻĄā§āĻ āĻāĻ°ā§āĻāĻŋ, āĻāĻŦāĻ āĻāĻāĻŋ āĻ¤āĻžāĻ āĻāĻā§āĻā§ āĻ¯ā§ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻĄāĻŋāĻ¸āĻāĻ°ā§āĻĄ āĻŦāĻ āĻ˛āĻŋāĻā§āĻāĻŋ āĻ¯āĻž āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§ āĻ¯āĻž āĻā§āĻŽā§āĻ° āĻĒā§āĻ°āĻžāĻ¨ā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤ āĻ¨āĻ¯āĻŧ, āĻ¯ā§āĻŽāĻ¨ āĻŽā§āĻ¯āĻžāĻāĻŽā§āĻāĻŋāĻāĨ¤
āĻŦāĻ āĻ¸āĻš āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻĻā§āĻāĻžāĻŦāĻ¨ā§āĻ° āĻāĻā§, āĻ˛āĻŦāĻŋāĻāĻŋ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ¯āĻŧ 10āĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°ā§āĻāĻŋ, āĻŦāĻž āĻāĻāĻāĻŋ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻ˛āĻŦāĻŋ āĻšā§āĻ¸ā§āĻ āĻāĻ°ā§āĻāĻŋā§ˇ
āĻāĻāĻāĻ¨ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻŽāĻžāĻ° āĻĒā§āĻ°āĻā§āĻ¤āĻŋ āĻāĻ¤ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛ āĻāĻžāĻ āĻ¸āĻšā§āĻ¯ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĻŋ, āĻāĻŦāĻ āĻ°āĻžāĻ¤āĻžāĻ°āĻžāĻ¤āĻŋ āĻāĻŽāĻŋ āĻŦāĻāĻāĻŋāĻ° āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ¸āĻšāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻāĻŋ āĻ¸ā§āĻā§āĻ āĻāĻ°ā§āĻāĻŋ, āĻ¯āĻž 10 āĻāĻ¨ āĻ˛ā§āĻ āĻĨāĻžāĻāĻžāĻāĻžāĻ˛ā§āĻ¨ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻā§ āĻāĻ¤ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§āĨ¤
āĻāĻŽāĻŋ āĻ
āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻ¨ā§āĻĄā§āĻā§ āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ, āĻāĻžāĻ°āĻŖ āĻāĻŽāĻŋ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻĒāĻžāĻāĻĨāĻ¨ āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°āĻŋ āĻ¨āĻž āĻāĻŦāĻ āĻāĻŽāĻŋ āĻāĻ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻāĻ°āĻ āĻ¸ā§āĻŦāĻžāĻā§āĻāĻ¨ā§āĻĻā§āĻ¯ āĻŦā§āĻ§ āĻāĻ°āĻŋāĨ¤
āĻāĻāĻŋ āĻĄāĻŋāĻ¸āĻāĻ°ā§āĻĄā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻŦāĻ āĻ˛ā§āĻāĻžāĻ° āĻāĻŽāĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ āĻāĻŋāĻā§āĻāĻ¤āĻž, āĻ¤āĻŦā§ āĻāĻāĻŋ āĻā§āĻŦ āĻ¸āĻšāĻ āĻŦāĻ˛ā§ āĻĒā§āĻ°āĻŽāĻžāĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻ āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ npm āĻŽāĻĄāĻŋāĻāĻ˛ discord.js āĻŽā§āĻ¸ā§āĻ, āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĨ¤
āĻĻāĻžāĻŦāĻŋāĻ¤ā§āĻ¯āĻžāĻ: āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻĄ āĻāĻĻāĻžāĻšāĻ°āĻŖ "āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨", āĻ¯āĻžāĻ° āĻ āĻ°ā§āĻĨ āĻ¤āĻžāĻ°āĻž āĻ°āĻžāĻ¤ā§ āĻĒā§āĻ¨āĻ°ā§āĻ˛āĻŋāĻāĻ¨ā§āĻ° āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§ āĻā§āĻā§āĨ¤
āĻŽā§āĻ¯āĻžāĻāĻŽā§āĻāĻŋāĻāĻ¯āĻŧā§āĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻ˛ āĻāĻāĻāĻŋ "āĻ¸āĻžāĻ°āĻŋ" āĻ¯ā§āĻāĻžāĻ¨ā§ āĻā§āĻ˛ā§āĻ¯āĻŧāĻžāĻĄāĻŧāĻ°āĻž āĻ¯āĻžāĻ°āĻž āĻā§āĻ˛āĻ¤ā§ āĻāĻžāĻ¯āĻŧ āĻ¤āĻžāĻĻā§āĻ° āĻ°āĻžāĻāĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻ¯āĻāĻ¨ āĻ¤āĻžāĻ°āĻž āĻā§āĻ¨ āĻā§āĻ˛āĻž āĻĻā§āĻāĻ¤ā§ āĻāĻžāĻ¯āĻŧ āĻ¨āĻž āĻŦāĻž āĻā§āĻāĻā§ āĻĒāĻžāĻ¯āĻŧ āĻ¨āĻž āĻ¤āĻāĻ¨ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻ°āĻŋāĻ¯āĻŧā§ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤
āĻāĻāĻŋ āĻāĻāĻāĻŋ "āĻā§āĻ˛ā§āĻ¯āĻŧāĻžāĻĄāĻŧ" āĻāĻ° āĻ¸āĻžāĻ°āĻŽāĻ°ā§āĻŽ āĻāĻŋ āĻŽāĻ¤ āĻĻā§āĻāĻžāĻ¯āĻŧ. āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻāĻāĻžāĻŦā§, āĻāĻāĻŋ āĻĄāĻŋāĻ¸āĻāĻ°ā§āĻĄā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻāĻāĻĄāĻŋ āĻāĻŋāĻ˛, āĻ¤āĻŦā§ āĻ¸āĻžāĻāĻ āĻĨā§āĻā§ āĻā§āĻŽāĻā§āĻ˛āĻŋ āĻ˛āĻā§āĻ/āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻ°āĻ¯āĻŧā§āĻā§, āĻ¤āĻŦā§ āĻĒā§āĻ°āĻĨāĻŽ āĻāĻŋāĻ¨āĻŋāĻ¸āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻĨāĻŽā§āĨ¤
export enum Realm {
DISCORD,
EXTERNAL,
}
export default class QueuePlayer {
constructor(public readonly realm: Realm, public readonly id: string) {}
public is(qp: QueuePlayer): boolean {
return this.realm === qp.realm && this.id === qp.id;
}
static Discord(id: string) {
return new QueuePlayer(Realm.DISCORD, id);
}
static External(id: string) {
return new QueuePlayer(Realm.EXTERNAL, id);
}
}
āĻāĻŦāĻ āĻāĻāĻžāĻ¨ā§ āĻ¸āĻžāĻ°āĻŋ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸. āĻāĻāĻžāĻ¨ā§, "āĻā§āĻ˛ā§āĻ¯āĻŧāĻžāĻĄāĻŧ" āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ "āĻā§āĻ°ā§āĻĒ" āĻāĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻŽā§āĻ°ā§āĻ¤āĻ¤āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻāĻāĻŋ āĻāĻāĻ āĻā§āĻ˛ā§āĻ¯āĻŧāĻžāĻĄāĻŧā§āĻ° āĻāĻ¨ā§āĻ¯, āĻā§āĻ°ā§āĻĒāĻāĻŋ āĻ¨āĻŋāĻā§āĻā§ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ āĻŋāĻ¤ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻā§āĻ°ā§āĻĒā§āĻ° āĻā§āĻ˛ā§āĻ¯āĻŧāĻžāĻĄāĻŧāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯, āĻ¯āĻĨāĻžāĻā§āĻ°āĻŽā§, āĻā§āĻ°ā§āĻĒā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻ˛ā§āĻ¯āĻŧāĻžāĻĄāĻŧāĨ¤
export default interface IQueue extends EventEmitter {
inQueue: QueuePlayer[]
put(uid: Party): boolean;
remove(uid: Party): boolean;
removeAll(ids: Party[]): void;
mode: MatchmakingMode
roomSize: number;
clear(): void
}
āĻāĻŽāĻŋ āĻĒā§āĻ°āĻ¸āĻā§āĻ āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻāĻ°āĻ¤ā§ āĻāĻā§āĻ¨ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻā§. āĻāĻāĻŋ āĻŽāĻžāĻŽāĻ˛āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻāĻŋāĻ˛ - āĻāĻā§āĻ¨ā§āĻā§ "10 āĻāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻā§āĻŽ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻā§āĻā§", āĻāĻĒāĻ¨āĻŋ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻāĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋāĻ¤ā§ āĻā§āĻ˛ā§āĻ¯āĻŧāĻžāĻĄāĻŧāĻĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻŽā§āĻ˛āĻŋāĻ āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ¯āĻŧāĻŋāĻ āĻ¯ā§āĻā§āĻ¤āĻŋ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ - āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤āĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻžāĻ¸ā§āĻ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻ¨, āĻ˛āĻŦāĻŋ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°ā§āĻ¨ āĻ˛āĻā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŦāĻ āĻ¤āĻžāĻāĨ¤
IOC āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻŋ InversifyJS āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋāĨ¤ āĻāĻŽāĻžāĻ° āĻāĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻāĻāĻŋ āĻāĻ¨āĻ¨ā§āĻĻāĻĻāĻžāĻ¯āĻŧāĻ āĻ āĻāĻŋāĻā§āĻāĻ¤āĻž āĻāĻā§āĨ¤ āĻĻā§āĻ°ā§āĻ¤ āĻāĻŦāĻ āĻ¸āĻšāĻ!
āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ¸āĻžāĻ°āĻŋ āĻ°āĻ¯āĻŧā§āĻā§ - āĻāĻŽāĻ°āĻž 1x1, āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ/āĻ°ā§āĻā§āĻĄ, āĻāĻŦāĻ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻāĻžāĻ¸ā§āĻāĻŽ āĻŽā§āĻĄ āĻ¯ā§āĻ āĻāĻ°ā§āĻāĻŋāĨ¤ āĻ āĻ¤āĻāĻŦ, āĻāĻāĻāĻŋ āĻ¸āĻŋāĻā§āĻāĻ˛āĻāĻ¨ āĻ°ā§āĻŽāĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻāĻŦāĻ āĻā§āĻŽ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
constructor(
@inject(GameServers) private gameServers: GameServers,
@inject(MatchStatsService) private stats: MatchStatsService,
@inject(PartyService) private partyService: PartyService
) {
super();
this.initQueue(MatchmakingMode.RANKED);
this.initQueue(MatchmakingMode.UNRANKED);
this.initQueue(MatchmakingMode.SOLOMID);
this.initQueue(MatchmakingMode.DIRETIDE);
this.initQueue(MatchmakingMode.GREEVILING);
this.partyService.addListener(
"party-update",
(event: PartyUpdatedEvent) => {
this.queues.forEach((q) => {
if (has(q.queue, (t) => t.is(event.party))) {
// if queue has this party, we re-add party
this.leaveQueue(event.qp, q.mode)
this.enterQueue(event.qp, q.mode)
}
});
}
);
this.partyService.addListener(
"party-removed",
(event: PartyUpdatedEvent) => {
this.queues.forEach((q) => {
if (has(q.queue, (t) => t.is(event.party))) {
// if queue has this party, we re-add party
q.remove(event.party)
}
});
}
);
}
(āĻĒā§āĻ°āĻ¸ā§āĻ¸āĻā§āĻ˛āĻŋ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻā§āĻŽāĻ¨ āĻĻā§āĻāĻžāĻ¯āĻŧ āĻ¸ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ§āĻžāĻ°āĻŖāĻž āĻĻā§āĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻĄ āĻ¨ā§āĻĄāĻ˛āĻ¸)
āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻā§āĻŽ āĻŽā§āĻĄā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ°āĻŋ āĻļā§āĻ°ā§ āĻāĻ°āĻŋ, āĻāĻŦāĻ āĻ¸āĻžāĻ°āĻŋāĻā§āĻ˛āĻŋ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻāĻŋāĻā§ āĻĻā§āĻŦāĻ¨ā§āĻĻā§āĻŦ āĻāĻĄāĻŧāĻžāĻ¤ā§ "āĻā§āĻ°ā§āĻĒāĻā§āĻ˛āĻŋāĻ¤ā§" āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯āĻ āĻļā§āĻ¨āĻŋāĨ¤
āĻ¤āĻžāĻ, āĻāĻžāĻ˛ āĻšāĻ¯āĻŧā§āĻā§, āĻāĻŽāĻŋ āĻā§āĻĄā§āĻ° āĻā§āĻāĻ°ā§āĻā§āĻ˛āĻŋ āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļ āĻāĻ°ā§āĻāĻŋ āĻ¯ā§āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻŦāĻŋāĻˇāĻ¯āĻŧā§āĻ° āĻā§āĻ¨āĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ āĻ¨ā§āĻ, āĻāĻŦāĻ āĻāĻāĻ¨ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŽā§āĻ¯āĻžāĻāĻŽā§āĻāĻŋāĻāĻ¯āĻŧā§ āĻāĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻāĨ¤
āĻāĻ¸ā§āĻ¨ āĻā§āĻ¸ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻž āĻ¯āĻžāĻ:
1) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻā§āĻ˛āĻ¤ā§ āĻāĻžāĻ¯āĻŧāĨ¤
2) āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻ¤āĻŋāĻ¨āĻŋ Gateway=Discord āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨, āĻ āĻ°ā§āĻĨāĻžā§, āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻžāĻ¨āĻžāĻ¨:
3) āĻāĻ āĻā§āĻāĻāĻ¯āĻŧā§āĻāĻŋ āĻ°ā§āĻŽāĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸ā§ āĻ¯āĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻŦāĻ˛ā§ "āĻāĻāĻāĻ¨ āĻŦāĻŋāĻŦāĻžāĻĻā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¯āĻŧ, āĻŽā§āĻĄ: āĻ°ā§āĻ āĻ¨āĻž āĻāĻ°āĻž āĻā§āĻŽāĨ¤"
4) āĻ°ā§āĻŽāĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸ āĻā§āĻāĻāĻ¯āĻŧā§āĻ° āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§ āĻāĻŦāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻā§ (āĻāĻ°ā§ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻā§āĻˇā§āĻ ā§) āĻĒāĻāĻ¨ā§āĻĻāĻ¸āĻ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§ āĻ ā§āĻ˛ā§ āĻĻā§āĻ¯āĻŧāĨ¤
5) āĻā§āĻ˛āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻā§āĻ˛ā§āĻ¯āĻŧāĻžāĻĄāĻŧ āĻāĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻ¸āĻžāĻ°āĻŋ āĻā§āĻ āĻāĻ°ā§āĨ¤ āĻ¯āĻĻāĻŋ āĻ¸āĻŽā§āĻāĻŦ āĻšāĻ¯āĻŧ, āĻāĻāĻāĻŋ āĻāĻā§āĻ¨ā§āĻ āĻ¨āĻŋāĻ°ā§āĻāĻ¤ āĻāĻ°ā§āĻ¨:
private onRoomFound(players: Party[]) {
this.emit("room-found", {
players,
});
}
6) āĻ°ā§āĻŽāĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸ āĻ¸ā§āĻĒāĻˇā§āĻāĻ¤āĻ āĻāĻ āĻāĻā§āĻ¨ā§āĻā§āĻ° āĻāĻĻā§āĻŦāĻŋāĻā§āĻ¨ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§ āĻāĻ¨āĻ¨ā§āĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻļā§āĻ¨āĻā§āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻ¨āĻĒā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻā§āĻ˛ā§āĻ¯āĻŧāĻžāĻĄāĻŧāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĒāĻžāĻ, āĻ¤āĻžāĻĻā§āĻ° āĻāĻžāĻ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ "āĻ°ā§āĻŽ" āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻāĻāĻŋ āĻāĻā§āĻ¨ā§āĻ āĻāĻžāĻ°āĻŋ āĻāĻ°āĻŋ:
queue.addListener("room-found", (event: RoomFoundEvent) => {
console.log(
`Room found mode: [${mode}]. Time to get free room for these guys`
);
const room = this.getFreeRoom(mode);
room.fill(event.players);
this.onRoomFormed(room);
});
7) āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž "āĻ¸āĻ°ā§āĻŦā§āĻā§āĻ" āĻāĻ°ā§āĻ¤ā§āĻĒāĻā§āĻˇā§āĻ° āĻāĻžāĻā§ āĻĒā§āĻāĻā§āĻāĻŋ - āĻā§āĻ˛āĻžāĻ¸ āĻŦāĻ. āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§, āĻ¤āĻŋāĻ¨āĻŋ āĻā§āĻāĻāĻ¯āĻŧā§āĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸āĻāĻ¯ā§āĻ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°ā§āĻ¨ (āĻāĻŽāĻŋ āĻŦā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¨āĻž āĻāĻāĻŋ āĻ°āĻžāĻļāĻŋāĻ¯āĻŧāĻžāĻ¨ āĻāĻžāĻˇāĻžāĻ¯āĻŧ āĻāĻ¤āĻāĻž āĻŽāĻāĻžāĻ° āĻĻā§āĻāĻžāĻ¯āĻŧ) āĻāĻŦāĻ āĻŽā§āĻ¯āĻžāĻāĻŽā§āĻāĻŋāĻāĻ¯āĻŧā§āĻ° āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ¯āĻŧāĻŋāĻ āĻ¯ā§āĻā§āĻ¤āĻŋāĨ¤ āĻŦāĻāĻāĻŋ āĻāĻā§āĻ¨ā§āĻāĻāĻŋ āĻļā§āĻ¨ā§ āĻāĻŦāĻ āĻĄāĻŋāĻ¸āĻāĻ°ā§āĻĄāĻā§āĻāĻāĻ¯āĻŧā§āĻā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤āĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻĒāĻžāĻ āĻžāĻ¨ā§āĻ° āĻāĻĻā§āĻļ āĻĻā§āĻ¯āĻŧāĨ¤
8) āĻ¯āĻĻāĻŋ āĻā§āĻ 3 āĻŽāĻŋāĻ¨āĻŋāĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻā§āĻ˛āĻžāĻāĻŋ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻā§āĻ¯āĻžāĻ¨ āĻāĻ°ā§ āĻŦāĻž āĻā§āĻ°āĻšāĻŖ āĻ¨āĻž āĻāĻ°ā§, āĻ¤āĻŦā§ āĻāĻŽāĻ°āĻž āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻžāĻ°āĻŋāĻ¤ā§ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§ āĻĻā§āĻŦ āĻ¨āĻžāĨ¤ āĻāĻŽāĻ°āĻž āĻ
āĻ¨ā§āĻ¯ āĻ¸āĻŦāĻžāĻāĻā§ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§ āĻĻā§āĻ āĻāĻŦāĻ āĻāĻŦāĻžāĻ° 10 āĻāĻ¨ āĻ¨āĻž āĻšāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ
āĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻŋāĨ¤ āĻ¯āĻĻāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻ˛ā§āĻ¯āĻŧāĻžāĻĄāĻŧ āĻā§āĻ˛āĻžāĻāĻŋ āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§ āĻ¤āĻŦā§ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻ
āĻāĻļ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧāĨ¤
āĻĄā§āĻĄāĻŋāĻā§āĻā§āĻĄ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨
āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻŽāĻā§āĻ˛āĻŋ āĻāĻāĻ¨ā§āĻĄā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° 2012 āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻŋāĻĄāĻŋāĻāĻ¸-āĻ āĻšā§āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻ° āĻĨā§āĻā§ āĻāĻŽāĻ°āĻž āĻŦā§āĻļ āĻāĻŋāĻā§ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ā§ āĻāĻ¸āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ:
- āĻ¤āĻžāĻ° āĻāĻĒāĻ° āĻā§āĻ¨ āĻĄāĻāĻžāĻ° āĻ¨ā§āĻ, āĻ¯āĻž āĻāĻŽāĻžāĻ° āĻšā§āĻĻāĻ¯āĻŧā§ āĻāĻāĻžāĻ¤ āĻāĻ°ā§
- āĻāĻŽāĻ°āĻž āĻāĻžāĻĄāĻŧāĻž āĻŦāĻžāĻāĻāĻžāĻ
āĻāĻžāĻāĻāĻŋ āĻšāĻ˛ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ā§āĻ° āĻāĻāĻāĻŋ āĻāĻŋāĻĒāĻŋāĻāĻ¸ āĻĨā§āĻā§ āĻāĻŋāĻĄāĻŋāĻāĻ¸-āĻ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻžāĻ˛āĻžāĻ¨ā§āĨ¤ āĻāĻŽāĻŋ āĻĢā§āĻ˛āĻžāĻ¸ā§āĻā§ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ˛āĻŋāĻā§āĻāĻŋāĻ˛āĻžāĻŽāĨ¤ āĻšā§āĻ¯āĻžāĻ, āĻāĻŽāĻŋ āĻĒāĻžāĻāĻĨāĻ¨ āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°āĻŋ āĻ¨āĻž, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨? āĻāĻāĻŋāĻ¤ā§ āĻāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻāĻŋ āĻ˛ā§āĻāĻž āĻĻā§āĻ°ā§āĻ¤ āĻāĻŦāĻ āĻ¸āĻšāĻāĨ¤
āĻāĻāĻŋ 3āĻāĻŋ āĻāĻžāĻ°ā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°ā§:
- āĻāĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻļā§āĻ°ā§ āĻāĻ°āĻž - āĻāĻāĻāĻŋ āĻŽāĻžāĻ¨āĻāĻŋāĻ¤ā§āĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻž, āĻā§āĻŽāĻāĻŋ āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ˛ā§āĻ¯āĻŧāĻžāĻĄāĻŧā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻāĻŦāĻ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻā§ˇ āĻāĻŽāĻŋ āĻāĻāĻ¨ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ˛āĻŋāĻāĻŦ āĻ¨āĻž - āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ˛ā§āĻĒ āĻ¯āĻž āĻ°āĻžāĻ¤ā§ āĻ˛āĻŋāĻāĻžāĻ° āĻāĻĢāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻā§āĻā§āĻ° āĻāĻ˛ āĻāĻŦāĻ āĻā§āĻāĻĄāĻŧāĻž āĻā§āĻ˛ā§āĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻŋāĻļā§āĻ°āĻŋāĻ¤āĨ¤
- āĻ āĻ¸āĻĢāĻ˛ āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻāĻŋ āĻŦāĻ¨ā§āĻ§ āĻāĻ°āĻž/āĻĒā§āĻ¨āĻāĻ¸ā§āĻāĻ¨āĻž āĻāĻ°āĻž, āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤
āĻāĻāĻžāĻ¨ā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¸āĻšāĻ, āĻā§āĻĄ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻāĻŽāĻ¨āĻāĻŋ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻ¨āĻ¯āĻŧāĨ¤ 100 āĻ˛āĻžāĻāĻ¨ā§āĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻ¯āĻāĻ¨ 10 āĻāĻ¨ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻā§āĻŽāĻāĻŋ āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§āĻāĻŋāĻ˛, āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻāĻŋ āĻāĻžāĻ˛ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻ¸āĻŦāĻžāĻ āĻā§āĻ˛āĻ¤ā§ āĻāĻā§āĻ°āĻšā§ āĻāĻŋāĻ˛, āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻāĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋāĻ¤ā§ āĻā§āĻŽāĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ˛āĻŋāĻā§āĻ āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤
āĻ˛āĻŋāĻā§āĻāĻāĻŋāĻ¤ā§ āĻā§āĻ˛āĻŋāĻ āĻāĻ°āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§, āĻĒā§āĻ˛ā§āĻ¯āĻŧāĻžāĻ° āĻā§āĻŽ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§āĻ āĻāĻāĻŋāĨ¤ ~25 āĻŽāĻŋāĻ¨āĻŋāĻā§āĻ° āĻĒāĻ°ā§, āĻā§āĻ˛ā§āĻ¯āĻŧāĻžāĻĄāĻŧāĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ "āĻ°ā§āĻŽ" āĻ¸āĻžāĻĢ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§ˇ
āĻāĻŽāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋāĻ° āĻŦāĻŋāĻļā§āĻ°ā§āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻā§āĻ°āĻŋāĻŽ āĻā§āĻˇāĻŽāĻžāĻĒā§āĻ°āĻžāĻ°ā§āĻĨā§, āĻāĻŽāĻŋ āĻāĻāĻžāĻ¨ā§ āĻ āĻ¨ā§āĻ āĻĻāĻŋāĻ¨ āĻ˛āĻŋāĻāĻŋāĻ¨āĻŋ, āĻāĻŦāĻ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻŦāĻŋāĻāĻžāĻāĻā§āĻ˛āĻŋ āĻšāĻžāĻāĻ˛āĻžāĻāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻ āĻŦā§āĻļāĻŋ āĻā§āĻĄ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻ¸āĻāĻā§āĻˇā§āĻĒā§ āĻ¨ā§āĻĄāĻ˛āĻ¸āĨ¤
āĻ¯āĻĻāĻŋ āĻāĻŽāĻŋ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻāĻŋāĻ° āĻĒā§āĻ°āĻ¤āĻŋ āĻāĻā§āĻ°āĻš āĻĻā§āĻāĻŋ, āĻ¤āĻŦā§ āĻāĻāĻāĻŋ āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻ āĻāĻļ āĻĨāĻžāĻāĻŦā§ - āĻāĻ¤ā§ srcds (āĻ¸ā§āĻ°ā§āĻ¸ āĻĄā§āĻĄāĻŋāĻā§āĻā§āĻĄ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°) āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨ āĻ¸āĻš āĻāĻŽāĻžāĻ° āĻ¯āĻ¨ā§āĻ¤ā§āĻ°āĻŖāĻž āĻĨāĻžāĻāĻŦā§ āĻāĻŦāĻ āĻ¸āĻŽā§āĻāĻŦāĻ¤, āĻāĻāĻāĻŋ āĻ°ā§āĻāĻŋāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻŦāĻ āĻŽāĻŋāĻ¨āĻŋ-āĻĄā§āĻāĻžāĻŦāĻžāĻĢ, āĻā§āĻŽā§āĻ° āĻĒāĻ°āĻŋāĻ¸āĻāĻā§āĻ¯āĻžāĻ¨ āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¸āĻžāĻāĻāĨ¤
āĻāĻŋāĻā§ āĻ˛āĻŋāĻā§āĻ:
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻžāĻāĻ (āĻĒāĻ°āĻŋāĻ¸āĻāĻā§āĻ¯āĻžāĻ¨, āĻ˛āĻŋāĻĄāĻžāĻ°āĻŦā§āĻ°ā§āĻĄ, āĻā§āĻ āĻ˛ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŋāĻ āĻĒā§āĻˇā§āĻ āĻž āĻāĻŦāĻ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ) āĻĄāĻŋāĻ¸āĻāĻ°ā§āĻĄ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°
āĻāĻ¤ā§āĻ¸: www.habr.com