DTT

Forum serwera DTT, serdecznie zapraszamy do pisania postów.


#1 2009-05-26 18:36:49

Dark Magican

Administrator

Zarejestrowany: 2009-05-25
Posty: 40
Punktów :   

Jak Zrobic Za Awansowany Czar

Witam.
Na początek chciałem zaznaczyć że poradnik zrobiłem sam i zastrzegam sobie prawo do wystawiania go na innych forach. Jeżeli będziesz chciał go gdziekolwiek wystawić zapytaj się mnie o pozwolenie.
Poradnik ten będzie jak zrobić czar z wielokrotnym efektem.
UWAGA! Jeżeli nie umiesz robić pojedynczych czarów zajrzyj Jak zrobić czar dla zielonych!
Więc zaczynamy:

1.Całość czaru:
Kod:

--Made by Miki--
combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_POFF)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -2.0, -200, -1.6, -200)
combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -2.0, -200, -1.6, -200)
combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, 53)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -2.0, -200, -1.6, -200)
combat4 = createCombatObject()
setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, 52)
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -2.0, -200, -1.6, -200)
combat5 = createCombatObject()
setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat5, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -2.0, -200, -1.6, -200)
combat6 = createCombatObject()
setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat6, COMBAT_PARAM_EFFECT, 49)
setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, -2.0, -200, -1.6, -200)
arr1 = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}
arr2 = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}
arr3 = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}
arr4 = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 1, 0, 0, 2, 0, 0, 1, 0, 0},
{0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0},
{0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}
arr5 = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
}
arr6 = {
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
}
local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)
local area3 = createCombatArea(arr3)
local area4 = createCombatArea(arr4)
local area5 = createCombatArea(arr5)
local area6 = createCombatArea(arr6)
setCombatArea(combat1, area1)
setCombatArea(combat2, area2)
setCombatArea(combat3, area3)
setCombatArea(combat4, area4)
setCombatArea(combat5, area5)
setCombatArea(combat6, area6)
local function onCastSpell1(parameters)
    doCombat(parameters.cid, parameters.combat1, parameters.var)
end
local function onCastSpell2(parameters)
    doCombat(parameters.cid, parameters.combat2, parameters.var)
end
local function onCastSpell3(parameters)
    doCombat(parameters.cid, parameters.combat3, parameters.var)
end
local function onCastSpell4(parameters)
    doCombat(parameters.cid, parameters.combat4, parameters.var)
end
local function onCastSpell5(parameters)
    doCombat(parameters.cid, parameters.combat5, parameters.var)
end
local function onCastSpell6(parameters)
    doCombat(parameters.cid, parameters.combat6, parameters.var)
end
function onCastSpell(cid, var)
local parameters = { cid = cid, var = var, combat2 = combat2, combat1 = combat1, combat3 = combat3, combat4 = combat4, combat5 = combat5, combat6 = combat6 }
addEvent(onCastSpell1, 0, parameters)
addEvent(onCastSpell2, 0, parameters)
addEvent(onCastSpell3, 0, parameters)
addEvent(onCastSpell4, 0, parameters)
addEvent(onCastSpell5, 0, parameters)
addEvent(onCastSpell6, 0, parameters)
end

2.Część pierwsza lolcal combat:
Kod:

combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_POFF)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -2.0, -200, -1.6, -200)
combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -2.0, -200, -1.6, -200)
combat3 = createCombatObject()
setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat3, COMBAT_PARAM_EFFECT, 53)
setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -2.0, -200, -1.6, -200)
combat4 = createCombatObject()
setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat4, COMBAT_PARAM_EFFECT, 52)
setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -2.0, -200, -1.6, -200)
combat5 = createCombatObject()
setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat5, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -2.0, -200, -1.6, -200)
combat6 = createCombatObject()
setCombatParam(combat6, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat6, COMBAT_PARAM_EFFECT, 49)
setCombatFormula(combat6, COMBAT_FORMULA_LEVELMAGIC, -2.0, -200, -1.6, -200)

W zależności ilu stopniowy chcesz wykonać czar tyle razy musisz zrobi część skryptu
Kod:

combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_POFF)
setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -2.0, -200, -1.6, -200)

Zauważyłeś pewnie iż mój skrypt składa się z 6 części i kodzie powyższym jest cyfra 1 gdyż to jest pierwszy typ obrażeń, pierwszy efekt czaru i pierwsze ustawienia według magicznego levela gdy robisz czar składający sie np. z 2 efektów muszisz zamiast 1 w kodzie powyżej wpisać 2 żeby skrypt działał gdy robisz 3 i więcej efektowy czar po prostu wpisujesz kolejną liczbę

3. Zasięg czaru:
przy każdym zasięgu czaru masz napisane
Kod:

arr = {

gdy robisz wielo-efektywny czar musisz pisac przy arr cyferkę zaczynając od 1 kończąc na liczbie która jest odpowiednia do ilości efektów

4.Przypisywanie efektów do zasięgu:
Gdy chcemy żeby nasz czar działał poprawnie musimy przypisać efekt który wcześniej zrobiliśmy do zasięgu więc:
Kod:

local area1 = createCombatArea(arr1)
local area2 = createCombatArea(arr2)
local area3 = createCombatArea(arr3)
local area4 = createCombatArea(arr4)
local area5 = createCombatArea(arr5)
local area6 = createCombatArea(arr6)

W zależności ile jest efektów tyle musi byc linijek w odpowiednio przypisanym efektem i zasięgiem tj. nasz pierwszy efekt combat1 jest przypisany do pierwszego zasięgu arr 1 = { w linijce
Kod:

local area1 = createCombatArea(arr1)

5.localcombatarea:
Kod:

setCombatArea(combat1, area1)
setCombatArea(combat2, area2)
setCombatArea(combat3, area3)
setCombatArea(combat4, area4)
setCombatArea(combat5, area5)
setCombatArea(combat6, area6)

tutaj wpisujemy cyfry w nawiasach przy combat i area takie same przykładowo
Kod:

setCombatArea(combat1, area1)

później druga linijka pod spodem:
Kod:

setCombatArea(combat2, area2)

i tyle linijek ile efektów

6.Tutaj czynnnik głębiej nie poznany przeze mnie:
Kod:

local function onCastSpell1(parameters)
    doCombat(parameters.cid, parameters.combat1, parameters.var)
end
local function onCastSpell2(parameters)
    doCombat(parameters.cid, parameters.combat2, parameters.var)
end
local function onCastSpell3(parameters)
    doCombat(parameters.cid, parameters.combat3, parameters.var)
end
local function onCastSpell4(parameters)
    doCombat(parameters.cid, parameters.combat4, parameters.var)
end
local function onCastSpell5(parameters)
    doCombat(parameters.cid, parameters.combat5, parameters.var)
end
local function onCastSpell6(parameters)
    doCombat(parameters.cid, parameters.combat6, parameters.var)
end

to są końcowe łączenia między efektem a zasięgiem czaru tutaj poprostu robimy tyle linijek tego kodu
Kod:

local function onCastSpell1(parameters)
    doCombat(parameters.cid, parameters.combat1, parameters.var)
end

ile mamy wyżej wymienionych efektów i zasięgów tyle że zmieniamy zawszę liczbę z 1 na następną przy każdym wyrazie

7. Parametry lokalne czyli:
Kod:

function onCastSpell(cid, var)
local parameters = { cid = cid, var = var, combat2 = combat2, combat1 = combat1, combat3 = combat3, combat4 = combat4, combat5 = combat5, combat6 = combat6 }

Tutaj także wpisujemy tyle razy ten kod
Kod:

combat1 = combat1,

ile mamy efektów przy tym zmieniając tylko liczbę

8.Ustawienia opóźnienia:
W tej częsci kodu ustawiamy opóźnienie czyli ile po pierwszym efekcie ma być drugi i ile po drugim trzeci itd.
Kod:

addEvent(onCastSpell1, 0, parameters)
addEvent(onCastSpell2, 200, parameters)
addEvent(onCastSpell3, 400, parameters)
addEvent(onCastSpell4, 800, parameters)
addEvent(onCastSpell5, 1000, parameters)
addEvent(onCastSpell6, 1200, parameters)
end

zamiast 0 wpisujemy dowolną liczbę (1000ms = 1sek)
UJak


Nowo powstale forum!
http://www.supportibiaots.pun.pl/forums.php
http://www.iv.pl/images/kb4upha73rb78q7u7lrp.jpg

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
www.energia10na11prz.pun.pl www.speedwaymanager.pun.pl www.corsairs.pun.pl www.biotech09.pun.pl www.nakazdytemat.pun.pl