What's new

Kazdy moze uzywac obojetnie jakiego potiona! Pomocy!

Status
Not open for further replies.

szyszek05

Active User
Joined
Apr 7, 2008
Messages
145
Reaction score
1
Witam
Mam problem na serwierze, gdyz kazda z profesji moze uzywac wszystkich potionow. Np. sork moze uzywac UHP.
Prosze o pomoc !
Moj skrypt potions.lua
Code:
local storage =  {
[1] = {17070,function(hmax,hmin,cid) doCreatureAddHealth(cid, math.random(hmin,hmax)) end},
[2] = {17071,function(hmax,hmin,cid) doCreatureAddMana(cid, math.random(hmin,hmax)) end},
[3] = {17072,function(hmax,hmin,cid) doCreatureAddHealth(cid, math.random(hmin[1],hmax[1])) doCreatureAddMana(cid, math.random(hmin[2],hmax[2])) end},
}
local potions = {
-- Small
[7620] = {lvl=0,tipo=2,hmax=400,hmin=350,vasio=7636,vocs={0,1,2,3,4,5,6,7,8},exaust=1},
[7618] = {lvl=0,tipo=1,hmax=300,hmin=150,vasio=7636,vocs={0,1,2,3,4,5,6,7,8},exaust=1},
-- Strong
[7589] = {lvl=50,tipo=2,hmax=1400,hmin=1290,vasio=7634,vocs={0,1,2,3,5,6,7},exaust=1},
[7588] = {lvl=50,tipo=1,hmax=800,hmin=650,vasio=7634,vocs={0,3,4,7,8},exaust=1},
-- Great
[7591] = {lvl=80,tipo=1,hmax=700,hmin=500,vasio=7635,vocs={1, 2, 3, 4, 8, 5, 6, 7},exaust=1},
[7590] = {lvl=200,tipo=2,hmax=2100,hmin=1800,vasio=7635,vocs={0,1,2,5,6},exaust=1},
[8474] = {lvl=1000,tipo=2,hmax=3400,hmin=3000,vasio=7635,vocs={0,1,2,5,6},exaust=1},
[8472] = {lvl=80,tipo=3,hmax={1300,1500},hmin={1000,1500},vasio=7635,vocs={0,3,7},exaust=1},
-- Ultimate
[8473] = {lvl=200,tipo=1,hmax=3000,hmin=2600,vasio=7635,vocs={4,8},exaust=1},
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
        if isPlayer(itemEx.uid) == false or potions[item.itemid] == nil or isCreature(itemEx.uid) == false then
                return FALSE
    elseif getPlayerStorageValue(itemEx.uid, storage[potions[item.itemid].tipo][1]) > os.time() and (type(getPlayerStorageValue(itemEx.uid, storage[potions[item.itemid].tipo][1])) == 'number' and getPlayerStorageValue(itemEx.uid, storage[potions[item.itemid].tipo][1]) ~= -1) then
                doPlayerSendDefaultCancel(itemEx.uid, RETURNVALUE_YOUAREEXHAUSTED)
                return TRUE
        elseif getPlayerLevel(itemEx.uid) < potions[item.itemid].lvl or isInArray(potions[item.itemid].vocs,getPlayerVocation(itemEx.uid)) == FALSE then
       doCreatureSay(itemEx.uid, "Only required vocation and level "..potions[item.itemid].lvl.." or above may drink this fluid.", TALKTYPE_ORANGE_1)
                return TRUE
        end
        setPlayerStorageValue(itemEx.uid,  storage[potions[item.itemid].tipo][1], os.time()+potions[item.itemid].exaust)
    storage[potions[item.itemid].tipo][2](potions[item.itemid].hmax,potions[item.itemid].hmin,itemEx.uid)
        local _, _, cnt =string.find(getItemName(item.uid),'(%d+)')
        if tonumber(cnt) ~= nil and tonumber(cnt) > 1 then
           local _, _, cnt =string.find(getItemName(item.uid),'(%d+)')
   setItemName(item.uid, getItemNameById(item.itemid).." x "..cnt-1)
        else
        doRemoveItem(item.uid,1)
        end
        doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE)
        doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1)
        return TRUE
end
 

Ichtio

Senior User
Joined
Dec 30, 2009
Messages
661
Reaction score
52
Odp: Kazdy moze uzywac obojetnie jakiego potiona! Pomocy!

Masz tu dzia?aj?cy normalnie skrypt
Code:
local config = {
	removeOnUse = "no",
	usableOnTarget = "yes", -- can be used on target? (fe. healing friend)
	splashable = "no",
	realAnimation = "no", -- make text effect visible only for players in range 1x1
	healthMultiplier = 1.0,
	manaMultiplier = 1.0
}

config.removeOnUse = getBooleanFromString(config.removeOnUse)
config.usableOnTarget = getBooleanFromString(config.usableOnTarget)
config.splashable = getBooleanFromString(config.splashable)
config.realAnimation = getBooleanFromString(config.realAnimation)

local POTIONS = {
	[8704] = {empty = 7636, splash = 2, health = {50, 100}}, -- small health potion
	[7618] = {empty = 7636, splash = 2, health = {100, 200}}, -- health potion
	[7588] = {empty = 7634, splash = 2, health = {200, 400}, level = 50, vocations = {3, 4, 7, 8}, vocStr = "knights and paladins"}, -- strong health potion
	[7591] = {empty = 7635, splash = 2, health = {500, 700}, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion
	[8473] = {empty = 7635, splash = 2, health = {800, 1000}, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion

	[7620] = {empty = 7636, splash = 7, mana = {70, 130}}, -- mana potion
	[7589] = {empty = 7634, splash = 7, mana = {110, 190}, level = 50, vocations = {1, 2, 3, 5, 6, 7}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion
	[7590] = {empty = 7635, splash = 7, mana = {200, 300}, level = 80, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids"}, -- great mana potion

	[8472] = {empty = 7635, splash = 3, health = {200, 400}, mana = {110, 190}, level = 80, vocations = {3, 7}, vocStr = "paladins"} -- great spirit potion
}

local exhaust = createConditionObject(CONDITION_EXHAUST)
setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100))

function onUse(cid, item, fromPosition, itemEx, toPosition)
	local potion = POTIONS[item.itemid]
	if(not potion) then
		return false
	end

	if(not isPlayer(itemEx.uid) or (not config.usableOnTarget and cid ~= itemEx.uid)) then
		if(not config.splashable) then
			return false
		end

		if(toPosition.x == CONTAINER_POSITION) then
			toPosition = getThingPos(item.uid)
		end

		doDecayItem(doCreateItem(2016, potion.splash, toPosition))
		doTransformItem(item.uid, potion.empty)
		return true
	end

	if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
		return true
	end

	if(((potion.level and getPlayerLevel(cid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(cid)))) and
		not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES))
	then
		doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_ORANGE_1)
		return true
	end

	local health = potion.health
	if(health and not doCreatureAddHealth(itemEx.uid, math.ceil(math.random(health[1], health[2]) * config.healthMultiplier))) then
		return false
	end

	local mana = potion.mana
	if(mana and not doPlayerAddMana(itemEx.uid, math.ceil(math.random(mana[1], mana[2]) * config.manaMultiplier))) then
		return false
	end

	doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE)
	if(not realAnimation) then
		doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1)
	else
		for i, tid in ipairs(getSpectators(getCreaturePosition(cid), 1, 1)) do
			if(isPlayer(tid)) then
				doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1, false, tid)
			end
		end
	end

	doAddCondition(cid, exhaust)
	if(not potion.empty or config.removeOnUse) then
		doRemoveItem(item.uid)
		return true
	end

	doTransformItem(item.uid, potion.empty)
	return true
end
Podmie? tylko i powinno dzia?a?



Pozdrawiam
Ichtio !
 
Status
Not open for further replies.
Top