combat calculator
Op runescape heeft je figuurtje een soort lvl, dit lvl wordt je combat genoemd.
Je combat wordt bepaald door 6 skills.
Ik heb nu een script nodig dat je combat berekend als je deze 6 skills ingeeft.
Op het internet zijn zo honderde scripts te vinden, maar geen ervan is helemaal correct omdat runescape de formule niet wil vrijgeven.
Maar nu hebben ze op het forum van runescape achter deze formule gezocht, en hij is getest door heel veel spelers. En hij is bijna 100% correct.
Dit is het script dat op het forum stond:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
Formula version 4.0
// Created by MaxWaterman
// Formula by MaxWaterman, Fern1970, Helcaterian,
// Oblivion590, Hans980 and Benmarchant.
// Reproduction without this comment is prohibited.
function combatLevel($attack, $defence, $strength, $hp, $prayer, $ranged, $magic, $summoning) {
$base = ($defence + $hp + floor($prayer / 2) + floor($summoning / 2)) * 0.25;
$melee = ($attack + $strength) * 0.325;
$ranger = floor($ranged * 1.5) * 0.325;
$mage = floor($magic * 1.5) * 0.325;
return $base + max($melee, $ranger, $mage);
}
?>
Formula version 4.0
// Created by MaxWaterman
// Formula by MaxWaterman, Fern1970, Helcaterian,
// Oblivion590, Hans980 and Benmarchant.
// Reproduction without this comment is prohibited.
function combatLevel($attack, $defence, $strength, $hp, $prayer, $ranged, $magic, $summoning) {
$base = ($defence + $hp + floor($prayer / 2) + floor($summoning / 2)) * 0.25;
$melee = ($attack + $strength) * 0.325;
$ranger = floor($ranged * 1.5) * 0.325;
$mage = floor($magic * 1.5) * 0.325;
return $base + max($melee, $ranger, $mage);
}
?>
Het probleem is dat dit script alleen niet zo handig is, het is pas handig als het berekend hoeveel lvls van die skills je nog moet om een combat te stijgen.
Ik heb het al een beetje geprobeerd en voor de meeste skills ben ik er al uitgekomen.
Eerst en vooral heb ik iets toegevoegd aan het script zodat je je combat ook met decimalen kunt zien en wat je volgend combat is:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
// Created by MaxWaterman
// Formula by MaxWaterman, Fern1970, Helcaterian,
// Oblivion590, Hans980 and Benmarchant.
// Reproduction without this comment is prohibited.
function combatLevel($cbattack, $cbdefence, $cbstrength, $cbhp, $cbprayer, $cbranged, $cbmagic, $cbsummoning) {
$cbbase = ($cbdefence + $cbhp + floor($cbprayer / 2) + floor($cbsummoning / 2)) * 0.25;
$cbmelee = ($cbattack + $cbstrength) * 0.325;
$cbranger = floor($cbranged * 1.5) * 0.325;
$cbmage = floor($cbmagic * 1.5) * 0.325;
return $cbbase + max($cbmelee, $cbranger, $cbmage);
}
$cb = combatLevel($attack,$defence,$strength,$hitpoints,$prayer,$ranged,$magic,$summoning);
$combat = floor($cb);
$nextcb = ceil($cb);
?>
// Created by MaxWaterman
// Formula by MaxWaterman, Fern1970, Helcaterian,
// Oblivion590, Hans980 and Benmarchant.
// Reproduction without this comment is prohibited.
function combatLevel($cbattack, $cbdefence, $cbstrength, $cbhp, $cbprayer, $cbranged, $cbmagic, $cbsummoning) {
$cbbase = ($cbdefence + $cbhp + floor($cbprayer / 2) + floor($cbsummoning / 2)) * 0.25;
$cbmelee = ($cbattack + $cbstrength) * 0.325;
$cbranger = floor($cbranged * 1.5) * 0.325;
$cbmage = floor($cbmagic * 1.5) * 0.325;
return $cbbase + max($cbmelee, $cbranger, $cbmage);
}
$cb = combatLevel($attack,$defence,$strength,$hitpoints,$prayer,$ranged,$magic,$summoning);
$combat = floor($cb);
$nextcb = ceil($cb);
?>
De volgende skills kloppen al:
-defence en hitpoints
Code (php)
-prayer en summoning
Code (php)
-attack en strenght
Code (php)
Nu zijn er nog twee skills waarvan ik de formule niet krijg omgevormd:
namelijk ranged en magic.
zou alsjeblieft iemand mij hiermee willen helpen?
alvast bedankt,
Bram
Gewijzigd op 01/01/1970 01:00:00 door Bram
bump, pls ik heb dit echt dringend nodig...
Helaas heb ik Runescape nooit gespeeld, maar je zou zeggen dat er genoeg mensen op dit forum rondlopen die dat wel hebben gedaan ;-)
@Bram : Hier staan 2 tot 3 Combat scripts op phphulp. Gebruik het zoeksysteem.
@wouter, weet ik wel maar die hebben de functie niet om te berekenen hoeveel lvl's je nog moet + (zoals ik al in mijn eerste bericht heb gezegd) die gebruiken minder correcte formules, dit is de tot nu toe meest correcte
Dat je dus alles doorloopt met een while en een foreach:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
function combatLevel($attack, $defence, $strength, $hp, $prayer, $ranged, $magic, $summoning) {
$base = ($defence + $hp + floor($prayer / 2) + floor($summoning / 2)) * 0.25;
$melee = ($attack + $strength) * 0.325;
$ranger = floor($ranged * 1.5) * 0.325;
$mage = floor($magic * 1.5) * 0.325;
return $base + max($melee, $ranger, $mage);
}
$levels = array();
$levels['attack'] = ''; // levels
$levels['defence'] = '';
$levels['strength'] = '';
$levels['hp'] = '';
$levels['prayer'] = '';
$levels['ranged'] = '';
$levels['magic'] = '';
$levels['summoning'] = '';
$levels_nieuw_cmb = array();
$combat = floor(combatLevel($levels['attack'], $levels['defence'], $levels['strength'], $levels['hp'], $levels['prayer'], $levels['ranged'], $levels['magic'], $levels['summoning']));
foreach($levels as $skill => $lvl){
$levels_copy = $levels;
$combat_change = $combat;
$mogelijke_levels = 0;
while(floor($combat_change) == $combat){
$levels_copy[$skill]++;
$combat_change = combatLevel($levels_copy['attack'], $levels_copy['defence'], $levels_copy['strength'], $levels_copy['hp'], $levels_copy['prayer'], $levels_copy['ranged'], $levels_copy['magic'], $levels_copy['summoning']);
}
$levels_nieuw_cmb[$skill] = $levels_copy[$skill] - $levels[$skill];
}
echo 'Uw combat level is momenteel '.$combat.'<br />';
foreach($levels_nieuw_cmb as $skill => $lvls){
echo '<li>Voor het volgende level moet u '.$lvls.' levels '.$skill.' trainen.</li>';
}
?>
function combatLevel($attack, $defence, $strength, $hp, $prayer, $ranged, $magic, $summoning) {
$base = ($defence + $hp + floor($prayer / 2) + floor($summoning / 2)) * 0.25;
$melee = ($attack + $strength) * 0.325;
$ranger = floor($ranged * 1.5) * 0.325;
$mage = floor($magic * 1.5) * 0.325;
return $base + max($melee, $ranger, $mage);
}
$levels = array();
$levels['attack'] = ''; // levels
$levels['defence'] = '';
$levels['strength'] = '';
$levels['hp'] = '';
$levels['prayer'] = '';
$levels['ranged'] = '';
$levels['magic'] = '';
$levels['summoning'] = '';
$levels_nieuw_cmb = array();
$combat = floor(combatLevel($levels['attack'], $levels['defence'], $levels['strength'], $levels['hp'], $levels['prayer'], $levels['ranged'], $levels['magic'], $levels['summoning']));
foreach($levels as $skill => $lvl){
$levels_copy = $levels;
$combat_change = $combat;
$mogelijke_levels = 0;
while(floor($combat_change) == $combat){
$levels_copy[$skill]++;
$combat_change = combatLevel($levels_copy['attack'], $levels_copy['defence'], $levels_copy['strength'], $levels_copy['hp'], $levels_copy['prayer'], $levels_copy['ranged'], $levels_copy['magic'], $levels_copy['summoning']);
}
$levels_nieuw_cmb[$skill] = $levels_copy[$skill] - $levels[$skill];
}
echo 'Uw combat level is momenteel '.$combat.'<br />';
foreach($levels_nieuw_cmb as $skill => $lvls){
echo '<li>Voor het volgende level moet u '.$lvls.' levels '.$skill.' trainen.</li>';
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Scrptr
wow, bedankt het werkt perfect :)
Geen dank, alleen klopt het nog niet helemaal, als ik kijk naar de output van dit script en die van lunagang.nl krijg ik net de zelfde gegevens
Zijn de gegevens van lunagang erg anders? in dat geval komt het misschien omdat ze een andere formule gebruiken?
Edit: had inderdaad verkeerde gegevens gebruikt, het script klopt
Gewijzigd op 01/01/1970 01:00:00 door Scrptr
Die formule berekend in welk level je zit bij een x aantal experients
Maar werkt het nu ?
Ja hij werkt, een extra toevoeging van het script zou kunnen zijn dat je inplaats van je lvls je experients invult: Zo kun je berekenen hoeveel experients je nog moet, en dat is nauwkeuriger dan lvls