• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • New resources must be posted under Resources tab. A discussion thread will be created automatically, you can't open threads manually anymore.

Action [MOD]Alchemy System - New UPDATE!

that gave me an idea, what can be done is a creaturescript to go with it, ok so I'll explain how this will work, onDeath you will get a deathPenalty point and every time you use a philosopher's stone you will regain a good portion of your lost exp and ML, example:
Player has 3 deathPenalty points, this means the player at any time in the game he can use the philosopher's stone and regain his exp and ml back and he can use it equals the amount of points he has and every time he uses it 1 point is deducted from his penalty stash, also I think it can be made into a sort of wishing stone players can use their penalty points to ask for: Skill and(need idea), and the stone will grant it but it will require the use of 5 deathPenalty points. IDK let me know I'm interested in the idea too.
 
someone else should be using the stone on you or your body for you to get (all or some) of your experience back remember b/c its suppose to be as if you died. edit: if your "dead" you cant use something on your self. i know its tibia and you come back to life but still. so it could take some human souls to get revived. say your hunting with a friend and you die he can just use some souls and the stone and get you some experience back. or maybe you just want to be nice and you can revive a random person you see from their dead body.

ahh that sounds interesting too. i like that wishing idea. there should also be a cool down on it. and i think the stone should be destroyed each time a wish is made. the stone is the source of power and you "use" it to grant your wish.

im not sure about deathpenalty points b/c then itd be rewarding people for dieing. sure they wouldnt be gaining anything major its almost be like a ""deathstreak""... you suck so much you get a mini boost. or here is a free skill for dieing.

alright now im really gonna dip into some FMA ideas. instead of deathpenatly points. how about you collect "human souls" points.... not rune SP. everytime you kill someone with a skull you collect a "soul" you can use these souls in combination with the philosopher's stone to grant wishes or revive the dead
 
Last edited:
thats a very good idea on the part of "how about you collect "human souls" points.... not rune SP. everytime you kill someone with a skull you collect a "soul" you can use these souls in combination with the philosopher's stone to grant wishes or revive the dead." that can be done with player storage and a creature script that works 'onKill(cid, target, lastHit)' and when player with skull is killed then the script will add a "soul" to the storage value. the wishing part can be done using talk actions and using 'getPlayerItembyId'.
Anyways I'm going to sleep but send me a message with more details on the idea to see what can be done.
 
also i think the souls should collect into the stone it acts as a container. so only if its in your inventory can you gather them. and they save to the stone. so if you look at the item it would say "you see a philosopher's stone". it holds 5 souls within.
 
that can be done! also can you make a list of all the wishes the players can make?(Please it has to be something the server can do)
 
i feel like the stone should be destroyed if it runs out of souls.
wishes
revive the dead like we discussed earlier someone uses it on a dead human.-- get some experience and skills back(requires 1 soul)
create a summon -- you always get the same creature but it could be good for knights. or even allow mages a third summon.(requires 5 soul)
gain temporary skills -- magic up/skills up/speed up.(10 souls)
immortality -- if you die after u ask for this u dont lose skills. lasts for 1 death (requires 15 souls)
1 hour(?) cool-down time on wishes?
i feel like the stone be destroyed a little more often. but im not sure what other conditions should be made.
 
Last edited:
If i apply all the tutorial, then the scripts of potions (+5máx health, +1máx ml, etc) are activity?
 
all the scripts work as one so if you want all the benefits of Alchemy the you need all the scripts also i didn't quite understand your question:
" If i apply all the tutorial, then the scripts of potions (+5máx health, +1máx ml, etc) are activity? " but do you mean that if you add all the scripts, that the effects of the special potion are active? if so, then yes
 
@soul4soul
here test this creature script for me and tell me if it works.
Code:
local s = {
	[3] = {soul = 1},
	[4] = {soul = 3},
	[5] = {soul = 5}
	}
function onKill(cid, target, lastHit)
local item, soulStorage = getPlayerItemById(cid, true, 2348), 3200
local tid = getCreaturePosition(target)
local pid = getCreaturePosition(cid)
	for skull, s in pairs(s) do	
		if item.actionid == 41509 then
			if isPlayer(target) then
				if getCreatureSkullType(target) == skull then
					if getPlayerStorageValue(cid, soulStorage) == -1 then
						doPlayerSetStorageValue(cid, soulStorage, 0)
					end	
					doPlayerSetStorageValue(cid, soulStorage, getPlayerStorageValue(cid, soulStorage)+s.soul)
					doSendDistanceShoot(tid, pid, 10)
					doSendMagicEffect(pid, 13)
					doSetItemSpecialDescription(item.uid, "You have "..getPlayerStorageValue(cid, soulStorage).." soul inside this stone.")
					doPlayerSendTextMessage(cid, 25, "You have gained "..s.soul.." soul from the dead body.")
				end
			end
		end
	end
return true
end
put this in creaturescript.xml
PHP:
<event type="kill" name="Soul" event="script" value="soul.lua"/>
and register this in login.lua
Code:
registerCreatureEvent(cid, "Soul")
make sure you have the philosopher stone on you.
then look at the stone after killing a PK (player) it should say how many soul it has.
 
doSetItemSpecialDescription(item.uid, "You have "..getPlayerStorageValue(cid, soulStorage).." soul inside this stone.")
change to
doItemSetAttribute(item.uid, "description", "You have "..getPlayerStorageValue(cid, soulStorage).." soul inside this stone.")

18:01 You have gained 1 soul from the dead body.
18:01 You see an ancient rune.
It weighs 3.00 oz.
You have 10 soul inside this stone.
here i changed a few things so the stone stores the souls

Code:
local s = {
	[3] = {soul = 1},
	[4] = {soul = 3},
	[5] = {soul = 5}
	}
function onKill(cid, target, lastHit)
local item = getPlayerItemById(cid, true, 2348)
local tid = getCreaturePosition(target)
local pid = getCreaturePosition(cid)
	for skull, s in pairs(s) do	
			if isPlayer(target) then
				if getCreatureSkullType(target) == skull then
					if getItemAttribute(item.uid, "aid") == nil then
						doItemSetAttribute(item.uid, "aid", 1) --aid's cant be zero
					end	
					doItemSetAttribute(item.uid, "aid", getItemAttribute(item.uid, "aid")+s.soul)
					doSendDistanceShoot(tid, pid, 10)
					doSendMagicEffect(pid, 13)
					doItemSetAttribute(item.uid, "description", "You have "..getItemAttribute(item.uid, "aid").." soul inside this stone.")
					doPlayerSendTextMessage(cid, 25, "You have gained "..s.soul.." soul from the dead body.")
				end
			end
	end
	return true
end
 
Last edited:
18:01 You have gained 1 soul from the dead body.
18:01 You see an ancient rune.
It weighs 3.00 oz.
You have 10 soul inside this stone.
how did you get 10 soul??? did you kill 10 skulled players?? or is that a bug?? also i noticed you use 0.3.6 +. Also why did you change it to 'aid'??
the way i made it was that it will only add a storage value if the player
had the item in his inventory. did the one i made bug??
 
i killed one person and it went to 10 souls. i killed 1 white skulled player.
i switched to AID so the souls save to the stone. the stone acts as a container to gather them in.
i use 0.3.6pl1
it was ur first script that made the bug.
my script doesnt do anything it doesnt even show errors in the console it just does nothing.
 
i killed one person and it went to 10 souls. i killed 1 white skulled player.
i switched to AID so the souls save to the stone. the stone acts as a container to gather them in.
i use 0.3.6pl1
it was ur first script that made the bug.
my script doesnt do anything it doesnt even show errors in the console it just does nothing.
so it gave 10 souls when you killed a white skulled player using my script? can you tell me what errors it gave you?? so i can fix the script.
 
so it gave 10 souls when you killed a white skulled player using my script? can you tell me what errors it gave you?? so i can fix the script.

it didnt give me any errors but ill check again. come on my server and help test it if you want.
 
im not sure what i did but i got my script to work. ill test yours again to. also im trying to figure out why u cant connect. it doesnt make sense. and meebo sucks so im gonna dl msn too.

urs:
12:32 You have gained 1 soul from the dead body.
12:32 You see an ancient rune.
It weighs 3.00 oz.
You have 17 soul inside this stone.
urs:
12:35 You see an ancient rune.
It weighs 3.00 oz.
You have 1 soul inside this stone.
apparently the first char i testd it on was bugged he went from 0 to 10 to 17 souls
when i test ur script with another char it worked perfectly.
and then i tested mine and it worked perfect too.
 
Last edited:
@soul4soul
here test these scripts use both since i made the wish script to work with my soul script.
creaturescript soul.lua
Lua:
local s = {
	[3] = {soul = 1},
	[4] = {soul = 3},
	[5] = {soul = 5}
	}
function onKill(cid, target, lastHit)
local item = getPlayerItemById(cid, true, 2348)
local tid = getCreaturePosition(target)
local pid = getCreaturePosition(cid)
	for skull, s in pairs(s) do	
		if item.actionid == 41630 then
			doPlayerSendCancel(cid, "You have 30 souls in this stone.")
		return true
		end	
		if item.actionid == item.actionid then	
			if isPlayer(target) then
				if getCreatureSkullType(target) == skull then
				local points = (item.actionid + s.soul)
					doSetItemActionId(item.uid, points)
					doSendDistanceShoot(tid, pid, 10)
					doSendMagicEffect(pid, 13)
					doSetItemSpecialDescription(item.uid, "You have "..points.." soul inside this stone.")
					doPlayerSendTextMessage(cid, 25, "You have gained "..s.soul.." soul from the dead body.")
				end
			end
		end	
	end
return true
end
and the talkaction wish.lua
Lua:
local s = {
	[20] = {summon = "Hero", soul = 2},
	[40] = {summon = "Demon Skeleton", soul = 4},
	[60] = {summon = "Dragon", soul = 10}
	}
function onSay(cid, words, param)
local item = getPlayerItemById(cid, true, 2348)	
	if item.actionid == item.actionid then
		if words == "summon" then
			for level, k in pairs(s) do	
			local points = (item.actionid - 42600)	
				if points >= k.soul then	
					if getPlayerLevel(cid) >= level and param == k.summon then
					local setPoints = (item.actionid - k.soul)
					local pointsMinus = (points - k.soul)
						doSummonMonster(k.summon, getCreaturePosition(cid))
						doSetItemActionId(item.uid, setPoints)
						doSetItemSpecialDescription(item.uid, "You have "..pointsMinus.." soul inside this stone.")
					end	
				else
					doPlayerSendCancel(cid, "You don't have enough souls in the stone.")
				end
			end
		end
	end
return true
end

in talkactions.xml use this:
PHP:
<talkaction words="summon" event="script" value="wish.lua"/>
tere put this on the server.
 
see here is a mod verison easy to make

[Lua Error]
[string "loadBuffer"]:3: unfinished string near '"'

edit:
this is what i tried changing the code to but it still didnt work
Code:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="summons" version="1.0" author="various" enabled="yes">
	<talkaction words="summon" event="script"><![CDATA[
	local summons =  {
			["dragon"] = {level = 60, soul = 10},
			["hero"] = {level = 40, soul = 4},
			["demonskeleton"] = {level = 20, soul = 2}
        }
	function onSay(cid, words, param)
		local item = getPlayerItemById(cid, true, 2348)
		local param = string.lower(param)
		if(getPlayerItemCount(cid, 2348) == 0) then
			if (param ~= "" and summons[param]) then   
				if item.actionid >= summons[param][2] then    
					if getPlayerLevel(cid) >= summons[param][1] then
						local setPoints = (item.actionid - summons[param][2])
						doSummonMonster(k.summon, getCreaturePosition(cid))
						doItemSetAttribute(item.uid, "aid", setPoints)
						doItemSetAttribute(item.uid, "description", "You have "..setPoints.." soul inside this stone.")
					end    
				else
					doPlayerSendCancel(cid, "You don't have enough souls in the stone.")
				end
			end
		end
		return true
	end 
]]></talkaction>
</mod>
 
Last edited:
Back
Top