local nazwa_czaru = "Light Healing" -- wpisz tu nazwe czaru
local focus = 0
local talk_start = 0
local target = 0
local following = false
local attacking = false
function onThingMove(creature, thing, oldpos, oldstackpos)
end
function onCreatureAppear(creature)
end
function onCreatureDisappear(cid, pos)
if focus == cid then
selfSay('Good bye then.')
focus = 0
talk_start = 0
end
end
function onCreatureTurn(creature)
end
function msgcontains(txt, str)
return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end
function onCreatureSay(cid, type, msg)
msg = string.lower(msg)
if msgcontains(msg, 'hi') then
selfSay('Hej!, masz moja tarcze?')
focus = cid
talk_start = os.clock()
elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then
selfSay('Sorry, ' .. getCreatureName(cid) .. '! I talk to you in a minute.')
elseif focus == cid then
talk_start = os.clock()
if msgcontains(msg, 'yes') then
if getPlayerStorageValue(cid,8000) == 1 then
selfSay('To nie twoja misja!.')
elseif msgcontains(msg, 'yes') then
if doPlayerRemoveItem(cid,2667,5) == 0 then
selfSay('Nie masz tej tarczy!.')
else
if doPlayerAddItem(cid,2151,50) then
setPlayerStorageValue(cid,8000,1)
selfSay('Dzieki! Nauczylem Cie techniki "omote"')
doPlayerLearnInstantSpell(cid, nazwa_czaru)
focus = 0
talk_start = 0
end
end
end
elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then
selfSay('Zegnaj, ' .. getCreatureName(cid) .. '!')
focus = 0
talk_start = 0
end
end
end
function onThink()
doNpcSetCreatureFocus(focus)
if (os.clock() - talk_start) > 45 then
if focus > 0 then
selfSay('Nastepny prosze...')
end
focus = 0
end
if focus ~= 0 then
if getDistanceToCreature(focus) > 5 then
selfSay('Zegnaj.')
focus = 0
end
end
end
<instant name="omote" words="omote" needtarget="1"
direction="1" lvl="1" maglv="0" mana="0" soul="0" exhaustion="1"
prem="0" enabled="1" script="omote.lua"></instant>
function onCombat(cid, target)
if isPlayer(cid) and isPlayer(target) and getPlayerStorageValue(target, 1234) == 1 then
local pos = getCreaturePosition(target)
local rands = {-5,-4,-3,3,4,5}
if math.random(0,1) == 0 then
pos.x = pos.x + rands[math.random(1,#rands)]
else
pos.y = pos.y + rands[math.random(1,#rands)]
end
local fer = getClosestFreeTile(target, pos, false, false)
if isSightClear(getCreaturePosition(target), fer, true) then
doTeleportThing(target, fer)
end
return false
end
return true
end
<event type="combat" name="Ot" event="script" value="nazwa.lua"/>
registerCreatureEvent(cid, 'Ot')
function onCastSpell(cid, var)
doPlayerSetStorageValue(cid, 1234, 1)
doSendMagicEffect(getCreaturePosition(cid), 39)
return true
end
function onCombat(cid, target)
if isCreature(cid) and isPlayer(target) and getPlayerStorageValue(target, 1234) == 1 then
return false
end
return true
end
<event type="combat" name="Ot" event="script" value="nazwa.lua"/>
registerCreatureEvent(cid, 'Ot')
function onCastSpell(cid, var)
doPlayerSetStorageValue(cid, 1234, 1)
doSendMagicEffect(getCreaturePosition(cid), 39)
return true
end
Oto obiecany upgrade system.Witam nie mam, gdzie tego napisa?je?li nie tu to przrosze o usuni?cie postu.
Sprawa jest taka, ?e posiadam skrypt Upgrade kt?ry ulepsza przedmioty na LVL itd... problem w tym, ?e potrzebowa?bym teraz skryptu, kt?ry Upgraduje Item daj?c mu dopisek np: Dragon Slayer (Niebianski +1) i dawa? by naprzyk?ad + 2 obra?enia od Lodu. A i gdyby by?o to mo?liwe, by da?o si? Upgradnac tylko itemy o danym ID, prosi?bym to wyr??nic tak, bym m?g? to zmieni?. Tak wi?c oto dane:
Opis: WY?EJ ^
Silnik: 8.54 TFS
Typ: Actions (na ID itemu)
Je?eli czego? brakuje prosz? o upomnienie
Oto skrypt, kt?ry m?g?by by? zedytowany, tak by dawa? + obra?enia od Lodu, etc... i je?li to mo?liwe zrobienie go tak by dzia?a? na dany item:
@3 DownKod:local conf = {} conf["level"] = { -- [item_level] = {successParcent=PARCENT FOR UPGRADING SUCCESS, downrageLevel = IF UPGRADING FAIL - ITEM WAS DECRASED TO LEVEL HERE} [1] = {successParcent = 85, downrageLevel = 0}, [2] = {successParcent = 80, downrageLevel = 1}, [3] = {successParcent = 75, downrageLevel = 2}, [4] = {successParcent = 70, downrageLevel = 3}, [5] = {successParcent = 65, downrageLevel = 4}, [6] = {successParcent = 60, downrageLevel = 5}, [7] = {successParcent = 55, downrageLevel = 6}, [8] = {successParcent = 50, downrageLevel = 7}, [9] = {successParcent = 45, downrageLevel = 8} } conf["upgrade"] = { -- how many parcent attributes are rised? attack = 5, -- attack % extraAttack = 10, -- extra Attack % defense = 5, -- defence % extraDefense = 10, -- extra defence % armor = 5, -- armor % hitChance = 5, -- hit chance % } -- // do not touch // -- -- Upgrading system v.3.1 by Azi [Ersiu] Edited by Captain2009 -- local upgrading = { upValue = function (value, level, parcent) if(not(value>0))then return 0 end for i=1,level do value = math.ceil(((value/100)*parcent)+value)+1 end return (value > 0) and value or 0 end, getLevel = function (item) local name = string.explode(getItemName(item), '+') return (#name == 1) and 0 or math.abs(name[2]) end, } function onUse(cid, item, fromPosition, itemEx, toPosition) local getItem = getItemInfo(itemEx.itemid) if((getItem.weaponType > 0 or getItem.armor > 0) and not isItemStackable(itemEx.itemid))then local level = upgrading.getLevel(itemEx.uid) if(level < #conf["level"])then local nLevel = (conf["level"][(level+1)].successParcent >= math.random(1,100)) and (level+1) or conf["level"][level].downrageLevel if(nLevel > level)then doSendMagicEffect(toPosition, 30) doPlayerSendTextMessage(cid, 22, "Udalo sie! Przedmiot zyskal na mocy") else doSendMagicEffect(toPosition, 2) doPlayerSendTextMessage(cid, 22, "Cholera, nie udalo sie... przedmiot stracil troche mocy!") end doItemSetAttribute(itemEx.uid, "name", getItem.name..((nLevel>0) and " +"..nLevel or "")) doItemSetAttribute(itemEx.uid, "attack", upgrading.upValue(getItem.attack, nLevel, conf["upgrade"].attack)) doItemSetAttribute(itemEx.uid, "extraattack", upgrading.upValue(getItem.extraAttack, nLevel, conf["upgrade"].extraAttack)) doItemSetAttribute(itemEx.uid, "defense", upgrading.upValue(getItem.defense,nLevel, conf["upgrade"].defense)) doItemSetAttribute(itemEx.uid, "extradefense", upgrading.upValue(getItem.extraDefense, nLevel, conf["upgrade"].extraDefense)) doItemSetAttribute(itemEx.uid, "armor", upgrading.upValue(getItem.armor, nLevel, conf["upgrade"].armor)) doItemSetAttribute(itemEx.uid, "hitChance", upgrading.upValue(getItem.hitChance,nLevel, conf["upgrade"].hitChance)) doRemoveItem(item.uid, 1) else doPlayerSendTextMessage(cid, 19, "Przykro mi ten item ma juz max level.") end else doPlayerSendTextMessage(cid, 19, "Tego itemu nie da sie ulepszyc.") end end
Spoko dzi?kipoczekam je?li trzeba ;D
COMBAT_NONE = 0
COMBAT_PHYSICALDAMAGE = 1
COMBAT_ENERGYDAMAGE = 2
COMBAT_EARTHDAMAGE = 4
COMBAT_POISONDAMAGE = 4
COMBAT_FIREDAMAGE = 8
COMBAT_UNDEFINEDDAMAGE = 16
COMBAT_LIFEDRAIN = 32
COMBAT_MANADRAIN = 64
COMBAT_HEALING = 128
COMBAT_DROWNDAMAGE = 256
COMBAT_ICEDAMAGE = 512
COMBAT_HOLYDAMAGE = 1024
COMBAT_DEATHDAMAGE = 2048
ELEM = {
[11559] = {COMBAT_ICEDAMAGE, value = {2,3}},
[2376] = {COMBAT_DEATHDAMAGE, value = {1,2}}
}
function onCombat(cid, target)
if isMonster(target) or isPlayer(cid) then
registerCreatureEvent(target, 'Ot')
registerCreatureEvent(cid, 'Ot')
end
return true
end
function onStatsChange(cid, attacker, type, combat, value)
if isMonster(cid) and isPlayer(attacker) then
local item = getPlayerWeapon(attacker, true)
if item.itemid > 0 and isWeapon(item.itemid) then
if item.actionid > 0 then
local value = math.floor(value * (item.actionid/100))
for k, v in pairs(ELEM) do
if isInArray(k, item.itemid) then
doTargetCombatHealth(0, cid, v[1], -value, -value, INVISIBLE_EFFECT)
end
end
end
end
end
return true
end
<event type="combat" name="Ots" event="script" value="upgrade.lua"/>
<event type="statschange" name="Ot" event="script" value="upgrade.lua"/>
registerCreatureEvent(cid, 'Ot')
registerCreatureEvent(cid, 'Ots')
local conf = {}
conf['level'] = {
[1] = {successPercent = 100, downrageLevel = 0, dopisek = {'Zwykly','Zuzyty'}},
[2] = {successPercent = 50, downrageLevel = 1, dopisek = {'Ulepszony','Lepszy'}},
[3] = {successPercent = 45, downrageLevel = 2, dopisek = {'Wzmocniony'}},
[4] = {successPercent = 40, downrageLevel = 3, dopisek = {'Dobrej Jakosci'}},
[5] = {successPercent = 35, downrageLevel = 4, dopisek = {'Bez Skazy'}},
[6] = {successPercent = 30, downrageLevel = 5, dopisek = {'Mocny'}},
[7] = {successPercent = 25, downrageLevel = 6, dopisek = {'Potezny'}},
[8] = {successPercent = 20, downrageLevel = 7, dopisek = {'Niebianski'}},
[9] = {successPercent = 15, downrageLevel = 8, dopisek = {'Blogoslawiony'}}
}
conf['upgrade'] = {
--in percent
attack = 5,
extraAttack = 10,
defense = 5,
extraDefense = 10,
armor = 5
}
local upgrading = {
upValue = function (value, level, percent)
if value < 0 then return false end
for i = 1, level do
value = math.ceil(((value / 100) * percent) + value) + 1
end
return (value > 0) and value or 0
end,
getLevel = function (item)
local name = string.explode(getItemName(item), '+')
return (#name == 1) and 0 or math.abs(name[2])
end
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
local getItem = getItemInfo(itemEx.itemid)
if((getItem.weaponType > 0 or getItem.armor > 0) and not isItemStackable(itemEx.itemid))then
local level = upgrading.getLevel(itemEx.uid)
if level < #conf['level'] then
local nLevel = (conf['level'][(level+1)].successPercent >= math.random(1,100)) and (level+1) or conf['level'][level].downrageLevel
if(nLevel > level)then
x = 1
doSendMagicEffect(toPosition, CONST_ME_FIREWORK_RED)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Udalo sie! Przedmiot zyskal na mocy')
else
x = -1
doSendMagicEffect(toPosition, CONST_ME_POFF)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Cholera, nie udalo sie... przedmiot stracil troche mocy!')
end
if level+x == 0 then
doItemSetAttribute(itemEx.uid, 'name', getItem.name)
else
doItemSetAttribute(itemEx.uid, 'name', conf['level'][(level+x)].dopisek[math.random(1,#conf['level'][(level+x)].dopisek)]..' '..getItem.name..((nLevel > 0) and ' +'..nLevel or ''))
end
if ELEM[itemEx.itemid] then
doItemSetAttribute(itemEx.uid, 'aid', (itemEx.actionid + math.random(ELEM[itemEx.itemid].value[1], ELEM[itemEx.itemid].value[2])) * x)
end
doItemSetAttribute(itemEx.uid, 'attack', upgrading.upValue(getItem.attack, nLevel, conf['upgrade'].attack))
doItemSetAttribute(itemEx.uid, 'extraattack', upgrading.upValue(getItem.extraAttack, nLevel, conf['upgrade'].extraAttack))
doItemSetAttribute(itemEx.uid, 'defense', upgrading.upValue(getItem.defense,nLevel, conf['upgrade'].defense))
doItemSetAttribute(itemEx.uid, 'extradefense', upgrading.upValue(getItem.extraDefense, nLevel, conf['upgrade'].extraDefense))
doItemSetAttribute(itemEx.uid, 'armor', upgrading.upValue(getItem.armor, nLevel, conf['upgrade'].armor))
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Przykro mi ten item ma juz maksymalny level.')
end
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Tego itemu nie da sie ulepszyc.')
end
end
Niestety, ale dopisek o dodatkowych obra?eniach od ?ywio??w jest w fazie test?w.22:49 Widzisz Wzmocniony sword +3 (Atak: 20 +5, Obrona: 18 +7).
Czyli bro? maj?ca aid r?wne 23, a gracz zada obra?enia za 100 to dodatkowe obra?enia od ?ywio?u wynios?: 100 * (23 / 100) = 23, czyli w sumie obra?enia wynios? 123.normalne_obrazenia * (item.actionid / 100)
local items = {2376,1256,7542}
local conf = {}
conf['level'] = {
[1] = {successPercent = 100, downrageLevel = 0, dopisek = {'Zwykly','Zuzyty'}},
[2] = {successPercent = 50, downrageLevel = 1, dopisek = {'Ulepszony','Lepszy'}},
[3] = {successPercent = 45, downrageLevel = 2, dopisek = {'Wzmocniony'}},
[4] = {successPercent = 40, downrageLevel = 3, dopisek = {'Dobrej Jakosci'}},
[5] = {successPercent = 35, downrageLevel = 4, dopisek = {'Bez Skazy'}},
[6] = {successPercent = 30, downrageLevel = 5, dopisek = {'Mocny'}},
[7] = {successPercent = 25, downrageLevel = 6, dopisek = {'Potezny'}},
[8] = {successPercent = 20, downrageLevel = 7, dopisek = {'Niebianski'}},
[9] = {successPercent = 15, downrageLevel = 8, dopisek = {'Blogoslawiony'}}
}
conf['upgrade'] = {
--in percent
attack = 5,
extraAttack = 10,
defense = 5,
extraDefense = 10,
armor = 5
}
local upgrading = {
upValue = function (value, level, percent)
if value < 0 then return false end
for i = 1, level do
value = math.ceil(((value / 100) * percent) + value) + 1
end
return (value > 0) and value or 0
end,
getLevel = function (item)
local name = string.explode(getItemName(item), '+')
return (#name == 1) and 0 or math.abs(name[2])
end
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
if isInArray(items, itemEx.itemid) then
local getItem = getItemInfo(itemEx.itemid)
if((getItem.weaponType > 0 or getItem.armor > 0) and not isItemStackable(itemEx.itemid))then
local level = upgrading.getLevel(itemEx.uid)
if level < #conf['level'] then
local nLevel = (conf['level'][(level+1)].successPercent >= math.random(1,100)) and (level+1) or conf['level'][level].downrageLevel
if(nLevel > level)then
x = 1
doSendMagicEffect(toPosition, CONST_ME_FIREWORK_RED)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Udalo sie! Przedmiot zyskal na mocy')
else
x = -1
doSendMagicEffect(toPosition, CONST_ME_POFF)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Cholera, nie udalo sie... przedmiot stracil troche mocy!')
end
if level+x == 0 then
doItemSetAttribute(itemEx.uid, 'name', getItem.name)
else
doItemSetAttribute(itemEx.uid, 'name', conf['level'][(level+x)].dopisek[math.random(1,#conf['level'][(level+x)].dopisek)]..' '..getItem.name..((nLevel > 0) and ' +'..nLevel or ''))
end
if ELEM[itemEx.itemid] then
doItemSetAttribute(itemEx.uid, 'aid', (itemEx.actionid + math.random(ELEM[itemEx.itemid].value[1], ELEM[itemEx.itemid].value[2])) * x)
end
doItemSetAttribute(itemEx.uid, 'attack', upgrading.upValue(getItem.attack, nLevel, conf['upgrade'].attack))
doItemSetAttribute(itemEx.uid, 'extraattack', upgrading.upValue(getItem.extraAttack, nLevel, conf['upgrade'].extraAttack))
doItemSetAttribute(itemEx.uid, 'defense', upgrading.upValue(getItem.defense,nLevel, conf['upgrade'].defense))
doItemSetAttribute(itemEx.uid, 'extradefense', upgrading.upValue(getItem.extraDefense, nLevel, conf['upgrade'].extraDefense))
doItemSetAttribute(itemEx.uid, 'armor', upgrading.upValue(getItem.armor, nLevel, conf['upgrade'].armor))
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Przykro mi ten item ma juz maksymalny level.')
end
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Tego itemu nie da sie ulepszyc.')
end
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Tego itemu nie da sie ulepszyc.')
end
return true
end