Autor |
Wiadomość |
|
plit
Dołączył: 01 Wrz 2006
Posty: 25
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Śro 16:08, 04 Paź 2006 Temat postu: sklepy i podaż - popyt |
|
|
Co sądzicie o możliwości wprowadzenia do sklepów cen rynkowych, na razie na metal.
Obecnie metal można kupić "znikąd" za stała cenę. Gdy pojawił się bug umożliwiający zarabianie sporo kasy można było kupować miliony jednostek metalu i budować bez ograniczeń.. gdyby były ceny rynkowe, cena metalu poszybował by w górę a zarabiane kredyty nie były by aż tak wartościowe.
Metal byłby produkowany tylko przez graczy a nie jak obecnie również przez sklep z nieograniczonymi możliwościami "produkcyjnymi" a tym samym było by bardziej opłacalne stawianie ekstraktorów bo na metal jak wiadomo jest wieczne zapotrzebowanie
Sklep pełnił by rolę giełdy czy raczej rynku, od tego czy gracze sprzedają czy kupują metal zależała by cena i od ceny zależało by czy opłaca się inwestować w metal czy go kupować. W czasach wojny ceny metalu naturalnie by szły w górę a po zgruzowaniu kilku koloni zapotrzebowanie na metal by malało i ceny wracały do normy
Zalet można by wymieniać na kilka stron ale najważniejszy jest mechanizm który będzie sterował cenami.
Kolonie mają pewną produkcje metalu (podaż) oraz potrzebują go do budowy, produkcji jednostek czy też utrzymywania budynków (popyt) od tego jak te dwie wartości wyglądają zależeć będzie cena i w tym miejscu należało by przedstawić jakieś algorytmy... macie jakieś pomysły? 
Post został pochwalony 0 razy |
|
|
Powrót do góry |
|
|
 |
|
tapsy
Dołączył: 19 Cze 2006
Posty: 52
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Śro 22:38, 04 Paź 2006 Temat postu: |
|
|
plit oki ale tez by przydalo sie zdobywac wiecej zrodel metalu!
metal jest no1 w rasie ludzkiej.
a co o pomyslu to napisze za pare dni do musze wyjechac i ie bde mia neta
Post został pochwalony 0 razy |
|
|
Powrót do góry |
|
|
plit
Dołączył: 01 Wrz 2006
Posty: 25
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Pią 21:34, 06 Paź 2006 Temat postu: |
|
|
Ok na -----> linie.ovh.org <----- odpalilem starsza wersje GF w której przerobilem troche kod i ceny metalu zaleza od podazy i popytu, dokladnie co zrobilem wygląda tak:
dodalem nowa tabele w bazie galaxy_exachange w niej są przechowywane 2 wartosci: volumen_credits i volumen_metal te dwie liczby dzielimy i z tego jest cena metalu:
price = volumen_credits / volumen_metal
Wartość jest liczona za kazdym razem gdy cos kupujemy albo sprzedajemy w sklepie, wygląda to np tak:
w sklepie jest cena 10[!] za 1 szt [M] (10M / 1M -> v_credits / v_metal )
- sprzedajemy 10k metalu
- do volumen_metal jest dodawana ilosc ktora sprzedajemy czyli 10 000
-otrzymujemy nową cenę: 10 000 000 / 1 010 000 = 9,901[!]
- i po tej cenie opylamy metal, razem 9,901[!] * 10k[M] = 99 010[!]
Ktoś inny kupuje metal - bo jest tani
-kupuje 10k [M]
- od volumen_metal jest ODEJMOWANA ilosc ktora kupujemy czyli 10 000
-otrzymujemy nowa cene: 10 000 000 / 1 000 000 = 10[!]
- i po tej cenie kupujemy metal, razem 10[!] * 10k[M] = do zapaty 100k [!]
ROZNICA ktora wynika z tego co zaplacil kupujacy i dostal sprzedajacy 100k [!] - 99,01k ---> 990[!] ta kasa to prowizja sklepu
Od wielkosci tych 2 wolumenow zalezy jak ceny beda sie zmienialy, czym wieksze tym wolniej i dlatego wraz ze wzrostem obrotu nalezy proporcjonalnie zwiekszac te wolumeny np z 10M/1M na 20M/2M itd.. mozna je ustaliac z liczby ekstraktorow w grze, magazynow itp , musza w miare dobrze oddawac obrot... tak aby nie bylo ze ludzie kupuje tonami metal bo jest tani a jego cena rosnie dopiero po kilku dniach na tyle duzo ze przestaje se oplacac kupowac i odwrotnie ze sprzedaja.
ps. Mialem dodawca do wolumenu kredyty ktore sa za metal ale nie wiem jak to policzyc bo jak odejme metal, policze cene i dodam kredyty do volumenu to.. cena znowu sie zmienia bo widomo Vk/Vm moze ktos wie jak to zrobic.
Obecnie jest tak ze wykupujac 50% volumenu metalu cena rosnie o 100%, wykupujac 75%, przy 1% cena metalu rosnie 100 krotnie.
to tyle na razie, mozna popatrzec jak to dziala na podanym adresie. Generalnie jak by bylo zainteresowanie mozna by przed restartem dac to tutaj i zobaczyc jak to dziala w praktyce.
Post został pochwalony 0 razy |
|
|
Powrót do góry |
|
|
KILL
Gość
|
Wysłany: Pią 22:01, 06 Paź 2006 Temat postu: Re: sklepy i podaż - popyt |
|
|
ja jestem przeciwny , mysle,że surowce powinno się zostawić w spokoju
|
|
|
Powrót do góry |
|
|
plit
Dołączył: 01 Wrz 2006
Posty: 25
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Pią 22:36, 06 Paź 2006 Temat postu: |
|
|
Prawdę mówiac trzeba by pozmieniać produkcje jednostek pod wzgledm zuzycia metalu lub zwiekszyc wydajność ekstrakotów i magazynó itp, gdyby zrobić tak taka wszystkie surowce trzeba by od nowa ułożyć technologię.
Post został pochwalony 0 razy |
|
|
Powrót do góry |
|
|
-BORG-
Gość
|
Wysłany: Sob 10:25, 07 Paź 2006 Temat postu: |
|
|
Plit wtedy byly by dodatkowe bledy. Cytat: i po tej cenie opylamy metal, razem 9,901[!] * 10k[M] = 99 010[!] |
Cytat: i po tej cenie kupujemy metal, razem 10[!] * 10k[M] = do zapaty 100k [!] |
Czyli roznica miedzy sprzedaza a kupnem jest niewielka. Wiec mozna by to wykorzystac do przekazywania surowcow pomiedzy multikontami bez straty czasu. Ktas najpierw sprzedaje w sklepie duzo metalu szybko przelogowywuje sie na multikonto kupuje to co wczesniej sprzedal, spowrotem loguje sie na poprzednie konto przekazuje kase ktora zarobil na sprzedazy metalu multikoncie i takim oto sposobem za niewielka prowizje ktos moze przetransportowac w czasie ponizej jednej minuty metal na inne konto.
|
|
|
Powrót do góry |
|
|
plit
Dołączył: 01 Wrz 2006
Posty: 25
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Sob 15:29, 07 Paź 2006 Temat postu: |
|
|
Mozna przemnozyc cene sprzedazy prze 0.8 albo 0.7 wowczas prowizja bedzie wynosic 20%-30%.
Ale to wszystko wymagało by dluzszych testow bo pewnie nie jeden blad jeszcze wyskoczy...
W sumie za duze ryzyko zeby to wprowadzac, temat mozna zakonczyc
Post został pochwalony 0 razy |
|
|
Powrót do góry |
|
|
plit
Dołączył: 01 Wrz 2006
Posty: 25
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Nie 14:33, 08 Paź 2006 Temat postu: |
|
|
Ale mozna zrobic tak z krysztalami, wszak sa przekazywane przez klan i nie zaszkodziło by ...a dodtkową korzyscia byblo by o polowe mniej ogloszen dotyczacych kupna/sprzedarzy krysztalow
Jakby co to kod mam gotowy 
Post został pochwalony 0 razy |
|
|
Powrót do góry |
|
|
derred
Administrator
Dołączył: 07 Cze 2006
Posty: 64
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Pon 14:32, 09 Paź 2006 Temat postu: Re: sklepy i podaż - popyt |
|
|
Dobry pomysł. Gdyby metal w sklepie pojawiał się dopiero jak kotś go sprzeda nie było by tyle bugów, a nawet jak by jakiś się pojawił, nie dawał by możliwości super szybkiego rozwoju. Trzeba to zastosować w praktyce 
Post został pochwalony 0 razy |
|
|
Powrót do góry |
|
|
plit
Dołączył: 01 Wrz 2006
Posty: 25
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Czw 0:11, 12 Paź 2006 Temat postu: |
|
|
Edycja: Poprawiłem funkcje, teraz volumen_c jest zmieniana na tyle aby volumen był mniej wiecej równy globalnej produkcji surowca razy ilość tur do wyprzedania lub wykupienia towaru, domyślnie jest 288 tur.
Druga sprawa w sklepie są podawane ceny przed kupnem, to po jakiej cenie się kupi zależy od ilosci kupowanego surowaca i nie mam pojęcia jak wyliczyć maksymalną ilość jaką można kupić
Oto moje poprawione 2 funkcje i jedna zrobiona.. .tylko się nie śmiejcie bo jeszcze tydzen temu nie znałem php
Cena surowca zalezy od globalnej produkcji w grze i bilansu kupna/sprzedazy
Tak zmieniaja sie ceny, produkcja metalu na ture w grze wynosi 5
cena 1M = 5*2880 / 1440 (globalna produkcja jest aktualizowana jezeli obrót wyniesie 5% "zapasów w sklepie". Wszystkie parametry można sobie zmieniac, te są podane na wyczucie..
Akcja/ilosc/cena (10[!] - początkowa)
Buy 200 11,61[!]
Buy 200 13,85[!]
Buy 200 17,14[!]
Buy 200 22,5[!]
Buy 200 32,73[!] - w sklepie zostało 440 szt metalu, jeżeli ktoś bedzie chciał kupić dokładnie 439 szt to zapłaci 6 321 600[!] za 439 [M] !(przypominam ze w grze sa dopiero 2 exstraktory!)
jeżeli wiecej niż 439[M] funkcja kupna zostanie pominięta (można dać jakiś komunikat ile zostało towaru )
Sell 1000 10[!]
tabela:
ID int(11)
name
volumen_c //globalna produkcja surowca obliczna tak: (1 + globlna produkcja) * ilość tur * cena bazowa
volumen //bilans kupna/sprzedazy
fee //prowizja w sklepie np wartość 0.8 oznacza że cena sprzedazy wynosi 80% ceny kupna
transactions / bezwględny obród surowcem kupno+sprzedaz
tour // ilosc tur, skala czasu w jakiej jest liczona globalna produkcja surowca
baselineprice //cena bazowa
function actionbuy() {
global $login, $db, $prefix, $Player, $Colony, $amount, $places, $name;
if (($Colony && $amount && checkplace('market') && $name && ($price = $places['market'][$name . 'buy']))) {
if ( (($Player['credits']) >= $amount * $price) && ($Colony[$name . 'capacity'] - $Colony[$name] >= $amount)){
$exachange = mysql_fetch_row(mysql_query("SELECT `volumen_c`, `volumen`, `fee`, `transactions` FROM `${prefix}exachange` WHERE `name` = '" . $name . "' LIMIT 1"));
if ($exachange[1] > $amount) {
$volumen =$exachange[1]-$amount;
$new_price =$exachange[0]/$volumen;
$exachange[3] += $amount;
if (($Player['credits']) < ($amount * $new_price)){
$amount = $Player['credits']/$new_price;
$volumen = $exachange[0]-$amount;
$new_price = $exachange[1]/$volumen;
}
$db->sql_query ("UPDATE `${prefix}exachange` SET `volumen` = '" . $volumen . "', `transactions` = '". $exachange[3] . "' WHERE `name` = '" . $name . "' LIMIT 1");
$db->sql_query ("UPDATE `${prefix}markets` SET `" . $name . "buy` = '" . $new_price . "', `" . $name . "sell` = '" . ($new_price * $exachange[2]) ."'");
$Colony[$name] += $amount;
$db->sql_query("UPDATE `${prefix}colonies` SET `$name` = '${Colony[$name]}' WHERE `name` = '${Colony['name']}' LIMIT 1");
$Player['credits'] -= $amount * $new_price;
$db->sql_query("UPDATE `${prefix}users` SET `credits` = '${Player['credits']}' WHERE `login` = '$login' LIMIT 1");
if ($exachange[3] >= $volumen/20) {
changevolume();
}
}
}
}
}
// -------------------------------------------------------------------
// Sell in the market
// -------------------------------------------------------------------
function actionsell() {
global $login, $db, $prefix, $Player, $Colony, $amount, $places, $name;
if ($Colony && $amount && checkplace('market') && $name && ($Colony[$name] >= $amount) && ($price = $places['market'][$name . 'sell'])) {
$exachange = mysql_fetch_row(mysql_query("SELECT `volumen_c`, `volumen`, `fee`, `transactions` FROM `${prefix}exachange` WHERE `name` = '" . $name . "' LIMIT 1"));
$volumen =$exachange[1]+$amount;
$new_price =$exachange[0]/$volumen;
$exachange[3] +=Abs($amount);
$db->sql_query ("UPDATE `${prefix}exachange` SET `volumen` = '" . $volumen . "', `transactions` = '". $exachange[3] . "' WHERE `name` = '" . $name . "' LIMIT 1");
$db->sql_query ("UPDATE `${prefix}markets` SET `" . $name . "buy` = '" . $new_price . "', `" . $name . "sell` = '" . ($new_price * $exachange[2]) . "'");
$Colony[$name] -= $amount;
$db->sql_query("UPDATE `${prefix}colonies` SET `$name` = '${Colony[$name]}' WHERE `name` = '${Colony['name']}' LIMIT 1");
$Player['credits'] += $amount * $new_price * $exachange[2];
$db->sql_query("UPDATE `${prefix}users` SET `credits` = '${Player['credits']}' WHERE `login` = '$login' LIMIT 1");
if ($exachange[3] >= $volumen/20) {
changevolume();
}
}
}
function changevolume()
{
Global $db, $prefix, $Colony, $name, $Var;
Switch ($name){
Case 'metal':
$production = mysql_fetch_row(mysql_query("SELECT SUM(`metalextractor`) FROM `${prefix}colonies`"));
$production[0] *= @$Var['structures']['metalextractor']['output'];
break;
Case 'uran':
$production = mysql_fetch_row(mysql_query("SELECT SUM(`uranmine`) FROM `${prefix}colonies`"));
$production[0] *= @$Var['structures']['uranmine']['output'];
break;
Case 'food':
$production = mysql_fetch_row(mysql_query("SELECT SUM(`foodplanting`) FROM `${prefix}colonies`"));
$production[0] *= @$Var['structures']['foodplanting']['output'];
break;
Case 'energy':
$production = mysql_fetch_row(mysql_query("SELECT SUM(`fusionreactor`),SUM(`solarbattery`),SUM(`windgenerator`), SUM(`satellite`) FROM `${prefix}colonies`"));
$production[0] = $production[0]*@$Var['structures']['fusionreactor']['output']+$production[1]* @$Var['structures']['solarbattery']['output']+$production[2]* @$Var['structures']['windgenerator']['output'] +$production[3]* 20;
//uwzglednic wiatr i oswietlenie!
break;
Case 'crystals':
$production = mysql_fetch_row(mysql_query("SELECT SUM(`crystalsmine`) FROM `${prefix}colonies`"));
$production[0] *= @$Var['structures']['crystalsmine']['output'];
break;
}
$value = mysql_fetch_object(mysql_query("SELECT `volumen_c`, `volumen`, `tour`, `baselineprice` FROM `${prefix}exachange` WHERE `name` = '" . $name . "' LIMIT 1"));
$oldc = $value->volumen_c;
$value->volumen_c = (1 + $production[0]) * $value->tour * $value->baselineprice;
$value->volumen += (($value->volumen_c - $oldc)/($oldc/100))*($value->volumen /100); //zwieksz o x %
$db->sql_query ("UPDATE `${prefix}exachange` SET `volumen_c` = '" . $value->volumen_c . "', `volumen` = '" . $value->volumen . "', `transactions` = '0' WHERE `name` = '" . $name . "' LIMIT 1");
}
///////////
I jeszcze aby w sklepie nie były ceny z kikoma cyframi po przecinku to 'market.php' można zmodyfikować np tak
dodajemy funkcje
function accuracy($value){
switch (TRUE){
case ($value < 1):
$price = number_format($value, 4, ',',' ');
break;
case ($value < 10):
$price = number_format($value, 3, ',',' ');
break;
case ($value < 100):
$price = number_format($value, 2, ',',' ');
break;
case ($value < 1000):
$price = number_format($value, 1, ',',' ');
break;
case ($value > 1000):
$price = number_format($value, 0, ',',' ');
break;
}
return $price;
}
dalej poprawimy w odpowiednich miejscach: <?=accuracy($places['market']['metalbuy'])?>
Post został pochwalony 0 razy |
|
|
Powrót do góry |
|
|
|
|
Możesz pisać nowe tematy Możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
fora.pl - załóż własne forum dyskusyjne za darmo
|
|