Seite 1 von 1

Quiz Addon: Oxpus Community Projekt

Verfasst: Di 10.Aug, 2004 14:49
von SethDeBlade
Ich habe mir da mal was ausgedacht. Ich habe saerdnaer auf phpbb.de schon mehrere Vorschläge zur Verbesserung des Quizmods gemacht, aber irgendwie hat er keine Lust oder keine Zeit dazu sich dazu zu äußern, oder sonstwas zu tun. Es gibt wohl eine aktuelle Entwicklerversion, aber die kann man nirgends runterladen. Ich will ihm jetzt hier auch nicht an den Karren fahren, vielleicht hat er auch viel zu tun.

Daher meine Idee: Was haltet ihr davon, wenn wir gemeinsam (ein) Addon(s) schreiben und die ihm dann zukommen lassen. Ich habe da mit einem Mod schon angefangen, aber ich komme damit nicht weit, weil ich mich dafür zu wenig in PHP und dem CFode von phpBB auskenne. Aber wenn wir das zusammen machen, dann sollten wir das doch hinbekommen, oder?? Und hinzukommt, dass wir ja einen Joker haben, nämlich Oxpus ^a (ich weiß, du hast kaum Zeit, war auchn Witz ;) )


Als Addon hatte ich mir folgendes überlegt, (Zitat aus phpbb.de);
Ich habe mir was überlegt. Meine User haben sich "beschwert", dass es nur eine Frage am Tag gibt, und dass man da ja schon echtes Glück haben muss, wenn man dann eine Frage erwischt. Im Moment habe ich deshalb 4 Fragen pro Tag, wovon eine um 0h und eine um 6h kommt. Da ist natürlich kaum jemand online und wenn jemand zufällig das Forum besucht, dann hat er leichtes Spiel. Deswegen habe ich mir gedacht, dass es toll wäre, wenn man dem Quizbot sagen könnte, von wann bis wann er die Fragen stellen soll. Man weiß ja, wann die besucherstärksten Zeiten sind und in denen soll der Bot die Fragen stellen.

Deswegen habe ich schon mal angefangen etwas zu modden, aber ich denke mal, dass ich ohne eure Hilfe nicht weit kommen werde, weil meine PHP-Kenntnisse dafür nicht ausreichen. Einfaches editieren und hinzufügen geht, aber wenn ich was neues selbst in php schreiben muss, da geht mir schnell die Puste aus.

Ich würde mich freuen, wenn sich also jemand beteiligen würde.

angedachte geplante Features:
- Interval deaktivieren: wenn deaktiviert, dann Standard-Verhalten des Quizbots
- Eingabe der Start- und Endstunde
- Eingabe der Anzahl von Fragen in diesem Zeitraum: Intervall / Anzahl ergibt Abstände zwischen Fragen
- Zufallsgenerator: wenn aktiv, dann variiert die Startzeit um XY% der Intervallänge um die rechnerischen Startzeiten

Die Eingabemasken und die Drop-Down-Menüs für die Eingabe der Std habe ich in der tpl-Datei schon erstellt und die entsprechenden Einträge in der lang- und admin-Datei sind auch schon vorhanden.
Bis jetzt habe ich 4 neue Tabelleneinträge in die quiz_config-Tabelle eingetragen.

Wenn Interesse besteht mir zu helfen, dann kann ich die Dateien ja mal uploaden.

Wie gefällt euch meine Idee?? Wäre die Änderung sehr umfangreich?? Prinzipiell müsste es aufwandstechnisch ja gehen, da das Addon ja "nur" das Zeitmanagement betrifft.
Was meint ihr?? Das schaffen wir doch mit Sicherheit, oder??

Verfasst: Di 10.Aug, 2004 17:52
von oxpus
Sicher schafft Ihr das. Aber ich verschiebe es mal zunächst an den richtigen Platz

*uff*

Verfasst: Sa 14.Aug, 2004 16:55
von SethDeBlade
das Interesse an sowas scheint ja nicht so groß zu sein :(

naja, war ja auch nur ne Idee.

Verfasst: So 15.Aug, 2004 05:05
von AmigaLink
Also was mich interessieren würde wäre ein Zufallsgenerator für die Postingzeit und ein zufallsgenerator für die Frage (die ja im Orginal der reihe nach abgearbeitet werden)!
Ich hänge aber momentan am easyUCP ein wenig fest und kann deswegen hier bei deinem Projekt erstmal nicht mit einsteigen. :(

Verfasst: So 15.Aug, 2004 09:17
von oxpus
Ich habs mir gemerkt, aber anderes geht halt momentan vor.

Verfasst: So 15.Aug, 2004 12:06
von SethDeBlade
der zufallsgenerator ist schon eingebaut, nur ist da ein fehler drinne. habe es auf phpbb.de in dem quiz-topic gelesen und eingebaut. ich schau mal, ob ich die betreffende stelle noch finde

Verfasst: So 15.Aug, 2004 12:53
von SethDeBlade
habs gefunden
in includes/quiz.php

$random_quiz_id = mt_rand(1, $count_quiz_id);

da wird ne Variable $count_quiz_id verwendet, die nie definiert wurde.

einfach durch $row['num'] ersetzen und es müsste funktionieren ^^
damit klappts auch mit den zufallsfragen :D ;)

Verfasst: Sa 28.Aug, 2004 18:01
von AmigaLink
^^ erstmal thx Seth
Hab das jetzt gerade mal bei mir gemacht und scheint zu funktionieren. :)

Bist du bei den restlichen Punkten mittlerweile schon etwas weiter gekommen?

Verfasst: Sa 28.Aug, 2004 23:09
von SethDeBlade
nein, leider.

ich habe saerdnaer mal gefragt und er meinte, er hätte weder zeit noch lust den mod weiterzuentwickeln.

deswegen bin ich genau so schlau wie vorher. :(

Aber ich habe ein Addon bekommen, mit welchem man die Antwortzeit des Quizes verändern kann. Man kann einstellen, wie lange die User Zeit haben um auf eine Frage zu antworten und alle User, die in dem Zeitraum richtig geantwortet haben bekommen einen Punkt. Leider funktioniert das Addon in meinem Testforum nicht einwandfrei.

Im Moment will ich den Mod so verändern, dass er die Moderator-Einstellungen im Quiz-ACP nicht global "versteht", sondern nur für den Mod des Quizforums. Ich habe die Administration des Quizes nämlich an einen User abgegeben und der kann momentam leider nicht sehen ob die Leute richtig geantwortet haben.

Ich würde ja nicht fragen, wenn ich mir zu helfen wüsste, aber ich schaffe das alleine nicht. Könntet ihr mir vielleicht bei meinem Problem helfen??

Verfasst: So 29.Aug, 2004 08:18
von AmigaLink
Im Moment will ich den Mod so verändern, dass er die Moderator-Einstellungen im Quiz-ACP nicht global "versteht", sondern nur für den Mod des Quizforums. Ich habe die Administration des Quizes nämlich an einen User abgegeben und der kann momentam leider nicht sehen ob die Leute richtig geantwortet haben.
Dazu müstest du in der includes/quiz.php folgende Funktion abändern:

Code: Alles auswählen

	//
	// This function check the quiz answer auth
	//
	function check_answer_auth($topic_id, &$userdata)
	{
		global $db;
		if ( isset($userdata['quiz_answer_auth_' . $topic_id]) )
		{
			return $userdata['quiz_answer_auth_' . $topic_id];
		}
		if ( !$userdata['session_logged_in'] )
		{
			$userdata['quiz_answer_auth_' . $topic_id] = false;
			return false;
		}
		$this->get_config('allow_admin_in_quiz, allow_mod_in_quiz, allow_quiz_from_user_in_quiz, banned_users, banned_groups');
		if ( $userdata['user_level'] > USER )
		{
			if ( $userdata['user_level'] == ADMIN )
			{
				if ( !$this->config['allow_admin_in_quiz'] )
				{
					$userdata['quiz_answer_auth_' . $topic_id] = false;
					return false;
				}
			}
			else
			{
				if ( !$this->config['allow_mod_in_quiz'] )
				{
					$userdata['quiz_answer_auth_' . $topic_id] = false;
					return false;
				}
			}
		}
		if ( !$this->config['allow_quiz_from_user_in_quiz'] )
		{
			if ( empty($this->quiz_data) )
			{
				$this->get_quiz_data($topic_id);
			}
			if ( $userdata['user_id'] == $this->quiz_data['quiz_from_user_id'] )
			{
				$userdata['quiz_answer_auth_' . $topic_id] = false;
				return false;
			}
		}
		if ( !empty($this->config['banned_users']) )
		{
			if ( strpos(' ,' . $this->config['banned_users'] . ',', ',' . $user_id . ',') )
			{
				$userdata['quiz_answer_auth_' . $topic_id] = false;
				return false;
			}
		}
		$sql = "SELECT count(*) AS num
			FROM " . QUIZ_ANSWER_TABLE . "
			WHERE topic_id = '$topic_id'
				AND user_id = '" . $userdata['user_id'] . "'";
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not select user answer data', '', __LINE__, __FILE__, $sql);
		}
		$row = $db->sql_fetchrow($result);
		if ( $row['num'] > 0 )
		{
			$userdata['quiz_answer_auth_' . $topic_id] = false;
			return false;
		}
		if ( !empty($this->config['banned_groups']) )
		{
			$sql = "SELECT count(*) AS num FROM " . USER_GROUP_TABLE . " WHERE user_id = '" . $userdata['user_id'] . "' AND group_id IN(" . $this->config['banned_groups'] . ")";
			if ( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, 'Could not select user group infos', '', __LINE__, __FILE__, $sql);
			}
			$row = $db->sql_fetchrow($result);
			if ( $row['num'] > 0 )
			{
				$userdata['quiz_answer_auth_' . $topic_id] = false;
				return false;
			}
		}
		$sql = "SELECT count(*) AS num
			FROM " . POSTS_TABLE . " p, " . POSTS_TEXT_TABLE . " pt
			WHERE p.topic_id = '$topic_id'
				AND p.poster_id = '" . $userdata['user_id'] . "'
				AND pt.post_id = p.post_id
				AND pt.quiz_answer <> ''";
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not select post count', '', __LINE__, __FILE__, $sql);
		}
		$row = $db->sql_fetchrow($result);
		if ( $row['num'] > 0 )
		{
			$userdata['quiz_answer_auth_' . $topic_id] = false;
			return false;
		}
		
		$userdata['quiz_answer_auth_' . $topic_id] = true;
		return true;
	}
Wie man das aber am Geschicktestem macht fällt mir aber spontan gerade nicht ein. :(
Ich lass es mir in einer ruhigen Minute mal durch den Kopf gehen.

Verfasst: So 29.Aug, 2004 12:33
von SethDeBlade
so spontan würde ich mal sagen, dass man das hier

Code: Alles auswählen

            if ( !$this->config['allow_mod_in_quiz'] )
            {
               $userdata['quiz_answer_auth_' . $topic_id] = false;
               return false;
            } 
verändern muss.

man müsste vielleicht vorher ne abfrage machen, wer quizforum-mod ist und diese inso in die obige schleife einbauen.

nur wie ich das machen soll, da hab ich keine ahnung

Verfasst: So 29.Aug, 2004 14:11
von AmigaLink
man müsste vielleicht vorher ne abfrage machen, wer quizforum-Mod ist und diese inso in die obige schleife einbauen.
Genau das ist es was ich beizeiten mal näher durchdenken werde. :)
Es sei denn mir kommt jemand zuvor! ;)

Verfasst: So 29.Aug, 2004 15:38
von oxpus
:pfff
Ich nicht...
Kämpfe erstmal mit dem neuen Mod Projekt ( ;) ) und dann sehen wir uns die bestehenden Anfragen mal näher an ...

Verfasst: Sa 22.Jan, 2005 13:32
von Dizko
can't download the quiz Mod

Verfasst: Sa 22.Jan, 2005 17:59
von oxpus
From where? In the download section you can...