-Skrypt Reborn system.

Status
Zamknięty.

Ador

Advanced User
Zarejestrowany
Dołączył
Sierpień 18, 2009
Posty
225
Liczba reakcji
11
Witam. Szukam skryptu Rebornu pod tibie 8.6, prosz? o pomoc.

Nie interesuj? mnie oferty kupna itp :) po prostu, chcia?em dosta? gotowy skrypt pod 8.6
 
Odp: Reborn system.

Ludzie przecie? to jest tak prosty system ?e nawet amator by go napisa?, wystarczy poszuka? w dokumentacji kilka funkcji i tyle.
 
Odp: Reborn system.

No tak, ale nie zale?y mi na rebornie z NPC.

Co za problem wam udost?pni? ten skrypt? Czy wy wszyscy musicie wymaga?, za co? op?aty?

Zale?y mi na skrypcie, na kt?rym wpiszemy !reborn w czacie, i mamy reborn od danego lvl'a, i ?eby pisa?o, gdy sie kliknie na gracza ile ma tych reborn?w.

Czy to takie trudne? Nie umiem napisa? takiego skryptu, ale i te? nie zamierzam p?aci?. Chc? zrobi? ots, taki na kt?rym ludzie b?d? zarabiali rebornami na pkt premium w sms shopie.. nie b?d? wymaga? op?at! Czemu mam p?aci? za co?, skoro sam nie chce osi?ga? zysk?w..

@Bruczek GG 8882716
 
Odp: Reborn system.

Nikogo to nie obchodzi ze ty nie chcesz pobiera? z tego zysk?w ale kto? to napisa? i chce to sprzeda?..
Z tego co wiem poszukaj takiego tematu jak COTM #3 na tym forum - tam znajdziesz to co chcia?e?;)
 
Odp: Reborn system.

Mo?e i znalaz?em, teraz reszta - gdzie wklei? ten kod?
 
Odp: Reborn system.

Sk?d mamy wiedzie? jaki skrypt masz?
 
Odp: Reborn system.

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 = 180, -- ilosc hp, ktora postac bedzie miala po rebornie (ustaw false, aby wylaczyc)

newManaAfterReborn = 100, -- 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 = {lookType=137, lookHead=102, lookBody=11, lookLegs=68, lookFeet=24, lookAddons=3}},

[2] = {voc = 1, outfit = {lookType=137, lookHead=70, lookBody=52, lookLegs=20, lookFeet=76, lookAddons=3}},

[3] = {voc = 4, outfit = {lookType=137, lookHead=102, lookBody=11, lookLegs=68, lookFeet=24, lookAddons=3}},

[4] = {voc = 3, outfit = {lookType=137, lookHead=70, lookBody=52, lookLegs=20, lookFeet=76, lookAddons=3}},

[5] = {voc = 6, outfit = {lookType=137, lookHead=102, lookBody=11, lookLegs=68, lookFeet=24, lookAddons=3}},

[6] = {voc = 5, outfit = {lookType=137, lookHead=70, lookBody=52, lookLegs=20, lookFeet=76, lookAddons=3}},

[7] = {voc = 8, outfit = {lookType=137, lookHead=102, lookBody=11, lookLegs=68, lookFeet=24, lookAddons=3}},

[8] = {voc = 7, outfit = {lookType=137, lookHead=70, lookBody=52, lookLegs=20, lookFeet=76, lookAddons=3}},

},

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, config.newHealthAfterReborn)

doCreatureAddHealth(cid, (getCreatureHealth(cid) < 4 and -1 or 1)) -- odswiezanie ilosci hp w kliencie, bo inaczej gracz nie zauwazy zmian (przynajmniej w 8.x)

end

if(type(config.newManaAfterReborn) == 'number') then

setCreatureMaxMana(cid, config.newManaAfterReborn)

doPlayerAddMana(cid, config.newManaAfterReborn - getPlayerMana(cid))

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


Skrypt, wiec gdzie go wkleic?
 
Odp: Reborn system.

uuu kawal skryptu , sprawdz go dokladnie bo chyba jest co? nie tak ...
 
Odp: Reborn system.

Co mam sprawdzi?, i co jest nie tak? Zamiast pomocy, widze zb?dne posty...
 
Odp: Reborn system.

Skrypt wk?adasz do talkactions
 
Odp: Reborn system.

Do pliku talkactions.xml?
 
Odp: Reborn system.

To gdzie? Nic nie pomagacie..


Gdzie s? moderatorzy?chyba widz?, ?e posty nic do tematu nie wnosz?...
 
Odp: Reborn system.

No tak, ale nie zale?y mi na rebornie z NPC.
Co za problem wam udost?pni? ten skrypt? Czy wy wszyscy musicie wymaga?, za co? op?aty?
Zale?y mi na skrypcie, na kt?rym wpiszemy !reborn w czacie, i mamy reborn od danego lvl'a, i ?eby pisa?o, gdy sie kliknie na gracza ile ma tych reborn?w.
Czy to takie trudne? Nie umiem napisa? takiego skryptu, ale i te? nie zamierzam p?aci?. Chc? zrobi? ots, taki na kt?rym ludzie b?d? zarabiali rebornami na pkt premium w sms shopie.. nie b?d? wymaga? op?at! Czemu mam p?aci? za co?, skoro sam nie chce osi?ga? zysk?w..
@Bruczek GG 8882716
Nie chcemy op?at. Chcesz zrobi? otsa to niestety powiniene? wiedzie?, ?e nikt nie b?dzie ci na tacy podawa? wszystkiego o co poprosisz a je?li serio zale?y ci na zrobieniu otsa to sam do tego dojdziesz jak to zrobi?.
Problem jest taki, ?e reborn to jeden z najg?upszych pomys??w, na jaki wpadli tw?rcy serwer?w ot i wi?kszo?? z nas takiego skryptu nie posiada.

Nie umiesz robi? skrypt?w? Prosz? bardzo:
http://tibia.net.pl/forums/163-LUA-amp-XML
na internecie jest tyle poradnik?w do lua, ?e nawet cz?owiek, kt?ry nigdy nie mia? styczno?ci z komputerem by?by si? w stanie tego nauczy?

Szukasz funkcji lua? ?wietnie, ?ap:
http://otland.net/threads/all-lua-functions.142247/
widzisz jakie to proste? Nie musisz si? nawet tam rejestrowa?, by zobaczy? posta.

?eby ci u?atwi? spraw? to dodam, ?e by tw?j skrypt by? odczytany przez silnik serwera w talkactions.xml powiniene? doda? co? takiego:
Kod:
<talkaction words="!reborn" event="script" value="nazwa_twojego_skryptu.lua"/>

Je?li wymagasz od ludzi z forum, by robili ci tak d?ugie skrypty od zera i to za darmo to nie dziw si?, ?e spotykasz si? z tak? reakcj?.
 
Ostatnia edycja:
Odp: Reborn system.

Czy ja wiem, czy to najg?upsza rzecz?

Ale dzi?kuje ci, za podanie link?w do poradnik?w i podpowiedzi, w wi?kszo?ci poradz? sobie sam. Jeszcze napisz?.

W ko?cu kto? napisa? post na temat. Dzi?kuje.

---------- Tre?? dodana o 23:23 ----------

Przepraszam, ?e pisze PPP, ale pilna rzecz.

Co mam doda?, do kodu, ?eby wy?wietla?o ilo?? wykonanych reborn?w na graczu?


KOD:
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 = 180, -- ilosc hp, ktora postac bedzie miala po rebornie (ustaw false, aby wylaczyc)

newManaAfterReborn = 100, -- 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 = {lookType=137, lookHead=102, lookBody=11, lookLegs=68, lookFeet=24, lookAddons=3}},

[2] = {voc = 1, outfit = {lookType=137, lookHead=70, lookBody=52, lookLegs=20, lookFeet=76, lookAddons=3}},

[3] = {voc = 4, outfit = {lookType=137, lookHead=102, lookBody=11, lookLegs=68, lookFeet=24, lookAddons=3}},

[4] = {voc = 3, outfit = {lookType=137, lookHead=70, lookBody=52, lookLegs=20, lookFeet=76, lookAddons=3}},

[5] = {voc = 6, outfit = {lookType=137, lookHead=102, lookBody=11, lookLegs=68, lookFeet=24, lookAddons=3}},

[6] = {voc = 5, outfit = {lookType=137, lookHead=70, lookBody=52, lookLegs=20, lookFeet=76, lookAddons=3}},

[7] = {voc = 8, outfit = {lookType=137, lookHead=102, lookBody=11, lookLegs=68, lookFeet=24, lookAddons=3}},

[8] = {voc = 7, outfit = {lookType=137, lookHead=70, lookBody=52, lookLegs=20, lookFeet=76, lookAddons=3}},

},

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, config.newHealthAfterReborn)

doCreatureAddHealth(cid, (getCreatureHealth(cid) < 4 and -1 or 1)) -- odswiezanie ilosci hp w kliencie, bo inaczej gracz nie zauwazy zmian (przynajmniej w 8.x)

end

if(type(config.newManaAfterReborn) == 'number') then

setCreatureMaxMana(cid, config.newManaAfterReborn)

doPlayerAddMana(cid, config.newManaAfterReborn - getPlayerMana(cid))

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
 
Status
Zamknięty.
Back
Do góry