mmofacts.com

Forenproblem

gepostet vor 18 Jahre, 7 Monate von MannaZ
Hallo,

bei meinem Spiel geht es bald in die nächste Runde, und da die Zeit gezeigt hat, das es nicht möglich ist Forum von Ingamegeschehen zu trennen möchte ich dies mit dem Neustart ändern.

Dazu muss ich die Anmeldung von Spiel und Forum synchronisieren - wo das Problem anfängt.

Wisst ihr ein(en) Plugin/Hack für BurningBoard 2.3.4 mit dem man die normale Forumanmeldung sperren (ist nicht das Problem) und die Benutzeranmeldung automatisieren kann?

So solls aussehen:
Ich möchte nicht, das die Spieler sofort mit der Registrierung im Spiel auch im Forum registriert sind, sondern er soll sich über einen Unterpunkt im Profil - alla "[Im Forum anmelden]" - registrieren (Benutzername wird Ingamename) können.
Zweites Problem ist die Einteilung des Forums:
Es besteht aus 3 Bereichen [Ingameforum Welt 1, Ingameforum Welt2, Supportforum & Allfälliges]. Für die beiden Ingameforen soll es jeweils eine eigene Benutzergruppe geben (Damit die Übersicht nicht verloren geht). Deshalb muss es möglich sein das, wenn ein Spieler in beiden Welten registriert ist, er auch in beiden Benutzergruppen ist. Es muss also beim Klick auf [Im Forum anmelden] überprüft werden, ob der Benutzer schon existiert und wenn ja nur noch zu der entsprechende Benutzergruppe hinzufügen.


Ich weiss es ist nicht leicht zu verstehen was ich will - ich hoffe aber dennoch das ihr mir mit Tips und Lösungsvorschlägen entgegenkommen könnt.

Salve - MannaZ
gepostet vor 18 Jahre, 7 Monate von woodworker
du willst also bei jedem neustart dein komplettes forum leeren?
gepostet vor 18 Jahre, 7 Monate von MannaZ
ja

Du musst aber wissen das eine Runde ca 1 Jahr läuft .
gepostet vor 18 Jahre, 7 Monate von neit
Also sowas zum laufen zu bringen ist erstmal nicht sehr schwer. Ob es dann die eleganteste Lösung ist, wage ich aber zu bezweifeln. Du kannst dir ganz einfach einen Satz funktionen zum direkten Zugriff auf die Foren-DB schreiben, zb. um einen User zu erstellen, ihm eine/mehrere Gruppe zuzuweisen/sie zu üperprüfen, usw. Zur späteren Identifizierung kannst du ja ganz einfach die User-ID aus dem Spiel übernehmen oder sie leicht abwanden (UserID aus Spiel + 100 = ForumID). Mußt halt nur drauf achten das alles sauber zu programmieren, weil das ganze sonst irgendwann nichtmehr synchron ist. Evtl. hat das Wbb ja auch eine API, die dir diese Arbeit erleichtert.

Die zweite mir bekannte Lösung wäre das Forum auf deine User-Datenbank umzuschreiben, hallte ich aber für Irrsinn.
gepostet vor 18 Jahre, 7 Monate von woodworker
Die 3. möglichkeit wäre das game auf die forumdb umzuschreiben
gepostet vor 18 Jahre, 7 Monate von MannaZ
Also gibts da nichts fertiges?
Denke mir das das doch oft benötigt wird (Onlineshop mit Forum zb, ...).

Ja, das mit den Funktionen die auf die DB zugreifen hab ich schon ausprobiert - da kommt nichts gescheides dabei raus - bzw ist der DB-Aufbau von WBB ziemlich kompliziert.
gepostet vor 18 Jahre, 7 Monate von knalli
Hm, kenne jetzt deine angewandte Boardsoftware nicht - in phpBB ist es imho simpel: Mit 3 Queries ist ein normaler Benutzeraccount erstellt, der sofort funktionsfähig ist (z.b. mit Namen&Passwort aus dem Spiel); mit einer kleiner Modifikation (neue Spalte) kann man sogar Anzeigenamen/Loginnamen/Passwort-Konstrukte bauen.
Den Account dann in eine (weitere) Gruppe zu boxen, ist genauso simpel; streng genommen muss man bereits beim Accoutn erstellen den Benutzer ja in eine Gruppe einfügen. (so funktioniert die Rechteverwaltung in phpBB).

Da ich mir aber nicht vorstellen kann, das die Systeme sich soo völlig unterschiedlich verhalten, müsste man durch einen Blick in die Struktur doch eigentlich die 2-3 Kerntabellen ausfindig machen?
gepostet vor 18 Jahre, 7 Monate von Klaus
Die Tabellen sind zwar etwas üppig aber überschaubar. Du brauchst doch nur die bbx_users für deine Userdaten. Die Tabelle kannst du auch durch eigene Spalten ergänzen (so wie ich die letzten 2), das stört das Forum nicht.

-- 

-- Tabellenstruktur für Tabelle `bb1_users`
--

CREATE TABLE `bb1_users` (
`userid` int(11) unsigned NOT NULL auto_increment,
`username` varchar(50) NOT NULL default '',
`password` varchar(50) NOT NULL default '',
`sha1_password` varchar(40) NOT NULL default '',
`email` varchar(150) NOT NULL default '',
`userposts` mediumint(7) unsigned NOT NULL default '0',
`groupcombinationid` int(11) unsigned NOT NULL default '0',
`rankid` int(11) unsigned NOT NULL default '0',
`title` varchar(50) NOT NULL default '',
`regdate` int(11) unsigned NOT NULL default '0',
`lastvisit` int(11) unsigned NOT NULL default '0',
`lastactivity` int(11) unsigned NOT NULL default '0',
`usertext` text NOT NULL,
`signature` text NOT NULL,
`disablesignature` tinyint(1) NOT NULL default '0',
`icq` varchar(30) NOT NULL default '',
`aim` varchar(30) NOT NULL default '',
`yim` varchar(30) NOT NULL default '',
`msn` varchar(30) NOT NULL default '',
`homepage` varchar(250) NOT NULL default '',
`birthday` date NOT NULL default '0000-00-00',
`avatarid` int(11) unsigned NOT NULL default '0',
`gender` tinyint(1) NOT NULL default '0',
`showemail` tinyint(1) NOT NULL default '0',
`admincanemail` tinyint(1) NOT NULL default '1',
`usercanemail` tinyint(1) NOT NULL default '1',
`invisible` tinyint(1) NOT NULL default '0',
`usecookies` tinyint(1) NOT NULL default '1',
`styleid` int(11) unsigned NOT NULL default '0',
`langid` int(11) NOT NULL default '0',
`activation` int(11) unsigned NOT NULL default '0',
`blocked` tinyint(1) NOT NULL default '0',
`daysprune` smallint(5) unsigned NOT NULL default '0',
`timezoneoffset` char(3) NOT NULL default '',
`startweek` tinyint(1) NOT NULL default '0',
`dateformat` varchar(10) NOT NULL default '',
`timeformat` varchar(10) NOT NULL default '',
`emailnotify` tinyint(1) NOT NULL default '0',
`notificationperpm` tinyint(1) NOT NULL default '0',
`buddylist` text NOT NULL,
`ignorelist` text NOT NULL,
`receivepm` tinyint(1) NOT NULL default '1',
`emailonpm` tinyint(1) NOT NULL default '0',
`pmpopup` tinyint(1) NOT NULL default '0',
`umaxposts` smallint(5) unsigned NOT NULL default '0',
`showsignatures` tinyint(1) NOT NULL default '1',
`showavatars` tinyint(1) NOT NULL default '1',
`showimages` tinyint(1) NOT NULL default '1',
`ratingcount` smallint(5) unsigned NOT NULL default '0',
`ratingpoints` mediumint(7) unsigned NOT NULL default '0',
`threadview` tinyint(1) NOT NULL default '0',
`useuseraccess` tinyint(1) NOT NULL default '0',
`isgroupleader` tinyint(1) NOT NULL default '0',
`rankgroupid` int(11) NOT NULL default '0',
`useronlinegroupid` int(11) NOT NULL default '0',
`allowsigsmilies` tinyint(1) NOT NULL default '1',
`allowsightml` tinyint(1) NOT NULL default '0',
`allowsigbbcode` tinyint(1) NOT NULL default '1',
`allowsigimages` tinyint(1) NOT NULL default '1',
`emailonapplication` tinyint(1) NOT NULL default '0',
`acpmode` tinyint(3) NOT NULL default '1',
`acppersonalmenu` tinyint(1) NOT NULL default '0',
`acpmenumarkfirst` tinyint(3) NOT NULL default '0',
`acpmenuhidelast` tinyint(3) NOT NULL default '0',
`usewysiwyg` tinyint(1) unsigned NOT NULL default '0',
`pmtotalcount` int(11) unsigned NOT NULL default '0',
`pminboxcount` int(11) unsigned NOT NULL default '0',
`pmnewcount` int(11) unsigned NOT NULL default '0',
`pmunreadcount` int(11) unsigned NOT NULL default '0',
`reg_ipaddress` varchar(15) NOT NULL default '',
`country` smallint(3) NOT NULL default '0',
`team` int(11) NOT NULL default '0',
PRIMARY KEY (`userid`),
KEY `username` (`username`),
KEY `rankid` (`rankid`),
KEY `avatarid` (`avatarid`),
KEY `activation` (`activation`),
KEY `groupcombinationid` (`groupcombinationid`),
KEY `reg_ipaddress` (`reg_ipaddress`)
) TYPE=MyISAM AUTO_INCREMENT=1947 ;
gepostet vor 18 Jahre, 7 Monate von MannaZ
Ich habe mir das ganze jetzt nochmal ganz genau angesehen und bemerkt das doch ausser der Usertabelle noch 2 weitere Tabellen bei der Registrierung betroffen sind:
 

$db->query("INSERT INTO bb".$n."_user2groups (userid,groupid) VALUES ".wbb_substr($groupvalues, 1));
$db->query("INSERT INTO bb".$n."_userfields (userid".$fieldlist.") VALUES (".$insertid.$fieldvalues.")");

Weiss einer von euch, wofür diese Tabelleneinträge benötigt werden? Und ob man sie nicht weglassen kann?
gepostet vor 18 Jahre, 7 Monate von knalli
Sei doch so lieb und lies die letzten Beitrage mal durch :roll:

nochmal:
Beispiel phpBB Dort muss ein Eintrag in der Usertabelle vorliegen, ein Eintrag in einer Gruppentabelle (jeder User ist in einer eigenen Gruppe) und die Verbindung User-Gruppe. Macht zusammen drei Einträge.

Wenn du die drei Einträge findest, dann schaue nach, was die genau Eintragen. Da du ja quasi das Registrieren simulieren willst, wirst du im Endeffekt das einfach nachbauen (müssen).
gepostet vor 18 Jahre, 7 Monate von Klaus
user2groups: In welchen Gruppen ist der User. Dort solltest du einfach userid und userstandardgruppenid einfügen.

userfields: Für jeden User eine Zeile mit eigenen Profilfeldern (Wohnort Hobby usw.)
gepostet vor 18 Jahre, 7 Monate von MannaZ
Danke.
War wohl vorhin ein bisschen durch den Wind und hab kein bisschen Nachgedacht bevor ich gepostet habe.

Problem gelöst - Registrierung funktioniert - Affe tot.

Falls einer die Funktion benötigt rücke ich sie gerne raus.
gepostet vor 18 Jahre, 7 Monate von TheUndeadable
@Mannaz:

Du kannst sie auch unter http://snippets.galaxy-news.de/ speichern, dann steht sie immer zur Verfügung und geht auch nicht verloren ;-) (Benutzername + Kennwort ist das hiesige hier)
gepostet vor 18 Jahre, 7 Monate von XxMaWoxX
Original von MannaZ


Falls einer die Funktion benötigt rücke ich sie gerne raus.



joa das wär doch ma nice!
gepostet vor 18 Jahre, 6 Monate von Toby
Ich stehe vor einem ähnlichen Problem, wollte aber die Integration noch einen Tick weiter treiben. Daher bin ich aktuell dabei, fürs WBB ein Soap-Interface zu schreiben, das es einem erlaubt, auf einen Großteil der Forenfunktionalität via Soap zuzugreifen.
Hilfe wäre sehr willkommen.
Aktuell kann man aus einem gegebenen Forum Threads + Posts auslesen, um damit eine Art Newsletter zu simulieren (die Zugriffsregeln des Forums regeln auch gleich, wer News erstellen kann, usw. von daher ist das recht praktisch).
Kann man sich schon unter http://oh-dev.tobyf.de anschauen.
Für die Registrierung nehme ich die orginale register.php her und passe sie den Anforderungen an.
Das Interface an sich soll auch keine Änderungen am Orginalcode erfordern.

Auf diese Diskussion antworten