Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer

Forum > Webbutveckling relaterat > Databaser och SQL

Exp till level

triwear
triwear

Gradering

#17136

Hej,

 

Undrar om ni kan koda ett litet  script till mig, det skall innehålla: om man är level 1, och trycker på en länk, t. ex ?page=rob&rob_taxi, så går det upp 1 exp, och om man har 5 exp, så blir man level upp. Och när man levlat upp, så skall det bli 5 exp mer för att levla upp till 3. Alltså 10 exp.

ID: #17136 | Skapades: 2009-07-30 23:45:56 | Tråden har 13 svar och har lästs 463 gånger.

Helroth
Helroth

Gradering

#17137

Skapa en kolumn i din databas som du kan kalla "lxp" eller liknande sätt den till värdet 5. Efter varje lyckat rån kollar du

 

if (xp >= lxp)

{

xp = 0

level+=1

lxp *= 2 //Inte säker om det skrivs så

}

ID: #17137 | Skapades: 2009-07-31 00:02:22

m_exp
m_exp_to_lvl
m_level
behöver du i din databas
sen kollar du om m_exp är lika mycket som behövs för m_exp_to_lvl.
då sätts m_exp_to_lvl = m_exp_to_level+1 och m_level = m_level+1

Its not about how hard you can hit, its how hard you can get hit, and still go on.
ID: #17138 | Skapades: 2009-07-31 00:07:12

Något man måste tänka på är ju, att om man redan har 4 exp och  får 4 exp till och ökar lvl vid 5 exp så har man ju 3 exp över.

 

Edvin Lindén, http://edvinlinden.se
ID: #17140 | Skapades: 2009-07-31 00:33:35

voigtan
voigtan

Gradering

#17141

function generateXP(currentLvl, XPFromActivity, currentXP)
{
    var xpNeeded = XPNeededToLvl(currentLvl);
    var XPGainedAndTotal = currentXP+XPFromActivity);
    if(XPGainedAndTotal>=xpNeeded)
    {
        var xpInOnNextLvl = XPGainedAndTotal- xpNeeded;
        //lvl+1, XP=xpInOnNextLvl SQL Update
    }
    else
    {
        //Update XP= XPGainedAndTotal SQL Update;
    }
}
function XPNeededToLvl(currentLvl)
{
    return currentLvl*5;
}
(Javascript syntax, byt till det språk du kör).

Jag chattade med Alexander- för ett par veckor sedan och han hade ungefär samma fråga.

Rollspel och XP, lyckas du med ett event(Råna bank/döda en fiende) osv är en hel del jobb, det gäller att hitta ett system som kan fungera.

Om vi tittar på World of Warcarfts algoritmer för att få XP så ser den ut(mellan lvl 11 och 27):
.4x3 + 40.4x2 + 396x
Där x är vilken nivå du är just nu på. Så din formel är rätt enkel:
x*5

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #17141 | Skapades: 2009-07-31 08:02:13
Its not about how hard you can hit, its how hard you can get hit, and still go on.
ID: #17144 | Skapades: 2009-07-31 09:06:25

voigtan
voigtan

Gradering

#17145

Problemet med din kod petters_web är att: 1. som Evl ha påpekat så 0:ar du XPn även om man har fått 20px och behöver bara 5 för att gå upp en nivå. Och du saknar kod för att få vanlig XP, dvs du inte gå upp en nivå. Därför är det lättare att skriva pseudokod (även om mitt inte är ren pseudokod).

Att bygga ett "skript" in i en befintlig applikation krävs att man vet vad du har i din applikation redan triwear.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #17145 | Skapades: 2009-07-31 09:43:30

voigtan: där har du fel, jag använder det själv, om jag har fått tex 20exp och jag behöver 5 blir jag lvl 2.

Its not about how hard you can hit, its how hard you can get hit, and still go on.
ID: #17146 | Skapades: 2009-07-31 10:07:37

voigtan
voigtan

Gradering

#17147

Problemet med din kod (även om det fungera i detta fall) är att du ha logiken enlig mig på helt fel plats. Den dagen om du måste bygga om logiken för hur XP hanteras osv så måste du bygga om din SQL fråga.

Och vad är "header("Location:settings.php");" för hjälp till honom?

Och fortfarande, din kod är bara vid när man gå upp en nivå, aldrig om man lyckas med aktiviteten men inte gå upp en nivå.

Sen när du presentera XP:n in på nivån så måste du göra uträkningen om hur mycket XP som krävdes för nivån du är på just nu, så det känns som det är en massa mer arbete på ditt sätt. Men det är nog bara jag kanske?

 

Redigerat:

En annan sak som bör ha en funderare på är att:

(Nu kör vi fiktiva värden, orkar inte räkna på det):

Vi är på nivå 10, vi har 45xp och vi behöver 50xp.

Vad händer om vi få 60xp (dvs 55xp över) och vi behöver 55xp för att bli lvl 11.

Just nu är det ingen som har tänkt på detta.

Och en annan sak värd att fundera över:

Vad händer om en admin "ge bort" nivåer till personer, var görs uträkningen så att den inte ställer till problem i framtiden. om jag ger person x 10 nivåer så vill jag inte att person x bara behöver 5xp för att gå upp till nivå 11.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
Redigerades av voigtan den 31 juli 2009. Läs tidigare inlägg.
Redigerades av voigtan den 31 juli 2009. Läs tidigare inlägg.
ID: #17147 | Skapades: 2009-07-31 10:35:43

Timmie
Timmie

Gradering

#17150

Varför knöla till saker och ting i onödan? Om du nu bara ska ha 5 XP per level så skulle jag enbart ha sparat hur mycket XP man har och sedan kört VB.NETs BETWEEN eller vad du nu använder för språk. Låt säga att du märker sen när sidan är klar att du vill ha 10 XP per level istället, då blir allt myket jobbigare om man kör på de setten som har skrivits innan.

Jag gjorde en liknande funktion för väldigt länge sen. Efter X antal klick så skulle användaren skickas till en reklam paus. Kunden ville sedan byta ut antal klick och då var det bara att andra i min If sats med Between i koden istället för att knöla med databasen.

ID: #17150 | Skapades: 2009-07-31 11:18:28

voigtan
voigtan

Gradering

#17153

Nu hänger jag inte riktigt med, men jag kan egentligen bara referera till World of Warcraft då det är det ända RPG spel jag spelar just nu.

Padchi: Om jag fattar din lösning rätt så har du ingen nivå fält utan du utgå efter vad den totala XP:n är på en person?

Vad händer om man byter algoritm i framtiden (Vilken World of Warcaft har gjort ett par gånger)?

Om jag har 50xp och varje nivå är 5xp så är jag lvl 10, men efter en fix så bli jag lvl 5 istället? Känns inte direkt snällt för en som ändå kanske ha köpt vapen/utrustning/<insert anything here> som kräver en högre nivå att använda.


Lösningen på problemen med Rollspel/XP/Lvl upp är en ganska intressant problematik och det finns lika många lösningar som det finns frågor om detta.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #17153 | Skapades: 2009-07-31 11:33:27

Citerar voigtan:

Problemet med din kod (även om det fungera i detta fall) är att du ha logiken enlig mig på helt fel plats. Den dagen om du måste bygga om logiken för hur XP hanteras osv så måste du bygga om din SQL fråga.

Och vad är "header("Location:settings.php");" för hjälp till honom?

Och fortfarande, din kod är bara vid när man gå upp en nivå, aldrig om man lyckas med aktiviteten men inte gå upp en nivå.

Sen när du presentera XP:n in på nivån så måste du göra uträkningen om hur mycket XP som krävdes för nivån du är på just nu, så det känns som det är en massa mer arbete på ditt sätt. Men det är nog bara jag kanske?

 

Redigerat:

En annan sak som bör ha en funderare på är att:

(Nu kör vi fiktiva värden, orkar inte räkna på det):

Vi är på nivå 10, vi har 45xp och vi behöver 50xp.

Vad händer om vi få 60xp (dvs 55xp över) och vi behöver 55xp för att bli lvl 11.

Just nu är det ingen som har tänkt på detta.

Och en annan sak värd att fundera över:

Vad händer om en admin "ge bort" nivåer till personer, var görs uträkningen så att den inte ställer till problem i framtiden. om jag ger person x 10 nivåer så vill jag inte att person x bara behöver 5xp för att gå upp till nivå 11.



Jag tog bara koden från mitt nuvarande projekt, därför är det header("Location:settings.php");

Det som händer om du får 60EXP är att du blir fortfarande lvl 11, inte 12.
eftersom att exp_to_lvl är 55.

Its not about how hard you can hit, its how hard you can get hit, and still go on.
ID: #17154 | Skapades: 2009-07-31 12:00:18

voigtan
voigtan

Gradering

#17156

Hur räknar du där?

45+x=50

x = 5

60-5  == LVL UP!
55 XP kvar
NextLVL = 55xp
55-55=0 == LVL UP!

No more XP left, Im done!

Vilket inte kommer ske på någon av våra koder.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #17156 | Skapades: 2009-07-31 12:09:39

triwear
triwear

Gradering

#17159

Tackar alla som postade ;)

ID: #17159 | Skapades: 2009-07-31 14:18:21
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy