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

Поддержка старых модов или модов, созданных авторами не из нашего сообщества, а также любые вопросы, связанные с модами для phpBB 2.0.x, кроме относящихся к форуму Для авторов (phpBB 2.0.x).

Сообщение Zlodey12 02.05.2007 20:08

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

в прикрепленном архиве - сам chess mod и мои дополнения с инструкцией по установке и описанием
Вложения
chess_plus.rar
дополнения к chess_mod
(29.13 Кб) Скачиваний: 216
Последний раз редактировалось Zlodey12 29.05.2007 19:42, всего редактировалось 4 раз(а).
Zlodey12
phpBB 2.0.2
 
Сообщения: 166
Зарегистрирован: 10.02.2007 10:09


Сообщение fskon 03.05.2007 3:16

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

Ни кнопок не появилось, ни сообщение не приходит.
Пробовал и вручную и с подменой твоими файлами.
И с использованием PM от ADR и без.
fskon
phpBB 2.0.8
 
Сообщения: 331
Зарегистрирован: 26.05.2006 6:48
Откуда: msk.reg.ru

Сообщение Zlodey12 03.05.2007 8:48

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

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

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

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

блин, блин, блин...
для функции "ничья" в таблицу phpbb_chess добавляется поле nich, а я забыл отметить это в описании :roll:
вот как бывает, когда спешить.
короче вечером обновлю архив
Zlodey12
phpBB 2.0.2
 
Сообщения: 166
Зарегистрирован: 10.02.2007 10:09

Сообщение fskon 03.05.2007 16:42

Zlodey12
Мод давно установлен и работает. Обрати внимание по этой теме, я первый заметил что короля можно съесть :D
Твои добавки к моду это Большой плюс! Необходимость помещать chess_viewtopic_body.tpl в root\templates\subSilver, не понимаю...
Создавал партию, делал несколько ходов, искал кнопки везде (и под стол заглядывал) нету их=) Надеюсь что что то упущенно в твоем архивчике...
PM также по базе искал, ничего не обнаружил, хотя по ADR, PM гуляют во всю :)
fskon
phpBB 2.0.8
 
Сообщения: 331
Зарегистрирован: 26.05.2006 6:48
Откуда: msk.reg.ru

Сообщение Zlodey12 03.05.2007 17:36

обновил архив, добавил 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:
Zlodey12
phpBB 2.0.2
 
Сообщения: 166
Зарегистрирован: 10.02.2007 10:09

Сообщение fskon 03.05.2007 18:57

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, и даже если кроме этих строчек ничего не редактировать, то они всё-равно должны появиться, вот только работать не будут

Понятное дело, однако их нет =)
А кнопки Ход и Отмена присутсвуют...
fskon
phpBB 2.0.8
 
Сообщения: 331
Зарегистрирован: 26.05.2006 6:48
Откуда: msk.reg.ru

Сообщение Zlodey12 04.05.2007 8:44

fskon писал(а):При создании парти, когда еще нет оппонета при заходе в топик
Что-то не так

угу, я это тоже заметил. когда оппонента нет, то его user_id = 0, а "нулевого" пользователя на форуме не существует.

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

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

fskon писал(а):Понятное дело, однако их нет =)
А кнопки Ход и Отмена присутсвуют...

а попробуй-ка вышеприведенные две строчки вывода кнопок поставить где-нибудь в другое место tpl-файла, если конечно ты разбираешься в html
Zlodey12
phpBB 2.0.2
 
Сообщения: 166
Зарегистрирован: 10.02.2007 10:09

Сообщение fskon 04.05.2007 14:53

Zlodey12
попробуй-ка вышеприведенные две строчки вывода кнопок поставить где-нибудь в другое место tpl-файла, если конечно ты разбираешься в html

Методом тыка - куда угодно, не страшно :D
Непонятно то, что у тебя же работает. А файлы одинаковые, и совсем не моденные, это же не файлы форума...
fskon
phpBB 2.0.8
 
Сообщения: 331
Зарегистрирован: 26.05.2006 6:48
Откуда: msk.reg.ru

Сообщение Zlodey12 04.05.2007 19:38

исправил ошибку, появляющуюся при отображении шахматных тем в начале партии до того, как к ней присоединится противник.
архив выше обновил.
изменения в файле 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
Вложения
Info.gif
вид шахматных тем
Info.gif (2.5 Кб) Просмотров: 3297
Nich.gif
так выглядит в журнале запись о ничьей
Nich.gif (1.91 Кб) Просмотров: 3297
Buttons.gif
а вот и эти самые кнопочки
Buttons.gif (5.4 Кб) Просмотров: 3297
Zlodey12
phpBB 2.0.2
 
Сообщения: 166
Зарегистрирован: 10.02.2007 10:09

Сообщение fskon 21.05.2007 15:14

Zlodey12
Каюсь, все работает =)
Только убрал [игрок1] [игрок2], странно ведет себя...
После создания новой партии, еще никто не отозвался, а в названии появляется предыдущий оппонент. Когда появляется третий и принимает вызов, тогда название [игрок2] меняется на ник третьего.
fskon
phpBB 2.0.8
 
Сообщения: 331
Зарегистрирован: 26.05.2006 6:48
Откуда: msk.reg.ru

Сообщение arhi 23.05.2007 11:13

Zlodey12
А оповещение в приват о сделанном ходе по-умолчанию? То есть пользователь не может его отключить или включить по желанию? :( Кажется, что это не очень хорошо... можно сделать?
arhi
phpBB 2.0.0
 
Сообщения: 113
Зарегистрирован: 25.01.2007 21:08

Сообщение Zlodey12 23.05.2007 19:15

arhi писал(а):пользователь не может его отключить или включить по желанию?

а как бы ты хотел, чтобы это выглядело?
может быть и сделаю

fskon писал(а):Ни кнопок не появилось, ни сообщение не приходит.
Пробовал и вручную и с подменой твоими файлами.
И с использованием PM от ADR и без

если работает не только у меня, но еще как минимум и у arhi, то проблема где-то у тебя :)
fskon писал(а):Каюсь, все работает =)

ну и почему же у тебя не показывались кнопки?
Zlodey12
phpBB 2.0.2
 
Сообщения: 166
Зарегистрирован: 10.02.2007 10:09

Сообщение fskon 23.05.2007 22:43

Zlodey12 писал(а):ну и почему же у тебя не показывались кнопки?

Дубликаты файлов tpl каким то образом оказались в папках.
Путь до форума у меня не стандартный, и по ошибке изменения проводил не в тех файлах которые были в работе.
fskon
phpBB 2.0.8
 
Сообщения: 331
Зарегистрирован: 26.05.2006 6:48
Откуда: msk.reg.ru

Сообщение Zlodey12 24.05.2007 7:42

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

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

хотя... если если у тебя партии происходят всегда в одной и той же теме... ты просто в конце партии удаляешь игру, затем в этой же теме создаешь новую.. то всё должно быть так, как ты и говорил... но для такого извращенного способа игры я даже не знаю, что сделать :-D ...
У меня всё проще - есть специальная ветка форумов "Шахматы" и там все игры в отдельных темах, можно любую просмотреть, а если понадобится - и создать статистику игр и выигрышей)
Zlodey12
phpBB 2.0.2
 
Сообщения: 166
Зарегистрирован: 10.02.2007 10:09

Сообщение arhi 24.05.2007 10:58

Zlodey12 писал(а):а как бы ты хотел, чтобы это выглядело?
может быть и сделаю

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

Тоже не плохо бы.
arhi
phpBB 2.0.0
 
Сообщения: 113
Зарегистрирован: 25.01.2007 21:08

Пред.След.

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0