Autorius Tema: Lygių sistema ( LVL , XP )  (Skaityta 740 kartus)

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Lygių sistema ( LVL , XP )
« Įrašytas: 2012-09-29 18:34:52 pm »
Gal galit patarti, kaip kažką tokio sukurti? Visokių įdėjų turėjau, bet norint įgyvendinti jau nebesigauna.

Maždaug turėtų būti:
20lygių.

1lygis - 40taškų
...
...
20lygis - ~4000taškų



Okey, taškai sumuojasi duombazėj prie kiekvieno vartotojo. O kaip atvaizduoti jam jo lygį?

Ar su formule spausdinti pagal turimus taškus, ar kaip nors KAI PASIPILDO TAŠKAI, tikrinti ar įeina į naujo lygio intervalą?

Va šito nežinau, kaip geriau daryti. Su intervalais sunkiau gaunasi ir jau smegenys nebedirba. Tai gal kas turit patirties ir galit kažką patarti? Dėkui.


Neprisijungęs Gintas Kovalevskis

  • Dalyvis
  • **
  • Įrašai: 418
  • Karma: +15/-0
    • Žiūrėti profilį
    • Asmeninis portfolio
Ats: Lygių sistema ( LVL , XP )
« Atsakymas #1 Įrašytas: 2012-09-29 19:31:50 pm »
$points = 80;
$points_per_level = 40; // kiek tasku uz viena lygi duos
$lygis = $points / $points_per_level;

Elementariausia matematika

Nori ir tu tokio paveiksliuko? Apsilankyk FeedMage puslapyje

Prisijungęs Modestas Vaitkevičius

  • Dalyvis
  • **
  • Įrašai: 2005
  • Karma: +56/-16
    • Žiūrėti profilį
    • Apie mane
Ats: Lygių sistema ( LVL , XP )
« Atsakymas #2 Įrašytas: 2012-09-29 19:43:11 pm »
Gintai, bet jei sakyki 1 - 40, o koks 6 - 340? ir per levelį skirtingai? Kas tada ? Tavo formulė netinka ;)

Šiaip tai tikrai vertėtų naudoti intervalus arba sakykim darai taip:
Pasirenki iš db duomenis su reikalingu xp kiekiu ir jeis jis yra neigiamas - štai tau lvl ( mažiausias neigiamas ir bus tavo lvl ), o jei teigiamas - sekantis tavo lvl.

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Lygių sistema ( LVL , XP )
« Atsakymas #3 Įrašytas: 2012-09-29 19:54:45 pm »
Pirmas pasiūlymas netinka, nes tada nepasiekia nei 4000 taškų su 20lygių, o ir plius nesiskiria visiškai taškų kiekiai tarp lygių, o norėtųsi, kad kuo aukštesnis lygis , tuo sunkiau keltusi.

Prisegu pavyzdį sukurtos duombazės pagal tokį susuktą ciklą:
mysql_query("INSERT into lygiai (lygis, xp ) VALUES ('1', '0' ) ");
mysql_query("INSERT into lygiai (lygis, xp ) VALUES ('2', '40' )  ");

$senas=40;

for ( $lvl=3; $lvl <= 20; $lvl++ ) {

  echo "Lvl  " . $lvl . "<br />";
 
  $naujas=$senas + (40*$lvl/2 );
  mysql_query("INSERT into lygiai (lygis, xp ) VALUES ('$lvl', '$naujas')");
 
  $senas=$naujas;
 
  }

Viskas lyg ir tinka čia man, tik va kaip tuos lygius pagal taškus vartotojam vaizduoti? Taškai kaupiasi toj pačioj vietoj, kur ir visi registruoti vartotojai ( id, vartotojas, slaptažodis, miestas , .... ... , XP )

Tai man kaskart žmogui užkraunant puslapį daryti mysql užklausas ir tikrinti jo lygį pagal intervalus?



Manualai.lt Forumas

Ats: Lygių sistema ( LVL , XP )
« Atsakymas #3 Įrašytas: 2012-09-29 19:54:45 pm »

Prisijungęs Modestas Vaitkevičius

  • Dalyvis
  • **
  • Įrašai: 2005
  • Karma: +56/-16
    • Žiūrėti profilį
    • Apie mane
Ats: Lygių sistema ( LVL , XP )
« Atsakymas #4 Įrašytas: 2012-09-29 19:57:46 pm »
Padaryk dar ir lvl, tada sakykim po taškų atnaujinimo patikrinsi koks jo lvl ir tiek ;)
pvz:
Nužudė monstrą ir gavo 20xp, tai pridedu 20xp prie jo turimų, o tada patikrinu ar nepakilo lygis :)

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Lygių sistema ( LVL , XP )
« Atsakymas #5 Įrašytas: 2012-09-29 20:18:40 pm »
Tai taip ir yra duombazėje, bet kai pradėjau šitą rašyti kilo mintis, kad gal nebereikia ten duombazėj.

Tada turim taip:

Esu 1lvl, reikia 40 taškų, kad gaučiau 2lvl.

Kai pridedamas taškų kiekis, patikrinu kiek yra išviso. Jeigu susidaro 40 ar daugiau, tada duombazėj perrašau lygį į naują tiesiog.

Čia gal tiesiog reikėtų funkciją pasirašyti, ir tada po kiekvieno taškų updatinimo ją iškviesti?

Prisijungęs Modestas Vaitkevičius

  • Dalyvis
  • **
  • Įrašai: 2005
  • Karma: +56/-16
    • Žiūrėti profilį
    • Apie mane
Ats: Lygių sistema ( LVL , XP )
« Atsakymas #6 Įrašytas: 2012-09-29 22:17:48 pm »
Jo ;)

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Lygių sistema ( LVL , XP )
« Atsakymas #7 Įrašytas: 2012-09-29 22:45:53 pm »
funkcijų dar nesu kūręs, o pagal php.net nelabai ką suprantu.

<?php
$kintamasis
=tratata;

function 
lygis() {
// Čia veiks man visos mysql_query ir t.t. funkcijos? 
// Ar žemiau esantį kintamąjį atspausdins?
 
echo $kintamasis;
}



Ir tada kai norėsiu patikrinti lygį, kaip turėsiu įterpti tą funkciją bei kaip nurodyti papildomus duomenis, kad funkcijos viduje gaučiau tarkim reikiamo vartotojo ID ar pnš?

Prisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: Lygių sistema ( LVL , XP )
« Atsakymas #8 Įrašytas: 2012-09-30 01:12:20 am »
as tai gal visgi siulyciau tureti lentele, kurioje matytusi kiek exp duoda koki lvl, nes tada galesi padaryti kazkokia sistema, kuri pvz atims xp ir lvl down bus ir siaip paprasciau, matosi akivaizdziai kad va turi X exp tai esi Y levelio ir viskas, stenkis daryti paprasciau :)

o funkcijos tai kaip funkcijos, gali aisku viska su jomis pasidaryti, bet daznai buna patogiau naudoti klases ir objektus, bet siulyciau tada jau naudoti viska oop, framework'a koki visai sistemai, duombazes koki layer'i objektini ir savo viska objektais daryti, vistiek beveik visam moderniam pasaulyje susitiksi su tokia struktura. MVC turetum zinot kaip savo 5 pirstus :) maciau linkomanijoj kaip tik video paskaitas apie tai:

http://www.linkomanija.net/details?236513.Object_Oriented_Programming_with_PHP_-_iRONiSO

jei atrodo kol kas per sudetinga, tai daryk su funkcijom ir nesuk sau galvos :)
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Lygių sistema ( LVL , XP )
« Atsakymas #9 Įrašytas: 2012-09-30 11:44:12 am »
Gal kas linkomanijos pakvietimu sušelptų? Senasis acc nebeveikia žiūriu. Galiu duoti torrento pakvietimą užtai :D mrtutis@gmail.com jeigu ką.


O tai su ta lentele taip ir nesupratau. Na vartotojams pažiūrėti į ją tai taip, geras dalykas - mato kaip jų pasiekimai kils, bet man kaip TOKIU atveju reikės jiems lygius priskirti?

Objektinio programavimo ir frameworkų vis dar bijau :D Pasimokyti gal jau ir laikas, bet dar norisi paprastai viską rašyti, kaip kad darau dabar + va funkcijas dabar pradėsiu taikyti. Taip va ir neatsakėt man į tą klausimą su funkcijom

Neprisijungęs Interneto keleivis

  • Naujokas
  • *
  • Įrašai: 397
  • Karma: +6/-8
    • Žiūrėti profilį
    • Daugiau apie Jį.
Ats: Lygių sistema ( LVL , XP )
« Atsakymas #10 Įrašytas: 2012-11-08 13:37:27 pm »
Aš tai siūlyčiau daryti taip:
turėti vartotojų lentelę su jų taškais, be jokių lygių, o susikurti funkciją atvaizduojančią lvl vartotojui ekrane:
//ši funkcija gan universali, jai reikia nurodyti tik taškų sumą, o ji grąžins lygio pavadinimą
<?php
function lygis($tasku_suma) {
if(
$tasku_suma and $tasku_suma 40) { return "Pirmas lygis"; }
elseif(
$tasku_suma 40 and $tasku_suma 100) { return "Antras lygis"; }
elseif(
$tasku_suma 100 and $tasku_suma 250) { return "Trečia lygis"; }
// ir t.t.
}
$row fetch_assoc(mysql_query("SELECT * FROM vartotojai WHERE id='$id'")); // id gali gauti get metodu jeigu peržiūri vieną asmenį
echo $row['vardas']." lygis yra ".lygis($row['exp']);

// Jeigu nori visų vartotojų peržiūrėti, tai suki kokį nors ciklą.
?>

 
« Paskutinį kartą keitė: 2012-11-08 13:56:12 pm sukūrė Interneto keleivis »
Guten Tag!

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Lygių sistema ( LVL , XP )
« Atsakymas #11 Įrašytas: 2012-11-08 15:21:23 pm »
Na šitą jau seniau susikūriau taip:

<?php
function lygiai($VID) {
$uzkla=mysql_fetch_array(mysql_query(" SELECT * FROM zaidejai WHERE id='$VID' "));
$lygis=$uzkla['lvl'];  // tuometinis zaidejo lygis
$xp=$uzkla['xp'];  // TIKRI zaidejo XP

$plygis=$lygis+1// padidintas lygis
$querys=mysql_fetch_array(mysql_query("SELECT * FROM lygiai WHERE lygis='$plygis' "));
$txp=$querys['xp'];  // TIkrinamas XP kiekis padidinus viena lygi


while ( $xp >= $txp ) {
mysql_query("UPDATE zaidejai SET lvl=lvl+1 WHERE id='$VID' ") or die("Klaida x5");
// echo " Lygis pakeltas vienu. ";
// pakeliau lygi. Dabar traukiam isnaujo turima lygi ir tikrinam xp kieki
$uzkla2=mysql_fetch_array(mysql_query(" SELECT * FROM zaidejai WHERE id='$VID' "));
$lygis=$uzkla2['lvl'];  // tuometinis zaidejo lygis


$plygis=$lygis+1// padidintas lygis
$querys2=mysql_fetch_array(mysql_query("SELECT * FROM lygiai WHERE lygis='$plygis' "));
$txp=$querys2['xp'];  // TIkrinamas XP kiekis padidinus viena lygi

}
$uzkls=mysql_fetch_array(mysql_query(" SELECT * FROM zaidejai WHERE id='$ID' ")); 
$LVL=$uzkls['lvl'];

}

Prisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: Lygių sistema ( LVL , XP )
« Atsakymas #12 Įrašytas: 2012-11-08 15:24:00 pm »
Gal kas linkomanijos pakvietimu sušelptų? Senasis acc nebeveikia žiūriu. Galiu duoti torrento pakvietimą užtai :D mrtutis@gmail.com jeigu ką.


O tai su ta lentele taip ir nesupratau. Na vartotojams pažiūrėti į ją tai taip, geras dalykas - mato kaip jų pasiekimai kils, bet man kaip TOKIU atveju reikės jiems lygius priskirti?

Objektinio programavimo ir frameworkų vis dar bijau :D Pasimokyti gal jau ir laikas, bet dar norisi paprastai viską rašyti, kaip kad darau dabar + va funkcijas dabar pradėsiu taikyti. Taip va ir neatsakėt man į tą klausimą su funkcijom

pasiunciau tau i privata torrent faila, pakvietimo negaliu duoti, bet ratio tai man tikrai negaila :)

Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Manualai.lt Forumas

Ats: Lygių sistema ( LVL , XP )
« Atsakymas #12 Įrašytas: 2012-11-08 15:24:00 pm »