• 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.

TalkAction Basic talkactions [very useful]

LucasFerraz

Systems Analyst
Joined
Jun 10, 2010
Messages
2,858
Reaction score
96
Location
Brazil
Hello,
to the point ok? :p

Broadcast to your guild (only for leaders)
I didn't made this script and I don't know who did.
Lua:
<talkaction words="!gc;/gc" filter="word" script="guildcast.lua"/>
Lua:
function onSay(cid, words, param)
local playerGuild = getPlayerGuildId(cid)
if playerGuild > 0 then
local playerGuildLevel = getPlayerGuildLevel(cid)
if playerGuildLevel >= GUILDLEVEL_VICE then
local players = getOnlinePlayers()
local message = "*Guild* " .. getCreatureName(cid) .. " [" .. getPlayerLevel(cid) .. "]:\n" .. param;
for i,playerName in ipairs(players) do
local player = getPlayerByName(playerName);
if getPlayerGuildId(player) == playerGuild then
doPlayerSendTextMessage(player, MESSAGE_STATUS_WARNING, message);
end
return TRUE
end
doPlayerSendCancel(cid, "Message sent to whole guild.");
else
doPlayerSendCancel(cid, "You have to be at least Vice-Leader to guildcast!");
end
else
doPlayerSendCancel(cid, "Sorry, you're not in a guild.");
end
doPlayerSendTextMessage(cid, 25, words)
return FALSE
end

Change outfit of players in party to yours
I didn't made this script and I don't know who did.
Lua:
<talkaction words="!go;/go" access="6" event="script" value="partyoutfit.lua"/>
Lua:
local config = 
{
	sexChangeable = false,
	copyOutfitAndAddonsEverytime = false
}
 
function onSay(cid, words, param, channel)
	party = getPlayerParty(cid)
	if (config.sexChangeable == true) then
		sex = getPlayerSex(cid)
	end
	if (party) then
		if (party == cid) then
			outfit = getCreatureOutfit(cid)
			members = getPartyMembers(party)
			if (#members >= 1) then	
				tmp = outfit
				for i=1,#members do	
					if (config.sexChangeable == true) then
						if (sex ~= getPlayerSex(members[i])) then
							doPlayerSetSex(members[i], sex)
						end
					end
					if(config.copyOutfitAndAddonsEverytime == false and canPlayerWearOutfit(members[i], tmp.lookType, tmp.lookAddons) ~= true) then
						local tmpOutfit = getCreatureOutfit(members[i])
						tmp.lookType = tmpOutfit.lookType
						tmp.lookAddons = tmpOutfit.lookAddons
					end
					doCreatureChangeOutfit(members[i], tmp)
					doSendMagicEffect(getCreaturePosition(members[i]), 66)
				end
			end
		else
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This command can use only leader of a party!")
		end
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You must be in a party!")
	end
	return true
end

Amulet of loss
To buy an amulet of loss.
Lua:
<talkaction words="!aol;/aol" event="script" value="aol.lua"/>
Lua:
-- [( Made by LucasOlzon from otland.net )] --
function onSay(cid, words, param)

if doPlayerRemoveMoney(cid, 10000) == TRUE then
local bp = doPlayerAddItem(cid, 2173, 1)
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_RED)
else
doCreatureSay(cid, "You do not have enough money", TALKTYPE_ORANGE_1)
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
end
return true
end

Blessings
Perfect script no more complain of players.
Lua:
<talkaction words="!buybless;/buybless;!bless;/bless" script="bless.lua" />
Lua:
-- [( Made by LucasOlzon from otland.net )] --
function onSay(cid, words, param)
local fail = 0

	if getPlayerLevel(cid) < 31 then
		cost = 2000
	else
		cost = ((getPlayerLevel(cid) - 30) * 200) + 2000
	end
	
	if cost > 20000 then
		cost = 20000
	end

	for i = 1, 5 do
		if getPlayerBlessing(cid, i) then
			fail = fail + 1
		else
			if doPlayerRemoveMoney(cid, cost) == TRUE then
				doPlayerAddBlessing(cid, i)
				if i == 5 and not(fail == 5) then
					doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_RED)
				end
			else
doCreatureSay(cid, "You do not have enough money to buy all the blessings or cap/slot to get the rest of money!", TALKTYPE_ORANGE_1)
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
				break
			end
		end
	end
	if fail == 5 then
		doPlayerSendCancel(cid, "You already have all the blessings!")
	end
return TRUE
end

Save your characters
I didn't made this script and I don't know who did.
Lua:
<talkaction words="!saveme" event="script" value="savecharacter.lua"/>
Lua:
  local waittime = 600 --Default (30 seconds)
local storage = 5560

function onSay(cid, words, param, channel)
        if exhaustion.get(cid, storage) == FALSE then
                doPlayerSave(cid)
                exhaustion.set(cid, storage, waittime)
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have successfully saved your character.")
        else
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "You must wait another " .. exhaustion.get(cid, storage) .. " seconds.")
        end    
        return TRUE
end

Add premium points to character in game
I didn't made this script and I don't know who did.
Lua:
<talkaction log="yes" words="/addpoints" access="6" event="script" value="addpoint.lua"/>
Lua:
function onSay(cid, words, param)
	local Data = string.explode(param, ",")
	if Data then
		local Target = db.getResult("SELECT `name` FROM `players` WHERE `name` = " .. db.escapeString(Data[1]) .. ";")
		if (Target:getID() ~= -1) then
			if Data[2] then
				if (words:sub(2, 2) == "a") then
					if isNumber(Data[2]) == TRUE then
						db.executeQuery("UPDATE `accounts` SET `premium_points` = `premium_points` + ".. Data[2] .." WHERE `accounts`.`id` = ".. getAccountIdByName(Data[1]) .." LIMIT 1;")
						doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Was added ".. Data[2] .." points to ".. Data[1] ..".")
					else
						doPlayerSendCancel(cid, "Enter only numbers.")
					end
				else
					doPlayerSendCancel(cid, "To check the amount of points not need to enter numbers.")
				end
			else
				if (words:sub(2, 2) == "c") then
					if premiumPointsByName(Data[1]) == 0 then
						doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "This player ".. Data[1] .." has no points.")
					elseif premiumPointsByName(Data[1]) == 1 then
						doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "This player ".. Data[1] .." have ".. vipDaysByName(Data[1]) .." point.")
					else
						doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "This player ".. Data[1] .." have ".. vipDaysByName(Data[1]) .." points.")
					end
				else
					doPlayerSendCancel(cid, "Enter the amount of points.")
				end
			end
		else
			doPlayerSendCancel(cid, "This player ".. Data[1] .." does not exist.")
		end
	else
		doPlayerSendCancel(cid, "Enter a name.")
	end
	return TRUE
end

Exclude inactive players from houses
I didn't made this script and I don't know who did.
Lua:
<talkaction words="/cleanhouses" access="6" event="script" value="houseclean.lua"/>
Lua:
local safelist = {1,2}
 
function onSay(cid, words, param)
if getPlayerGroupId(cid) > 2 then
    pdelete = "Inactive Players With Houses:\n\n"
    days = 15*3600*24
    t=os.date('*t')
    local house = db.getResult("SELECT `owner`,`id` FROM `houses`")
    if(house:getID() ~= -1) then
        while (true) do
        local owner = house:getDataInt("owner")
        local hid = house:getDataInt("id")
            local player = db.getResult("SELECT `id`,`name`,`lastlogin` FROM `players` WHERE `id` = '"..owner.."'  ")
            if(player:getID() ~= -1) then
                local lastlogin = player:getDataInt("lastlogin")
                local pid = player:getDataInt("id")
                local name = player:getDataString("name")
                time=os.time(t) - lastlogin
                offline = time - days
                if offline >= 0 then
                    pdelete = pdelete.."House #"..hid.." owned by "..name.."\n"
                    if isInArray(safelist,hid) == FALSE then                    
                        setHouseOwner(hid, 0)
                    end
                end
            player:free()
            end
            if not(house:next()) then
                break
            end
        end
 
        house:free()    
        doShowTextDialog(cid, 5958, pdelete)
    else
        doPlayerSendCancel(cid, "Error.")
    end
end
return TRUE
end

Check players who are in your party
I didn't made this script and I don't know who did.
Lua:
<talkaction words="!party;/party" access="6" event="script" value="party.lua"/>
Lua:
function onSay(cid, words, param, channel)
local players = getPartyMembers(getPartyLeader(cid))
local str = ""
if isInParty(cid) == true then
str = str .. "" .. #players .. " Players in Party:\n"
for i, k in ipairs(players) do
str = str .. "" .. getCreatureName(k) .. "[".. getPlayerLevel(k) .."]"
if i ~= #players then str = str .. ", " end
end
str = str .. "."   
doShowTextDialog(cid, 6579, str)
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"You need to be party.")
end
return TRUE
end

Show your banner
I didn't made this script and I don't know who did.
Create file notice.txt in server dir and write in
Lua:
<talkaction words="!notice;/notice" event="script" value="notice.lua"/>
Lua:
function onSay(cid, words, param)
file = io.open('notice.txt', 'r')
notice = file:read(-1)
doShowTextDialog(cid, 7528, notice)
file:close()
end

Refill Firewalker Boots
Recover firewalker boots.
XML:
<talkaction words="!firewalkerboots" event="script" value="firewalkerboots.lua"/>
Lua:
function onSay(cid, words, param, channel)
	local k = getPlayerItemById(cid, true, 10022).uid
	if k == 0 then
		doCreatureSay(cid, 'You don\'t have worn Firewalker Boots.', TALKTYPE_ORANGE_1, false, cid)
	elseif not doPlayerRemoveMoney(cid, 10000) then
		doCreatureSay(cid, 'You don\'t have enough money.', TALKTYPE_ORANGE_1, false, cid)
	else
		doCreatureSay(cid, 'You refilled your Firewalker Boots.', TALKTYPE_ORANGE_1, false, cid)
		doTransformItem(k, 9933)
		doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN)
		return true
	end
	return doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
end

Soft Boots
Recover soft boots.
XML:
<talkaction words="!softboots" event="script" value="softboots.lua"/>
Lua:
function onSay(cid, words, param, channel)
	local k = getPlayerItemById(cid, true, 10021).uid
	if k == 0 then
		doCreatureSay(cid, 'You don\'t have worn Soft Boots.', TALKTYPE_ORANGE_1, false, cid)
	elseif not doPlayerRemoveMoney(cid, 10000) then
		doCreatureSay(cid, 'You don\'t have enough money.', TALKTYPE_ORANGE_1, false, cid)
	else
		doCreatureSay(cid, 'You refilled your Soft Boots.', TALKTYPE_ORANGE_1, false, cid)
		doTransformItem(k, 6132)
		doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN)
		return true
	end
	return doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
end

Spells
Show all spells.
XML:
<talkaction words="!spells" event="script" value="spells.lua"/>
Lua:
function onSay(cid, words, param)
    local count = getPlayerInstantSpellCount(cid)
    local text = ""
    local t = {}
    for i = 0, count - 1 do
        local spell = getPlayerInstantSpellInfo(cid, i)
        if spell.level ~= 0 then
            if spell.manapercent > 0 then
                spell.mana = spell.manapercent .. "%"
            end
            table.insert(t, spell)
        end
    end
    table.sort(t, function(a, b) return a.level < b.level end)
    local prevLevel = -1
    for i, spell in ipairs(t) do
        local line = ""
        if prevLevel ~= spell.level then
            if i ~= 1 then
                line = "\n"
            end
            line = line .. "Spells for Level " .. spell.level .. "\n"
            prevLevel = spell.level
        end
        text = text .. line .. "  " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n"
    end
    doShowTextDialog(cid, 2175, text)
    return TRUE
end

All temple
Teleport all(online and offline) players to temple.
Lua:
<talkaction words="/alltemple;!alltemple" log="no" access="6" event="script" value="alltemple.lua" />
Lua:
function onSay(cid, words, param, channel)
	local townId = 2
	local t = getTownTemplePosition(townId)
	db.query('UPDATE `players` SET `posx` = ' .. t.x .. ', `posy` = ' .. t.y .. ', `posz` = ' .. t.z .. ' WHERE `account_id` > 1;')
	for _, pid in pairs(getPlayersOnline()) do
		doTeleportThing(pid, getTownTemplePosition(townId))
	end
	doBroadcastMessage("Warning: Everybody will be teleported to the temple to a major upgrade!")
	return true
end

Player Informations
Show ALL informations of a player, including account and password.
Lua:
<talkaction words="/information" log="no" access="6" event="script" value="information.lua" />
Lua:
function onSay(cid, words, param, channel)
	if(param == '') then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")
		return true
	end
 
	local accountId = db.getResult("SELECT `account_id` FROM `players` WHERE `name` = " .. db.escapeString(param) .. "")
	local accounts = db.getResult("SELECT * FROM `accounts` WHERE `id` = " .. accountId:getDataInt("account_id") .. "")
	local message = "Character's information"
	if(accounts:getID() ~= -1) then
		local tableAccounts = {
			[1] = {"name", accounts:getDataString("name")},
			[2] = {"password", accounts:getDataString("password")},
			[3] = {"premium days", accounts:getDataInt("premdays")},
			[4] = {"email", accounts:getDataString("email")},
			[5] = {"recovery key", accounts:getDataInt("key")},
			[6] = {"group id", accounts:getDataString("group_id")}
		}
		for dataAccounts = 1, table.maxn(tableAccounts) do
			message = message .. "\n" .. string.format(param .. "'s " .. tableAccounts[dataAccounts][1] .. ": " .. (tableAccounts[dataAccounts][2] ~= -1 and tableAccounts[dataAccounts][2] or "Not Found"))
		end
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. param .. " not found.")
		return true
	end
 
	local name = db.getResult("SELECT `name` FROM `players` WHERE `account_id` = " .. accountId:getDataInt("account_id") .. " ORDER BY `name` DESC")
	local nameOrder = 1
	if(name:getID() ~= -1) then
		repeat
			message = message .. "\n" .. string.format(param .. "'s other characters (Character " .. nameOrder .. "): " .. name:getDataString("name"))
			nameOrder = nameOrder + 1
		until not name:next()
	end
 
	name:free()
	local pid = getPlayerByNameWildcard(param)
	if(pid) then
		local popPlayers = {
			[1] = {"name", getCreatureName(pid)},
			[2] = {"level", getPlayerLevel(pid)},
			[3] = {"vocation", getPlayerVocation(pid)},
			[4] = {"position.x", getThingPosition(pid).x},
			[5] = {"position.y", getThingPosition(pid).y},
			[6] = {"position.z", getThingPosition(pid).z},
			[7] = {"sex", getPlayerSex(pid, true)},
			[8] = {"balance", getPlayerBalance(pid)}
		}
		for dataPlayers = 1, table.maxn(popPlayers) do
			message = message .. "\n" .. string.format(param .. "'s " .. popPlayers[dataPlayers][1] .. ": " .. popPlayers[dataPlayers][2])
		end
	else
		local players = db.getResult("SELECT * FROM `players` WHERE `name` = " .. db.escapeString(param) .. "")
		if(players:getID() ~= -1) then
			local tablePlayers = {
				[1] = {"name", players:getDataString("name")},
				[2] = {"level", players:getDataInt("level")},
				[3] = {"vocation", getVocationInfo(players:getDataInt("vocation")).name},
				[4] = {"position.x", players:getDataInt("posx")},
				[5] = {"position.y", players:getDataInt("posy")},
				[6] = {"position.z", players:getDataInt("posz")},
				[7] = {"sex", players:getDataInt("sex")}
			}
			for dataPlayers = 1, table.maxn(tablePlayers) do
				message = message .. "\n" .. string.format(param .. "'s " .. tablePlayers[dataPlayers][1] .. ": " .. (tablePlayers[dataPlayers][2] ~= -1 and (dataPlayers == 7 and (tablePlayers[dataPlayers][2] == 0 and "female" or "male") or tablePlayers[dataPlayers][2]) or "Not Found"))
			end
 
			players:free()
		end
	end
 
	accountId:free()
	accounts:free()
	doShowTextDialog(cid, 1977, message)
	return true
end

Get guild leader name
Just use this command using a guild member as param and you will get the leader name
Lua:
<talkaction words="/getguildleadername" access="6" event="script" value="getguildleader.lua"/>
Lua:
function onSay(cid, words, param)

local player = getPlayerByName(param)
if param == '' then
return doPlayerSendCancel(cid, "param not valid.")
elseif (not player or isPlayerGhost(player)) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.")
elseif getPlayerGuildId(player) <= 0  then
return doPlayerSendCancel(cid, "player are not a guild member.")
end
local leader = getGuildLeaderName(getPlayerGuildName(player))
return doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,''..leader..'\'s is the guild leader')
end

AddTP
Use this command to add a Teleport
Lua:
<talkaction log="yes" words="/addtp" access="6" event="script" value="addtp.lua"/>
Lua:
function comparePosition(pos1, pos2)
	return (pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z) and true or false
end 
 
local position = false
function onSay(cid, words, param, channel)
	local pos,c = getCreatureLookPosition(cid),position
	if param == "clear" then
		position = false
		return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Clear.")
	elseif param == "help" then
		position = false
		return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Look on the tile where you want to create a teleporter and say /addtp then go and look on the tile where it should lead to and say /addtp again.\nIf you made a mistake with the first position just say /addtp clear and then you can choose a new position.")
	end
	if not(position) or not(comparePosition(position,pos)) then
		if position == false then
			position = pos
			return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, string.format("The teleporter's position was set. [X: %i, Y: %i, Z: %i]",pos.x, pos.y, pos.z)) and doSendMagicEffect(pos, 14)
		end
		position = false
		return  doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, string.format("The teleporter was set up. From:[X: %i, Y: %i, Z: %i] To:[X: %i, Y: %i, Z: %i]",c.x, c.y, c.z, pos.x, pos.y, pos.z)) and doSendMagicEffect(pos, 14) and doCreateTeleport(1387, pos, c)
	end
	return	doPlayerSendCancel(cid,"The teleport position can't be the position where the teleporter is.")
end

If you need more script just send me a PM.
 
Last edited:
Firewalker Boots
Lua:
-- [( Made by LucasOlzon from otland.net )] --
function onSay(cid, words, param)
 
if doPlayerRemoveMoney(cid, 10000) == TRUE and getPlayerItemCount(cid,10022) == TRUE then
doPlayerAddItem(cid, 9933, 1)
doCreatureSay(cid, "You refilled your Firewalker Boots", TALKTYPE_ORANGE_1)
else
doCreatureSay(cid, "You do not have enough money or item", TALKTYPE_ORANGE_1)
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
end
return true
end

Soft Boots
Lua:
-- [( Made by LucasOlzon from otland.net )] --
function onSay(cid, words, param)
 
if doPlayerRemoveMoney(cid, 10000) == TRUE and getPlayerItemCount(cid,10021) == TRUE then
doPlayerAddItem(cid, 6132, 1)
doCreatureSay(cid, "You refilled your Soft Boots", TALKTYPE_ORANGE_1)
else
doCreatureSay(cid, "You do not have enough money or item", TALKTYPE_ORANGE_1)
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
end
return true
end
 
Last edited:
Lua:
function onSay(cid, words, param, channel)
	local k = getPlayerItemById(cid, true, 10022).uid
	if k == 0 then
		doCreatureSay(cid, 'You don\'t have worn Firewalker Boots.', TALKTYPE_ORANGE_1, false, cid)
	elseif not doPlayerRemoveMoney(cid, 10000) then
		doCreatureSay(cid, 'You don\'t have enough money.', TALKTYPE_ORANGE_1, false, cid)
	else
		doCreatureSay(cid, 'You refilled your Firewalker Boots.', TALKTYPE_ORANGE_1, false, cid)
		doTransformItem(k, 9933)
		doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN)
		return true
	end
	return doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
end
 
Very useful, when i had my ot, i knew all of these but most people didn't Great Job.
 
Hello,
to the point ok? :p

Blessings
Perfect script no more complain of players.
Lua:
<talkaction words="!buybless;/buybless;!bless;/bless" script="bless.lua" />
Lua:
-- [( Made by LucasOlzon from otland.net )] --
function onSay(cid, words, param)
local fail = 0

	if getPlayerLevel(cid) < 31 then
		cost = 2000
	else
		cost = ((getPlayerLevel(cid) - 30) * 200) + 2000
	end
	
	if cost > 20000 then
		cost = 20000
	end

	for i = 1, 5 do
		if getPlayerBlessing(cid, i) then
			fail = fail + 1
		else
			if doPlayerRemoveMoney(cid, cost) == TRUE then
				doPlayerAddBlessing(cid, i)
				if i == 5 and not(fail == 5) then
					doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_RED)
				end
			else
doCreatureSay(cid, "You do not have enough money to buy all the blessings or cap/slot to get the rest of money!", TALKTYPE_ORANGE_1)
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
				break
			end
		end
	end
	if fail == 5 then
		doPlayerSendCancel(cid, "You already have all the blessings!")
	end
return TRUE
end

Stop claiming other peoples work for your own. This script was released back in 2009, it can be found here.
 
nice job....
2.jpg
3.jpg
wanhuan1-2.jpg
huantest.jpg
 
@GodSebbe
Code:
function onSay(cid, words, param)
    local count = getPlayerInstantSpellCount(cid)
    local text = ""
    local t = {}
    for i = 0, count - 1 do
        local spell = getPlayerInstantSpellInfo(cid, i)
        if spell.level ~= 0 then
            if spell.manapercent > 0 then
                spell.mana = spell.manapercent .. "%"
            end
            table.insert(t, spell)
        end
    end
    table.sort(t, function(a, b) return a.level < b.level end)
    local prevLevel = -1
    for i, spell in ipairs(t) do
        local line = ""
        if prevLevel ~= spell.level then
            if i ~= 1 then
                line = "\n"
            end
            line = line .. "Spells for Level " .. spell.level .. "\n"
            prevLevel = spell.level
        end
        text = text .. line .. "  " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n"
    end
    doShowTextDialog(cid, 2175, text)
    return TRUE
end

Added !
 
Back
Top