Forum > Webbutveckling relaterat > Databaser och SQL
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.
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å
}
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
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.
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;
}
.4x3 + 40.4x2 + 396x
x*5
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.
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.
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.
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.
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.
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 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.
Tackar alla som postade ;)