anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Di 10 Jun, 2025 10:43

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mo 05 Mai, 2008 20:35 
Offline
Eingeweihter
Eingeweihter

Registriert: So 25 Nov, 2007 12:53
Beiträge: 57
Nun, ich habe zwei fragen und wäre dankbar für denkanstöße oder ideen, wie ich diese beiden dinge umsetzen oder schreiben könnte:

1. Idee:
Mich persönlich nervt dieses - Es ist ein neuer Tag ... ich könnt irre werden ... x_X
meint ihr, es wäre möglich, diesen Teil zu entfernen und es stattdessen so einzurichten, dass beispielsweise jede stunde ein skript aufgerufen wird, dass beispielsweise 10% der HP regeneriert und 5 waldkämpfe gibt? (wobei beides wieder ein Limit hat, das ist ja aber einfacher festzusetzen). Müsste doch eigentlich machbar sein, oder? o.ô

2. Idee:
Nun, ich wollte noch ein wenig den Aspekt wirtschaft mit einbringen, dass man versch. dinge produzieren kann ... nur weiß ich nicht ganz, wie ich die ganzen items vernünftig speichern könnte ... ich mein, für jeden user ne tabelle mit hundert und mehr waren zu machen, ist etwas sehr db-lastig ...

ich würde mich sehr über hilfe und ideen freuen:

lg
Taratan


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo 05 Mai, 2008 21:45 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Zum 1.)
Spätestens wenn du eine echte Cron-Umgebung zu Verfügung hast ist das gar kein Problem mehr, es geht aber auch in dem Common.php - optimalerweise noch in der funktion checkday() auf eine vergangen stunde zu prüfen und dann ein entsprechendes Script auszuführen. "Problematisch" wird erst das wiederbeleben, aber letztenendes ist das alles nur eine Frage von ein wenig Arbeit und einer gewissen Balance

Zum 2.)
Auch möglich, allerdings je nach dem, was du alles drin haben willst fürchterlich komplex. Ich habe mal damit angefangen und selbst unter mithilfe von 1-2 weiteren Codern nichts brauchbares zusammen bekommen, da auch das die ganze Balance kippen kann, wenn es denn was bringen soll, was über die üblichen vergütungen (Gold, Gems, Turns, Hp usw) hinaus gehen soll.

Auric

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo 05 Mai, 2008 21:57 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Zu 1)
Ich habe bei mir den "Newday" nicht abgeschafft, sondern ihn unterdrückt - er geschieht zwar, aber man bekommt es nicht mit. Dass er allerdings geschieht, ist notwendig - es sei denn, du willst n' Riesen Workaround um den Transferbug rumbauen.

Zu 2)
Für nicht-Komplexere Dinge sollte dir die item-Tabelle genügen. Einfach Item einfügen, owner auf Spieler-ID setzen - fin.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo 05 Mai, 2008 23:21 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Ich wollte das ganze eigentlich auch umgestalten.
Am neuen Tag wird die Datei aufgerufen, und nachdem der Inhalt abgearbeitet wurde, wird der Spieler wieder auf die vorherige Seite befördert. Schliesslich kriegt er eine Systemnachricht mit einer Zusammenfassung der Geschehnisse (Lebenspunkte wiederhergestellt, Tier erholt, u.A.)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di 06 Mai, 2008 14:19 
Offline
Eingeweihter
Eingeweihter

Registriert: So 25 Nov, 2007 12:53
Beiträge: 57
Auric hat geschrieben:
Zum 1.)
Spätestens wenn du eine echte Cron-Umgebung zu Verfügung hast ist das gar kein Problem mehr, es geht aber auch in dem Common.php - optimalerweise noch in der funktion checkday() auf eine vergangen stunde zu prüfen und dann ein entsprechendes Script auszuführen. "Problematisch" wird erst das wiederbeleben, aber letztenendes ist das alles nur eine Frage von ein wenig Arbeit und einer gewissen Balance


hm, gut, hab grad mal geschaut, was das mit dem cron auf sich hat *grübel*
muss ich mal schauen, ob ich das mit meinen bescheidenen kenntnissen verstehen werde, vllt. findet sich ja aber noch eine alternative ^^

und das mit dem Wiederbeleben wäre nur eine frage, wie man es hinbekommt ^^
das soll noch kein problem sein, gibt genug möglichkeiten das Problem zu lösen *g*

Auric hat geschrieben:
Zum 2.)
Auch möglich, allerdings je nach dem, was du alles drin haben willst fürchterlich komplex. Ich habe mal damit angefangen und selbst unter mithilfe von 1-2 weiteren Codern nichts brauchbares zusammen bekommen, da auch das die ganze Balance kippen kann, wenn es denn was bringen soll, was über die üblichen vergütungen (Gold, Gems, Turns, Hp usw) hinaus gehen soll.


Nun, die Balance kann man ja anpassen, das solls nicht sein ^^
ich wollte aber auch erstmal ein wenig wirtschaft mit ins spiel einbringen, die vergütungen würden erst im nachhinein kommen, so weit bin ich aber noch nicht *g* ^^

Eliwood hat geschrieben:
Zu 1)
Ich habe bei mir den "Newday" nicht abgeschafft, sondern ihn unterdrückt - er geschieht zwar, aber man bekommt es nicht mit. Dass er allerdings geschieht, ist notwendig - es sei denn, du willst n' Riesen Workaround um den Transferbug rumbauen.

o.ô
das klingt auch mal nach einer genialen Lösung o.ô
darf man vllt. etwas genaueres drüber erfahren, wie ich dies umsetzen könnte? *g*

Eliwood hat geschrieben:
Zu 2)
Für nicht-Komplexere Dinge sollte dir die item-Tabelle genügen. Einfach Item einfügen, owner auf Spieler-ID setzen - fin.


hm, ja, wenn ich auch mit nur 10 items beginne, ist das ja nicht weiter schwierig ... nur wenn ich beispielsweise 20 versch. Produkte in je 20 verschiedenen Qualitätsklassen hätte, dann wären das schon 400 einträge ... es geht mir nicht darum das alles in eine Tabelle zu tun, nur wäre das nicht etwas sehr datenbanklastig? o.ô

Harthas hat geschrieben:
Ich wollte das ganze eigentlich auch umgestalten.
Am neuen Tag wird die Datei aufgerufen, und nachdem der Inhalt abgearbeitet wurde, wird der Spieler wieder auf die vorherige Seite befördert. Schliesslich kriegt er eine Systemnachricht mit einer Zusammenfassung der Geschehnisse (Lebenspunkte wiederhergestellt, Tier erholt, u.A.)


Das klingt auch überaus interessant o.O
nur würde man in diesem fall ja auch beispielsweise aus dem rp oder sonst was rausgerissen werden >.<


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di 06 Mai, 2008 16:47 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Taratan hat geschrieben:
Eliwood hat geschrieben:
Zu 1)
Ich habe bei mir den "Newday" nicht abgeschafft, sondern ihn unterdrückt - er geschieht zwar, aber man bekommt es nicht mit. Dass er allerdings geschieht, ist notwendig - es sei denn, du willst n' Riesen Workaround um den Transferbug rumbauen.

o.ô
das klingt auch mal nach einer genialen Lösung o.ô
darf man vllt. etwas genaueres drüber erfahren, wie ich dies umsetzen könnte? *g*


Ich habe das, wie Auric per Zufall erwähnte, in der Funktion checkday() drin - im übertragenen Sinne zumindest. Checkday prüft, ob ein neuer Tag ist (Also Gametime::isNewDay()), wenn ja, prüft er, obs der erste ist und macht das, was neu für n' Tag ist (setnewday.php, so quasi). Dann ruft er Player::makeNewday() auf, der dann den neuen Tag userspezifisch abarbeitet - also Zinsen erreichnet, Heilung füllt, etcetera. Die Rassenwahl & co findet sich bei mir allerdings auch in der Charaktererstellung - die Rasse wird ja nicht mehr geändert.

Taratan hat geschrieben:
Eliwood hat geschrieben:
Zu 2)
Für nicht-Komplexere Dinge sollte dir die item-Tabelle genügen. Einfach Item einfügen, owner auf Spieler-ID setzen - fin.


hm, ja, wenn ich auch mit nur 10 items beginne, ist das ja nicht weiter schwierig ... nur wenn ich beispielsweise 20 versch. Produkte in je 20 verschiedenen Qualitätsklassen hätte, dann wären das schon 400 einträge ... es geht mir nicht darum das alles in eine Tabelle zu tun, nur wäre das nicht etwas sehr datenbanklastig? o.ô


Es ist besser, 400 Zeilen in einer Tabelle zu haben, als 400 Tabellen. Damit wir uns verstehen. 400 Zeilen sind nichts - es gibt Datenbanken, die haben über einer Million Zeilen und funktionieren noch ganz gut. Natürlich - Alle Zeilen holen geht da schon etwas länger, aber das muss man ja auch nicht unbedingt machen... ;)

Taratan hat geschrieben:
Harthas hat geschrieben:
Ich wollte das ganze eigentlich auch umgestalten.
Am neuen Tag wird die Datei aufgerufen, und nachdem der Inhalt abgearbeitet wurde, wird der Spieler wieder auf die vorherige Seite befördert. Schliesslich kriegt er eine Systemnachricht mit einer Zusammenfassung der Geschehnisse (Lebenspunkte wiederhergestellt, Tier erholt, u.A.)


Das klingt auch überaus interessant o.O
nur würde man in diesem fall ja auch beispielsweise aus dem rp oder sonst was rausgerissen werden >.<


Prinzipiell das gleiche, wie ich es habe - nur schickt Harthas hier zur newday.php und von da aus still und ohne zutun des Benutzers wieder zurück zum RP. Man hat also einen neuen Tag - und merkt absolut gar nichts.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di 06 Mai, 2008 19:32 
Offline
Eingeweihter
Eingeweihter

Registriert: So 25 Nov, 2007 12:53
Beiträge: 57
Eliwood hat geschrieben:
Es ist besser, 400 Zeilen in einer Tabelle zu haben, als 400 Tabellen.

ah, guti, dann werde ich das so machen ^___^

Eliwood hat geschrieben:
Prinzipiell das gleiche, wie ich es habe - nur schickt Harthas hier zur newday.php und von da aus still und ohne zutun des Benutzers wieder zurück zum RP. Man hat also einen neuen Tag - und merkt absolut gar nichts.


Harthas, wollen wir uns dann vllt zusammen 'hinsetzen' und das machen? =)
ansonsten werde ich es nach eliwoods beschreibung (und vielen dank dir dafür) versuchen ^^


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di 06 Mai, 2008 22:51 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Da wirst du es momentan wohl alleine machen müssen.
Zeit ist bei mir leider kaum vorhanden in den nächsten Wochen - Du wirst das schon hinkrieen ;-)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di 06 Mai, 2008 23:09 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Mein Argument gegen die items-Tabelle wäre allerdings folgendes: Die Schlüssel(Keys)!
Hier wird im normalfall immer über einen String ("class") gesucht, wo ein numerischer Index viel schneller wäre. Außerdem hast du immer gleich zwei Text-Felder mit drin - sowie für deine Spezielle Umsetzung einige unnötige Felder, was bei reger verwenung durchaus mal in die Mebibytes an unnötigen Informationen gehen kann. Zudem würde durch eine größer werdende Items-Tabelle das Spiel an allen Stellen lahmer - schon die Hauschlüssel darin aufzubewahren habe ich aufgegeben... Desshalb: Erstmal richtig gründlich überlegen, wie das Datenbankdesign aussehen soll und dann erst an die Umsetzung - das wird dir noch ne menge Kopfzerberechen sparen.

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi 07 Mai, 2008 06:26 
Offline
Eingeweihter
Eingeweihter

Registriert: So 25 Nov, 2007 12:53
Beiträge: 57
hm, also so ganz hab ich das nicht verstanden o.ô

ich dachte einfach eine neue tabelle anzulegen, die wie folgt aussieht:

ID | Item 1 | Item 2 | ... (Anzahl gleich Stückzahl)
1 | 20 | 532 | ....

und wenn ich dann beispielsweise ein lager hätte, dass ich anschauen will, würde ich einfach alle items in einer tabelle ausspucken lassen, die >0 sind.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi 07 Mai, 2008 10:11 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
das mag zwar bei 5 Items gehen, auch bei 20 oder vielleicht sogar 100 noch... aber irgendwann? Spätestens wenn du noch verschiedene Qualitätsstufen haben willst kippt dieses Prinzip - vor allem, da dann ja wieder für jeden User eine volle Spalte angelegt wird, du also wieder massig Speicherverbauch hast. Folgendes halte ich für sinnvoller:

Tabelle "gegenstände" - quasi für die einzelnen Gegenstände und ihre funktion
g_id
name
(goldwert)
[...]

Tabelle "accounts" - wie gehabt
acctid
[...]

Tabelle "besitz" - hier wird vermerkt, wieviele Dinge (welcher Qualtität) welcher User hat:
acctid
g_id
menge
(qualität)

Das ganze sieht dann so aus:
account 1, "Auric" // Auric mit acctid 1
gegenstand 1,"Holzbrett"(,50) // Holzbretter haben die g_id 1 (und sind 50 Goldstücke wert)
besitz 1,1,4(,1) // benutzer 1 hat vom Gegenstand 1 4 Stück (mit der Qualität 1)

Also auf Deutsch: Auric hat 4 normaler Holzbretter.

Das ganze mag anfangs ein wenig komplizier ausschauen, macht aber (hofentlich) sinn. Speziell die Qualitäten um zu setzen wird wohl ercht schwierig - da würde ich dir empfehlen es zunächst ohne aus zu probieren

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi 07 Mai, 2008 13:29 
Offline
Eingeweihter
Eingeweihter

Registriert: So 25 Nov, 2007 12:53
Beiträge: 57
Auric hat geschrieben:
Tabelle "besitz" - hier wird vermerkt, wieviele Dinge (welcher Qualtität) welcher User hat:
acctid
g_id
menge
(qualität)
---------
besitz 1,1,4(,1) // benutzer 1 hat vom Gegenstand 1 4 Stück (mit der Qualität 1)


lediglich an dieser stelle habe ich das noch nicht so ganz verstanden ... also wie es in der tabelle aussehen soll ...

*grübel* :hmpf:

also so, wie ich das versteh, würde dieser teil ja wieder so rauslaufen, dass ich die benutzerid habe und für jedes produkt eine spalte mit mengenangabe mache ... (das mit der qualität lass ich wirklich erstmal weg, sowas sind dinge, die dann erst später hinzukommen, wenn das funktionier >.<) :weia:

aber auf jedenfall schonmal danke an alle für eure nette und wirklich gute hilfe!


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 15 Mai, 2008 14:07 
Offline
Eingeweihter
Eingeweihter

Registriert: So 25 Nov, 2007 12:53
Beiträge: 57
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
*für auric rauskram* wäre wirklich froh über Antwort ^^
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

weiterhin, zwei neue Fragen (ich hab's versucht zu ersuchen, bin aber auf nichts gescheites gekommen, vor allem da ich keine guten Stichworte dafür hatte >__<)

a) Und zwar wollte ich es so einrichten, dass man bei jedem LogIn auf eine art Startseite kommt, wo die wichtigsten Infos angezeigt werden.

in etwa folgendes:

User logt ein - (wenn gegeben, neuer Tag ) anschließend die Startseite.
D.h. auch wenn kein neuer Tag da ist, landet man nach dem einloggen erstmal auf der Startseite >.<
Nur weiß ich nicht so recht, wie man nach jedem logout wieder da hinkommt =(

b) möchte ich auf dieser Startseite auch eine Art Chat einbauen, nur soll der 'speziell' und 'kostenpflichtig' sein - d.h. wenn man dort postet werden beispielsweise 1 dps abgezogen ... ich bin schon am grübeln, wie man dies am besten realisieren kann ... *grübel*


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 15 Mai, 2008 14:31 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
*lol*

...ich würde nun auf das Feld "restorepage" zurücksetzen, oder etwas einfacher, mit dem Feld "location" und dann das ganze, in der Datei "login.php" dem entsprechend ändern....


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr 16 Mai, 2008 16:41 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Ich bin tatsächlich noch auf die überreste meines alten Code gestoßen. Das ganze sieht (vereinfacht) etwa so aus:

$this->bbcode_second_pass_code('', 'CREATE TABLE `rohstoffe` (
`r_id` int(10) unsigned NOT NULL auto_increment,
`r_name` varchar(32) NOT NULL default '',
`r_quality` smallint(5) unsigned NOT NULL default '0',
PRIMARY KEY (`r_id`),
KEY `r_name` (`r_name`)
) ENGINE=InnoDB DEFAULT COMMENT='Speichert die Prototypen der Rohstoffe';

CREATE TABLE `zuordner` (
`z_id` bigint(20) unsigned NOT NULL auto_increment,
`acctid` int(10) unsigned NOT NULL default '0',
`r_id` int(10) unsigned NOT NULL default '0',
`menge` smallint(5) unsigned NOT NULL default '0',
PRIMARY KEY (`z_id`)
) ENGINE=InnoDB DEFAULT COMMENT='Verwaltet die Rohstoffe im Besitz des User';

INSERT INTO `rohstoffe` VALUES(1, 'Holzbrett', 0);
INSERT INTO `rohstoffe` VALUES(2, 'Blechstück', 0);


INSERT INTO `zuordner` VALUES(1, 1, 1, 5);
INSERT INTO `zuordner` VALUES(2, 1, 2, 9);
')
Es gibt also zwei Rohstofftypen - Hotbrett und Blechteil. In dem wir nun in die zuordner-Tabelle einen Eintrag einfügen können einzelnen Usern bestimmte mengen eines Rohstoffs zugewiesen werden. Ganz einfach...

Das Beispiel oben liest sich dann so:
Auric hat 5 Holzbretter und 9 Blechteile

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 15 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum