Jump to content
php.lv forumi

users/xp levels


anonīms

Recommended Posts

Mēģinu veidot lietotāju xp (xperience) līmeņus, bet ir radies viens jautājums.

Pagaidām viss izskatās šādi: http://paste.php.lv/7a905c93a9b6d51c8c089e71f14683c1?lang=php

 

Itkā jau ir viss ok, ja db būtu šādi: (id, xp, lvl)

1, 9, 1

15, 15, 2

bet, ja teiksim lietotājam tiek iedots xp daudzums tāds, ka viņam vajadzētu uzreiz pārmest uz par 2 vai vairāk līmeņiem?

Piemēram šim: Takā viņam ir vairāk par 99, un tas viss notiek ar vienu reizi, tad viņam tiks paaugstināts līmenis vienu reizi.

15, 151, 2

bija doma kaut kā tajā check_lvl() varbūt iemest while, kas veikto if nosacījumu tik ilgi, kamēr lvl ar xp sakrīt, bet doma, kā izveidot to daļu nav.

Viens variants varētu būt kkā to array apgriezt riņķi un tad no beigās skatīties vai xp ir lielāks par noteikto, un ja ir, tad dodam to lvl, kas atrodas array'jā pretī xp. Bet kā to panākt gatavu?

Link to comment
Share on other sites

ir ķipa

 

<?
$array = array('0','9','19','31');
$exp = 5;
foreach($array as $key=>$value){
//print $key."=>".$value."<br/>";
if($exp >= $value && $exp < $array[$key+1]){
$limenis = ($key+1);
print "Limenis: ".$limenis;
}
}
?>

Limenis: 1

noobs iekš php... tagad mēgināšu praktizeties vairāk rakstot kodus.. sanāca, kaut kā šādi.

Edited by waplet
Link to comment
Share on other sites

http://paste.php.lv/2c639c10ebf1e00b91ad5c83cd4429c3?lang=php

Kods izskatās šāds.

Ja ir kādi ieteikumi tad rakstiet. Vienīgi, kas man nepatīk ir garie ifi, bet nu, lai ir.

EDIT: Tikko ieraudzīju waplet kodu. Palūrēšu.

EDIT2: Tavā variantā foreach baigi iedos, ja lvl būs daudz un lietotāji virs 1k. Palikšu pie sava, bet kods tavs labs.

Edited by anonīms
Link to comment
Share on other sites

if($users['xp'] < $lvl1) { $lvl = 1; }
elseif($users['xp'] < $lvl2) { $lvl = 2; }
elseif($users['xp'] < $lvl3) { $lvl = 3; }
elseif($users['xp'] < $lvl4) { $lvl = 4; }
elseif($users['xp'] < $lvl5) { $lvl = 5; }
elseif($users['xp'] < $lvl6) { $lvl = 6; }
elseif($users['xp'] < $lvl7) { $lvl = 7; }
elseif($users['xp'] < $lvl8) { $lvl = 8; }
elseif($users['xp'] < $lvl9) { $lvl = 9; }
elseif($users['xp'] < $lvl10) { $lvl = 10; }

Nu i nafik audzināt šitādu koda rakstības stilu. Tādi palagu koderi jāaudzina, kamēr maziņi :)

vajag prasti, ērti, papildināmi:

 

$levelis = get_data("select ID FROM user_xp_levels WHERE level_points <= $users['xp'] ORDER BY level_points DESC limit 1;");
echo 'jūzerim ir '.$levelis['ID'].' līmenis<br>';

Datubāzē vaidzēs tabulu, kur glabājas visi līmeņi:

[ ID ][ level_points ][ title ]
---------------------------------
[ 1  ][ 0            ][ n00b ]
[ 2  ][ 100          ][ novice]
..
[ 10 ][ 10000        ][ wizard]

Viss ērti, smuki, datubāzē maini ko gribi taitļus/punktus, un tikai 2 rindiņās :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...