Sassin
Forum friend
- Joined
- Jun 13, 2009
- Messages
- 1,281
- Reaction score
- 107
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:
data/lib/050-function.lua\function.lua (na samym ko?cu):
actions.xml:
data/actions/scripts/vip/drzwi.lua:
data/actions/scripts/vip/vip.lua
globalevents.xml:
data/globalevents/scripts/vip/dni.lua
data/globalevents/scripts/vip/vip.lua
Prosz? o wyrozumia?o??, skrypt by? pisany 30 minut przed opublikowaniem, jestem wystarczaj?co pijany, ?eby mie? prawo na liter?wk?, o wszystkich b??dach informowa?. : )
Ch?? opublikowania na innych forach ma by? skonsultowana ze mn?!
Pozdrawiam,
Sassin
Do bazy danych:
PHP:
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):
PHP:
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
actions.xml:
PHP:
<!-- 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:
PHP:
-- 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
PHP:
-- 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:
PHP:
<!-- 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
PHP:
-- 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
PHP:
-- 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
Prosz? o wyrozumia?o??, skrypt by? pisany 30 minut przed opublikowaniem, jestem wystarczaj?co pijany, ?eby mie? prawo na liter?wk?, o wszystkich b??dach informowa?. : )
Ch?? opublikowania na innych forach ma by? skonsultowana ze mn?!
Pozdrawiam,
Sassin
Notka moderatorska: |
Jestem pod wra?eniem Twoich osi?gni?? przez ten czas co Ci? nie by?o. Oczywi?cie skrypt dobry. Przenosz?. |