Gelio
Senior User
- Joined
- Apr 10, 2008
- Messages
- 617
- Reaction score
- 101
- Age
- 28
Witam wszystkich. Mam wam do zaprezentowania skrypt na rakiet?. Skrypt polega na tym, ?e wpisujemy:
i je?eli nie mamy exhausted, gracz nie jest godem, gracz jest zalogowany, gracz jest na tym samym pi?trze, odleg?o?? pomi?dzy graczami jest mniejsza ni? 20 (mo?na zmieni?) zostaje wystrzelona rakieta, a przy okazji gracz traci 1 infernal bolt (jako ta rakieta). Obra?enia s? dosy? niskie, zale?? od magic levela. Obszar, na jakim wybucha rakieta to romb 3x3, w ?rodku jest nasz cel.
Potem do talkactions.xml (znajduj?cego si? w folderze wy?ej) dodajemy:
I gotowe.
Je?eli masz wyznaczony access to nie masz exhausted, odleg?o?? mo?e by? oboj?tnie jaka, nie musisz mie? wyznaczonego itemu, nie mo?esz dosta? hita.
Pozdro i czekam na komentarze,
Gelio
Code:
!shoot nick gracza
Skrypt
W folderze data/talkactions/scripts robimy plik rakieta.lua, a do niego dodajemy:
Code:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONHIT)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_BOLT)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.9, -20, -1.5, -30)
local arr = {
{0, 0, 1, 0, 0},
{0, 1, 1, 1, 0},
{1, 1, 3, 1, 1},
{0, 1, 1, 1, 0},
{0, 0, 1, 0, 0}
}
local area = createCombatArea(arr)
setCombatArea(combat, area)
function onSay(cid, words, param)
local allCanAccess = 3 -- Access, ktory nie ma exhausted i zasiegu rakiety
local noKillAccess = 3 -- Access, do ktorego nie mozna strzelac
local zasieg = 30 -- Ile kratek maksymalnie mozna strzelic
local exh = 2 -- Ile sekund exhausted
local storage = 12647
if(os.time() > getPlayerStorageValue(cid,storage) or getPlayerAccess(cid) >= allCanAccess) then
if(param ~= "") then
local gracz = getPlayerByName(param)
if(isPlayer(gracz) == TRUE and getPlayerAccess(gracz) < noKillAccess) then
local distance = getDistanceBetween(getPlayerPosition(cid), getPlayerPosition(gracz))
if(getPlayerAccess(cid) < allCanAccess and distance > zasieg) then
doPlayerSendCancel(cid,"Not in range. Go closer.")
return TRUE
end
if(getPlayerPosition(cid).z ~= getPlayerPosition(gracz).z) then
doPlayerSendCancel(cid,"Target is on another floor.")
return TRUE
end
local var = numberToVariant(gracz)
doCombat(cid, combat, var)
setPlayerStorageValue(cid,storage,os.time()+exh)
else
doPlayerSendCancel(cid,"Player is not online.")
end
else
doPlayerSendCancel(cid,"You must enter target name.")
end
else
doPlayerSendCancel(cid,"You are exhausted.")
end
return TRUE
end
Code:
<talkaction words="!shoot" script="rakieta.lua" />
I gotowe.
Je?eli masz wyznaczony access to nie masz exhausted, odleg?o?? mo?e by? oboj?tnie jaka, nie musisz mie? wyznaczonego itemu, nie mo?esz dosta? hita.
Pozdro i czekam na komentarze,
Gelio