Страница 22 из 39

Re: Игра "Викторина"

Добавлено: 09:32, 11.02.2011
ОреЛ
У меня катастрофически не хватает времени пока что. Всё это есть в планах, чтобы сделать.
Система бонусов включается, если ты не больше 2 вопросов простаивал. Больше поставить? (ответил, прошло 2 вопроса, и счетчик опять сбивается)
И еще, у spermet сделан такой симпатичный механизм, что на разное время ответа выдается разная фраза (особенно скрипя мозгами), некоторым это не нравится и хотят, чтобы просто одна фраза была ;(

Re: Игра "Викторина"

Добавлено: 12:47, 11.02.2011
yagrik
ОреЛ писал(а):У меня катастрофически не хватает времени пока что. Всё это есть в планах, чтобы сделать.
Система бонусов включается, если ты не больше 2 вопросов простаивал. Больше поставить? (ответил, прошло 2 вопроса, и счетчик опять сбивается)
И еще, у spermet сделан такой симпатичный механизм, что на разное время ответа выдается разная фраза (особенно скрипя мозгами), некоторым это не нравится и хотят, чтобы просто одна фраза была ;(
Нет уж, тогда сделайте выбор: или одна фраза, или много, я наоборот приветствую много разных фраз, чтобы веселее было. Многие по ночам играют, и так скучно. А еще лучше, чтобы фразу можно было вбивать свои и сколько угодно.

Re: Игра "Викторина"

Добавлено: 19:18, 11.02.2011
Osgald
yagrik писал(а): А еще лучше, чтобы фразу можно было вбивать свои и сколько угодно.
Ну, это уже перебор :) Нескольких стандартных вполне хватит. По-моему, гораздо важнее избавиться от угадал(а) и балл(а, ов).
Кто установил последнюю версию - отпишитесь как включается бонусная система.

Re: Игра "Викторина"

Добавлено: 17:47, 12.02.2011
Osgald
Поясните вы мне Христа ради, как эта бонусная система включается и выключается. Я пока логических объяснений не нахожу. Цитирую:
Фрукт с женским именем. (букв: 5)

[15:42:14] Viktor&Ina: Подсказка №1: г****
[15:42:19] maken: груша
[15:42:20] Viktor&Ina: Система бонусов включена
[15:42:20] Viktor&Ina: maken ответил(а) правильно и заработал(а) 8 (4 бонусных балл(а, ов)) балл(а,ов), У maken 877 балл(а,ов), 1-е место.
[15:42:25] Viktor&Ina: Следующий вопрос №50:

Что обычно делает кошка, увидев перед собой злую собаку? (букв: 7)

[15:42:25] Viktor&Ina: Система бонусов отключена
Вот почему она включилась? И главное, почему опять выключилась?

Re: Игра "Викторина"

Добавлено: 23:07, 12.02.2011
ОреЛ
viktorina_vc.rar
(105.51 КБ) 410 скачиваний
Ладно, мне будет сложно объяснить вам, чтобы вы поняли. Система бонусов включается, если играет количество человек, указанное в настройках. Количество человек подсчитывается из того расчета, чтобы каждый из "играющих" ответил последний раз (или попытался ответить) не раньше, чем 3 вопроса назад. Намереваюсь исправить эту цифру до 5, может так будет проще включить систему бонусов. Если нет, то поставлю цифру 10.
Приложенный файл - викторина с цифрой 5

То, что добавил ниже, там все конфиги тянутся при включении плагина, обращений к файлу больше не идёт во время работы и перезагрузка настроек осуществляется перезапуском плагина.
viktorina_vc.rar
(107.7 КБ) 420 скачиваний
Supermet, тебе подарочек! Я не могу понять "принцип экранирования". Да и тем более при выводе в чат придется "разэкранировать", не так ли? Хорошая тебе задача.
viktorina_vc_source.rar
(342.38 КБ) 375 скачиваний

Re: Игра "Викторина"

Добавлено: 12:39, 13.02.2011
supermet
Просто в sqlite символы одинарной кавычки нужно экранировать.
Тоесть заменить все вхождения ' на '' (2 кавычки.)
Я проверю как это работает и напишу.

Re: Игра "Викторина"

Добавлено: 20:26, 13.02.2011
supermet
Орел, в функции

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

void Register_user(string user){
	int count= getcount("users", "name", user);
	if (count==0){
		sqlite->execDML("insert into users(name, igraet) values ('"+chcp(user, CP_ACP, CP_UTF8)+"', 1)");
		UserList * TempUsers = new UserList[PlayersInBase + 1];
		Users[PlayersInBase].Name = user;	
		Users[PlayersInBase].LastAnswer = 0;
		PlayersInBase++;
		Users = TempUsers;
//...
Здесь ошибка. Зачем переменной Users присваивается сначала объект с именем и ответом, а потом обнуляется присваивается ссылка на новый объект TempUsers.Мне кажется лучше использовать глобальную переменную map<string, string> Users http://www.cplusplus.com/reference/stl/map/

Re: Игра "Викторина"

Добавлено: 20:40, 13.02.2011
ОреЛ
Возможно, я неправильно понял, для чего предназначена эта функция, но всё же, у меня массив Users типа UserList - это массив записей, поэтому мне приходится создавать временный массив с размером на 1 больше, дозаписать еще одну запись и присвоить старому массиву этот временный... Я понял в чем ошибка. Только что. Исправь примерно на такое

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

		UserList * TempUsers = new UserList[PlayersInBase + 1];
		for (int i = 0; i < PlayersInBase; i++){
			TempUsers[i].InGame = Users[i].InGame;
			TempUsers[i].Name = Users[i].Name;
			TempUsers[i].LastAnswer = Users[i].LastAnswer;
			}
		PlayersInBase++;
		TempUsers[PlayersInBase].Name = user;   
		TempUsers[PlayersInBase].LastAnswer = 0;
		Users = TempUsers;
из-за этой ошибки происходило следующее: если человек ни разу не играл, то сбрасывался весь массив играющих...надо выложить исправленный?

Re: Игра "Викторина"

Добавлено: 21:33, 13.02.2011
supermet
тогда в предпоследней строчке перед Users = TempUsers; наверно нужно написать delete[] Users; чтобы утечки памяти не было. И все таки с vector или map было бы легче. Вспомогательную переменную TempUsers не нужно было бы вводить и указатели можно не использовать.

Re: Игра "Викторина"

Добавлено: 21:43, 13.02.2011
ОреЛ
то есть сначала удалить массив Users, а потом присвоить ему другой массив? да, надо бы так сделать, но всё же, я хотел сделать массив записей, потому что по-другому у меня в голове не укладывалась реализация. для каждого пользователя нужно хранить имя, булиновую переменную и номер, а 3 слова в 2 не запихнешь

Re: Игра "Викторина"

Добавлено: 22:16, 13.02.2011
supermet
Ну вот например так можно без указателей:

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

  UserList user;
    vector<UserList> Users;

    user.Name = "User1";
    user.LastAnswer = 0;
    user.InGame = true;
    Users.push_back (user);
    user.Name = "User2";
    user.LastAnswer = 0;
    user.InGame = true;
    Users.push_back (user);
    // вывод
    for (int i=0; i<Users.size(); i++)
        cout << " " << Users.at(i).Name << endl;
    // удалить второго пользователя
    Users.erase (Users.begin()+1);
    for (int i=0; i<Users.size(); i++)
        cout << " " << Users.at(i).Name;
//...
    Users.clear();
В этой функции если кол-во пользователей будет > 255 то произойдет переполнение (byte).
Хотя, наверно так много никогда ни играют.

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

int NumOfUser(string User){
	byte num;
	for (int i = 0; i < PlayersInBase; i++){
		if (Users[i].Name == User) num = i;
		}
	return num;
	}

Re: Игра "Викторина"

Добавлено: 08:38, 14.02.2011
sasha
Что то я запутался! Какая версия щас для клиента с супер игрой?

Re: Игра "Викторина"

Добавлено: 11:00, 15.02.2011
ОреЛ
Начиная с 1.016 совмещенная версия с хорошей супер-игрой

Re: Игра "Викторина"

Добавлено: 13:03, 15.02.2011
sasha
запускаю плагин, и у меня сразу вырубается клиент. Что надо сделать чтобы все работало хорошо?
Плагин стоял от supermet

Re: Игра "Викторина"

Добавлено: 13:07, 15.02.2011
ОреЛ
Какой вы поставили плагин и что и как вы делали? Не люблю на форуме обсуждать одну проблему, лучше это обсуждать лично.