Войти на сайт

Авторизация, ждите ...
×
Правила раздела:
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.

ТЕМА: Скрипт проверки в Крестики Нолики на событиях

Скрипт проверки в Крестики Нолики на событиях 4 года 5 мес. назад #113744

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1182
  • Спасибо получено: 539
  • Проект месяца 2 местоУчительВетеранПроект месяца 3 местоПроект месяца 1 местоПроект года 3 место
Здравствуйте. Делаю мини игру Крестики Нолики на событиях.
Так вот:
За сами крастики и нолики отвечают 9 ивентов.
Правила:
Локальный переключатель А у ивента - Ивент не нажат.
Локальный переключатель B - X
Локальный переключатель C - 0

Так вот. Я сделал проверку на победу, поражения или ничью в 1 параллельном ивенте:
◆Комментарий:Победа игрока
◆Комментарий:По горизонтали
◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(1, 'B') === true && AScripts.gameOnMapGetSelfSwitches(2, 'B') === true && AScripts.gameOnMapGetSelfSwitches(3, 'B') === true
  ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ
  ◆Локальный переключатель:A = ВКЛ
  ◆
:Конец
◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(4, 'B') === true && AScripts.gameOnMapGetSelfSwitches(5, 'B') === true && AScripts.gameOnMapGetSelfSwitches(6, 'B') === true
  ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ
  ◆Локальный переключатель:A = ВКЛ
  ◆
:Конец
◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(7, 'B') === true && AScripts.gameOnMapGetSelfSwitches(8, 'B') === true && AScripts.gameOnMapGetSelfSwitches(9, 'B') === true
  ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ
  ◆Локальный переключатель:A = ВКЛ
  ◆
:Конец
◆Комментарий:По вертикали
◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(1, 'B') === true && AScripts.gameOnMapGetSelfSwitches(4, 'B') === true && AScripts.gameOnMapGetSelfSwitches(7, 'B') === true
  ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ
  ◆Локальный переключатель:A = ВКЛ
  ◆
:Конец
◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(2, 'B') === true && AScripts.gameOnMapGetSelfSwitches(5, 'B') === true && AScripts.gameOnMapGetSelfSwitches(8, 'B') === true
  ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ
  ◆Локальный переключатель:A = ВКЛ
  ◆
:Конец
◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(3, 'B') === true && AScripts.gameOnMapGetSelfSwitches(6, 'B') === true && AScripts.gameOnMapGetSelfSwitches(9, 'B') === true
  ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ
  ◆Локальный переключатель:A = ВКЛ
  ◆
:Конец
◆Комментарий:По диагонали
◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(1, 'B') === true && AScripts.gameOnMapGetSelfSwitches(5, 'B') === true && AScripts.gameOnMapGetSelfSwitches(9, 'B') === true
  ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ
  ◆Локальный переключатель:A = ВКЛ
  ◆
:Конец
◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(3, 'B') === true && AScripts.gameOnMapGetSelfSwitches(5, 'B') === true && AScripts.gameOnMapGetSelfSwitches(7, 'B') === true
  ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ
  ◆Локальный переключатель:A = ВКЛ
  ◆
:Конец
◆Комментарий:Победа врага
◆Комментарий:По горизонтали
◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(1, 'C') === true && AScripts.gameOnMapGetSelfSwitches(2, 'C') === true && AScripts.gameOnMapGetSelfSwitches(3, 'C') === true
  ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ
  ◆Локальный переключатель:B = ВКЛ
  ◆
:Конец
◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(4, 'C') === true && AScripts.gameOnMapGetSelfSwitches(5, 'C') === true && AScripts.gameOnMapGetSelfSwitches(6, 'C') === true
  ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ
  ◆Локальный переключатель:B = ВКЛ
  ◆
:Конец
◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(7, 'C') === true && AScripts.gameOnMapGetSelfSwitches(8, 'C') === true && AScripts.gameOnMapGetSelfSwitches(9, 'C') === true
  ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ
  ◆Локальный переключатель:B = ВКЛ
  ◆
:Конец
◆Комментарий:По вертикали
◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(1, 'C') === true && AScripts.gameOnMapGetSelfSwitches(4, 'C') === true && AScripts.gameOnMapGetSelfSwitches(7, 'C') === true
  ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ
  ◆Локальный переключатель:B = ВКЛ
  ◆
:Конец
◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(2, 'C') === true && AScripts.gameOnMapGetSelfSwitches(5, 'C') === true && AScripts.gameOnMapGetSelfSwitches(8, 'C') === true
  ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ
  ◆Локальный переключатель:B = ВКЛ
  ◆
:Конец
◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(3, 'C') === true && AScripts.gameOnMapGetSelfSwitches(6, 'C') === true && AScripts.gameOnMapGetSelfSwitches(9, 'C') === true
  ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ
  ◆Локальный переключатель:B = ВКЛ
  ◆
:Конец
◆Комментарий:По диагонали
◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(1, 'C') === true && AScripts.gameOnMapGetSelfSwitches(5, 'C') === true && AScripts.gameOnMapGetSelfSwitches(9, 'C') === true
  ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ
  ◆Локальный переключатель:B = ВКЛ
  ◆
:Конец
◆Если:Скрипт:AScripts.gameOnMapGetSelfSwitches(3, 'C') === true && AScripts.gameOnMapGetSelfSwitches(5, 'C') === true && AScripts.gameOnMapGetSelfSwitches(7, 'C') === true
  ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ
  ◆Локальный переключатель:B = ВКЛ
  ◆
:Конец
◆Комментарий:Ничья
◆Если:Скрипт:AScripts.gameOnMapGetArraySelfSwitches(1, 9, 'A', false) === true
  ◆Переключатель:#0312 К.Н. Ход Компа = ВЫКЛ
  ◆Локальный переключатель:C = ВКЛ
  ◆
:Конец
Но в итоге сильная просадка. Очень сильная. Очевидно из за очень множеств проверок включая циключность:
Вот что выполняют gameOnMapGetSelfSwitches и gameOnMapGetArraySelfSwitches
static gameOnMapGetSelfSwitches(aIDEvent, aSelfSwitch) {
		var key = [$gameMap.mapId(), aIDEvent, aSelfSwitch];
		return $gameSelfSwitches.value(key);
	}
static gameOnMapGetArraySelfSwitches(aIDEventStart, aIDEventStop, aSelfSwitch, aIsSelfSwitchs) {
		var key;
		var a = 0, b = 0;
		for (var i = aIDEventStart; i <= aIDEventStop; i++){
			key = [$gameMap.mapId(), i, aSelfSwitch];
 
			a++;
 
			if ($gameSelfSwitches.value(key) === aIsSelfSwitchs){
				b++;
			}
		}
 
		return a === b;
	}
Нужно переделать проверку. Может кто знает как. Или если у кого есть другой вариант создания мини игры Крестики Нолики то тоже пишите.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Администратор запретил публиковать записи гостям.

Скрипт проверки в Крестики Нолики на событиях 4 года 5 мес. назад #113745

  • VeselyRodger
  • VeselyRodger аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 932
  • Спасибо получено: 894
  • Проект месяца 1 местоОраторТестерПроект месяца 3 место
Звучит как вызов)
Мои проекты:
rpgmakerunion.ru/user/veselyrodger
Мой канал на Ютубе:
youtube.com/channel/UCyttExMfXo8ke_PhQjNPyuw
Администратор запретил публиковать записи гостям.

Скрипт проверки в Крестики Нолики на событиях 4 года 5 мес. назад #113748

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1182
  • Спасибо получено: 539
  • Проект месяца 2 местоУчительВетеранПроект месяца 3 местоПроект месяца 1 местоПроект года 3 место
Это не вызов. Мне пригодится любая помощь. Не хочу делать мини игры полностью на скриптах хотя можно и полностью на скрипте но плагина я не нашел. Да и если полностью на плагине то тут вопрос встает об креативе.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Администратор запретил публиковать записи гостям.

Скрипт проверки в Крестики Нолики на событиях 4 года 5 мес. назад #113749

  • yuryol
  • yuryol аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1704
  • Спасибо получено: 2729
  • 3 место Готв2 место УчительПобедитель конкурсаОрганизатор конкурсовОратор1 место в ГотвКомпозитор
демку прикладывай, иначе ниче непонятно. отвечаю практически наугад так как разбираться в твоей писанине без бухла трудно

1) В ивенте у тебя куча "если". Причем даже если первый "если" выдает "тру" то все-равно идет проверка второго и последующего "если". Выход: добавь "если..иначе". Тогда проверка дальше не пойдет

2) Для меньшей писанины можно заменить выражения типа AScripts.gameOnMapGetSelfSwitches(1, 'B') === true на просто AScripts.gameOnMapGetSelfSwitches(1, 'B').

3) А еще лучше - написать отдельную функцию которая принимает номера трех переключателей и выводит "тру" если все они "тру"
isVictory = (switch1, switch2, switch3) => {
return AScripts.gameOnMapGetSelfSwitches(switch1, 'B') && AScripts.gameOnMapGetSelfSwitches(switch2, 'B') && AScripts.gameOnMapGetSelfSwitches(switch3, 'B')
}

4) Зачем аще параллельное событие? Оно у тебя постоянно работает? Крестики-нолики пошаговая же игра. Активируй проверку после каждого хода.
Например можно запускать эту проверку из событий крестиков и ноликов на каждой их странице Б и С. Причем проверка идет не всех вариантов а только тех, в которых есть это событие. Таким образом у тебя будет проверка трех вариантов а не девяти
Администратор запретил публиковать записи гостям.

Скрипт проверки в Крестики Нолики на событиях 4 года 5 мес. назад #113750

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1182
  • Спасибо получено: 539
  • Проект месяца 2 местоУчительВетеранПроект месяца 3 местоПроект месяца 1 местоПроект года 3 место
yuryol пишет:
демку прикладывай, иначе ниче непонятно. отвечаю практически наугад так как разбираться в твоей писанине без бухла трудно

1) В ивенте у тебя куча "если". Причем даже если первый "если" выдает "тру" то все-равно идет проверка второго и последующего "если". Выход: добавь "если..иначе". Тогда проверка дальше не пойдет

2) Для меньшей писанины можно заменить выражения типа AScripts.gameOnMapGetSelfSwitches(1, 'B') === true на просто AScripts.gameOnMapGetSelfSwitches(1, 'B').

3) А еще лучше - написать отдельную функцию которая принимает номера трех переключателей и выводит "тру" если все они "тру"
isVictory = (switch1, switch2, switch3) => {
return AScripts.gameOnMapGetSelfSwitches(switch1, 'B') && AScripts.gameOnMapGetSelfSwitches(switch2, 'B') && AScripts.gameOnMapGetSelfSwitches(switch3, 'B')
}

4) Зачем аще параллельное событие? Оно у тебя постоянно работает? Крестики-нолики пошаговая же игра. Активируй проверку после каждого хода.
Например можно запускать эту проверку из событий крестиков и ноликов на каждой их странице Б и С. Причем проверка идет не всех вариантов а только тех, в которых есть это событие. Таким образом у тебя будет проверка трех вариантов а не девяти
1. Ну и что. Если условие выполняется то код дальше идти не должен так как врубается локальный переключатель.
2. Так есть уже -
static gameOnMapGetArraySelfSwitches(aIDEventStart, aIDEventStop, aSelfSwitch, aIsSelfSwitchs) {
		var key;
		var a = 0, b = 0;
		for (var i = aIDEventStart; i <= aIDEventStop; i++){
			key = [$gameMap.mapId(), i, aSelfSwitch];
 
			a++;
 
			if ($gameSelfSwitches.value(key) === aIsSelfSwitchs){
				b++;
			}
		}
 
		return a === b;
	}
Правдо ее нужно изменить а то работает она громоздко. Думаю както можно ее облегчить но пока не нашел как.
3 -Ну так отдельная функция и есть - выше. Она проверет являются ли все локальные переключатели в указаной пачке ивентов включенными или выключенными.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 4 года 5 мес. назад от Alexandr_7.
Администратор запретил публиковать записи гостям.

Скрипт проверки в Крестики Нолики на событиях 4 года 5 мес. назад #113751

  • yuryol
  • yuryol аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1704
  • Спасибо получено: 2729
  • 3 место Готв2 место УчительПобедитель конкурсаОрганизатор конкурсовОратор1 место в ГотвКомпозитор
после твоего ответа я аще ни черта не понял. учись задавать вопросы. уже который раз вижу твои вопросы с кучей текста. При этом сама суть не рассказана, комментов в коде самих функций нету, названиея функций аще ппц.

1. Название функции gameOnMapGetArraySelfSwitches - игра на карте возвращает массив локальный переключателей. ШО?

1) get - в названиях функций ставь первым словом глагол. Есл возвращает значение то get. Елси булевой значение то is. у тебя возвращает а===б. Результатом будет тру или фолс. значит надо писать is, а не get
2) GetArray - дословно возвращает массив. но мы ведь возвращаем не массив а булевое значние
3) gameOnMap зачем аще тут? в gameOnMapGetSelfSwitches тоже можно выкинуть и название функции читаемее станет - getSelfSwitches
4) по сути вся функция нужна чтоб определить ничья ли. так и назови ее isDraw или IsNoVictory или как там ничь по-английски. То что ничья проверяется переключателями - это аще не важно,зачем в название это пихать. А если ты изменишь проверку не по переключателям а например по переменным то будешь переименовывать функцию? Поэтому называй функцию по результату а не по логике внутри функции

2. Хз только зачем эта функция нужна? если у тебя нет победы врага и нет победы героя то и так ясно что ничья.
Администратор запретил публиковать записи гостям.

Скрипт проверки в Крестики Нолики на событиях 4 года 5 мес. назад #113754

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1182
  • Спасибо получено: 539
  • Проект месяца 2 местоУчительВетеранПроект месяца 3 местоПроект месяца 1 местоПроект года 3 место
yuryol пишет:
после твоего ответа я аще ни черта не понял. учись задавать вопросы. уже который раз вижу твои вопросы с кучей текста. При этом сама суть не рассказана, комментов в коде самих функций нету, названиея функций аще ппц.

1. Название функции gameOnMapGetArraySelfSwitches - игра на карте возвращает массив локальный переключателей. ШО?

1) get - в названиях функций ставь первым словом глагол. Есл возвращает значение то get. Елси булевой значение то is. у тебя возвращает а===б. Результатом будет тру или фолс. значит надо писать is, а не get
2) GetArray - дословно возвращает массив. но мы ведь возвращаем не массив а булевое значние
3) gameOnMap зачем аще тут? в gameOnMapGetSelfSwitches тоже можно выкинуть и название функции читаемее станет - getSelfSwitches
4) по сути вся функция нужна чтоб определить ничья ли. так и назови ее isDraw или IsNoVictory или как там ничь по-английски. То что ничья проверяется переключателями - это аще не важно,зачем в название это пихать. А если ты изменишь проверку не по переключателям а например по переменным то будешь переименовывать функцию? Поэтому называй функцию по результату а не по логике внутри функции

2. Хз только зачем эта функция нужна? если у тебя нет победы врага и нет победы героя то и так ясно что ничья.
gameOnMap означает что функция будет действовать только на карте на которой находится игрок. Проще говоря на локации с игроком. Вообще то функция что выше это проверка включены ли или выключены ли все локальные переключатели у иветов
Это не только для крестики ноликит. AScripts - Это плагин с облегчающими скриптами чтобы в самой игре не писать грамоздкие скрипты.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Администратор запретил публиковать записи гостям.

Скрипт проверки в Крестики Нолики на событиях 4 года 5 мес. назад #113755

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1182
  • Спасибо получено: 539
  • Проект месяца 2 местоУчительВетеранПроект месяца 3 местоПроект месяца 1 местоПроект года 3 место
yuryol пишет:
после твоего ответа я аще ни черта не понял. учись задавать вопросы. уже который раз вижу твои вопросы с кучей текста. При этом сама суть не рассказана, комментов в коде самих функций нету, названиея функций аще ппц.

1. Название функции gameOnMapGetArraySelfSwitches - игра на карте возвращает массив локальный переключателей. ШО?

1) get - в названиях функций ставь первым словом глагол. Есл возвращает значение то get. Елси булевой значение то is. у тебя возвращает а===б. Результатом будет тру или фолс. значит надо писать is, а не get
2) GetArray - дословно возвращает массив. но мы ведь возвращаем не массив а булевое значние
3) gameOnMap зачем аще тут? в gameOnMapGetSelfSwitches тоже можно выкинуть и название функции читаемее станет - getSelfSwitches
4) по сути вся функция нужна чтоб определить ничья ли. так и назови ее isDraw или IsNoVictory или как там ничь по-английски. То что ничья проверяется переключателями - это аще не важно,зачем в название это пихать. А если ты изменишь проверку не по переключателям а например по переменным то будешь переименовывать функцию? Поэтому называй функцию по результату а не по логике внутри функции

2. Хз только зачем эта функция нужна? если у тебя нет победы врага и нет победы героя то и так ясно что ничья.
Ну я так понял вот так:
static SetGameOnMapSelfSwitches(aIDEvent, aSelfSwitch, aBool) {
		var key = [$gameMap.mapId(), aIDEvent, aSelfSwitch];
		$gameSelfSwitches.setValue(key, aBool);
	}
 
	static SetGameOnMapArraySelfSwitches(aIDEventStart, aIDEventStop, aSelfSwitch, aBool) {
		var key;
		for (var i = aIDEventStart; i <= aIDEventStop; i++){
			key = [$gameMap.mapId(), i, aSelfSwitch];
			$gameSelfSwitches.setValue(key, aBool);
		}
	}
 
	static IsGameOnMapSelfSwitches(aIDEvent, aSelfSwitch) {
		var key = [$gameMap.mapId(), aIDEvent, aSelfSwitch];
		return $gameSelfSwitches.value(key);
	}
 
	static IsGameOnMapArraySelfSwitches(aIDEventStart, aIDEventStop, aSelfSwitch, aIsSelfSwitchs) {
		var key;
		var a = 0, b = 0;
		for (var i = aIDEventStart; i <= aIDEventStop; i++){
			key = [$gameMap.mapId(), i, aSelfSwitch];
 
			a++;
 
			if ($gameSelfSwitches.value(key) === aIsSelfSwitchs){
				b++;
			}
		}
 
		return a ===b;
	}
Ну и вроде бы написал функцию которая будет проверять победу поражения ничью или продолжение игры:
static IfTicTacToe(aIDEventStart, aSelfSwitchCross, aSelfSwitchToe, aSelfSwitchDraw) {
		var cells = '-';
		var cell1 = aIDEventStart;
		var cell2 = aIDEventStart + 3;
		var cell3 = aIDEventStart + 6;
		if (
			IsGameOnMapArraySelfSwitches(cell1, cell1 + 2, aSelfSwitchCross, true) ||
			IsGameOnMapArraySelfSwitches(cell2, cell2 + 2, aSelfSwitchCross, true)||
			IsGameOnMapArraySelfSwitches(cell3, cell3 + 2, aSelfSwitchCross, true)||
			IsGameOnMapArraySelfSwitches(IsGameOnMapSelfSwitches(cell1, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell2, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell3, aSelfSwitchCross))||
			IsGameOnMapArraySelfSwitches(IsGameOnMapSelfSwitches(cell1 + 1, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell2 + 1, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell3 + 1, aSelfSwitchCross))||
			IsGameOnMapArraySelfSwitches(IsGameOnMapSelfSwitches(cell1 + 2, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell2 + 2, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell3 + 2, aSelfSwitchCross))||
			IsGameOnMapArraySelfSwitches(IsGameOnMapSelfSwitches(cell1, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell2 + 1, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell3 + 2, aSelfSwitchCross))||
			IsGameOnMapArraySelfSwitches(IsGameOnMapSelfSwitches(cell1 + 2, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell2 + 1, aSelfSwitchCross) && IsGameOnMapSelfSwitches(cell3, aSelfSwitchCross))
		)
			cells = 'x';
		else if (
			IsGameOnMapArraySelfSwitches(cell1, cell1 + 2, aSelfSwitchToe, true) ||
			IsGameOnMapArraySelfSwitches(cell2, cell2 + 2, aSelfSwitchToe, true)||
			IsGameOnMapArraySelfSwitches(cell3, cell3 + 2, aSelfSwitchToe, true)||
			(IsGameOnMapSelfSwitches(cell1, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell2, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell3, aSelfSwitchToe))||
			(IsGameOnMapSelfSwitches(cell1 + 1, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell2 + 1, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell3 + 1, aSelfSwitchToe))||
			(IsGameOnMapSelfSwitches(cell1 + 2, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell2 + 2, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell3 + 2, aSelfSwitchToe))||
			(IsGameOnMapSelfSwitches(cell1, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell2 + 1, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell3 + 2, aSelfSwitchToe))||
			(IsGameOnMapSelfSwitches(cell1 + 2, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell2 + 1, aSelfSwitchToe) && IsGameOnMapSelfSwitches(cell3, aSelfSwitchToe))
		)
			cells = '0';
		else if (IsGameOnMapArraySelfSwitches(aIDEventStart, aIDEventStart + 8, aSelfSwitchDraw, false))
			cells = '+';
		else
			cells = '-';
 
		return cells;
	}
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Администратор запретил публиковать записи гостям.

Скрипт проверки в Крестики Нолики на событиях 4 года 5 мес. назад #113800

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1182
  • Спасибо получено: 539
  • Проект месяца 2 местоУчительВетеранПроект месяца 3 местоПроект месяца 1 местоПроект года 3 место
И так вот функция:
static IfTicTacToe(aIDEventStart, aSelfSwitchCross, aSelfSwitchToe, aSelfSwitchDraw) {
		var cells = '-';
		var cell1 = aIDEventStart;
		var cell2 = aIDEventStart + 3;
		var cell3 = aIDEventStart + 6;
		if (IsArraySelfSwitches(undefined, cell1, cell1 + 2, aSelfSwitchCross, true)||
			IsArraySelfSwitches(undefined, cell2, cell2 + 2, aSelfSwitchCross, true)||
			IsArraySelfSwitches(undefined, cell3, cell3 + 2, aSelfSwitchCross, true)||
			(IsSelfSwitches(undefined, cell1, aSelfSwitchCross) && IsSelfSwitches(undefined, cell2, aSelfSwitchCross) && IsSelfSwitches(undefined, cell3, aSelfSwitchCross))||
			(IsSelfSwitches(undefined, cell1 + 1, aSelfSwitchCross) && IsSelfSwitches(undefined, cell2 + 1, aSelfSwitchCross) && IsSelfSwitches(undefined, cell3 + 1, aSelfSwitchCross))||
			(IsSelfSwitches(undefined, cell1 + 2, aSelfSwitchCross) && IsSelfSwitches(undefined, cell2 + 2, aSelfSwitchCross) && IsSelfSwitches(undefined, cell3 + 2, aSelfSwitchCross))||
			(IsSelfSwitches(undefined, cell1, aSelfSwitchCross) && IsSelfSwitches(undefined, cell2 + 1, aSelfSwitchCross) && IsSelfSwitches(undefined, cell3 + 2, aSelfSwitchCross))||
			(IsSelfSwitches(undefined, cell1 + 2, aSelfSwitchCross) && IsSelfSwitches(undefined, cell2 + 1, aSelfSwitchCross) && IsSelfSwitches(undefined, cell3, aSelfSwitchCross)))
			cells = 'x';
		else if (IsArraySelfSwitches(undefined, cell1, cell1 + 2, aSelfSwitchToe, true)||
				 IsArraySelfSwitches(undefined, cell2, cell2 + 2, aSelfSwitchToe, true)||
				 IsArraySelfSwitches(undefined, cell3, cell3 + 2, aSelfSwitchToe, true)||
				 (IsSelfSwitches(undefined, cell1, aSelfSwitchToe) && IsSelfSwitches(undefined, cell2, aSelfSwitchToe) && IsSelfSwitches(undefined, cell3, aSelfSwitchToe))||
				 (IsSelfSwitches(undefined, cell1 + 1, aSelfSwitchToe) && IsSelfSwitches(undefined, cell2 + 1, aSelfSwitchToe) && IsSelfSwitches(undefined, cell3 + 1, aSelfSwitchToe))||
				 (IsSelfSwitches(undefined, cell1 + 2, aSelfSwitchToe) && IsSelfSwitches(undefined, cell2 + 2, aSelfSwitchToe) && IsSelfSwitches(undefined, cell3 + 2, aSelfSwitchToe))||
				 (IsSelfSwitches(undefined, cell1, aSelfSwitchToe) && IsSelfSwitches(undefined, cell2 + 1, aSelfSwitchToe) && IsSelfSwitches(undefined, cell3 + 2, aSelfSwitchToe))||
				 (IsSelfSwitches(undefined, cell1 + 2, aSelfSwitchToe) && IsSelfSwitches(undefined, cell2 + 1, aSelfSwitchToe) && IsSelfSwitches(undefined, cell3, aSelfSwitchToe)))
			cells = '0';
		else if (IsArraySelfSwitches(aIDEventStart, aIDEventStart + 8, aSelfSwitchDraw, false))
			cells = '+';
		else
			cells = '-';
 
		return cells;
	}
Не работает. Код ошибки:
CONDITIONAL BRANCH SCRIPT ERROR
YEP_CoreEngine.js:2810 AScripts.IfTicTacToe(1, 'B', 'C', 'A') === 'x'
YEP_CoreEngine.js:2811 ReferenceError: IsArraySelfSwitches is not defined
    at Function.IfTicTacToe (AScripts.js:82)
    at eval (eval at Game_Interpreter.command111 (YEP_CoreEngine.js:1814), <anonymous>:1:10)
    at Game_Interpreter.command111 (YEP_CoreEngine.js:1814)
    at Game_Interpreter.executeCommand (rpg_objects.js:8930)
    at Game_Interpreter.update (rpg_objects.js:8838)
    at Game_Map.updateInterpreter (rpg_objects.js:6115)
    at Game_Map.update (rpg_objects.js:6022)
    at Scene_Map.updateMain (rpg_scenes.js:608)
    at Scene_Map.updateMainMultiply (rpg_scenes.js:600)
    at Scene_Map.update (rpg_scenes.js:589)
Yanfly.Util.displayError @ YEP_CoreEngine.js:2811
Game_Interpreter.command111 @ YEP_CoreEngine.js:1817
Game_Interpreter.executeCommand @ rpg_objects.js:8930
Game_Interpreter.update @ rpg_objects.js:8838
Game_Map.updateInterpreter @ rpg_objects.js:6115
Game_Map.update @ rpg_objects.js:6022
Scene_Map.updateMain @ rpg_scenes.js:608
Scene_Map.updateMainMultiply @ rpg_scenes.js:600
Scene_Map.update @ rpg_scenes.js:589
Scene_Map.update @ YEP_CoreEngine.js:1425
SceneManager.updateScene @ DKTools.js:37928
SceneManager.updateMain @ rpg_managers.js:1983
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
YEP_CoreEngine.js:2809 CONDITIONAL BRANCH SCRIPT ERROR
YEP_CoreEngine.js:2810 AScripts.IfTicTacToe(1, 'B', 'C', 'A') === '0'
YEP_CoreEngine.js:2811 ReferenceError: IsArraySelfSwitches is not defined
    at Function.IfTicTacToe (AScripts.js:82)
    at eval (eval at Game_Interpreter.command111 (YEP_CoreEngine.js:1814), <anonymous>:1:10)
    at Game_Interpreter.command111 (YEP_CoreEngine.js:1814)
    at Game_Interpreter.executeCommand (rpg_objects.js:8930)
    at Game_Interpreter.update (rpg_objects.js:8838)
    at Game_Map.updateInterpreter (rpg_objects.js:6115)
    at Game_Map.update (rpg_objects.js:6022)
    at Scene_Map.updateMain (rpg_scenes.js:608)
    at Scene_Map.updateMainMultiply (rpg_scenes.js:600)
    at Scene_Map.update (rpg_scenes.js:589)
Yanfly.Util.displayError @ YEP_CoreEngine.js:2811
Game_Interpreter.command111 @ YEP_CoreEngine.js:1817
Game_Interpreter.executeCommand @ rpg_objects.js:8930
Game_Interpreter.update @ rpg_objects.js:8838
Game_Map.updateInterpreter @ rpg_objects.js:6115
Game_Map.update @ rpg_objects.js:6022
Scene_Map.updateMain @ rpg_scenes.js:608
Scene_Map.updateMainMultiply @ rpg_scenes.js:600
Scene_Map.update @ rpg_scenes.js:589
Scene_Map.update @ YEP_CoreEngine.js:1425
SceneManager.updateScene @ DKTools.js:37928
SceneManager.updateMain @ rpg_managers.js:1983
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
requestAnimationFrame (async)
SceneManager.requestUpdate @ rpg_managers.js:1896
SceneManager.updateMain @ rpg_managers.js:1988
SceneManager.update @ rpg_managers.js:1907
YEP_CoreEngine.js:2809 CONDITIONAL BRANCH SCRIPT ERROR
YEP_CoreEngine.js:2810 AScripts.IfTicTacToe(1, 'B', 'C', 'A') === '+'
YEP_CoreEngine.js:2811 ReferenceError: IsArraySelfSwitches is not defined
    at Function.IfTicTacToe (AScripts.js:82)
    at eval (eval at Game_Interpreter.command111 (YEP_CoreEngine.js:1814), <anonymous>:1:10)
    at Game_Interpreter.command111 (YEP_CoreEngine.js:1814)
    at Game_Interpreter.executeCommand (rpg_objects.js:8930)
    at Game_Interpreter.update (rpg_objects.js:8838)
    at Game_Map.updateInterpreter (rpg_objects.js:6115)
    at Game_Map.update (rpg_objects.js:6022)
    at Scene_Map.updateMain (rpg_scenes.js:608)
    at Scene_Map.updateMainMultiply (rpg_scenes.js:600)
    at Scene_Map.update (rpg_scenes.js:589)
В чем причина?
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Администратор запретил публиковать записи гостям.

Скрипт проверки в Крестики Нолики на событиях 4 года 5 мес. назад #113801

  • yuryol
  • yuryol аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1704
  • Спасибо получено: 2729
  • 3 место Готв2 место УчительПобедитель конкурсаОрганизатор конкурсовОратор1 место в ГотвКомпозитор
1) почему названия функций с большой буквы?
2) ну поставь ты необязательный аргумент последним в "IsSelfSwitches", чтобы не приходилось передавать андефайнд
3) аще не понимаю смысла строки
var cell1 = aIDEventStart;
ты назвал аргумент aIDEventStart чтобы потом нигде его не использовать и присвоить его переменной cell1? может тогда сразу его так назвать?
4) смысл присваивать var cell2 = aIDEventStart + 3; если потом к этой cell2 ты все-равно будешь прибавлять двойку? оставь ты этот aIDEventStart и прибавляй к нему числа.
5) ты присвоил переменной cells(ячейка) значение '-';". при этом она еще может быть равна нулю, плюсу и т.д. в итоге ни хера непонятно что происходит
6) че аще значат эти cell? они и aIDEventStart равны, и тире?
7) вынеси подобные сравнения в отдельную функцию чтоб не приходилось громадные строки написывать
(IsSelfSwitches(undefined, cell1, aSelfSwitchToe) && IsSelfSwitches(undefined, cell2, aSelfSwitchToe) && IsSelfSwitches(undefined, cell3, aSelfSwitchToe))
назови ченить типа compareSelfSwitch
8) убери уже эти ненужные "GameOnMap" в каждой функции. хватит громоздить названия функций, тот же aIDEventStart назови id,у тебя же в функции никаких айдишников больше нет
9) подпиши комментами каждое действие и ЧТО делает каждая функция, раз с названиями беда.
1) зачем ко всем переменным "a" подписывать? от "александр" штоле?:D ладно в глобальные че-нить пихать чтоб никто не спутал и не переназначивал переменную,но зачем в локлаьные переменные функций-то вставлять постоянно

ты можешь конечно ничего из этого не делать но хз тогда кто тут поймет че ты тут понаписал
Последнее редактирование: 4 года 5 мес. назад от yuryol.
Администратор запретил публиковать записи гостям.

Скрипт проверки в Крестики Нолики на событиях 4 года 5 мес. назад #113803

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1182
  • Спасибо получено: 539
  • Проект месяца 2 местоУчительВетеранПроект месяца 3 местоПроект месяца 1 местоПроект года 3 место
yuryol пишет:
1) почему названия функций с большой буквы?
2) ну поставь ты необязательный аргумент последним в "IsSelfSwitches", чтобы не приходилось передавать андефайнд
3) аще не понимаю смысла строки
var cell1 = aIDEventStart;
ты назвал аргумент aIDEventStart чтобы потом нигде его не использовать и присвоить его переменной cell1? может тогда сразу его так назвать?
4) смысл присваивать var cell2 = aIDEventStart + 3; если потом к этой cell2 ты все-равно будешь прибавлять двойку? оставь ты этот aIDEventStart и прибавляй к нему числа.
5) ты присвоил переменной cells(ячейка) значение '-';". при этом она еще может быть равна нулю, плюсу и т.д. в итоге ни хера непонятно что происходит
6) че аще значат эти cell? они и aIDEventStart равны, и тире?
7) вынеси подобные сравнения в отдельную функцию чтоб не приходилось громадные строки написывать
(IsSelfSwitches(undefined, cell1, aSelfSwitchToe) && IsSelfSwitches(undefined, cell2, aSelfSwitchToe) && IsSelfSwitches(undefined, cell3, aSelfSwitchToe))
назови ченить типа compareSelfSwitch
8) убери уже эти ненужные "GameOnMap" в каждой функции. хватит громоздить названия функций, тот же aIDEventStart назови id,у тебя же в функции никаких айдишников больше нет
9) подпиши комментами каждое действие и ЧТО делает каждая функция, раз с названиями беда.
1) зачем ко всем переменным "a" подписывать? от "александр" штоле?:D ладно в глобальные че-нить пихать чтоб никто не спутал и не переназначивал переменную,но зачем в локлаьные переменные функций-то вставлять постоянно

ты можешь конечно ничего из этого не делать но хз тогда кто тут поймет че ты тут понаписал
1. Уж лучше я оставлю с большой. Я потратил 2 дня чтобы в своем проекте исправить вызов функций.
2. Проблема в том короче вот:
static SetSelfSwitches(aMapID = $gameMap.mapId(), aIDEvent, aSelfSwitch, aBool, aOffOtherSelfSwitch = false) {
		var key = [aMapID, aIDEvent, aSelfSwitch];
		$gameSelfSwitches.setValue(key, aBool);
		if (aOffOtherSelfSwitch === true)
		{
			var cells = ['A', 'B', 'C', 'D'];
			for (var j = 0; j < cells.length; j++)
				if (cells[j] != aSelfSwitch){
					var key2 = [aMapID, aIDEvent, cells[j]];
					$gameSelfSwitches.setValue(key2, false);
				}
		}
	}
У меня используется 2 аргумента которые необязательны.
Не знаю. Может если вот так написать
static SetSelfSwitches(aMapID = $gameMap.mapId() || undefined, aIDEvent, aSelfSwitch, aBool, aOffOtherSelfSwitch = false) {
		var key = [aMapID, aIDEvent, aSelfSwitch];
		$gameSelfSwitches.setValue(key, aBool);
		if (aOffOtherSelfSwitch === true)
		{
			var cells = ['A', 'B', 'C', 'D'];
			for (var j = 0; j < cells.length; j++)
				if (cells[j] != aSelfSwitch){
					var key2 = [aMapID, aIDEvent, cells[j]];
					$gameSelfSwitches.setValue(key2, false);
				}
		}
	}
То тогда не надо будет писать undefinedв функции.
3 - 4. Это я сделал чтобы не путаться самому мне так проще.
5. Я это сделал чтобы JS понял тип переменной. Хотя наверное в JS переменная через var может любой в любой момент.
Например в C# у переменной должен быть четкий тип. Даже если переменная объявленна через var то ей должно быть присвоенно значение чтобы интерпритатор понял какой тип переменной. Пологаю в JS вообще нет понятия типы переменных и в любой момент переменной можно присвоить другие данные.
Надо будет проверить.
6. cell1 - cell3 это переменные сделал для удобства. Им просто присвоены ИД Событий например Cell1 = первому событию. Cell2 - равен 4 и cell3 равен = 7. Это сделано чтобы проще разобратьсмя в условии проверки
А что до cell то это переменная равна символы который отвечает за тот или иной аспект
Вернет x если победили крестики, 0 если победили 0, + если Ничья и - если остались еще ходы.
8. И где ты увидел GameOnMap? Я их вроде и так убрал?
9. Сделаю.
А добавлять a это привычка от паскаля. Блин. У каждого языка своим правила написания кода. Бесит.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Администратор запретил публиковать записи гостям.

Скрипт проверки в Крестики Нолики на событиях 4 года 5 мес. назад #113804

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1182
  • Спасибо получено: 539
  • Проект месяца 2 местоУчительВетеранПроект месяца 3 местоПроект месяца 1 местоПроект года 3 место
Хотя ладно. Исправлю на маленькие.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Администратор запретил публиковать записи гостям.

Скрипт проверки в Крестики Нолики на событиях 4 года 5 мес. назад #113805

  • yuryol
  • yuryol аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1704
  • Спасибо получено: 2729
  • 3 место Готв2 место УчительПобедитель конкурсаОрганизатор конкурсовОратор1 место в ГотвКомпозитор
2. хоспаде, да поставь ты оба необязательных в конец, че творишь-то
static SetSelfSwitches(aIDEvent, aSelfSwitch, aBool, aOffOtherSelfSwitch = false, aMapID = $gameMap.mapId())

3 - 4. ну и разбирайся тогда во всем сам раз тебе так проще.

5. используй typescript если любишь типы. можно еще для читаемости кода и чтобы не путаться указывать типы переменных в комментариях. и например для каждого аргумента функции подписывать через равно значение по умолчанию. если значение по умолчанию равно строке то значит и тип строка. если булевое - значит тип булевый.

6. да блин чем название cell1 удобно? обозначает id а называется cell, фейспалм просто. назови idByEvent4 например
а то что у тебя cell1 обозначает ид,а cell - совершенно другое это вообще смешно.
раз cell означает крестик или нолик победил аще смешно. назови че-нить типа winner, типа "победитель"

8. точно.не тот коммнет глянул
Администратор запретил публиковать записи гостям.

Скрипт проверки в Крестики Нолики на событиях 4 года 5 мес. назад #113808

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1182
  • Спасибо получено: 539
  • Проект месяца 2 местоУчительВетеранПроект месяца 3 местоПроект месяца 1 местоПроект года 3 место
yuryol пишет:
2. хоспаде, да поставь ты оба необязательных в конец, че творишь-то
static SetSelfSwitches(aIDEvent, aSelfSwitch, aBool, aOffOtherSelfSwitch = false, aMapID = $gameMap.mapId())

3 - 4. ну и разбирайся тогда во всем сам раз тебе так проще.

5. используй typescript если любишь типы. можно еще для читаемости кода и чтобы не путаться указывать типы переменных в комментариях. и например для каждого аргумента функции подписывать через равно значение по умолчанию. если значение по умолчанию равно строке то значит и тип строка. если булевое - значит тип булевый.

6. да блин чем название cell1 удобно? обозначает id а называется cell, фейспалм просто. назови idByEvent4 например
а то что у тебя cell1 обозначает ид,а cell - совершенно другое это вообще смешно.
раз cell означает крестик или нолик победил аще смешно. назови че-нить типа winner, типа "победитель"

8. точно.не тот коммнет глянул
2. Все равно если нужно будет использовать к примеру другую карту то в аргумент отключения остальных переключателей нужно будет указать undefined. Ну в принципе сделаю по твоему варианту так как чаще нужно отключать остальные переключатели нежели с одной карты влиять на события другой.
3 - 4. Ну да. Вот так наверное проще разбираться:
//Скрипт проверки для игры крестики ноллики
	static ifTicTacToe(idEventStart, selfSwitchCross, selfSwitchToe, selfSwitchDraw) {
		//Проверка
		//Если победили крестики
		if (isArraySelfSwitches(undefined, idEventStart, (idEventStart + 2), selfSwitchCross, true)||
			isArraySelfSwitches(undefined, (idEventStart + 3), (idEventStart + 5), selfSwitchCross, true)||
			isArraySelfSwitches(undefined, (idEventStart + 6), (idEventStart + 8), selfSwitchCross, true)||
			(isSelfSwitches(undefined, idEventStart, selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 3), selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 6), selfSwitchCross))||
			(isSelfSwitches(undefined, (idEventStart + 1), selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 4), selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 7), selfSwitchCross))||
			(isSelfSwitches(undefined, (idEventStart + 2), selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 5), selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 8), selfSwitchCross))||
			(isSelfSwitches(undefined, idEventStart, selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 4), selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 8), selfSwitchCross))||
			(isSelfSwitches(undefined, (idEventStart + 2), selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 4), selfSwitchCross) && isSelfSwitches(undefined, (idEventStart + 6), selfSwitchCross)))
			return 'x';
		//Если победили нолики
		else if (isArraySelfSwitches(undefined, idEventStart, (idEventStart + 2), selfSwitchToe, true)||
				 isArraySelfSwitches(undefined, (idEventStart + 3), (idEventStart + 5), selfSwitchToe, true)||
				 isArraySelfSwitches(undefined, (idEventStart + 6), (idEventStart + 8), selfSwitchToe, true)||
				 (isSelfSwitches(undefined, idEventStart, selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 3), selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 6), selfSwitchToe))||
				 (isSelfSwitches(undefined, (idEventStart + 1), selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 4), selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 7), selfSwitchToe))||
				 (isSelfSwitches(undefined, (idEventStart + 2), selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 5), selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 8), selfSwitchToe))||
				 (isSelfSwitches(undefined, idEventStart, selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 4), selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 8), selfSwitchToe))||
				 (isSelfSwitches(undefined, (idEventStart + 2), selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 4), selfSwitchToe) && isSelfSwitches(undefined, (idEventStart + 6), selfSwitchToe)))
			return '0';
		//Если ничья
		else if (isArraySelfSwitches(idEventStart, (idEventStart + 8), selfSwitchDraw, false))
			return '+';
		//В остальных случаях (если остались ходы)
		else
			return '-';
	}
Чем:
//Скрипт проверки для игры крестики ноллики
	static ifTicTacToe(idEventStart, selfSwitchCross, selfSwitchToe, selfSwitchDraw) {
		//Начало ИД Событий 1 линии
		var idEventLine1 = idEventStart;
		//Начало ИД Событий 2 линии
		var idEventLine2 = idEventLine1 + 3;
		//Начало ИД Событий 3 линии
		var idEventLine3 = idEventLine2 + 3;
		//Проверка
		//Если победили крестики
		if (isArraySelfSwitches(undefined, idEventLine1, (idEventLine1 + 2), selfSwitchCross, true)||
			isArraySelfSwitches(undefined, idEventLine2, (idEventLine2 + 2), selfSwitchCross, true)||
			isArraySelfSwitches(undefined, idEventLine3, (idEventLine3 + 2), selfSwitchCross, true)||
			(isSelfSwitches(undefined, idEventLine1, selfSwitchCross) && isSelfSwitches(undefined, idEventLine2, selfSwitchCross) && isSelfSwitches(undefined, idEventLine3, selfSwitchCross))||
			(isSelfSwitches(undefined, (idEventLine1 + 1), selfSwitchCross) && isSelfSwitches(undefined, (idEventLine2 + 1), selfSwitchCross) && isSelfSwitches(undefined, (idEventLine3 + 1), selfSwitchCross))||
			(isSelfSwitches(undefined, (idEventLine1 + 2), selfSwitchCross) && isSelfSwitches(undefined, (idEventLine2 + 2), selfSwitchCross) && isSelfSwitches(undefined, (idEventLine3 + 2), selfSwitchCross))||
			(isSelfSwitches(undefined, idEventLine1, selfSwitchCross) && isSelfSwitches(undefined, (idEventLine2 + 1), selfSwitchCross) && isSelfSwitches(undefined, (idEventLine3 + 2), selfSwitchCross))||
			(isSelfSwitches(undefined, (idEventLine1 + 2), selfSwitchCross) && isSelfSwitches(undefined, (idEventLine2 + 1), selfSwitchCross) && isSelfSwitches(undefined, idEventLine3, selfSwitchCross)))
			return 'x';
		//Если победили нолики
		else if (isArraySelfSwitches(undefined, idEventLine1, (idEventLine1 + 2), selfSwitchToe, true)||
				 isArraySelfSwitches(undefined, idEventLine2, (idEventLine2 + 2), selfSwitchToe, true)||
				 isArraySelfSwitches(undefined, idEventLine3, (idEventLine3 + 2), selfSwitchToe, true)||
				 (isSelfSwitches(undefined, idEventLine1, selfSwitchToe) && isSelfSwitches(undefined, idEventLine2, selfSwitchToe) && isSelfSwitches(undefined, idEventLine3, selfSwitchToe))||
				 (isSelfSwitches(undefined, (idEventLine1 + 1), selfSwitchToe) && isSelfSwitches(undefined, (idEventLine2 + 1), selfSwitchToe) && isSelfSwitches(undefined, (idEventLine3 + 1), selfSwitchToe))||
				 (isSelfSwitches(undefined, (idEventLine1 + 2), selfSwitchToe) && isSelfSwitches(undefined, (idEventLine2 + 2), selfSwitchToe) && isSelfSwitches(undefined, (idEventLine3 + 2), selfSwitchToe))||
				 (isSelfSwitches(undefined, idEventLine1, selfSwitchToe) && isSelfSwitches(undefined, (idEventLine2 + 1), selfSwitchToe) && isSelfSwitches(undefined, (idEventLine3 + 2), selfSwitchToe))||
				 (isSelfSwitches(undefined, (idEventLine1 + 2), selfSwitchToe) && isSelfSwitches(undefined, (idEventLine2 + 1), selfSwitchToe) && isSelfSwitches(undefined, idEventLine3, selfSwitchToe)))
			return '0';
		//Если ничья
		else if (isArraySelfSwitches(idEventStart, (idEventStart + 8), selfSwitchDraw, false))
			return '+';
		//В остальных случаях (если остались ходы)
		else
			return '-';
	}
5. А разве typescript Это не отдельный язык. Да честно говоря мне без разницы. Раз JS не имеет понятия типа переменных то так даже проще будет в какойтьо степени.
6. Если ты про это в пункте 3 - 4 то я исправил имена. Я думал ты ты про то чтобы вообще не использовать дополнительные переменные. Они по факту и не нужны. Просто я привел вариантом выше какая путанница будет без них.
А на счет x и 0 то по факту можно было бы свой перечисляемый тип сделать ну аналог bool так сказать но с 4мя значениями. Но не знаю как это в js делается.
В любом случае это не изменяет того факта что происходит ошибка:
CONDITIONAL BRANCH SCRIPT ERROR
При вызове скрипта.
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Последнее редактирование: 4 года 5 мес. назад от Alexandr_7.
Администратор запретил публиковать записи гостям.

Скрипт проверки в Крестики Нолики на событиях 4 года 5 мес. назад #113809

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1182
  • Спасибо получено: 539
  • Проект месяца 2 местоУчительВетеранПроект месяца 3 местоПроект месяца 1 местоПроект года 3 место
Переделал вид скриптов:
//Скрипт проверки для игры крестики ноллики
	static ifTicTacToe(idEventStart, selfSwitchCross, selfSwitchToe, selfSwitchDraw) {
		//Начало ИД Событий 1 линии
		var idEventLine1 = idEventStart;
		//Начало ИД Событий 2 линии
		var idEventLine2 = idEventLine1 + 3;
		//Начало ИД Событий 3 линии
		var idEventLine3 = idEventLine2 + 3;
		//Проверка
		//Если победили крестики
		if (isArraySelfSwitches(idEventLine1, (idEventLine1 + 2), selfSwitchCross, true)||
			isArraySelfSwitches(idEventLine2, (idEventLine2 + 2), selfSwitchCross, true)||
			isArraySelfSwitches(idEventLine3, (idEventLine3 + 2), selfSwitchCross, true)||
			(isSelfSwitches(idEventLine1, selfSwitchCross) && isSelfSwitches(idEventLine2, selfSwitchCross) && isSelfSwitches(idEventLine3, selfSwitchCross))||
			(isSelfSwitches((idEventLine1 + 1), selfSwitchCross) && isSelfSwitches((idEventLine2 + 1), selfSwitchCross) && isSelfSwitches((idEventLine3 + 1), selfSwitchCross))||
			(isSelfSwitches((idEventLine1 + 2), selfSwitchCross) && isSelfSwitches((idEventLine2 + 2), selfSwitchCross) && isSelfSwitches((idEventLine3 + 2), selfSwitchCross))||
			(isSelfSwitches(idEventLine1, selfSwitchCross) && isSelfSwitches((idEventLine2 + 1), selfSwitchCross) && isSelfSwitches((idEventLine3 + 2), selfSwitchCross))||
			(isSelfSwitches((idEventLine1 + 2), selfSwitchCross) && isSelfSwitches((idEventLine2 + 1), selfSwitchCross) && isSelfSwitches(idEventLine3, selfSwitchCross)))
			return 'x';
		//Если победили нолики
		else if (isArraySelfSwitches(idEventLine1, (idEventLine1 + 2), selfSwitchToe, true)||
				 isArraySelfSwitches(idEventLine2, (idEventLine2 + 2), selfSwitchToe, true)||
				 isArraySelfSwitches(idEventLine3, (idEventLine3 + 2), selfSwitchToe, true)||
				 (isSelfSwitches(idEventLine1, selfSwitchToe) && isSelfSwitches(idEventLine2, selfSwitchToe) && isSelfSwitches(idEventLine3, selfSwitchToe))||
				 (isSelfSwitches((idEventLine1 + 1), selfSwitchToe) && isSelfSwitches((idEventLine2 + 1), selfSwitchToe) && isSelfSwitches((idEventLine3 + 1), selfSwitchToe))||
				 (isSelfSwitches((idEventLine1 + 2), selfSwitchToe) && isSelfSwitches((idEventLine2 + 2), selfSwitchToe) && isSelfSwitches((idEventLine3 + 2), selfSwitchToe))||
				 (isSelfSwitches(idEventLine1, selfSwitchToe) && isSelfSwitches((idEventLine2 + 1), selfSwitchToe) && isSelfSwitches((idEventLine3 + 2), selfSwitchToe))||
				 (isSelfSwitches((idEventLine1 + 2), selfSwitchToe) && isSelfSwitches((idEventLine2 + 1), selfSwitchToe) && isSelfSwitches(idEventLine3, selfSwitchToe)))
			return '0';
		//Если ничья
		else if (isArraySelfSwitches(idEventStart, (idEventStart + 8), selfSwitchDraw, false))
			return '+';
		//В остальных случаях (если остались ходы)
		else
			return '-';
	}
 
	static setSelfSwitches(idEvent, selfSwitch, on, offOtherSelfSwitch = false, mapID = $gameMap.mapId()) {
		var key = [mapID, idEvent, selfSwitch];
		$gameSelfSwitches.setValue(key, on);
		if (offOtherSelfSwitch === true)
		{
			var cells = ['A', 'B', 'C', 'D'];
			for (var j = 0; j < cells.length; j++)
				if (cells[j] != selfSwitch){
					var key2 = [mapID, idEvent, cells[j]];
					$gameSelfSwitches.setValue(key2, false);
				}
		}
	}
 
	static setArraySelfSwitches(idEventStart, idEventStop, selfSwitch, on, offOtherSelfSwitch = false, mapID = $gameMap.mapId()) {
		var key;
		for (var i = idEventStart; i <= idEventStop; i++){
			key = [mapID, i, selfSwitch;
			$gameSelfSwitches.setValue(key, on);
			if (offOtherSelfSwitch === true)
			{
				var cells = ['A', 'B', 'C', 'D'];
				for (var j = 0; j < cells.length; j++)
					if (cells[j] != selfSwitch){
						var key2 = [mapID, i, cells[j]];
						$gameSelfSwitches.setValue(key2, false);
					}
			}
		}
	}
 
	static isSelfSwitches(idEvent, selfSwitch, mapID = $gameMap.mapId()) {
		var key = [mapID, idEvent, selfSwitch];
		return $gameSelfSwitches.value(key);
	}
 
	static isArraySelfSwitches(idEventStart, idEventStop, selfSwitch, isSelfSwitchs, mapID = $gameMap.mapId()) {
		var key;
		var a = 0, b = 0;
		for (var i = idEventStart; i <= idEventStop; i++){
			key = [mapID, i, selfSwitch];
 
			a++;
 
			if ($gameSelfSwitches.value(key) === isSelfSwitchs){
				b++;
			}
		}
 
		return a === b;
	}
Но проблему с ошибкой это не решит. Ошибка происходит на самой проверке if
CONDITIONAL BRANCH SCRIPT ERROR
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Администратор запретил публиковать записи гостям.

Скрипт проверки в Крестики Нолики на событиях 4 года 5 мес. назад #113810

  • Alexandr_7
  • Alexandr_7 аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1182
  • Спасибо получено: 539
  • Проект месяца 2 местоУчительВетеранПроект месяца 3 местоПроект месяца 1 местоПроект года 3 место
Ну что. Может быть знает как исправить. Ну или может предложит другой вариант проверки?
Мой вк: vk.com/borisov_alexandr_5
Мой ютуб канал: www.youtube.com/@alexandr_5836
Мой бусти: boosty.to/alexandr-7
Администратор запретил публиковать записи гостям.
Время создания страницы: 0.722 секунд