mamba223 - 2008-10-20 20:40:43

Znalazłem nowy system więzienia w talkactions i chciałbym aby ujrzał światło dzienne więc przedstawiam ten projekt

Zasada działania?
np.
Kod:

!kara "nick, za co



Mamy do dyspozycji łatwą do edycji tabelę kar
Najpierw skrypt a potem wytłumaczę.

Tworzymy plik jail.lua o treści:
Kod:

Spoiler:

local system = {
-- Kary
["przeklinanie"] = {minuty = 10, obrazenia = false},
["wyzywanie"] = {minuty = 5, obrazenia = true},
["kradziez"] = {minuty = 25, obrazenia = true},
["atakowanie potwora"] = {minuty = 20, obrazenia = false},
["oszukiwanie"] = {minuty = 20, obrazenia = false}
}

local cele = {
-- Pozycje cel
{x=1076,y=1120,z=7},
{x=1089,y=1113,z=7}
}

-- Pozycja temple
local temple = {x=1080,y=1120,z=6}

-- Mnożniki dla obrażeń lvl * mnożnik
local mnozniki = {4,4.6}


local function uwolnij(x)
doTeleportThing(x.cid, temple)
doSendMagicEffect(temple, CONST_ME_TELEPORT)
doPlayerSendTextMessage(x.cid,22,'Wychodzisz na wolnosc! Uwazaj na siebie!')
setPlayerStorageValue(x.cid, 7000, 0)
print('Gracz '..getPlayerName(x.cid)..' wychodzi na wolnosc!')
return 1
end

local function kara(x)
if(os.time() < getPlayerStorageValue(x.cid, 7000)) then
local lvl = getPlayerLevel(x.cid)
doTargetCombatHealth(0, x.cid, COMBAT_PHYSICALDAMAGE, -(mnozniki[1]*lvl), -(mnozniki[2]*lvl), CONST_ME_NONE)
doPlayerSendTextMessage(x.cid,22,'Lepiej dbac o siebie, kolejny cios moze byc mocniejszy!')
local x = {cid = x.cid}
return addEvent(kara, 30*1000, x)
else
return 1
end
end

function onSay(cid, words, param)
    if (words == '!kara') and (param ~= "") then
    local szukaj = string.find(param, ',')
    local kogo = string.sub(param, 0, szukaj-1)
    local za_co = string.sub(param, szukaj+2, string.len(param))
        if (system[za_co] ~= nil) then
            if (getPlayerAccess(cid) >= 3) then
            local kto = getPlayerByName(kogo)
            local gdzie = math.random(1, table.maxn(cele))
            local x = {cid = kto}
            addEvent(uwolnij, system[za_co].minuty*60*1000, x)
            doTeleportThing(kto, cele[gdzie])
            doSendMagicEffect(getPlayerPosition(kto), CONST_ME_POFF)
            doSendMagicEffect(cele[gdzie], CONST_ME_TELEPORT)
            print('Gracz '..getPlayerName(cid)..' wsadzil gracza '..kogo..' do wiezienia na '..system[za_co].minuty..' minut!')
            doPlayerSendTextMessage(kto,22,'Zostales posadzony w wiezieniu przez gracza '..getPlayerName(cid)..' za '..za_co..' na '..system[za_co].minuty..' minut!')
                if (system[za_co].obrazenia ~= false) then
                local x = {cid = kto}
                doPlayerRemoveItem(kto, 2173, getPlayerItemCount(kto, 2173))
                addEvent(kara, 15*1000, x)
                setPlayerStorageValue(kto, 7000, os.time() + system[za_co].minuty * 60)
                doPlayerSendTextMessage(kto,22,'Zagramy w pewna gre, reguly sa proste, wygraj albo zgin!')
                end
            else
            doPlayerSendTextMessage(cid,22,'Brak wymaganego poziomu uprawnien!')
            end
        else
        doPlayerSendTextMessage(cid,22,'Niestety niema takiego wykroczenia w tabeli!')
        end
    end
return 1
end

I do talkactions.xml dodajemy:

Spoiler:


<talkaction words="!kara" script="jail.lua" />

Gdy napiszemy np.

Spoiler:



!kara "name, przeklinanie

Gracz name zostanie wrzucony do więzienia (do jednej z wylosowanych cel) i dodatkowo jeżeli przy karze jest obrażenia = true będą zadawane obrażenia temu graczowi.

Edycja tabeli z karami:


Spoiler:

["przeklinanie"] = {minuty = 10, obrazenia = false},

przeklinanie - nazwa kary (za co siedzi)
minuty - na ile minut siedzi
obrażenia - czy mają być zadawane obrażenia (false/true)

Dodawanie cel, jest proste do tablicy cele dodajemy linijki:
Kod:

{x=,y=,z=},

Oczywiście uzupełniając o współrzędne


Pozycja gdzie teleportuje gracza po odczekaniu kary:
Kod:

Spoiler:

local temple = {x=,y=,z=}

Nazwałem ją temple bo u mnie do temple leci gracz :P

Teraz mnożniki obrażeń:

Spoiler:



local mnozniki = {4,4.6}

Obrażenia są liczone tak:
lvl * mnożnik

np.
Kod:

lvl * 4

lub
Kod:

lvl 4.6

I wartość jest losowana między jednym a drugim

Uwaga! W celach musi być strefa no-logout

Pozdrawiam.


Mam nadzieje ze sie spodoba

Trojca - 2008-10-20 21:34:26

Super super tylko na spoilery popraw. I jak dobrze pamiętam był już temat na forum?Na sto % były o więzieniach

Ogi - 2008-10-20 22:27:53

Widzialem to chyba bylo na forum :)  ale tak jak @UP daj to do spoilerow ;) jak poprawsz dam +

mrozio18 - 2008-10-24 18:55:17

nie działa mi to ;/

bubel997 - 2008-10-27 20:12:55

fajne9/10

Dimek - 2008-10-27 20:23:06

Super skrypt z więzieniami widziałem tu wiele tematów ale tego jescze "NIE"

Pozdrawiam

Skatten - 2008-10-28 14:52:56

Skrypt nawet fajny , ;p 8/10

DaVo - 2008-10-29 13:34:38

Przyda mi się ten skrypt :P 8/10

Absy - 2008-11-02 17:15:49

Bardzo fajny skrypcik.Napewno zastosuje go na swoim otsie ;)

Max War - 2008-11-04 20:56:09

super skrypt działa on na moim serwie :D

Milkeway - 2012-05-12 10:49:46

U mnie nie działa :(

hotels-world