anpera.net
https://anpera.homeip.net/phpbb3/

Der Markt - Itemhandel zwischen Spieler
https://anpera.homeip.net/phpbb3/viewtopic.php?f=43&t=2430
Seite 1 von 4

Autor:  Eliwood [ Fr 07 Apr, 2006 20:57 ]
Betreff des Beitrags:  Der Markt - Itemhandel zwischen Spieler

So. Endlich ist die Grundfassung meines Marktes fertig. Bekannt als "Die Markthalle der Völker" machten mal Möglichkeiten die Runde, Items zu kaufen und zu verkaufen.
Doch hat es mich immer wieder genervt, dass diese sehr buggy waren. In letzter Zeit hat es mich sogar genervt, dass alle Versionen, die ich kannte, mit vielen, vielen zusätzlichen Tabellen arbeiteten, wobei nach meinen Vorstellungen genau eine von nöten gewesen wäre.
Meiner Idee folgend, hab ich dieses Script nun in einer Roh-Fassung fertig geschrieben und veröffentliche es hiermit, um Bugs zu finden, da ich kein wirklich besuchtes LoGD habe (=>Pherae, Homeserver).

Doch bevor ich grossartig mit der Einbauanleitung beginne, zuerst ein paar Bedinnungen, denen man zustimmen muss, um das Script gebrauchen zu dürfen:
    Es gibt gewisse Stellen, die weder umgeschrieben werden dürfen, noch aus dem Script entfernt werden.
    Das gilt für die gesammte Gedenkttafel!
    Ebenso darf der Link dahingehend nicht entfernt werden, danke.
    Ansonsten ist eine beliebige Freiheit in den Scripten vorhanden, es darf geänder und verändert werden, was nicht speziell markiert wurde.


Funktionen:
- Item können für x Gold und x Edelsteine angeboten werden (Rohversion nur für die Kategorie Möbel)
- 5 neuste Gegenstände beim Haupteingang der Halle
- Sortiermöglichkeiten nach allen Spalten beim betrachten von Inventar und den Angeboten (->Abgesehen von den 5 neusten!)
- Ort für Rollenspiel bei der Gedenktafel

Kommt noch... Irgendwann:
- Seitenfunktionen (Ja, ich weiss... Eigentlich sollte das jetzt schon dabei sein, aber habs dann doch vergessen)
- Itemlöschfunktion für Admins
- Zurückziehmöglichkeit für Möbel (Naja, gibt ja auch noch nicht mehr *g*)


SQL:
$this->bbcode_second_pass_code('', 'CREATE TABLE `itemtransfer` (
`itemid` INT( 11 ) UNSIGNED NOT NULL ,
`seller` INT( 11 ) UNSIGNED NOT NULL ,
`buyer` INT( 11 ) UNSIGNED NOT NULL ,
`gold` INT( 11 ) UNSIGNED NOT NULL ,
`gems` INT( 11 ) UNSIGNED NOT NULL ,
`entrydate` DATETIME NOT NULL ,
PRIMARY KEY ( `itemid` )
) TYPE = MYISAM ;')
(In der Datei steht noch ein weiterer Query, den ich mir aufgeschrieben habe, aber noch nicht gebraucht wird!)

Anleitung:
Auch hier will ich mich kurz fassen.
[php]## village.php, suche:
addnav("Pegasus Rüstungen","armor.php");
## Füge danach ein:
addnav('Der grosse Markt','markt.php');


## newday.php, Suche:
$session['user']['drunkenness']=0;
$session['user']['bounties']=0;
## Füge danach ein:
// Markt - Transferbugloses verkaufen
Require_once './lib/markt-funktionen.php';
define('ACCTID',$session['user']['acctid']);

$selleditems = markt_query_selleditems();

if($selleditems['rows'] > 0)
{
$goldplus = 0;
$gemsplus = 0;

while($row = db_fetch_assoc($selleditems['result']))
{
$body = '`5'.$row['buyername'].'`3 hat auf dem Markt dein Item `^'.$row['name'].'`3 gesehen und hat es für `^'
.$row['gold'].' Gold`3 und `5'.$row['gems'].' Edelsteine`3 gekauft. Du bist glücklich über dein Verdientes Geld.';

systemmail(ACCTID,'`^Item verkauft!',$body,-1);

markt_delete_selleditem($row['itemid']);

$goldplus+= $row['gold'];
$gemsplus+= $row['gems'];
unset($row);
}

$session['user']['gold']+=$goldplus;
$session['user']['gems']+=$gemsplus;
output('`n`n`3Du hast heute `^'.$goldplus.' Gold`3 und `5'.$gemsplus.' Edelsteine`3 durch den Verkauf von Gegenständen in der Halle verdient!`0');
}

unset($goldplus,$gemsplus,$selleditems);
// Ende

// Update: 13. Mai 2006, wichtig ab der neuen Version:
// Öffne prefs.php, zerstöre da alle Navigationspunkte die ins Inventar führen!
// Öffne invhandlet.php, Suche:
}else if ($_GET['op']=="house") {

if (db_num_rows(db_query("SELECT id FROM items WHERE name='".stripslashes($item[name])."' AND class='Möbel' AND owner=$item[owner]"))>0){
db_query("DELETE FROM items WHERE name='".stripslashes($item[name])."' AND class='Möbel' AND owner=$item[owner]");
output("Du hast `q$item[name]`Q schon im Haus. Kurzerhand fliegt `q$item[name]`Q raus und wird duch das neuere Stück ersetzt.");
}else{
output("`QDu suchst für `q$item[name]`Q einen Ehrenplatz in deinem Haus, an dem `q$item[name]`Q von jetzt an den Staub fangen wird.");
}
db_query("UPDATE items SET class='Möbel',gold=1,gems=0,value1=".$session[user][house]." WHERE id=$_GET[id]");
// Füge unmittelbar danach ein:
}else if ($_GET['op']=="house2") {

if (db_num_rows(db_query("SELECT id FROM items WHERE name='".stripslashes($item[name])."' AND class='Möbel' AND owner=$item[owner]"))>1){
db_query("DELETE FROM items WHERE name='".stripslashes($item[name])."' AND class='Möbel' AND owner=$item[owner]");
output("Du hast `q$item[name]`Q schon im Haus. Kurzerhand fliegt `q$item[name]`Q raus und wird duch das neuere Stück ersetzt.");
}else{
output("`QDu suchst für `q$item[name]`Q einen Ehrenplatz in deinem Haus, an dem `q$item[name]`Q von jetzt an den Staub fangen wird.");
}
db_query("UPDATE items SET class='Möbel',gold=1,gems=0,value1=".$session[user][house]." WHERE id=$_GET[id]");
[/php]

Und nun, die zip ins Root-Verzeichnis entpacken, und los gehts :)


(Ich glaube, ich hab nichts vergessen... Wenn ich was vergessen hab, sagt es nur, dann bearbeite ich den Beitrag *g*)

Dateianhänge:
Dateikommentar: Version 0.5b Beta
markt.zip [14.04 KIB]
1119-mal heruntergeladen

Autor:  Ray [ Fr 07 Apr, 2006 21:07 ]
Betreff des Beitrags: 

Habe gerade zwar keine zeit es mir anzugucken oder einzubauen aber werde ich nachhohlen. Ich wette dieses script ist genauso gut wie die anderen von dir Eliwood :D Sind ja schon ne ganze Menge :spam:

Autor:  Rikkarda [ Fr 07 Apr, 2006 21:15 ]
Betreff des Beitrags: 

jop wie besprochen upp ich es natürlich in Sili um bugs zu finden (ich bezweifel aber das finden *gg* )


lg

Autor:  Eliwood [ Fr 07 Apr, 2006 21:39 ]
Betreff des Beitrags: 

Update

[php]function yeoldemail($login,$return = false)
{
$ausgabe = '<a href="mail.php?op=write&to='.$login.'" target="_blank" onClick="'
.popup("mail.php?op=write&to=".$login)
.';return false;\">'
.'<img src="images/newscroll.GIF" width="16" height="16" alt="Mail schreiben" border="0" />'
.'</a> ';

if($return === false) rawoutput($ausgabe);
else return $ausgabe;
}[/php]

Fügt folgendes in eure common.php, oder in die markt-funktionen.php ein, um volle FUnktionalität zu gewährleisten.

Autor:  Athelas [ Mo 10 Apr, 2006 12:21 ]
Betreff des Beitrags: 

kurze frage, werde mir dieses super script denke ich mal auch installieren, aber macht der wanderhändler eigentlich noch sinn wenn man die markthalle hat?

gruss

Autor:  Eliwood [ Mo 10 Apr, 2006 15:41 ]
Betreff des Beitrags: 

Athelas hat geschrieben:
kurze frage, werde mir dieses super script denke ich mal auch installieren, aber macht der wanderhändler eigentlich noch sinn wenn man die markthalle hat?

gruss


Wenn du den Wanderhändler wegnimmst, von wo sollen die Möbel dann kommen..? *g*
Und zudem bringt das verkaufen von SPieler zu Spieler sicher mehr Gold oder Edelsteine ein, als der Verkaufen beim Wanderhändler.
Und dann muss man wiederun aufpassen, dass man nicht zu teuer wird, weil sonst das Möbelstück beim Wanderhändler wieder teurer wird... *g

Und es wird wahrscheinlich noch mehr am Marktplatz gemacht, zum Beispiel einen Handel für Schmuck etc. :)

Autor:  Athelas [ Mo 10 Apr, 2006 17:15 ]
Betreff des Beitrags: 

axo dann hatte ich das falsch verstanden, es kam so rüber das man dort die möbel kaufen kann.

Autor:  flash [ Do 13 Apr, 2006 16:53 ]
Betreff des Beitrags: 

ham kevz und du damals nicht die markthalle gemacht? ich mein er bastelt auch an einer neuen version...egal ich baus mal ein....

Autor:  Harthas [ Di 02 Mai, 2006 11:19 ]
Betreff des Beitrags: 

Also meine Spieler haben mir soeben berichtet, dass zwar alles super funktioniert, allerdings wenn sie dann das Möbelsück verkauft hatten, es immer noch im Haus steht, wenn sie es auch nicht mehr verkaufen können...

Autor:  Eliwood [ Sa 13 Mai, 2006 12:00 ]
Betreff des Beitrags: 

Tatsächlich :shock:
Okay... Da muss ich mir was überlegen. Hab nicht gemerkt dass "value1" die Hausnummer bekommt... Argh.

Autor:  Sir_No [ Sa 13 Mai, 2006 12:17 ]
Betreff des Beitrags: 

also erstmal muss ich sagen das der markt einfach genial ist :wink:


nun hab ich noch ein verbesserungsvorschlag (wenn sowas überhaupt machbar ist)

meine user würden gerne mit sachen handeln die sie ihren tieren zum mampfen geben können und auch glasfiguren etc verkaufen die der wanderhändler auch nimmt aber nicht anbietet ... sprich alles was man so im wald findet was keine waffe oder rüstung ist.

da ich überhaupt keine ahnung habe machbar wäre setz ich das einfach mal ganz frech hier rein :)

Autor:  Auric [ Sa 13 Mai, 2006 12:20 ]
Betreff des Beitrags: 

Wäre sicher wohl machbar.. man müsste wohl nur die anderen Klasenn anpassen, also auch die Beute Klassen anfügen oder so

Beim hänler klappts ja auch^^ (auch wenn der auch waffen kauft)

Autor:  Eliwood [ Sa 13 Mai, 2006 13:07 ]
Betreff des Beitrags: 

Update auf Version 0.5

- Bugfix an der Grundstruktur
- Bugfix beim Möbel kaufen (Achtung! Um den Fix zu vervollständigen muss das enthaltene Inventar anstelle des alten Installiert werden!)
- Verkauf/Kaufmöglichkeit für Schmuck und Beute dzaugefügt (Für Beute: Danke an Sir_No für die Idee

Alle dateien Hochladen & Ersetzen. inventory.php mit "addnav('Inventar','inventory.php'); entsprechend verlinken.

@ flash: Nein, das war Meteora und Kevz. Dies ist meine eigene Produktion vollkommen unabhängig von den (verbuggten) Versionen der beiden. Ich hoffe dass ich bei mir alle Bugs rauskrieg ;D

Autor:  Sir_No [ So 14 Mai, 2006 09:48 ]
Betreff des Beitrags: 

hab einen fehler nach dem einbau der neuen version :???:


Zitat:
Fatal error: Call to undefined function: yeoldemail() in /www/htdocs/v168110/includes/markt-main.inc.php on line 36


(edit):

suche in markt-main.inc.php

[php] rawoutput("</table>");[/php]

füge danach ein :

[php]function yeoldemail($login,$return = false)
{
$ausgabe = '<a href="mail.php?op=write&to='.$login.'" target="_blank" onClick="'
.popup("mail.php?op=write&to=".$login)
.';return false;\">'
.'<img src="images/newscroll.GIF" width="16" height="16" alt="Mail schreiben" border="0" />'
.'</a> ';

if($return === false) rawoutput($ausgabe);
else return $ausgabe;
} [/php]


zumindest funzzt es dann bei mir :)

Autor:  Harutake [ So 14 Mai, 2006 10:42 ]
Betreff des Beitrags: 

Hab was funden was ich net mag^^ Bunte möbel werden nich bunt angezeigt sondern so:

(zB) `4S`5t`%u`6h`6l

$this->bbcode_second_pass_code('', 'suche dafür:

.'<td>'.($row['name']).'</td>'

und ersetze mit:

.'<td>'.appoencode($row['name']).'</td>'')

zu finden in:

includes/markt-main.inc.php
includes/markt-sellitems.inc.php
includes/markt-showitems.inc.php 3x

Autor:  Sir_No [ So 14 Mai, 2006 13:02 ]
Betreff des Beitrags: 

hab einen fehler wenn ich beute anbieten will :

Zitat:
Unknown column 'specialtyuses' in 'field list'


HÜLFÄÄÄÄ :???:

Autor:  Eliwood [ So 14 Mai, 2006 13:16 ]
Betreff des Beitrags: 

Sir_No hat geschrieben:
hab einen fehler wenn ich beute anbieten will :

Zitat:
Unknown column 'specialtyuses' in 'field list'


HÜLFÄÄÄÄ :???:


Öhm... Hö? Das *kann* nichts mit meinem Markt zu tun haben. Soweit ich mich erinnern mag - die Dateiübergreifende Suche sagt das gleiche - wird nirgends mit "specialtyuses" gebraucht :shock:

Autor:  Sir_No [ So 14 Mai, 2006 13:24 ]
Betreff des Beitrags: 

jo hab ich auch gesehen ....
ich habe nach deinem markt nochmal versucht die Allmightys Quelle einzubauen und ich glaube da liegt der fehler den ich nicht finden kann :???:

edit: ... hat sich erledigt :D

Autor:  Sir_No [ So 14 Mai, 2006 19:34 ]
Betreff des Beitrags: 

habe einen fehler wenn ich möbel vom wanderhändler verkaufen will

der fehler kommt nachdem ich goldpreis und rubinpreis eingegeben habe und dann auf den button "anbieten" klicke :


Zitat:
UPDATE `items` SET `owner` = 0 `value1` = 0 WHERE `id` = "151961" AND `owner` = "11"

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'value1` = 0 WHERE `id` = "151961" AND `owner` = "11"' at line 1



ich hatte diesen fehler aber nicht in der ersten version des marktes :???:

Autor:  Harutake [ So 14 Mai, 2006 19:43 ]
Betreff des Beitrags: 

edit: post bitte löschen :)

Seite 1 von 4 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/