Page 1 of 1
Dėl skaičiaus sugeneravimo
Posted: 2011 May 10 13:22
by addinol
Sveiki, taigi norėčiau sugeneruoti skaičių t.y. žaidėjo SKILL (įgudžius) turėtų būti atsižvelgta į Žaidėjo kills, deaths, headshots. Taippat jog SKILL galėtų būti ir minusinis ir pliusinis.
Tai norėčiau jūsų paklausti kaip jūsų nuomone, būtų geriausia tai padaryti ?
Taippat būtų neblogai jei duotumėt pavizdį su šiais skaičiais, pvz.:
[#1]
Kills: 2 188
Deaths: 1 861
Headshots: 578
[#2]
Kills: 579
Deaths: 476
Headshots: 202
[#3]
Kills: 1 344
Deaths: 1 597
Headshots: 491
ir pvz.: (Šitas blogai kažkaip skaičiuoja, norėčiau įvairesnių variantų)
Code: Select all
( kills * headshots ) / deaths [#1] ( 2188 * 578 ) / 1861 = 679[#2] ( 579 * 202 ) / 476 = 245[#3] ( 1344 * 491 ) / 1597 = 413
[#3] - Puikiai matome jog mirčių skaičius didesnis, ir gauname didesnį SKILL už [#2] kurio stats geresni
Re: Dėl skaičiaus sugeneravimo
Posted: 2011 May 10 14:35
by baltymas
Gal Kills - deaths + headshot ?

Re: Dėl skaičiaus sugeneravimo
Posted: 2011 May 10 14:50
by addinol
Nebesvaik. pagalvok logiškai
žaidėjų skill turėtų būti vienodas jei pvz:
10 000 kills, 5 000 deaths 4 000 headshots
1 000 kills, 500 deaths 400 headshots
o su tavo šituo tai vieno gausis daxuja kito nixuja, jei jau rašai tai pagalvok, o ne betką rašyk.
Re: Dėl skaičiaus sugeneravimo
Posted: 2011 May 10 15:24
by hleV
Headshot'ai gelbės nužudymų/mirčių santykį.
Re: Dėl skaičiaus sugeneravimo
Posted: 2011 May 10 15:34
by addinol
čia yra problema, jog jei ne float skaičius imu, ir bus kills+headshots < deaths, tai gaus 0. neišeina padaryti minusinių skill jei ne float. o su float nelabai moku šitą padaryti.
-- 2011 Geg 10 17:41 --
nu tarkim su float padariau,
Code: Select all
Float:get_user_skill(id){ if(iKills[id] == 0 || iDeaths[id] == 0) return 0.0; new Float:kills = iKills[id] + 0.0; new Float:deaths = iDeaths[id] + 0.0; new Float:headshots = iHeadshots[id] + 0.0; new Float:iSkill = ( ( (Float:kills + Float:headshots) / Float:deaths) + (iBonus[id] * 10.0) ); return Float:iSkill;}
Bet man man skill gaunasi: 1 arba 1.4, 1 įsisaugo į mysql, nors saugau ir rašau su %0.1f ir Float:get_user_skill(id)
nors aš suskaičiuoju:
( ( (2188.0 + 1861.0) / 578.0 ) + (0.0 * 10.0) );
4049.0 / 578.0 + 0.0
7.0
Beje ar mysql'e floatus saugoti kaip INT ar VARCHAR ?
Re: Dėl skaičiaus sugeneravimo
Posted: 2011 May 10 17:18
by hleV
Code: Select all
get_user_skill(id){ new deaths = iDeaths[id]; if (deaths) return floatround((float(iKills[id] + iHeadshots[id]) / deaths)) * 10; return floatround(float(iKills[id] + iHeadshots[id])) * 10;}
Re: Dėl skaičiaus sugeneravimo
Posted: 2011 May 10 17:26
by addinol
ok o su šituo kaip suprantu kablelių nebus, tai printint ir saugot į mysql jį su %d
PS. Labai netiksliai gauna, nes būna tarkim iš šito:
return floatround((float(iKills[id] + iHeadshots[id]) / deaths)) * 10;
(2188 + 578) / 1861 * 10:
2188 + 578 = 2766
2766 / 1861 = 1 (Būtų 1.48 bet čia gauna be kablelio skaičių [ ČIA IR PROBLEMA ])
1 * 10 = 10.
Problema ta, jog be kablelio skaičių daugina ir tada labai netiksliai gaunasi.
Tai jei su šitu neišeina būdu galbūt koks kitas yra, pertvarkyčiau tada pluginą visą, nes labai reikia
