Skrypty & Kody Problem ze skryptem na reb - nie ro?nie hp i mana.

Status
Zamknięty.

sebn133

New User
Zarejestrowany
Dołączył
Kwiecień 27, 2013
Posty
6
Liczba reakcji
0
Siemka, tak jak w temacie, czyli nie ro?nie hp i mana jak wykonamy reborn. Prosi?bym o poprawienie skryptu.
[LUA]local config = {
needLevelToReborn = 200, -- wymagany level, aby moc uzyc rebornu
levelAfterReborn = 8, -- jaki level bedzie mial gracz po uzyciu rebornu
onlyInProtectionZone = false, -- czy skryptu mozna uzywac tylko w pz (true/false)
rebornCountStorage = 10002, -- storage, w ktorym skrypt bedzie zapisywac ilosc storage'ow (0 lub false aby wylaczyc)
newHealthAfterReborn = true, -- ilosc hp, ktora postac bedzie miala po rebornie (ustaw false, aby wylaczyc)
newManaAfterReborn = true, -- ilosc many, ktora postac bedzie miala po rebornie (ustaw false, aby wylaczyc)
vocationAfterReborn = { -- jaka profesja ma byc ustawiona po rebornie (zaleznie od wczesniejszej profesji) (aby wylaczyc, ustaw false lub zakomentuj/wyczysc tabele)
-- [id_profesji_przed_rebornem] = {voc = id_profesji_po_rebornie, outfit = {outfit_po_rebornie} } (mozesz tez ustawic sam outfit, bez profesji, lub na odwrot, wystarczy ustawic false tam, gdzie potrzeba)
[1] = {voc = 2, outfit = false},
[2] = {voc = 1, outfit = false},
[3] = {voc = 4, outfit = false},
[4] = {voc = 3, outfit = false},
[5] = {voc = 6, outfit = false},
[6] = {voc = 5, outfit = false},
[7] = {voc = 8, outfit = false},
[8] = {voc = 7, outfit = false},
},
effects = { -- tabela z efektami
enabled = true, -- czy wyswietlanie ciekawego efektu ma byc aktywowane (true / false)
range = 5, -- w jakim zasiegu od gracza ma sie pojawiac efekt (nie ma sensu ustawiac wiekszego niz 9-10, lecz mozna)
speed = 200, -- predkosc efektow w milisekundach
playerEffect = CONST_ME_HOLYAREA, -- efekt, ktory sie wyswietli na graczu
effectListImplode = {CONST_ME_HOLYDAMAGE, CONST_ME_LOSEENERGY}, -- lista efektow, ktore sie wyswietlaja, podczas gdy efekt zbliza sie do gracza
effectListExplode = {CONST_ME_FIREAREA, CONST_ME_FIREATTACK} -- lista efektow "eksplozji"
}
}

function onSay(cid, words, param, channel)
if(param == "count") then return doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You have done reborn " .. math.max(0, getPlayerStorageValue(cid, config.rebornCountStorage)) .. " times. You need " .. math.max(0, config.needLevelToReborn-getPlayerLevel(cid)) .. " levels to make next reborn.") end
local pos, level = getCreaturePosition(cid), getPlayerLevel(cid)
if(level < config.needLevelToReborn) then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You need at least level " .. config.needLevelToReborn .. " to reborn. You still need " .. config.needLevelToReborn - level .. " levels.")
doSendMagicEffect(pos, CONST_ME_POFF)
return 1
end
if(config.onlyInProtectionZone and not getTilePzInfo(pos)) then
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You must be in the protection zone before reborn.")
doSendMagicEffect(pos, CONST_ME_POFF)
return 1
end
local function doReborn(cid, pos) -- specjalnie dalem w formie funkcji, abym mogl uzyc w addEvencie. Co do pamieci, to jest ona zwalniana, gdy wyjdzie z bloku
local added = false -- klopoty z zla iloscia capa podczas rebornu z zmiana profesji zmusily mnie do malego obejscia - nie kazdy silnik musi miec doPlayerSetMaxCapacity, wiec posluguje sie calkowitym resetowaniem poziomu, by potem doPlayerAddLevel nadal wlasciwa ilosc capa.
if(type(config.vocationAfterReborn) == 'table' and #config.vocationAfterReborn > 0) then
local info = config.vocationAfterReborn[getPlayerVocation(cid)]
if(info ~= nil) then
if(type(info.voc) == 'number') then
doPlayerAddLevel(cid, 1 - level) -- teraz skryptowi jest blizej do prawdziwego reborna, bo gracz odradza sie az od samych podstaw :s
if(type(doPlayerSetMaxCapacity) == 'function') then -- po powrocie do 1 levela gracz zwykle ma ustawione 0 capa a domyslnie nowe postacie maja 400, wiec bez tej funkcji "znika" 400 capa (no i przy tak napisanym skrypcie nie musze uzywac getVocationInfo)
doPlayerSetMaxCapacity(cid, 400)
end
doPlayerSetVocation(cid, info.voc)
doPlayerAddLevel(cid, config.levelAfterReborn - 1)
added = true
end
if(type(info.outfit) == 'table') then doCreatureChangeOutfit(cid, info.outfit) end
end
end
if(not added) then doPlayerAddLevel(cid, config.levelAfterReborn - level) end -- profesja sie nie zmienia, wiec nie potrzeba trickow, by ilosc capa byla dobra
if(config.rebornCountStorage) then
setPlayerStorageValue(cid, config.rebornCountStorage, math.max(getPlayerStorageValue(cid, config.rebornCountStorage)+1, 1))
end
if(config.newHealthAfterReborn) then
setCreatureMaxHealth(cid, (getCreatureMaxHealth(cid) + 15))
doPlayerAddHealth(cid, 1000) -- odswiezanie ilosci hp w kliencie, bo inaczej gracz nie zauwazy zmian (przynajmniej w 8.x)
end
if(config.newManaAfterReborn) then
setCreatureMaxMana(cid, (getCreatureMaxHealth(cid) + 15))
doPlayerAddMana(cid, 1000)
end
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have succesful reborned!")
doSendMagicEffect(pos, config.effects.playerEffect)
end
if(config.effects.enabled) then
local function eff_func(params) -- funkcja na szybkie znajdowanie okregu dookola danej pozycji (nie wszyscy uzytkownicy musza go rozumiec, zeby dzialal)
local effect = params.list[params.n%#params.list+1]
doSendMagicEffect({x=pos.x-params.n, y=pos.y, z=pos.z}, effect)
doSendMagicEffect({x=pos.x+params.n, y=pos.y, z=pos.z}, effect)
for i = (params.inset and params.n or 0), (params.inset and 0 or params.n), (params.inset and -1 or 1) do
doSendMagicEffect({x=params.pos.x-i, y=pos.y-(params.n-i), z=pos.z}, effect)
doSendMagicEffect({x=params.pos.x-i, y=pos.y+(params.n-i), z=pos.z}, effect)
doSendMagicEffect({x=params.pos.x+i, y=pos.y+(params.n-i), z=pos.z}, effect)
doSendMagicEffect({x=params.pos.x+i, y=pos.y-(params.n-i), z=pos.z}, effect)
end
if(params.inset and params.n > params.ennd or params.n < params.ennd) then
params.n = params.n - (params.inset and 1 or -1)
addEvent(eff_func, config.effects.speed, params)
elseif(params.cid and isPlayer(params.cid) --[[unikanie bledow, gdy gracz zniknie z gry]]) then
doReborn(params.cid, params.pos)
addEvent(eff_func, config.effects.speed, {pos=params.pos, n=1, ennd=config.effects.range, list=config.effects.effectListExplode, inset=false})
end
end
addEvent(eff_func, config.effects.speed, {pos=pos, n=config.effects.range, list=config.effects.effectListImplode, ennd=1, inset=true, cid=cid})
else
doReborn(cid, pos)
end
return 1
end[/LUA]
 
Odp: Problem ze skryptem na reb - nie ro?nie hp i mana.

bledy w konsoli?
 
Odp: Problem ze skryptem na reb - nie ro?nie hp i mana.

http://scr.hu/37pa/ax28i. Z kolega robie ots i to ja zazwyczaj odpalam wiec podaje blad w konsoli
 
Odp: Problem ze skryptem na reb - nie ro?nie hp i mana.

Co masz na my?li "rosn??" ?
?e co reborn masz dodatkowe + 1k hp/mp np? czy ?e przy rebie graczowi MP i HP zostaje?
 
Odp: Problem ze skryptem na reb - nie ro?nie hp i mana.

wszystkie
[lua]doPlayerAddHealth[/lua]
zamie? na:
[lua]doCreatureAddHealth[/lua]
 
Status
Zamknięty.
Back
Do góry