• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

TFS 0.3.6 pl1formuła ?

Widmo

New Member
Joined
Oct 21, 2008
Messages
40
Reaction score
1
Mam pytanie czy ktoś wie na jakiej zasadzie działa formuła w czarach w TFS 0.3.6 pl1 np jak mam czas divine healing i jego formuła to

Code:
setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 18.5, 25)

i np mam rune sd to inna jeszcze formuła:

Code:
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -60, -1, -60, 5, 5, 4, 7)

Chodzi mi dokładnie o to jakie liczby mam zmieniać jak chce żeby np czar leczył więcej albo sd biło więcej :) jest też coś takiego w config.lua

Code:
-- Spells
	formulaLevel = 5.0
	formulaMagic = 1.0
	bufferMutedOnSpellFailure = false
	spellNameInsteadOfWords = false
	emoteSpells = false
<--- zmieniałem to w configu i wydaje mi się że nic nie dawało.
 
Takie coś jest w poradnikach:
COMBAT_FORMULA_LEVELMAGIC = obrażenia zależne od mlvl
można zamienić na :
COMBAT_FORMULA_SKILL = od skilli broni trzymanej w ręce

oraz bardziej złożony poradnik
W czwartej linijce (4.) ustawiamy jaki będzie dmg. Tutaj trzeba troszkę więcej napisać.
Tak więc podstawę oblicza się ze wzoru:
(lvl*2)+(mag*3)
gdzie lvl to level gracza, a mag to poziom jego magic levelu.
Czyli jeżeli mamy sorcerera na poziomie 40 z 30 magic levelem wydstawa będzie wynosiła:
(40*2)+(30*3)=170

Teraz mając podstawę trzeba ustawić dmg dla poszczególnego czaru.
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -4.2, -200, -4.6, -200)

Wartość ataku jest to liczba losowa między wartością minimalną i maksymalną.
Pierwsze dwie liczby dotyczą wartości minimalnej, a trzecia i czwarta – maksymalnej.
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, a, b, c, d)
Wzór na wartość minimalną to:
a*podstawa+b
i wartość maksymalną:
c*podstawa+d

Ponieważ nasz czar ma za zadanie odejmować hp, wartości A i C są ujemne.
Liczby B i D mają za zadanie odejmowanie/dodawanie stałej liczby.
Może być ona ujemna albo dodatnia.

Czyli obliczając nasz przypadek:
MINI = -4,2 * 170 – 200 = - 514
MAX = -4,6 * 170 – 200 = - 599

Teraz silnik oblicza wartość pomiędzy tymi liczbami (uwzględniając dodatkowe wartości jak na przykład obronę celu czy jego odporność na poszczególne żywioły) i mamy wartość dmg.


A tak prosto mówiąc
setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 18.5, 25)
zmień na

setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 40, 80, 105.5, 200)
 
Acha rep + ;) już rozumiem i wiem dlaczego w sd jest tak dużo "cyferek" i jakoś to pojmę. Dzięki ^^
 
Jak zmienić siłę hitów na graczu??? Bo w monsterki jebie z czaru po 2k a w człowieka 800...
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 7, 10, 7, 18)

local area = createCombatArea(AREA_CROSS5X5)
setCombatArea(combat, area)

function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end
Jak i gdzie ustawić to???
 
combat.cpp linijka 539 chyba
Code:
if(change < 0 && caster && caster->getPlayer() && target->getPlayer() && target->getPlayer()->getSkull() != SKULL_BLACK)
		change = change / 2;
zmien 2 na cos innego lub wyjeb caly ten kod i wtedy bedzie klepac playerow jak moby(ok?)

btw wzialem combat.cpp i znajdz "2" :D
trudne bylo samemu zrobic?
 
Back
Top