Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

МОД Шахмат (chessmod 0.0.1)

Ответы на вопросы, связанные с модами для phpBB 2.0.x, кроме относящихся к форуму Для авторов (phpBB 2.0.x).
Zlodey12
phpBB 1.4.4
Сообщения: 171
Стаж: 17 лет 2 месяца

Сообщение Zlodey12 »

сделал обещанную кнопку "ничья", а по инерции - еще одно информационное дополнение. теперь не нужно будет заходить в топик игры, чтобы узнать, продолжается ли игра, или она уже закончилась чьей-то победой, а также можно сразу увидеть кто играет и каким цветом.
темы с шахматами будут отображаться по типу:
[шахматы] Название топика [Игрок1]-[Игрок2],
причем на первом месте игрок белыми фигурами. Если партия закончилась матом либо нажатием кнопки "сдаюсь", то имя проигравшего будет перечеркнуто. если партия закончится кнопкой "ничья", то оба имени будут перечеркнуты.

в прикрепленном архиве - сам chess mod и мои дополнения с инструкцией по установке и описанием
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Zlodey12 29.05.2007 20:42, всего редактировалось 4 раза.
fskon
phpBB 2.0.2
Сообщения: 333
Стаж: 17 лет 11 месяцев
Откуда: msk.reg.ru

Сообщение fskon »

Zlodey12
Работет только
[шахматы][Название топика] [Игрок1]-[Игрок2],

Ни кнопок не появилось, ни сообщение не приходит.
Пробовал и вручную и с подменой твоими файлами.
И с использованием PM от ADR и без.
Zlodey12
phpBB 1.4.4
Сообщения: 171
Стаж: 17 лет 2 месяца

Сообщение Zlodey12 »

если нет кнопок, значит что-то не так сделал с файлом chess_viewtopic_body.tpl
как вариант можно еще попробовать скопировать его в root\templates\subSilver

кстати, кнопки должны появляются только во время твоего хода.

еще кто-нибудь проверил? работает-неработает?

Добавлено спустя 8 минут 1 секунду:

блин, блин, блин...
для функции "ничья" в таблицу phpbb_chess добавляется поле nich, а я забыл отметить это в описании :roll:
вот как бывает, когда спешить.
короче вечером обновлю архив
fskon
phpBB 2.0.2
Сообщения: 333
Стаж: 17 лет 11 месяцев
Откуда: msk.reg.ru

Сообщение fskon »

Zlodey12
Мод давно установлен и работает. Обрати внимание по этой теме, я первый заметил что короля можно съесть :D
Твои добавки к моду это Большой плюс! Необходимость помещать chess_viewtopic_body.tpl в root\templates\subSilver, не понимаю...
Создавал партию, делал несколько ходов, искал кнопки везде (и под стол заглядывал) нету их=) Надеюсь что что то упущенно в твоем архивчике...
PM также по базе искал, ничего не обнаружил, хотя по ADR, PM гуляют во всю :)
Zlodey12
phpBB 1.4.4
Сообщения: 171
Стаж: 17 лет 2 месяца

Сообщение Zlodey12 »

обновил архив, добавил sql-запрос, без которого кнопка "ничья" не работала. у кого нет phpMyAdmin, могут сделать запрос, загрузив файл phpbb_db_backup.sql из архива через "админ-панель, восстановление БД". у кого префикс таблиц отличен от "phpbb_" - замените на свой.

fskon, никак не пойму, почему у тебя это всё не работает.
давай подождем, может кто еще выскажется, чтобы знать, я неправильные файлы выложил, или ты что-то не так сделал ;)

Добавлено спустя 6 минут 19 секунд:
fskon писал(а):искал кнопки везде
)))))))) их нечего искать, они находятся ниже и левее поля ввода ходов,
и за их появление отвечают две строчки в tpl-файле:

Код: Выделить всё

<input type=button name='pipez' onclick="location.replace ('{S_PIPEZ_ACTION}')" value='Сдаюсь!'>
<input type=button name='nich' onclick="location.replace ('{S_NICH_ACTION}')" value='Ничья'>
это чистый html, и даже если кроме этих строчек ничего не редактировать, то они всё-равно должны появиться, вот только работать не будут :roll:
fskon
phpBB 2.0.2
Сообщения: 333
Стаж: 17 лет 11 месяцев
Откуда: msk.reg.ru

Сообщение fskon »

Zlodey12
При создании парти, когда еще нет оппонета при заходе в топик
Что-то не так

Код: Выделить всё

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

SELECT username FROM phpbb_users WHERE user_id = 

Line : 61
File : chess_viewforum.php
Если оппонента прописывем то все нормализуется
это чистый html, и даже если кроме этих строчек ничего не редактировать, то они всё-равно должны появиться, вот только работать не будут
Понятное дело, однако их нет =)
А кнопки Ход и Отмена присутсвуют...
Zlodey12
phpBB 1.4.4
Сообщения: 171
Стаж: 17 лет 2 месяца

Сообщение Zlodey12 »

fskon писал(а):При создании парти, когда еще нет оппонета при заходе в топик
Что-то не так
угу, я это тоже заметил. когда оппонента нет, то его user_id = 0, а "нулевого" пользователя на форуме не существует.

надо будет добавить условие проверки оппонента :oops:

Добавлено спустя 8 минут 47 секунд:
fskon писал(а):Понятное дело, однако их нет =)
А кнопки Ход и Отмена присутсвуют...
а попробуй-ка вышеприведенные две строчки вывода кнопок поставить где-нибудь в другое место tpl-файла, если конечно ты разбираешься в html
fskon
phpBB 2.0.2
Сообщения: 333
Стаж: 17 лет 11 месяцев
Откуда: msk.reg.ru

Сообщение fskon »

Zlodey12
попробуй-ка вышеприведенные две строчки вывода кнопок поставить где-нибудь в другое место tpl-файла, если конечно ты разбираешься в html
Методом тыка - куда угодно, не страшно :D
Непонятно то, что у тебя же работает. А файлы одинаковые, и совсем не моденные, это же не файлы форума...
Zlodey12
phpBB 1.4.4
Сообщения: 171
Стаж: 17 лет 2 месяца

Сообщение Zlodey12 »

исправил ошибку, появляющуюся при отображении шахматных тем в начале партии до того, как к ней присоединится противник.
архив выше обновил.
изменения в файле chess_viewforum.php:

Код: Выделить всё

//
// *** added by Zlodey (for chess) ***
	$user_id = $userdata['user_id'];
	$sql = "SELECT chess_turn, chess_p1_id, chess_p2_id, chess_list_move FROM " . CHESS_TABLE . " WHERE topic_id = $topic_id AND chess_p2_id != 0 LIMIT 1";
	if (!$result = $db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, "Непонятный облом", '', __LINE__, __FILE__, $sql);
		}
	$blablabla = $db->sql_fetchrow($result);
	$chess_turn = $blablabla['chess_turn']; 
	$name01 = $blablabla['chess_p1_id']; 
	$name02 = $blablabla['chess_p2_id']; 
	$c_l_m = $blablabla['chess_list_move'];
		if ( $chess_turn == $user_id ) 
		{
			$sql = "SELECT topic_status FROM " . TOPICS_TABLE . " WHERE topic_id = $topic_id LIMIT 1";
			if (!$result = $db->sql_query($sql))
				{
					message_die(GENERAL_ERROR, "Непонятный облом", '', __LINE__, __FILE__, $sql);
				}
			$blablabla2 = $db->sql_fetchrow($result);
			$chess_closed = $blablabla2['topic_status'];
			if ( $chess_closed == 0 ) 
				{
// $topic_type .= $lang['Topic_Chess'] . ' [ Мой ход ] ';
				$topic_type .= ' [ Мой ход ] ';
				}
		}
$sql = "SELECT username FROM " . USERS_TABLE . " WHERE user_id = $name01";
	if (!$result = $db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, "Непонятный облом", '', __LINE__, __FILE__, $sql);
		}
$nnn = $db->sql_fetchrow($result);
$name1 = $nnn['username'];
$sql = "SELECT username FROM " . USERS_TABLE . " WHERE user_id = $name02";
	if (!$result = $db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, "Непонятный облом", '', __LINE__, __FILE__, $sql);
		}
$nnn = $db->sql_fetchrow($result);
$name2 = $nnn['username'];

$s_c0 = substr_count($c_l_m,"ничья");
	if ($s_c0 == 2)
	{
		$name1 = "<s> " . $name1 . " </s>";
		$name2 = "<s> " . $name2 . " </s>";
	}
	else
	{
		$c_l_m = explode( '|', $c_l_m );
		$s_c1 = substr_count($c_l_m[1],"#");
		$s_c2 = substr_count($c_l_m[0],"сдался");
			if ($s_c1 OR $s_c2)
			{
				$name1 = "<s> " . $name1 . " </s>";
			}
		$s_c1 = substr_count($c_l_m[0],"#");
		$s_c2 = substr_count($c_l_m[1],"сдался");
			if ($s_c1 OR $s_c2)
			{
				$name2 = "<s> " . $name2 . " </s>";
			}
	}
// *** added by Zlodey (for chess) ***
//
меняем на:

Код: Выделить всё

//
// *** added by Zlodey (for chess) ***
	$user_id = $userdata['user_id'];
	$sql = "SELECT chess_turn, chess_p1_id, chess_p2_id, chess_list_move FROM " . CHESS_TABLE . " WHERE topic_id = $topic_id AND chess_p2_id != 0 LIMIT 1";
	if (!$result = $db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, "Непонятный облом", '', __LINE__, __FILE__, $sql);
		}
	$blablabla = $db->sql_fetchrow($result);
	$chess_turn = $blablabla['chess_turn']; 
	$name01 = $blablabla['chess_p1_id']; 
	$name02 = $blablabla['chess_p2_id']; 
	$c_l_m = $blablabla['chess_list_move'];

if ($name01 AND $name02)
{

		if ( $chess_turn == $user_id ) 
		{
			$sql = "SELECT topic_status FROM " . TOPICS_TABLE . " WHERE topic_id = $topic_id LIMIT 1";
			if (!$result = $db->sql_query($sql))
				{
					message_die(GENERAL_ERROR, "Непонятный облом", '', __LINE__, __FILE__, $sql);
				}
			$blablabla2 = $db->sql_fetchrow($result);
			$chess_closed = $blablabla2['topic_status'];
			if ( $chess_closed == 0 ) 
				{
// $topic_type .= $lang['Topic_Chess'] . ' [ Мой ход ] ';
				$topic_type .= ' [ Мой ход ] ';
				}
		}
$sql = "SELECT username FROM " . USERS_TABLE . " WHERE user_id = $name01";
	if (!$result = $db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, "Непонятный облом", '', __LINE__, __FILE__, $sql);
		}
$nnn = $db->sql_fetchrow($result);
$name1 = $nnn['username'];
$sql = "SELECT username FROM " . USERS_TABLE . " WHERE user_id = $name02";
	if (!$result = $db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, "Непонятный облом", '', __LINE__, __FILE__, $sql);
		}
$nnn = $db->sql_fetchrow($result);
$name2 = $nnn['username'];

$s_c0 = substr_count($c_l_m,"ничья");
	if ($s_c0 == 2)
	{
		$name1 = "<s> " . $name1 . " </s>";
		$name2 = "<s> " . $name2 . " </s>";
	}
	else
	{
		$c_l_m = explode( '|', $c_l_m );
		$s_c1 = substr_count($c_l_m[1],"#");
		$s_c2 = substr_count($c_l_m[0],"сдался");
			if ($s_c1 OR $s_c2)
			{
				$name1 = "<s> " . $name1 . " </s>";
			}
		$s_c1 = substr_count($c_l_m[0],"#");
		$s_c2 = substr_count($c_l_m[1],"сдался");
			if ($s_c1 OR $s_c2)
			{
				$name2 = "<s> " . $name2 . " </s>";
			}
	}

}
// *** added by Zlodey (for chess) ***
//
продолжаем искать баги :D
У вас нет необходимых прав для просмотра вложений в этом сообщении.
fskon
phpBB 2.0.2
Сообщения: 333
Стаж: 17 лет 11 месяцев
Откуда: msk.reg.ru

Сообщение fskon »

Zlodey12
Каюсь, все работает =)
Только убрал [игрок1] [игрок2], странно ведет себя...
После создания новой партии, еще никто не отозвался, а в названии появляется предыдущий оппонент. Когда появляется третий и принимает вызов, тогда название [игрок2] меняется на ник третьего.
arhi
phpBB 1.4.4
Сообщения: 111
Стаж: 17 лет 3 месяца
Забанен: Бессрочно

Сообщение arhi »

Zlodey12
А оповещение в приват о сделанном ходе по-умолчанию? То есть пользователь не может его отключить или включить по желанию? :( Кажется, что это не очень хорошо... можно сделать?
Zlodey12
phpBB 1.4.4
Сообщения: 171
Стаж: 17 лет 2 месяца

Сообщение Zlodey12 »

arhi писал(а):пользователь не может его отключить или включить по желанию?
а как бы ты хотел, чтобы это выглядело?
может быть и сделаю
fskon писал(а):Ни кнопок не появилось, ни сообщение не приходит.
Пробовал и вручную и с подменой твоими файлами.
И с использованием PM от ADR и без
если работает не только у меня, но еще как минимум и у arhi, то проблема где-то у тебя :)
fskon писал(а):Каюсь, все работает =)
ну и почему же у тебя не показывались кнопки?
fskon
phpBB 2.0.2
Сообщения: 333
Стаж: 17 лет 11 месяцев
Откуда: msk.reg.ru

Сообщение fskon »

Zlodey12 писал(а):ну и почему же у тебя не показывались кнопки?
Дубликаты файлов tpl каким то образом оказались в папках.
Путь до форума у меня не стандартный, и по ошибке изменения проводил не в тех файлах которые были в работе.
Zlodey12
phpBB 1.4.4
Сообщения: 171
Стаж: 17 лет 2 месяца

Сообщение Zlodey12 »

fskon писал(а):Только убрал [игрок1] [игрок2], странно ведет себя...
После создания новой партии, еще никто не отозвался, а в названии появляется предыдущий оппонент
действительно странно. у меня в начале партии, до присоединения оппонента тема отображается так:
[шахматы] Название топика [ ]-[ ],
да и как там может появиться предыдущий оппонент, если идет запрос в базу о текущей теме, а не о предыдущей.

хотя... если если у тебя партии происходят всегда в одной и той же теме... ты просто в конце партии удаляешь игру, затем в этой же теме создаешь новую.. то всё должно быть так, как ты и говорил... но для такого извращенного способа игры я даже не знаю, что сделать :-D ...
У меня всё проще - есть специальная ветка форумов "Шахматы" и там все игры в отдельных темах, можно любую просмотреть, а если понадобится - и создать статистику игр и выигрышей)
arhi
phpBB 1.4.4
Сообщения: 111
Стаж: 17 лет 3 месяца
Забанен: Бессрочно

Сообщение arhi »

Zlodey12 писал(а):а как бы ты хотел, чтобы это выглядело?
может быть и сделаю
Ну, например в профиле:
"Получать приватное сообщение при переходе хода в шахматной партии?" Да - Нет - по-умолчанию НЕТ.
Zlodey12 писал(а): а если понадобится - и создать статистику игр и выигрышей)
Тоже не плохо бы.

Вернуться в «Поддержка модов для phpBB 2.0.x»