Nie tylko o Tibii i OTS...
Ze względu na to, iż wiele userów pyta czy można przerobić vip system, żeby był na całe konto, a nie tylko na jedną postać, postanowiłem nareszcie odpowiedzieć "tak!", otóż znalazłem na to sposób, przejdę może od razu do rzeczy...
Do bazy danych:
CREATE TABLE IF NOT EXISTS `accounts_storage` ( `id` int(11) NOT NULL DEFAULT '0', `key` int(10) NOT NULL DEFAULT '0', `value` varchar(255) NOT NULL DEFAULT '0', UNIQUE KEY `id_key` (`id`,`key`), KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
data/lib/050-function.lua\function.lua (na samym końcu)/b]
function setAcccountStorageValue(cid, key, value) local result = db.getResult("SELECT `key` FROM `accounts_storage` WHERE (`id` = '" .. getPlayerAccountId(cid) .. "' and `key` = '" .. key .. "');") if result:getDataInt("key") == nil then return db.executeQuery("INSERT INTO `accounts_storage` (`id`, `key`, `value`) VALUES (" .. getPlayerAccountId(cid) .. ", " .. key .. ", " .. value .. ")") else return db.executeQuery("UPDATE `accounts_storage` SET `value` = " .. value .. " WHERE (`id` = '" .. getPlayerAccountId(cid) .. "' and `key` = '" .. key .. "');") end end function getAccountStorageValue(cid, key) local value = db.getResult("SELECT `value` FROM `accounts_storage` WHERE (`id` = '" .. getAccountAccountId(cid) .. "' and `key` = '" .. key .. "');") return value:getDataInt("value") end
[b]actions.xml:
<!-- Vip System by Sassin --> <action actionid="12694" event="script" value="vip/drzwi.lua" /> <action itemid="XXXX" event="script" value="vip/vip.lua"/> -- XXXX id itemu dajacego vip --<action itemid="ZZZZ" event="script" value="vip/vip2.lua"/> -- ZZZZ id drugiego itemu dajacego vip
data/actions/scripts/vip/drzwi.lua:
-- Vip system by Sassin local config = { storage = 246282 -- nie ruszac wejscie = "Witaj vip graczu!" -- tekst, ktory pojawi sie nad graczem po przesciu przez drzwi vip brakvip = "Nie masz vip'a, nie mozesz przesc przez te drzwi." -- tekst, ktory wyswietli sie gracza, ktorzy probuja przesc, a nie maja vipa } function onUse(cid, item, fromPosition, itemEx, toPosition) local gracz = getCreaturePosition(cid) -- nie ruszac if (item.actionid == 12694 and getAccountStorageValue(cid, config.storage) >= 1) then if gracz.x < toPosition.x then doTeleportThing(cid, {x=toPosition.x+1,y=toPosition.y,z=toPosition.z}, TRUE) doCreatureSay(cid, ""..config.wejscie.."", TALKTYPE_ORANGE_1) else doTeleportThing(cid, {x=toPosition.x-1,y=toPosition.y,z=toPosition.z}, TRUE) doCreatureSay(cid, ""..config.wejscie.."", TALKTYPE_ORANGE_1) end return TRUE else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, ""..config.brakvip.."") return TRUE end return FALSE end
data/actions/scripts/vip/vip.lua
-- Vip system by Sassin local config = { lvl = 10 -- lvl od jakiego mozna uzyc vip itemu storage = 246282 -- nie ruszac dni = 10 -- ile item zadekralorwany w actions.xml ze sciezka do tego pliku ma dawac dni vipa braklvl = "Level wymagany to "..config.lvl..", wbij i sprobuj ponownie." -- co ma pisac gdy nie ma lvl tekstgracz = "Gratulacje! Otrzymales vipa na "..config.dni.." dni! Mozesz isc do miast vip!." -- co ma pisac graczowi uzywajacemu vipa } function onUse(cid, item, fromPosition, itemEx, toPosition) local gracz = getPlayerPosition(cid) -- nie ruszac if(getPlayerLevel(cid) >= config.lvl) then getAccountStorageValue(cid, config.storage) doCreatureSay(cid, ""..config.tekstgracz.."", TALKTYPE_ORANGE_1) setAccountStorageValue(cid, config.storage, (getAccountStorageValue(cid, config.storage) + config.dni)) doRemoveItem(item.uid, 1) else doPlayerSendCancel(cid, ""..config.braklvl.."") end return TRUE end
globalevents.xml:
<!-- Vip System by Sassin --> <globalevent name="checkvip" interval="86400000" event="script" value="vip/dni.lua"/> <globalevent name="removevip" interval="36000000" event="script" value="vip/vip.lua"/>
data/globalevents/scripts/vip/dni.lua
-- Vip system by Sassin local config = { storage = 246282 -- nie ruszac } function onThink(cid, item, fromPosition, toPosition) for _, name in ipairs(getOnlinePlayers()) do local gracz = getPlayerByName(name) if getAccountStorageValue(gracz, config.storage) > 1 then setAccountStorageValue(gracz, config.storage, getAccountStorageValue(gracz) - 1) end end end
data/globalevents/scripts/vip/vip.lua
-- Vip system by Sassin local config = { storage = 246282 -- nie ruszac } function onThink(cid, item, fromPosition, toPosition) for _, name in ipairs(getOnlinePlayers()) do local gracz = getPlayerByName(name) if getAccountStorageValue(gracz, config.storage) == 1 then setAccountStorageValue(gracz, config.storage, 0) end end end
Pozdrawiam Sassin !
Offline
Dzieki dziala w 100%,szukalem czegos takiego. ^^
Offline
Dziękuję Ci bardzo za tak, miłego posta.
KamaShoot - Dam Ci plusika, za pierwszą osobę, która odpowiedziała w skrypcie.
Offline
Nie ma za co, bardzo sie przydal skrypt.
Cenie wysilek innych userow. I przyjemnoscia jest dla mnie ocenianie postow.
Dam ci reputa jak zejdzie limit ^^ Jesze 400 minut okolo.
Offline