kito2
www.masteria.net
Rep me if I helped you
Thanks to CyberM.
First we are going to add experience, ml and skills rate:
Goto to data/lib/050-function.lua
At the top add this:
Now goto data/creaturescripts/login.lua
After:
Add this:
It should look like this:
Where .... means the other parts of your script, and the return true and end are the closing tags of the login function.
PS: Change the (cid, 1.5) for the rate that you want, for example if you want 22 percent more, then put a 1.22 it should look like this (cid, 1.22).
Now we are going to add loot if it is premium:
Goto to your mods/ file and create a file called premiumloot.xml and add this inside:
Here you just have to modificate local premRate = 7 that seven for the new rate that you want.
Very simple, very nice, very effient.
PS: Tested on www.mtibia.cl using tfs 0.4 rev 3777 and works, if it doesn't work, then you are missing or doing something wrong.
Rep me if I helped you
Thanks to CyberM.
First we are going to add experience, ml and skills rate:
Goto to data/lib/050-function.lua
At the top add this:
Lua:
function doPlayerSetSkills(cid, value)
for i = 0, 8 do
doPlayerSetRate(cid, i, value)
end
end
Now goto data/creaturescripts/login.lua
After:
Lua:
function onLogin(cid)
Add this:
Lua:
if isPremium(cid) then
doPlayerSetExperienceRate(cid, 1.5)
doPlayerSetSkills(cid, 1.5)
doPlayerSetMagicRate(cid, 1.5)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are premium, enjoy 50% extra experience, skills and magic level rates.")
end
It should look like this:
Lua:
function onLogin(cid)
if isPremium(cid) then
doPlayerSetExperienceRate(cid, 1.5)
doPlayerSetSkills(cid, 1.5)
doPlayerSetMagicRate(cid, 1.5)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are premium, enjoy 50% extra experience, skills and magic level rates.")
end
....
return true
end
Where .... means the other parts of your script, and the return true and end are the closing tags of the login function.
PS: Change the (cid, 1.5) for the rate that you want, for example if you want 22 percent more, then put a 1.22 it should look like this (cid, 1.22).
Now we are going to add loot if it is premium:
Goto to your mods/ file and create a file called premiumloot.xml and add this inside:
Lua:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Premium Loot Rate" version="1.0" author="Cykotitan" contact="otland.net" enabled="yes">
<event type="kill" name="plr" event="script"> <![CDATA[
local premRate = 7 -- loot rate for premium players
local rate = getConfigInfo('rateLoot') -- the normal rate, don't change
function getContentDescription(uid, comma)
local ret, i, containers = '', 0, {}
while i < getContainerSize(uid) do
local v, s = getContainerItem(uid, i), ''
local k = getItemInfo(v.itemid)
if k.name ~= '' then
if v.type > 1 and k.stackable and k.showCount then
s = v.type .. ' ' .. getItemInfo(v.itemid).plural
else
local article = k.article
s = (article == '' and '' or article .. ' ') .. k.name
end
ret = ret .. (i == 0 and not comma and '' or ', ') .. s
if isContainer(v.uid) and getContainerSize(v.uid) > 0 then
table.insert(containers, v.uid)
end
else
ret = ret .. (i == 0 and not comma and '' or ', ') .. 'an item of type ' .. v.itemid .. ', please report it to gamemaster'
end
i = i + 1
end
for i = 1, #containers do
ret = ret .. getContentDescription(containers[i], true)
end
return ret
end
local function send(cid, pos, corpseid, monster, party)
local corpse = getTileItemById(pos, corpseid).uid
local ret = isContainer(corpse) and getContentDescription(corpse)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Loot of ' .. monster .. ': ' .. (ret ~= '' and ret or 'nothing'))
if party then
for _, pid in ipairs(getPartyMembers(party)) do
doPlayerSendChannelMessage(pid, '', 'Loot of ' .. monster .. ': ' .. (ret ~= '' and ret or 'nothing'), TALKTYPE_CHANNEL_W, CHANNEL_PARTY)
end
end
end
local function createLoot(i, ext)
local item = type(i.id) == 'table' and i.id[math.random(#i.id)] or i.id
local random = math.ceil(math.random(100000) / (ext and premRate or rate))
local tmpItem
if random < i.chance then
tmpItem = doCreateItemEx(item, getItemInfo(item).stackable and random % i.count + 1 or 1)
end
if not tmpItem then
return
end
if i.subType ~= -1 then
doItemSetAttribute(tmpItem, 'subType', i.subType)
end
if i.actionId ~= -1 then
doItemSetAttribute(tmpItem, 'aid', i.actionId)
end
if i.uniqueId ~= -1 then
doItemSetAttribute(tmpItem, 'uid', i.uniqueId)
end
if i.text ~= '' then
doItemSetAttribute(tmpItem, 'text', i.text)
end
return tmpItem
end
local function createChildLoot(parent, i, ext)
if #i == 0 then
return true
end
local size, cap = 0, getContainerCap(parent)
for k = 1, #i do
if size == cap then
break
end
local tmp = createLoot(i[k], ext)
if tmp then
if isContainer(tmp) then
if createChildLoot(tmp, i[k].child, ext) then
doAddContainerItemEx(parent, tmp)
size = size + 1
else
doRemoveItem(tmp)
end
else
doAddContainerItemEx(parent, tmp)
size = size + 1
end
end
end
return size > 0
end
local function dropLoot(pos, v, ext)
local corpse = getTileItemById(pos, v.lookCorpse).uid
if isContainer(corpse) then
for i = 1, getContainerSize(corpse) do
doRemoveItem(getContainerItem(corpse, 0).uid)
end
local size, cap = 0, getContainerCap(corpse)
for i = 1, #v.loot do
if size == cap then
break
end
local tmp = createLoot(v.loot[i], ext)
if tmp then
if isContainer(tmp) then
if createChildLoot(tmp, v.loot[i].child, ext) then
doAddContainerItemEx(corpse, tmp)
size = size + 1
else
doRemoveItem(tmp)
end
else
doAddContainerItemEx(corpse, tmp)
size = size + 1
end
end
end
end
end
function onKill(cid, target, damage, flags)
if isInArray({1,3}, flags) and isMonster(target) then
local v = getMonsterInfo(getCreatureName(target))
if v.lookCorpse > 0 then
local master = getCreatureMaster(target)
if not master or master == target then
addEvent(dropLoot, 0, getThingPos(target), v, isPremium(cid))
end
addEvent(send, 100, cid, getThingPos(target), v.lookCorpse, v.description, getPlayerParty(cid))
end
end
return true
end
]]></event>
<event type="login" name="Premium Loot Rate" event="buffer"><![CDATA[
registerCreatureEvent(cid, 'plr')
]]></event>
</mod>
Here you just have to modificate local premRate = 7 that seven for the new rate that you want.
Very simple, very nice, very effient.
PS: Tested on www.mtibia.cl using tfs 0.4 rev 3777 and works, if it doesn't work, then you are missing or doing something wrong.
Rep me if I helped you
Last edited: