Randleman

Trader: ONLY Player Items

7 posts in this topic

Hallo zusammen!

Ganz einfach erklärt, man soll beim Trader (3 Stück auf der Map verteilt) nur das kaufen können, was von anderen Spielern verkauft wurde (bis auf Fahrzeuge)

Jemand, der bereits mit/an dieser Idee arbeitet?

Grundgerüst wären dafür wohl 3 Datenbanktabellen, in dem jedes Item eingetragen ist...Problem wird wohl die Performance sein,

wenn angenommen an jedem Trader gleichzeitig 4 Leute kaufen und verkaufen...

Wer teilen oder helfen mag, nehme ich sehr gern an :)

MfG Sven

 

Edited by Randleman

Share this post


Link to post
Share on other sites
Advertisement

Hallo,

 

interessiert mich auch. Habe mir auch schon erste Gedanken gemacht wie man das realisieren könnte.

Da man beim Schrotthändler ja alles auf einmal verkaufen kann und der Gesamterlös aus diesem Verkauf aufgrund der Teile die im Fz sind berechnet werden muss wäre hier schon mal eine Funktion zu finden die man nutzen könnte. Man müsste diese Informationen jetzt in eine neue Tabelle der Datenbank weiterleiten. Damit hätte man schon alle Sachen und die jeweiligen Mengen in die Datenbank verewigt (Datenbankperformance !? , Auswirkungen auf die Server-FPS?).

Wenn man diese Hürde genommen hat, dann müssten die Trader jeweils auch auf diese Funktion zugreifen können wenn man einzeln verkauft bzw. die Funktion bei den Einzel-Tradern ebenfalls in die Datenbank weiterleiten.

Ist das auch geschafft, dann muss der Trader jetzt bei der DB anfragen welche Teile in welcher Menge zum Verkauf stehen und jeweils nur diese Teile im Verkaufsmenü anzeigen. Bei Kauf muss dann die Menge entsprechend reduziert werden. (Mengengrenze! - nie kleiner 0).

Man muss also eine neu Funktion schreiben bzw. die vorhandenen Funktionen bei den Tradern so erweitern, dass sie eine dynamische Verbindung zur DB herstellen.

Grundsätzlich sollte das für einen geübten Skripter mit ein wenig Zeit kein so großes Problem darstellen - denke ich. Aber die Tücken stecken meist im Detail. Da ich im Moment nicht so viel Zeit habe kann ich dir da nicht sofort weiterhelfen - vielleicht krieg ich da was zum Jahresende in Gang falls bis dahin nicht jemand anderes was entwickelt hat.

regards

Cal

 

 

Share this post


Link to post
Share on other sites

coole idee

kurz mal mein brainstorming:

waste dump -> schreibt seine spielerverkäufe in der datenbank in eine tabelle (object, quality, price )

hier bräuchte man nun einen neuen Trader -> dieser liest seine zu verkaufenden objekte nicht aus der init sondern aus der datenbank direkt und verkauft dies

schwierigkeit : 2 user greifen auf 1 objekt zu - wer gewinnt?

Share this post


Link to post
Share on other sites

Super, schonmal schön zu wissen, das man nicht allein mit der Idee/dem Wunsch da steht :)

 

Wir arbeiten auch daran, muss ja auch ziemlich ausfühlich getestet werden,

gerade in bezug auf Auswirkungen auf die Server-FPS und das angesprochene Problem "wer gewinnt"...

Sobald erste Schritte gemacht sind, werd ich sie auch mitteilen, soll ja jetzt nicht so aussehen,

als ob ich auf was fertiges warte :bandit:

Zum Thema Performance...wenn sich jemand richtig gut auskennen sollte, da mir das technische Verständnis bei dieser Sache fehlt:

Beispiel...

1. Trader greift auf eine Datenbank zu in der ALLE Items hinterlegt sind

2. Trader greift auf mehere Datenbanken zu (DB1: Kleidung // DB2: Waffen // DB3: Magazine usw)

welcher der beiden Methoden wäre die flüssigere?

Gedanke dazu...mehrere Datenbanken bedeuten ja auch 2 Abfragen (DB und dann das Item), eine DB bedeutet nur eine Abrage, aber dafür aus einer Menge von Items...auch wenn ich mir die Antwort denken kann "nimmt sich spürbar nichts" !? :)

 

Edited by Randleman

Share this post


Link to post
Share on other sites

öhm.

du hast eine Datenbank namens exile

in dieser sind Tabellen zbsp players, accounts

hier bräuchte man nun eine neue Tabelle namens zbsp. Dump_trader

dieser hat die Reihen Object und Price

 

sagen wir ein Spieler verkauft einen sehr gut erhaltenen Strider

>nun bräuchte man eine Abfrage was das ding überhaupt wert ist , hier könnte man bereits die klassenliste aus der init nutzen

das ding ist also sagen wir 5000 wert

>standard "sell"-prozedur nun also, mit dem unterschied allerdings das objekt nicht ins nichts verschwindet , sondern hierbei ein eintrag in die  Datenbank namens exile gemacht wird und hierbei unter der Tabelle Dump_Trader eine neue Zeile mit Object = Strider und Price = 5000 angelegt wird

somit wäre das ding schonmal verkauft und die ganze sache in der datenbank gespeichert.

nun bräuchten wir einen neuen Trader (und genau der wird nicht so leicht)

nennen wir diesen Auction Trader

> dieser fragt alle aktuellen Objekte der exile Datenbank-Tabelle Dump_trader ab und gibt diese in die normale Traderliste des Auction_Traders aus

> hier bräuchten wir nun eine sichere kauf funktion, die auch mehrzugriffe regelt und anschließend die "exile car buy function" verwendet

 

 

addition : ich denke das ganze wär sogar etwas einfacher wenn man feste Preise nimmt und hierbei komplett auf den preiseintrag in der datenbank verzichtet

Edited by hieve

Share this post


Link to post
Share on other sites

Warum einen neuen Trader ... sind doch schon soviele da! Denen muss man nur beibringen ihr Smartphon anzuschmeissen, in der Datenbank nach zu schauen was (Objekt, ID) in welcher Menge  und zu welchem Preis im Lager vorhanden ist. Vielleicht wäre für den trader auch noch interessant zu wissen wieviel bereits von dem nachgefragten Objekt verkauft wurde um evtl. einen höheren Preis zu verlangen. Er hat ja schliesslich 3 Kinder und vier Frauen zu unterhalten.

Wie ich bereits in meinem ersten Post hier schrieb. Funktionen, wo die Trader aktiv werden und schauen was sie denn da überhaupt verkaufen und zu welchem Preis gibt es ja schon. Diese muss man nur so umschreiben, dass sie eben nicht auf die statische Tabelle in der Cfg zugreifen, sondern ihre Anfrage per Query an die Datenbank senden.

addition : ich denke das ganze wär sogar etwas einfacher wenn man feste Preise nimmt und hierbei komplett auf den preiseintrag in der datenbank verzichtet

Kann man nicht, woher sollen die Trader denn dann wissen zu welchem Preis sie ihr Zeug verkaufen dürfen? Wenn Du auf die statische Cfg-Liste schielst ist es programmtechnisch Unsinnig eine zweite Abfrage nur für den Preis zu programmieren. Alles in einem Abwasch. Dein Gedanke spart zwar eine Spalte ein (was der DB vollkommen egal ist) aber erfordert A: eine Funktion für die Datenbankabfrage und dann noch eine Funktion die mit den Daten aus der Datenbank den Preis aus der statischen Cfg heraussuchen muss. Also quasi einen Euro sparen und dafür aber 200 Euro mehr ausgeben um diesen einen gesparten Euro zu verwalten (hach, hab ich das nicht schön beschrieben) [Das ist übrigens das was viele unserer Politiker und Entscheider vergessen wenn sie denn mal wieder über Einsparungen nachdenken. :-) ]

Zu der Frage, was passiert wenn 2 Spieler gleichzeitig etwas kaufen wollen:

Hier entscheidet wer schneller den Kaufbutton drückt. Sowas wird programmtechnisch mit einer Fehlerabfrage vor dem unmittelbaren Deal (also dem Drücken des Kaufbuttons) geprüft. Da würde dann der Trader einen Spruch raushauen wie etwa: "Sorry Kumpel, aber der Kollege neben dir  war schneller als du und hat sich grad die letzte SPMG gekrallt. Niet ihn um und du kannst das Ding für Lau bekommen. :-) ".

Zu der Frage ob eine Tabelle für alle Sachen oder je Kategorie eine separate Tabelle:

Eine Tabelle reicht: In der Exile Vanilla Version sind schätzungsweise ca. 400 kaufbare Objekte (Artikel) vorhanden. Für die Datenbank ist das soviel wie ein Sandkorn für einen Sandkasten. Performance-technisch kein grosses Problem. Bei mehreren Tabellen braucht man auch nciht mehrere verschieden Abfragen. Man benutzt halt nur den jeweiligern anderen Namen der Tabellen in einer einzigen Abfrage. Du kriegst ja auch nicht 2 verschiedene Wege im Navigator angezeigt wenn du deine Eltern (vorrausgestzt sie leben an ein und demselben Ort) besuchen willst und das Navi bemühst um dir den rechten Weg anzuzeigen. Womit wir aber wieder am Anfang dieses Post landen und noch die Spalte Wohnort .... ähhh Kategorie in die DB mit aufnehmen müssen.

Also brauchen wir eine neue Tabelle mit den Spalten ID, Objekt, Kategorie, Menge und letztendlich den Preis. Optional kann man jetzt noch die Spalten Eingekauft und Verkauft zur dynamischen Preiskalkulation einbinden. Das ist aber wie gesagt optional und schon eine Erweiterung auf Trader 2.0 die für die Basisfunktionen erstmal nicht nötig sind.

So, bin jetzt müde und geh schlafen.

Gute Nacht,

Cal

 

 

Edited by cal dasiri

Share this post


Link to post
Share on other sites
Advertisement

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.