anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mo 09 Jun, 2025 16:18

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Fertigkeiten - Aufruf zur Mitarbeit!
BeitragVerfasst: Fr 21 Jan, 2005 02:38 
Offline
Lehrling
Lehrling

Registriert: Sa 18 Dez, 2004 16:34
Beiträge: 39
Hi,

ich habe ein sehr umfangreiches Modul "wettkampf.php" entwickelt, das ich im folgenden vorstellen möchte. Das Modul selbst gebe ich noch nicht frei, weil die Arbeiten daran noch nicht abgeschlossen sind. Das heißt aber nicht, dass es noch nichts hergibt, im Gegenteil. Wer es schon einmal ausprobieren möchte, kann dies hier tun:
http://www.fair4all.de/logd/home.php?

(Anmerkung: Das unten erklärte Fest startet dort automatisch alle zwei Spieltage und dauert ebensolange).

Warum stelle ich es hier vor? Es ist ein Basismodul und ich möchte Euch dazu animieren, ausgehend von den eingeführten Fertigkeiten Ereignisse dafür zu schreiben!

Um zu erfahren, worum genau es geht und wie Ihr die Fertigkeiten einbinden könnt, lest bitte folgende Dokumentation:

I. Was ist dieses Modul?
II. Wie funktionieren die Fertigkeitsproben?
III. Was habe ich von den Fertigkeiten?
IV. Wie steigere ich die Fertigkeiten?
V. Wie sieht es mit weiteren Fertigkeiten aus?
VI. Aufforderung

I. Was ist dieses Modul?
Dieses Modul fügt ein umfangreiches Fertigkeitensystem in LoGD ein, die zudem in den passenden Wettkämpfen abgefragt werden. Folgende sieben Fertigkeiten sind verfügbar:

get_module_pref("bogen","wettkampf","$session[user][acctid]")
--> Bogenschießen

get_module_pref("kochen","wettkampf","$session[user][acctid]")
--> Kochen und Backen

get_module_pref("schleichen","wettkampf","$session[user][acctid]")
--> Schleichen und Verstecken

get_module_pref("schwimmen","wettkampf","$session[user][acctid]")
--> Schwimmen und Tauchen

get_module_pref("klettern","wettkampf","$session[user][acctid]")
--> Klettern

get_module_pref("reiten","wettkampf","$session[user][acctid]")
--> Reiten

get_module_pref("musik","wettkampf","$session[user][acctid]")
--> Musik und Gesang

Die Minimal- und somit Startwert beträgt jeweils 25, der Maximalwert 95.


II. Wie funktionieren die Fertigkeitsproben?

Es wird gegen 0-100 gewürfelt, wobei der Zufallswert vom effektiven Fertigkeitswert (FW) abgezogen wird. Ein effektiver FW entsteht nach Addition aller Modifikatoren (Boni für leichte, Mali für schwere Proben). Bei der Berechnung hat es sich als "zufälliger" erwiesen, 10 mal "e_rand(0,10)" zu setzen als einmal "e_rand(0,100)".

Anmerkung: Jede Rasse bekommt je zwei Fertigkeiten zugewiesen. Bei einer bekommt sie einen Bonus von 5, bei der anderen einen Malus von 5. Dies wird über die Modul-Settings modifizierbar und abfragbar sein, so dass jeder seine eigenen Rassen dort eintragen kann. Meine Liste sieht so aus und setzt unverändert drei selbstgeschriebene Rassen voraus (Vampire, Vanathy, Echsen):

"bonusbogen"=>"Rasse für Bonus Bogenschießen ,textarea|Elf",
"bonusklettern"=>"Rasse für Bonus Klettern ,textarea|Zwerg",
"bonuskochen"=>"Rasse für Bonus Kochen und Backen ,textarea|Echse",
"bonusmusik"=>"Rasse für Bonus Musik und Gesang ,textarea|Vanathy",
"bonusreiten"=>"Rasse für Bonus Reiten ,textarea|Mensch",
"bonusschleichen"=>"Rasse für Bonus Schleichen und Verstecken ,textarea|Vampir",
"bonusschwimmen"=>"Rasse für Bonus Schwimmen und Tauchen,textarea|Troll",

"malusbogen"=>"Rasse für Malus Bogenschießen ,textarea|Troll",
"malusklettern"=>"Rasse für Malus Klettern ,textarea|Elf",
"maluskochen"=>"Rasse für Malus Kochen und Backen ,textarea|Vanathy",
"malusmusik"=>"Rasse für Malus Musik und Gesang ,textarea|Zwerg",
"malusreiten"=>"Rasse für Malus Reiten ,textarea|Echse",
"malusschleichen"=>"Rasse für Malus Schleichen und Verstecken ,textarea|Mensch",
"malusschwimmen"=>"Rasse für Malus Schwimmen und Tauchen,textarea|Vampir",

Und ja, das mit dem Klettern-Bonus bei den Zwergen meine ich ernst ;-)

Beispiel für eine Schwimmenprobe:

1. Modifikator:
Entweder: Ruhiger See, in dem man fast stehen kann: $mod=30;
Oder: Reißender Fluss mit Stromschnellen: $mod=-30;

und Rassenmodifikator.

2. Die eigentliche Probe:

//Rassenmodifikatoren ermitteln
$bonus=get_module_setting("bonusschwimmen","wettkampf");
$malus=get_module_setting("malusschwimmen","wettkampf");
$userrace=$session[user][race];
if ($userrace==$bonus) $rassenmod=5;
if ($userrace==$malus) $rassenmod=-5;

//Effektiven FW ermitteln
$schwimmen=get_module_pref("schwimmen","wettkampf","$session[user][acctid]")+$mod+$rassenmod;

//Limit von 95 einhalten, weil immer etwas schiefgehen kann
if ($schwimmen>95) $schwimmen=95;

//Die Probe
$probe=$schwimmen-e_rand(0,10)-e_rand(0,10)-e_rand(0,10)-e_rand(0,10)-e_rand(0,10)-e_rand(0,10)-e_rand(0,10)-e_rand(0,10)-e_rand(0,10)-e_rand(0,10);


Denkbar wäre auch eine Kombinationsprobe, bspw. Bogenschießen vom Pferd aus:

$reiten=get_module_pref("reiten","wettkampf","$session[user][acctid]");
$bogen=get_module_pref("bogen","wettkampf","$session[user][acctid]");
$fw=($reiten+bogen)/2;

ODER bei unterschiedlicher Gewichtung der Einzelfertigkeiten
(bspw. besonders einfaches Ziel, aber voller Galopp):

$mod1=50;
$mod2=-30;
$reiten=get_module_pref("reiten","wettkampf","$session[user][acctid]")+$mod1;
$bogen=get_module_pref("bogen","wettkampf","$session[user][acctid]")+$mod2;
if ($reiten>95)$reiten=95;
if ($bogen>95)$bogen=95;
$fw=($reiten+bogen)/2;

3. Nun gibt es mehrere Möglichkeiten:

a.
$probe>=0
--> Die Probe ist ganz simpel bestanden worden.
$probe<0
--> Die Probe ist ganz simpel mißlungen.

b.
Es werden qualitative Unterschiede gemacht:
$probe>=50
--> bspw. besonders gut gelungen (schneller geschwommen, geklettern, geritten, besser gekocht, etc.)
$probe=0
--> Gerade so gelungen, aber immerhin (nicht schnell geritten, aber durchs Ziel gekommen, etc.)
$probe>=-50
--> bspw. misslungen (nicht nur vom Fluss mitgerissen, sondern ertrunken / schwer vom Pferd gestürzt, etc)
etc.

c. Es wird ein Duell ausgerechnet:
Eine Wache erhält einen FW von 50 für Wahrnehmung und bekommt die
Schleichen-und-Verstecken-Probe des Spielers als Modifikator:

Probe Wache: 20
Probe Spieler: 25
Ergebnis: -5
--> Spieler knapp unentdeckt geblieben

Probe Wache: 30
Probe Spieler: 25
Ergebnis: 5
--> Spieler knapp entdeckt (oder auch: weiß, wo sie jetzt suchen muss, bekommt dann Bonus)

Probe Wache: 40
Probe Spieler: -10
Ergebnis: 50
--> Spieler entdeckt, keine Fluchtmöglichkeit

Probe Wache: -40
Probe Spieler: 10
Ergebnis: -50
--> Spieler völlig unentdeckt

Probe Wache: -25
Probe Spieler: -25
Ergebnis: -50
--> Spieler völlig unentdeckt, weil sich beide absolut unfähig angestellt haben

etc.


III. Was habe ich von den Fertigkeiten?

Jede Menge Erweiterungsmöglichkeiten! Es ist möglich, eine Vielzahl von Ereignissen so zu verändern, dass sie nicht mehr dem puren Zufall unterliegen. In der Praxis ist es doch so, dass die meisten Spieler anfangen, bestimmte Ereignisse oder einzelne Auswahlmöglichkeiten zu meiden, wenn sie eine Ahnung davon bekommen (oder nachgeschaut)
haben, wie groß die Erfolgswahrscheinlichkeit ist. Wenn ich jedoch vor einem der obigen Beispielereignisse stehe und meine Werte kenne, weiß ich einzuschätzen, was sinnvoll ist und was nicht. Den reißenden Fluss würde ich mit einem Wert < 70 tunlichst vermeiden.


IV. Wie steigere ich die Fertigkeiten?
Dieses Modul läuft zweiphasig: entweder auf dem "Platz der Völker" findet gerade kein Fest statt, so dass die Ausbilder anwesend sind; oder es findet eines statt, während dessen in jeder Fertigkeit variantenreiche Wettbewerbe ausgetragen werden (inkl. Bestenlisten, Rekordlisten und Preisen). Die Ausbilder sind wie bei den Boni angegeben den Völkern zugeteilt und erhöhen ihre Preise in mehreren Stufen, je nachdem wie gut man bereits ist (einstellbar).
Zudem gibt es Limits: Steigerungsversuche/Tag, erfolgreiche Steigerungen/DK, Grenzwert, ab dem sich die Wahrscheinlichkeit erhöht, dass man nach einem DK einen Fertigkeitspunkt einbüßt (Verfall durch die Wiedergeburt, damit niemand auf ewig einen Wert von 95 in allen Fertigkeiten behalten kann ohne etwas dafür zu tun).

V. Wie sieht es mit weiteren Fertigkeiten aus?
Grundsätzlich ein guter Gedanke. Aber zum einen soll das System gerade am Anfang überschaubar bleiben und zum anderen gibt es gar nicht mal so wenige Fertigkeiten, die sich nicht verwerten lassen. Fertigkeiten wie z.B. "Schmieden" oder richtige Waffenfertigkeiten würden Veränderungen des Ausrüstungs- und sogar Kampfsystems mit sich bringen, die nicht auf die leichte Schulter genommen werden dürfen. Viele andere Fertigkeiten hingegen hören sich zwar gut an, sind aber bei näherer Betrachtung
exotisch und nur wenig universell einsatzbar. Es soll gelten, dass möglichst viele Spieler etwas davon haben.
Daher plädiere ich dafür, dass zunächst einmal die von mir vorgesehenen Fertigkeiten ausgeschöpft werden. Erst dann sollte man darüber nachdenken, Ausbildermodule für dieses Modul zu schreiben (bzw. sie in eigenständigen Modulen unterzubringen, z.B. geistige Fertigkeiten in einer Schule oder Universität).

VI. Aufforderung
Programmiert Ereignisse für die Fertigkeiten! Sie tragen viel zum Spielspaß bei, weil sie endlich durchschaubar werden, und es lassen sich Dinge damit verwirklichen, die bislang nicht denkbar waren. Außerdem erhöht es die Langzeitmotivation, wenn man seine Werte steigern und sich mit anderen messen kann.

Anmerkung: Die FWs werden ab sofort aus den User-Prefs des Moduls "wettkampf" ausgelesen!


Zuletzt geändert von Harassim am Di 25 Jan, 2005 01:36, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 21 Jan, 2005 12:55 
Offline
Profi
Profi

Registriert: Mo 12 Jul, 2004 21:48
Beiträge: 141
klingt interessant.gefällt mir verdammt gut dein mod.Zumindest so von den beschreibungen her.

Würde es gerne mal in action sehen.

Ich wollte auch sowas ähnliches anfangen zu proggen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 21 Jan, 2005 13:24 
Offline
Lehrling
Lehrling

Registriert: Sa 18 Dez, 2004 16:34
Beiträge: 39
Vielleicht ging das etwas unter, weil es ganz am Anfang steht, aber wenn Du das Modul mal ausprobieren möchtest, kannst Du es auf diesem Server tun, der ausschließlich zu Testzwecken aufgesetzt ist:

http://www.fair4all.de/logd/home.php?

Nachtrag: Dort läuft auch ein Waldmodul "jagd.php", das der dortige Spieler Nathan programmiert hat und das auf die Fertigkeiten "Schleichen und Verstecken" und "Bogenschießen" zugreift.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 21 Jan, 2005 15:59 
Offline
Admin
Admin
Benutzeravatar

Registriert: Di 21 Jan, 2003 01:11
Beiträge: 1604
Wohnort: Haßfurt
Geschlecht: Männlich
LoGD: http://www.anpera.net/logd
Skype: anpera-net
Ok, da es ein Aufruf zur Mitarbeit ist, möchte ich eine Anmerkung machen:

Das Modul - wie einige andere von dir auch - hat einen kleinen "Designfehler". Das Modulsystem in 0.9.8 wurde so entworfen, dass Änderungen an der Datenbank nicht mehr nötig sind, um modulspezifische Werte pro Spieler zu speichern.

Du solltest dir angewöhnen, statt mit $session['user']['irgendwas'] (was Änderungen an der accountstable erfordert) mit $wert=get_module_pref("irgendwas") und set_module_pref("irgendwas",$wert) zu arbeiten. Das erleichtert auch die Zugriffe und Änderungen von Werten anderer User und gewährleistet Kompatibilität und Upgradefähigkeit zu zukünftigen Versionen. Standardwerte kannst du in wettkampf_getmoduleinfo() im $info-array definieren.

Die beiden Pref-Funktionen:

get_module_pref($wertname,$modulname,$userid)
- $wertname: Die Bezeichnung des Werts.
- $modulname (optional): Hiermit kann auf Prefs anderer Module zugegriffen werden. Standardwert ist das aufrufende Modul.
- $userid (optional): Hiermit kann auf Prefs anderer User zugegriffen werden. Standardwert ist der aufrufende Spieler.

set_module_pref($wertname,$wert,$modulname,$userid)
- $wertname: Die Bezeichnung des Werts.
- $wert: Der zu speichernde Wert.
- $modulname (optional): Hiermit können Prefs anderer Module modifiziert werden. Standardwert ist das aufrufende Modul.
- $userid (optional): Hiermit können Prefs anderer User modifiziert werden. Standardwert ist der aufrufende Spieler.

(Nicht zu verwechseln mit get_module_setting(), was globale, für alle Spieler geltende Moduleinstellungen abruft.)

_________________
Praxis ist, wenn alles klappt aber keiner weiß warum. Theorie ist, wenn man weiß wie es geht, aber nichts klappt. Wir haben beides erfolgreich vereinigt: Bei uns klappt nichts und keiner weiß warum!

Neues Video: Marios freier Tag in Second Life


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 21 Jan, 2005 16:21 
Offline
Lehrling
Lehrling

Registriert: Sa 18 Dez, 2004 16:34
Beiträge: 39
anpera hat geschrieben:
Das Modulsystem in 0.9.8 wurde so entworfen, dass Änderungen an der Datenbank nicht mehr nötig sind, um modulspezifische Werte pro Spieler zu speichern.


Ich wusste nicht, dass es damit Kompatibilitätprobleme geben könnte. Aber gut, ich werde es demnächst ändern, ist ja keine große Sache, zumal alle ifs über Variablen laufen.

Danke auch für die Erklärungen der get- und set-Befehle, aber die kenne ich bereits und benutze sie auch in diesem Modul für andere Dinge.

PS: Die anderen Module, die Du angesprochen hast, existieren für 0.98 bereits in Versionen, die komplett über settings und prefs laufen.

Schöne Grüße,

Harassim


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 23 Jan, 2005 21:18 
Offline
Lehrling
Lehrling

Registriert: Sa 18 Dez, 2004 16:34
Beiträge: 39
Nachtrag für Anpera:

Bei mir haben sich bezüglich Deines Kommentars zwei Fragen ergeben:

1. Welcher Art sollen diese Kompatibilitätsprobleme sein? Die Tabelle "accounts" wird wohl auch in späteren Versionen erhalten blieben. Zudem wundert mich, dass im core download mit dag.php auch eine Datei enthalten ist, die nicht über settings und prefs, sondern direkte Veränderungen der Tabellen läuft.

2. Das wundert mich aber nicht wirklich, da die Userprefs ein entscheidendes Problem haben, vor dem auch ich stehe, wenn ich das tue, was Du mir ans Herz gelegt hast: Sie werden über die User-Login-ID gespeichert, weshalb es ohne weiteres nicht möglich ist, die dazugehörigen Namen festzustellen. Das ist aber sowohl für den Kopfgeldjäger in dag.php als auch bei meinen Bestenlisten zwingend notwendig.

Daher würde ich gerne wissen, inwiefern es wirklich ein Problem ist, einfach neue Felder in "accounts" anzulegen, und wenn ja, wie ich von den IDs zur Ausgabe des dazugehörigen Namens gelangen kann (in Bestenlisten!).

Schöne Grüße,

Harassim


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 24 Jan, 2005 01:07 
Offline
Admin
Admin
Benutzeravatar

Registriert: Di 21 Jan, 2003 01:11
Beiträge: 1604
Wohnort: Haßfurt
Geschlecht: Männlich
LoGD: http://www.anpera.net/logd
Skype: anpera-net
Erstmal musst du unterscheiden zwischen einer eigenen neuen Tabelle (dag) und der Änderung einer vorhandenen Tabelle.

Sämtliche Module des Core-Downloads, inklusive dag.php, verzichten auf Änderungen der Accounts-Table! Für einige Module, wie dag und drinks, ist es aber nötig, eigene Tabellen zu erstellen. Dagegen ist nichts einzuwenden, da eine solche Tabelle nur für das entsprechende Modul verwendet wird und per Modul-Installer leicht verwaltet werden kann.

Die Tabelle "accounts" wird natürlich auch in zukünftigen Versionen erhalten bleiben, aber sie soll sauber gehalten werden, damit nicht jeder seine Erweiterungen da rein packt und man am Ende komplett den Überblick verliert, welche Module die accounts-table modifizieren und in welcher Weise. Außerdem werden Einträge in die Accounts-Table mit jedem Klick geschrieben. Wenn da auch noch Moduldaten unnötigerweise jedesmal mitgeschleppt werden müssten, zieht das auf Dauer extrem an der Performance.
Dieser Programmierstil mag für 0.9.7 sinnvoll sein, 0.9.8 wurde aber so entworfen, dass diese Praxis nicht mehr nötig ist.
Was der neue Installer bei Updates zu einer modifizierten Accountstable sagt, weiß ich nicht.
Ich spreche im Rahmen deiner Bitte um Mitarbeit nur Empfehlungen aus, ob du dich daran hältst, bleibt natürlich dir überlassen. Funktionieren wird es sicher auch mit einer modifizierten Accounts-Table. ;)


Um Informationen aus verschiedenen Tabellen miteinander verknüpft auszulesen, zum Beispiel für Highscorelisten, gibt es den SQL-Befehl "JOIN" in mehreren Variationen. (Siehe MySQL-Dokumentation für nähere Infos - das ist etwas komplizierter als eine Standard-Abfrage.)
Ansonsten kannst du, wenn du eine eigene Tabelle erstellst, natürlich den Namen mit eintragen. Wenn du mit den Pref-Funktionen arbeitest, und den Namen zu einer ID wissen willst, liest du ihn einfach wie gewohnt aus der Accounts-Table aus.

_________________
Praxis ist, wenn alles klappt aber keiner weiß warum. Theorie ist, wenn man weiß wie es geht, aber nichts klappt. Wir haben beides erfolgreich vereinigt: Bei uns klappt nichts und keiner weiß warum!

Neues Video: Marios freier Tag in Second Life


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 24 Jan, 2005 01:32 
Offline
Lehrling
Lehrling

Registriert: Sa 18 Dez, 2004 16:34
Beiträge: 39
anpera hat geschrieben:
Ich spreche im Rahmen deiner Bitte um Mitarbeit nur Empfehlungen aus, ob du dich daran hältst, bleibt natürlich dir überlassen. Funktionieren wird es sicher auch mit einer modifizierten Accounts-Table. ;)


Schon klar ;)

Versteh meine Nachfragen aber bitte nicht falsch. Deine Kommentare sind sehr sinnvoll, aber ich möchte genau verstehen können, welchen Hintergrund sie haben. Jetzt ist mir einiges klarer.

Ich werde mir den JOIN-Befehl einmal näher anschauen.

Gute Nacht,

Harassim


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 25 Jan, 2005 01:38 
Offline
Lehrling
Lehrling

Registriert: Sa 18 Dez, 2004 16:34
Beiträge: 39
Nachtrag: Es klappt, also werde ich es ändern. Das Ursprungsposting wurde dementsprechend umgeschrieben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 25 Jan, 2005 18:20 
Offline
Lehrling
Lehrling

Registriert: Sa 18 Dez, 2004 16:34
Beiträge: 39
Hi,

ich habe inzwischen alles auf die prefs umgestellt und habe auch die Bestenlisten-Abfrage hinbekommen:

$sql="SELECT name,value AS data1 FROM " . db_prefix("module_userprefs") . " LEFT JOIN accounts ON " . db_prefix("module_userprefs") . ".userid=accounts.acctid WHERE `modulename` = 'wettkampf' AND `setting` = 'wbogen0' AND value != 10000 ORDER BY data1 ASC, dragonkills DESC LIMIT 1";

Allerdings bin ich mit ihr noch nicht ganz zufrieden. So würde ich gerne den Wert für "value" einer zweiten pref-Tabelle einfügen und zum Sortieren verwenden, nämlich den Fertigkeitswert selbst. Ich habe versucht, das mit dem Befehl "UNION ALL" hinzubekommen, bin daran aber (hauptsächlich auf Grund der sehr knappen Dokumentation) gescheitert. Die Abfrage für diesen zweiten Wert würde so aussehen, aber ich weiß nicht, wie ich sie in der obigen unterbringen kann:

"SELECT value FROM " . db_prefix("module_userprefs") . " WHERE `modulename` = 'wettkampf' AND `setting` = 'bogen'"

Mein Versuch wäre gewesen:

$sql="SELECT value AS value1 FROM " . db_prefix("module_userprefs") . " LEFT JOIN accounts ON " . db_prefix("module_userprefs") . ".userid=accounts.acctid WHERE `modulename` = 'wettkampf' AND `setting` = 'wbogen0' AND value != 10000 UNION ALL SELECT value AS value2 FROM " . db_prefix("module_userprefs") . " LEFT JOIN accounts ON " . db_prefix("module_userprefs") . ".userid=accounts.acctid WHERE `modulename` = 'wettkampf' AND `setting` = 'bogen' ORDER BY value1 ASC, value2 DESC LIMIT 1";

Wenn ich das Ergebnis dann aber ausgeben möchte, gibt es keins für value2:

$result = db_query($sql) or die(db_error(LINK));
$sieger = db_fetch_assoc($result);
output("-> %s, %s", $sieger[value1], $sieger[value2]);

***
Results:
-> 0,
***

Wäre nett, wenn mir jemand helfen könnte.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di 25 Jan, 2005 20:02 
Du kannst den JOIN-Befehl verketten. Ob man den aber auf die selbe Tabelle nochmal anwenden kann, weiß ich nicht. Probier einfach mal damit rum:

$sql="
SELECT ".db_prefix("accounts").".name, ".db_prefix("module_userprefs").".value AS value1, ".db_prefix("module_userprefs").".value AS value2 FROM ".db_prefix("module_userprefs")."
LEFT JOIN ".db_prefix("accounts")." ON ".db_prefix("module_userprefs").".userid=".db_prefix("accounts").".acctid
LEFT JOIN ".db_prefix("module_userprefs")." ON ".db_prefix("module_userprefs").".setting='bogen' AND ".db_prefix("module_userprefs").".userid=".db_prefix("module_userprefs").".userid
WHERE modulename='wettkampf' AND (setting='wbogen0' AND value<>10000)
ORDER BY value1 ASC, value2 DESC, ".db_prefix("accounts").".dragonkills DESC LIMIT 1
";


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do 27 Jan, 2005 15:27 
Offline
Lehrling
Lehrling

Registriert: Sa 18 Dez, 2004 16:34
Beiträge: 39
Hi Anpera,

ich habe inzwischen herausbekommen wie man es macht. Reichlich kompliziert ... beachte vor allem den Teil "(t1.value+0)", ohne den eine Bestenliste nicht möglich ist, weil sonst bspw. 1 vor 11 steht. Noch mal danke für die Hinweise!

$sql="
SELECT ".db_prefix("accounts").".acctid AS acctid, ".db_prefix("accounts").".dragonkills AS dragonkills, ".db_prefix("accounts").".name AS name, (t1.value+0) AS value1, t2.value AS value2 FROM ".db_prefix("module_userprefs")." AS t1
LEFT JOIN ".db_prefix("accounts")." ON ".db_prefix("accounts").".acctid=t1.userid
LEFT JOIN ".db_prefix("module_userprefs")." AS t2 ON t1.userid=t2.userid
WHERE t1.modulename='wettkampf' AND t1.setting='wschwimm0' AND t1.value !=0
AND t2.modulename='wettkampf' AND t2.setting='schwimmen'
ORDER BY value1 DESC, value2 ASC, dragonkills ASC, acctid DESC LIMIT 10";


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

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 20 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:  
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum