Skill calculating
Skill calculating
Sveiki, noriu jūsų įdėju kaip teisingai suskaičiuoti žaidėjo skillą...
turim 3 kintamuosius tai yra Žaidėjo Killus, Mirtis ir Headshotus, ar reiktų dar ko nors , ar išeitų gan tiksliai apskaičiuoti jeigu vienas žaidėjas turi visų po daug kitas visų po mažai, bet jeigu jų koeficientas panašus tai ir skill neturėtų skirtis labai... Nežinau kaip suskaičiuoti
(kills / deaths) * (deaths / headshots) * 100
1. Kills - 5651
1. Deaths - 4672
1. Headshots - 3238
2. Kills - 428
2. Deaths - 246
2. Headshots - 288
1. (5651 / 4672) * (4672 / 3238) * 100 = 174.52
2. (428 / 246) * (246 / 288) * 100 = 148.61
Logiška, ne ? Gal geresnių pasiūlymų turit?
turim 3 kintamuosius tai yra Žaidėjo Killus, Mirtis ir Headshotus, ar reiktų dar ko nors , ar išeitų gan tiksliai apskaičiuoti jeigu vienas žaidėjas turi visų po daug kitas visų po mažai, bet jeigu jų koeficientas panašus tai ir skill neturėtų skirtis labai... Nežinau kaip suskaičiuoti
(kills / deaths) * (deaths / headshots) * 100
1. Kills - 5651
1. Deaths - 4672
1. Headshots - 3238
2. Kills - 428
2. Deaths - 246
2. Headshots - 288
1. (5651 / 4672) * (4672 / 3238) * 100 = 174.52
2. (428 / 246) * (246 / 288) * 100 = 148.61
Logiška, ne ? Gal geresnių pasiūlymų turit?
- aaarnas
- Vyr. diskusijų administratorius
- Posts: 3891
- Joined: 2010 Aug 31 13:21
- Skype: fiarno
- Contact:
Re: Skill calculating
(5651 / 4672) + (3238 / 5651) = 1.78
(428 / 246) + (228 / 428) = 2.27
Manau maniškis protingesnis.
Iš nužudymų dalinam mirtis ir kuo daugiau nužudymų nei mirčių - koeficientas didėja.
Po to dar iš nužudymų randam koks koeficientas yra nužudymų į galvą ir pridedam prie bendro koeficiento, tai manau gan logiška. Kuo daugiau nužudymų ir hs - tuo didesnis koeficientas.
(428 / 246) + (228 / 428) = 2.27
Manau maniškis protingesnis.
Iš nužudymų dalinam mirtis ir kuo daugiau nužudymų nei mirčių - koeficientas didėja.
Po to dar iš nužudymų randam koks koeficientas yra nužudymų į galvą ir pridedam prie bendro koeficiento, tai manau gan logiška. Kuo daugiau nužudymų ir hs - tuo didesnis koeficientas.
Palikau CS pasaulį ;/ . Nebepasiekiamas.
Re: Skill calculating
Ok dėkui, o kodėl pas mane visad returnina 1 ??
iKills = 6451
iDeaths = 4198
iHeadshots = 3216
Print output:
Code: Select all
get_user_skill(id){ return ( (iKills[id] / iDeaths[id]) + (iHeadshots[id] / iKills[id]) + iBonus[id] * 32 );}
Code: Select all
client_printc(id, "\g[ RANK ]\n You've %d skill, %d kills, %d deaths, %d headshots.", get_user_skill(id), iKills[id], iDeaths[id], iHeadshots[id])
iDeaths = 4198
iHeadshots = 3216
Print output:
[ RANK ] You've 1 skill, 6451 kills, 4198 deaths, 3216 headshots
- aaarnas
- Vyr. diskusijų administratorius
- Posts: 3891
- Joined: 2010 Aug 31 13:21
- Skype: fiarno
- Contact:
Re: Skill calculating
Tai žiūrėk kas blogai su skaičiavimu.
Palikau CS pasaulį ;/ . Nebepasiekiamas.
Re: Skill calculating
Tai kad viskas gerai atrodo:
http://www.wolframalpha.com/input/?i=%2 ... 51%29+*+32
17 turėtų skill būti...
http://www.wolframalpha.com/input/?i=%2 ... 51%29+*+32
17 turėtų skill būti...
- aaarnas
- Vyr. diskusijų administratorius
- Posts: 3891
- Joined: 2010 Aug 31 13:21
- Skype: fiarno
- Contact:
Re: Skill calculating
Mėgink įrašyti į kintamąjį ir tada per return perduoti. Gali būti, kad suveikia kaip true.
Palikau CS pasaulį ;/ . Nebepasiekiamas.
Re: Skill calculating
Ne, išaikino jau man bėda:
(6451 / 4198) + (3216 / 6451) * 32 = 1
6451 / 4192 = 1
3216 / 6451 = 0
0 * 32 = 0
1 + 0 = 1
Jau išsprendžiau problemą
-- 2011 Sau 25 20:50 --
Bet errorą gaunu:
Line 283:
Line 303:
(6451 / 4198) + (3216 / 6451) * 32 = 1
6451 / 4192 = 1
3216 / 6451 = 0
0 * 32 = 0
1 + 0 = 1
Jau išsprendžiau problemą
-- 2011 Sau 25 20:50 --
Bet errorą gaunu:
line 314:L 01/25/2011 - 19:10:02: [AMXX] Displaying debug trace (plugin "rank.amxx")
L 01/25/2011 - 19:10:02: [AMXX] Run time error 11: divide
L 01/25/2011 - 19:10:02: [AMXX] [0] rank.sma::get_user_skill (line 314)
L 01/25/2011 - 19:10:02: [AMXX] [1] rank.sma::Save_MySql (line 283)
L 01/25/2011 - 19:10:02: [AMXX] [2] rank.sma::client_disconnect (line 303)
Code: Select all
return ( (1000*iKills[id] / iDeaths[id]) + (1000*iHeadshots[id] / iKills[id]) * 1954 ) / 1000;
Code: Select all
format(szTemp,charsmax(szTemp),"UPDATE `rank` SET `name` = '%s', `kills` = '%d', `deaths` = '%d', `headshots` = '%d', `skill` = '%d' WHERE `rank`.`SteamID` = '%s';",szName, iKills[id], iDeaths[id], iHeadshots[id], get_user_skill(id), szSteamID);
Code: Select all
public client_disconnect(id){ Save_MySql(id); // <- 303 iKills[id] = 0; iDeaths[id] = 0; iHeadshots[id] = 0; iBonus[id] = 0;}
- aaarnas
- Vyr. diskusijų administratorius
- Posts: 3891
- Joined: 2010 Aug 31 13:21
- Skype: fiarno
- Contact:
Re: Skill calculating
Pamėgink:
Code: Select all
return ( (1000*iKills[id] / max(iDeaths[id], 1)) + (1000*iHeadshots[id] / max(iKills[id], 1)) * 1954 ) / 1000;
Palikau CS pasaulį ;/ . Nebepasiekiamas.
Re: Skill calculating
Kitaip susitvarkiau, tikrinau jei yra 0 tada ir returninau 0 ;]
Who is online
Users browsing this forum: No registered users and 9 guests