Ir para conteúdo

Posts Recomendados

Precdo De Um script Pos Animado Um Lugar Que Fica Aparecendo Mensagen tipo Bem Vindo Pra Ot9.10

 

ja testei alguns de 8.6 mas n funcionou aki

 

fica dando um erro

stack traceback:
[C]:  in function 'error'
data/lib/050-function.lua:711 in function 'dosendanimatedtext'
data/globalevents/scripts/info.texto:4 in function <data/globalevents/script/texto.lua>

 

Quem Me Ajudar Ganha Rep+

Editado por gabrielmotta1
Link para o comentário
https://xtibia.com/forum/topic/168107-pos-animada/
Compartilhar em outros sites

Eae kra!! .. então a seção esta errada!! você deveria ter ido em "duvidas sobre scripts" ou em "pedidos de scripts"

mas dps alguem move você! agora vou tentar te ajudar!

 

Vá em globalevents/scripts - copie e cole qual quer arquivo la .lua e renomeie para efeitos.lua(ou algum nome que você deseje). Agora dentro dele você apaga tudo e coloca :

function onThink(interval, lastExecution)
pos1 = {x = 10, y = 20, z = 7, stackpos = 0}

doSendMagicEffect(pos1, 33)
doSendAnimatedText(pos1, "Teleports!!!",math.random(1,149))

return TRUE
end

 

Bom.. axo que não tem mt segredo. Ali em "pos1" você coloca o lugar onde você quer q o texto ou a animaçao apareça

Ali em "doSendMagicEffect(pos1,33)" é onde diz o efeito que sera jogado, que no caso é o efeito 33, mas como você quer 1 texto e nao 1 efeito você pode apagar essa linha!

E ali em "doSendAnimatedText(pos1, "texto que você quer aqui",math.random(1,149)" é onde diz o texto... ali em "pos1" é o lugar que você configurou acima, dps você coloca o texto entre aspas "" e o "math.random" é que a cor do texto sera em um random entre 1 e 149.

 

Caso você queria adicionar outra coordenada ficará assim! :

function onThink(interval, lastExecution)
pos1 = {x = 10, y = 20, z = 7, stackpos = 0}
pos2 = {x = 30, y = 40, z = 8, stackpos = 0}

doSendAnimatedText(pos1, "Bem Vindo ao OT9.10",math.random(1,149))
doSendAnimatedText(pos2, "Teleports!!",math.random(1,149))

return TRUE
end

 

Agora você vai em Globalevents/globalevents.xml e la em baixo antes de "</globalevents> você coloca :

<globalevent name="EfeitosGerais" interval="3" script="efeitos.lua"/>

name = nome

interval = intervalo de tempo, que no caso esta 3(segundos), entao o texto ou a animaçao vai ser disparada de 3 em 3 segundos... mas você pode configurar ao seu gosto!

script = o nome certinho do script que no caso agora é "efeitos.lua"

 

bom... o script é +- meu... ele estava pronto eu apenas dei uma facilitada e uma limpada nele..mas tambem nao sei quem fez ele pois ja veio com meu OT!

testei ele aqui no meu ot que tambem é 8.60!!

espero que funcione ai ^^

Link para o comentário
https://xtibia.com/forum/topic/168107-pos-animada/#findComment-1109263
Compartilhar em outros sites

Não funciono aki deu o mesmo ero eu uso um ot 9.10 4 fun serve

ja testei varios e deu mesmo erro

 

Não funciono aki deu o mesmo ero eu uso um ot 9.10 4 fun serve

ja testei varios e deu mesmo erro

Link para o comentário
https://xtibia.com/forum/topic/168107-pos-animada/#findComment-1109332
Compartilhar em outros sites

kra...entao acho que erro na sua Lib, você vai ter q postar sua lib aqui no topico para que algum scripter mais experiente que eu possa te ajudar!! ^^ desculpa nao ter conseguido =/

Editado por kuun1
Link para o comentário
https://xtibia.com/forum/topic/168107-pos-animada/#findComment-1109356
Compartilhar em outros sites

Toma ai pra quem poder me ajudar

 

function doPlayerGiveItem(cid, itemid, amount, subType)
local item = 0
if(isItemStackable(itemid)) then
	item = doCreateItemEx(itemid, amount)
	if(doPlayerAddItemEx(cid, item, true) ~= RETURNVALUE_NOERROR) then
		return false
	end
else
	for i = 1, amount do
		item = doCreateItemEx(itemid, subType)
		if(doPlayerAddItemEx(cid, item, true) ~= RETURNVALUE_NOERROR) then
			return false
		end
	end
end

return true
end

function doPlayerGiveItemContainer(cid, containerid, itemid, amount, subType)
for i = 1, amount do
	local container = doCreateItemEx(containerid, 1)
	for x = 1, getContainerCapById(containerid) do
		doAddContainerItem(container, itemid, subType)
	end

	if(doPlayerAddItemEx(cid, container, true) ~= RETURNVALUE_NOERROR) then
		return false
	end
end

return true
end

function doPlayerTakeItem(cid, itemid, amount)
return getPlayerItemCount(cid, itemid) >= amount and doPlayerRemoveItem(cid, itemid, amount)
end

function doPlayerBuyItem(cid, itemid, count, cost, charges)
return doPlayerRemoveMoney(cid, cost) and doPlayerGiveItem(cid, itemid, count, charges)
end

function doPlayerBuyItemContainer(cid, containerid, itemid, count, cost, charges)
return doPlayerRemoveMoney(cid, cost) and doPlayerGiveItemContainer(cid, containerid, itemid, count, charges)
end

function doPlayerSellItem(cid, itemid, count, cost)
if(not doPlayerTakeItem(cid, itemid, count)) then
	return false
end

if(not doPlayerAddMoney(cid, cost)) then
	error('[doPlayerSellItem] Could not add money to: ' .. getPlayerName(cid) .. ' (' .. cost .. 'gp).')
end

return true
end

function doPlayerWithdrawMoney(cid, amount)
if(not getBooleanFromString(getConfigInfo('bankSystem'))) then
	return false
end

local balance = getPlayerBalance(cid)
if(amount > balance or not doPlayerAddMoney(cid, amount)) then
	return false
end

doPlayerSetBalance(cid, balance - amount)
return true
end

function doPlayerDepositMoney(cid, amount)
if(not getBooleanFromString(getConfigInfo('bankSystem'))) then
	return false
end

if(not doPlayerRemoveMoney(cid, amount)) then
	return false
end

doPlayerSetBalance(cid, getPlayerBalance(cid) + amount)
return true
end

function doPlayerAddStamina(cid, minutes)
return doPlayerSetStamina(cid, getPlayerStamina(cid) + minutes)
end

function isPremium(cid)
return (isPlayer(cid) and (getPlayerPremiumDays(cid) > 0 or getBooleanFromString(getConfigValue('freePremium'))))
end

function getMonthDayEnding(day)
if(day == "01" or day == "21" or day == "31") then
	return "st"
elseif(day == "02" or day == "22") then
	return "nd"
elseif(day == "03" or day == "23") then
	return "rd"
end

return "th"
end

function getMonthString(m)
return os.date("%B", os.time{year = 1970, month = m, day = 1})
end

function getArticle(str)
return str:find("[AaEeIiOoUuYy]") == 1 and "an" or "a"
end

function isNumeric(str)
return tonumber(str) ~= nil
end

function doNumberFormat(i)
local str, found = string.gsub(i, "(%d)(%d%d%d)$", "%1,%2", 1), 0
repeat
	str, found = string.gsub(str, "(%d)(%d%d%d),", "%1,%2,", 1)
until found == 0
return str
end

function doPlayerAddAddons(cid, addon)
for i = 0, table.maxn(maleOutfits) do
	doPlayerAddOutfit(cid, maleOutfits[i], addon)
end

for i = 0, table.maxn(femaleOutfits) do
	doPlayerAddOutfit(cid, femaleOutfits[i], addon)
end
end

function doPlayerWithdrawAllMoney(cid)
return doPlayerWithdrawMoney(cid, getPlayerBalance(cid))
end

function doPlayerDepositAllMoney(cid)
return doPlayerDepositMoney(cid, getPlayerMoney(cid))
end

function doPlayerTransferAllMoneyTo(cid, target)
return doPlayerTransferMoneyTo(cid, target, getPlayerBalance(cid))
end

function playerExists(name)
return getPlayerGUIDByName(name) ~= nil
end

function getTibiaTime()
local minutes, hours = getWorldTime(), 0
while (minutes > 60) do
	hours = hours + 1
	minutes = minutes - 60
end

return {hours = hours, minutes = minutes}
end

function doWriteLogFile(file, text)
local f = io.open(file, "a+")
if(not f) then
	return false
end

f:write("[" .. os.date("%d/%m/%Y %H:%M:%S") .. "] " .. text .. "\n")
f:close()
return true
end

function getExperienceForLevel(lv)
lv = lv - 1
return ((50 * lv * lv * lv) - (150 * lv * lv) + (400 * lv)) / 3
end

function doMutePlayer(cid, time)
local condition = createConditionObject(CONDITION_MUTED)
setConditionParam(condition, CONDITION_PARAM_TICKS, time == -1 and time or time * 1000)
return doAddCondition(cid, condition)
end

function getPlayerGroupName(cid)
return getGroupInfo(getPlayerGroupId(cid)).name
end

function getPlayerVocationName(cid)
return getVocationInfo(getPlayerVocation(cid)).name
end

function getPromotedVocation(vid)
return getVocationInfo(vid).promotedVocation
end

function doPlayerRemovePremiumDays(cid, days)
return doPlayerAddPremiumDays(cid, -days)
end

function getPlayerMasterPos(cid)
return getTownTemplePosition(getPlayerTown(cid))
end

function getHouseOwner(houseId)
return getHouseInfo(houseId).owner
end

function getHouseName(houseId)
return getHouseInfo(houseId).name
end

function getHouseEntry(houseId)
return getHouseInfo(houseId).entry
end

function getHouseRent(houseId)
return getHouseInfo(houseId).rent
end

function getHousePrice(houseId)
return getHouseInfo(houseId).price
end

function getHouseTown(houseId)
return getHouseInfo(houseId).town
end

function getHouseDoorsCount(houseId)
return table.maxn(getHouseInfo(houseId).doors)
end

function getHouseBedsCount(houseId)
return table.maxn(getHouseInfo(houseId).beds)
end

function getHouseTilesCount(houseId)
return table.maxn(getHouseInfo(houseId).tiles)
end

function getItemNameById(itemid)
return getItemDescriptionsById(itemid).name
end

function getItemPluralNameById(itemid)
return getItemDescriptionsById(itemid).plural
end

function getItemArticleById(itemid)
return getItemDescriptionsById(itemid).article
end

function getItemName(uid)
return getItemDescriptions(uid).name
end

function getItemPluralName(uid)
return getItemDescriptions(uid).plural
end

function getItemArticle(uid)
return getItemDescriptions(uid).article
end

function getItemText(uid)
return getItemDescriptions(uid).text
end

function getItemSpecialDescription(uid)
return getItemDescriptions(uid).special
end

function doSetItemSpecialDescription(uid, str)
return doItemSetAttribute(uid, "description", str)
end

function getItemWriter(uid)
return getItemDescriptions(uid).writer
end

function getItemDate(uid)
return getItemDescriptions(uid).date
end

function getTilePzInfo(pos)
return getTileInfo(pos).protection
end

function getTileZoneInfo(pos)
local tmp = getTileInfo(pos)
if(tmp.pvp) then
	return 2
end

if(tmp.nopvp) then
	return 1
end

return 0
end

function doShutdown()
return doSetGameState(GAMESTATE_SHUTDOWN)
end

function doSummonCreature(name, pos, displayError)
local displayError, cid = displayError or true, doCreateMonster(name, pos, false, false, displayError)
if(not cid) then
	cid = doCreateNpc(name, pos, displayError)
end

return cid
end

function getOnlinePlayers()
local players = {}
for i, cid in ipairs(getPlayersOnline()) do
	table.insert(players, getCreatureName(cid))
end

return players
end

function getPlayerByName(name)
local cid = getCreatureByName(name)
return isPlayer(cid) and cid or nil
end

function isPlayer(cid)
return isCreature(cid) and cid >= AUTOID_PLAYERS and cid < AUTOID_MONSTERS
end

function isPlayerGhost(cid)
return isPlayer(cid) and (getCreatureCondition(cid, CONDITION_GAMEMASTER, GAMEMASTER_INVISIBLE) or getPlayerFlagValue(cid, PLAYERFLAG_CANNOTBESEEN))
end

function isMonster(cid)
return isCreature(cid) and cid >= AUTOID_MONSTERS and cid < AUTOID_NPCS
end

function isNpc(cid)
return isCreature(cid) and cid >= AUTOID_NPCS
end

function isSummon(cid)
return getCreatureMaster(cid) and getCreatureMaster(cid) ~= cid
end

function isUnderWater(cid)
return isInArray(underWater, getTileInfo(getCreaturePosition(cid)).itemid)
end

function doPlayerSetExperienceRate(cid, value)
return doPlayerSetRate(cid, SKILL__LEVEL, value)
end

function doPlayerSetMagicRate(cid, value)
return doPlayerSetRate(cid, SKILL__MAGLEVEL, value)
end

function doPlayerAddLevel(cid, amount, round)
local experience, level, amount = 0, getPlayerLevel(cid), amount or 1
if(amount > 0) then
	experience = getExperienceForLevel(level + amount) - (round and getPlayerExperience(cid) or getExperienceForLevel(level))
else
	experience = -((round and getPlayerExperience(cid) or getExperienceForLevel(level)) - getExperienceForLevel(level + amount))
end

return doPlayerAddExperience(cid, experience)
end

function doPlayerAddMagLevel(cid, amount)
local amount = amount or 1
for i = 1, amount do
	doPlayerAddSpentMana(cid, getPlayerRequiredMana(cid, getPlayerMagLevel(cid, true) + 1) - getPlayerSpentMana(cid), false)
end

return true
end

function doPlayerAddSkill(cid, skill, amount, round)
local amount = amount or 1
if(skill == SKILL__LEVEL) then
	return doPlayerAddLevel(cid, amount, round)
elseif(skill == SKILL__MAGLEVEL) then
	return doPlayerAddMagLevel(cid, amount)
end

for i = 1, amount do
	doPlayerAddSkillTry(cid, skill, getPlayerRequiredSkillTries(cid, skill, getPlayerSkillLevel(cid, skill) + 1) - getPlayerSkillTries(cid, skill), false)
end

return true
end

function getPartyLeader(cid)
local party = getPartyMembers(cid)
if(type(party) ~= 'table') then
	return 0
end

return party[1]
end

function isInParty(cid)
return type(getPartyMembers(cid)) == 'table'
end

function isPrivateChannel(channelId)
return channelId >= CHANNEL_PRIVATE
end

function doPlayerResetIdleTime(cid)
return doPlayerSetIdleTime(cid, 0)
end

function doBroadcastMessage(text, class)
local class = class or MESSAGE_STATUS_WARNING
if(type(class) == 'string') then
	local className = MESSAGE_TYPES[class]
	if(className == nil) then
		return false
	end

	class = className
elseif(class < MESSAGE_FIRST or class > MESSAGE_LAST) then
	return false
end

for _, pid in ipairs(getPlayersOnline()) do
	doPlayerSendTextMessage(pid, class, text)
end

print("> Broadcasted message: \"" .. text .. "\".")
return true
end

function doPlayerBroadcastMessage(cid, text, class, checkFlag, ghost)
local checkFlag, ghost, class = checkFlag or true, ghost or false, class or TALKTYPE_BROADCAST
if(checkFlag and not getPlayerFlagValue(cid, PLAYERFLAG_CANBROADCAST)) then
	return false
end

if(type(class) == 'string') then
	local className = TALKTYPE_TYPES[class]
	if(className == nil) then
		return false
	end

	class = className
elseif(class < TALKTYPE_FIRST or class > TALKTYPE_LAST) then
	return false
end

for _, pid in ipairs(getPlayersOnline()) do
	doCreatureSay(cid, text, class, ghost, pid)
end

print("> " .. getCreatureName(cid) .. " broadcasted message: \"" .. text .. "\".")
return true
end

function getBooleanFromString(input)
local tmp = type(input)
if(tmp == 'boolean') then
	return input
end

if(tmp == 'number') then
	return input > 0
end

local str = string.lower(tostring(input))
return (str == "yes" or str == "true" or (tonumber(str) ~= nil and tonumber(str) > 0))
end

function doCopyItem(item, attributes)
local attributes = ((type(attributes) == 'table') and attributes or { "aid" })

local ret = doCreateItemEx(item.itemid, item.type)
for _, key in ipairs(attributes) do
	local value = getItemAttribute(item.uid, key)
	if(value ~= nil) then
		doItemSetAttribute(ret, key, value)
	end
end

if(isContainer(item.uid)) then
	for i = (getContainerSize(item.uid) - 1), 0, -1 do
		local tmp = getContainerItem(item.uid, i)
		if(tmp.itemid > 0) then
			doAddContainerItemEx(ret, doCopyItem(tmp, true).uid)
		end
	end
end

return getThing(ret)
end

function doRemoveThing(uid)
if(isCreature(uid)) then
	return doRemoveCreature(uid)
end

return doRemoveItem(uid)
end

function setAttackFormula(combat, type, minl, maxl, minm, maxm, min, max)
local min, max = min or 0, max or 0
return setCombatFormula(combat, type, -1, 0, -1, 0, minl, maxl, minm, maxm, -min, -max)
end

function setHealingFormula(combat, type, minl, maxl, minm, maxm, min, max)
local min, max = min or 0, max or 0
return setCombatFormula(combat, type, 1, 0, 1, 0, minl, maxl, minm, maxm, min, max)
end

function doChangeTypeItem(uid, subtype)
local thing = getThing(uid)
if(thing.itemid < 100) then
	return false
end

local subtype = subtype or 1
return doTransformItem(thing.uid, thing.itemid, subtype)
end

function doSetItemText(uid, text, writer, date)
local thing = getThing(uid)
if(thing.itemid < 100) then
	return false
end

doItemSetAttribute(uid, "text", text)
if(writer ~= nil) then
	doItemSetAttribute(uid, "writer", tostring(writer))
	if(date ~= nil) then
		doItemSetAttribute(uid, "date", tonumber(date))
	end
end

return true
end

function doItemSetActionId(uid, aid)
return doItemSetAttribute(uid, "aid", aid)
end

function getFluidSourceType(itemid)
local item = getItemInfo(itemid)
return item and item.fluidSource or false
end

function getDepotId(uid)
return getItemAttribute(uid, "depotid") or false
end

function getItemDescriptions(uid)
local thing = getThing(uid)
if(thing.itemid < 100) then
	return false
end

local item = getItemInfo(thing.itemid)
return {
	name = getItemAttribute(uid, "name") or item.name,
	plural = getItemAttribute(uid, "pluralname") or item.plural,
	article = getItemAttribute(uid, "article") or item.article,
	special = getItemAttribute(uid, "description") or "",
	text = getItemAttribute(uid, "text") or "",
	writer = getItemAttribute(uid, "writer") or "",
	date = getItemAttribute(uid, "date") or 0
}
end

function getItemWeightById(itemid, count, precision)
local item, count, precision = getItemInfo(itemid), count or 1, precision or false
if(not item) then
	return false
end

if(count > 100) then
	-- print a warning, as its impossible to have more than 100 stackable items without "cheating" the count
	print('[Warning] getItemWeightById', 'Calculating weight for more than 100 items!')
end

local weight = item.weight * count
--[[if(precision) then
	return weight
end

local t = string.explode(tostring(weight), ".")
if(table.maxn(t) == 2) then
	return tonumber(t[1] .. "." .. string.sub(t[2], 1, 2))
end]]--

return weight
end

function getItemWeaponType(uid)
local thing = getThing(uid)
if(thing.itemid < 100) then
	return false
end

return getItemInfo(thing.itemid).weaponType
end

function getItemRWInfo(uid)
local thing = getThing(uid)
if(thing.itemid < 100) then
	return false
end

local item, flags = getItemInfo(thing.itemid), 0
if(item.readable) then
	flags = 1
end

if(item.writable) then
	flags = flags + 2
end

return flags
end

function getItemLevelDoor(itemid)
local item = getItemInfo(itemid)
return item and item.levelDoor or false
end

function isContainer(uid)
local thing = getThing(uid)
return thing.uid > 0 and thing.items ~= nil
end

function isItemStackable(itemid)
local item = getItemInfo(itemid)
return item and item.stackable or false
end

function isItemRune(itemid)
local item = getItemInfo(itemid)
return item and item.type == ITEM_TYPE_RUNE or false
end

function isItemDoor(itemid)
local item = getItemInfo(itemid)
return item and item.type == ITEM_TYPE_DOOR or false
end

function isItemContainer(itemid)
local item = getItemInfo(itemid)
return item and item.group == ITEM_GROUP_CONTAINER or false
end

function isItemFluidContainer(itemid)
local item = getItemInfo(itemid)
return item and item.group == ITEM_GROUP_FLUID or false
end

function isItemMovable(itemid)
local item = getItemInfo(itemid)
return item and item.movable or false
end

function isCorpse(uid)
local thing = getThing(uid)
if(thing.itemid < 100) then
	return false
end

local item = getItemInfo(thing.itemid)
return item and item.corpseType ~= 0 or false
end

function getContainerCapById(itemid)
local item = getItemInfo(itemid)
if(not item or item.group ~= 2) then
	return false
end

return item.maxItems
end

function getMonsterAttackSpells(name)
local monster = getMonsterInfo(name)
return monster and monster.attacks or false
end

function getMonsterHealingSpells(name)
local monster = getMonsterInfo(name)
return monster and monster.defenses or false
end

function getMonsterLootList(name)
local monster = getMonsterInfo(name)
return monster and monster.loot or false
end

function getMonsterSummonList(name)
local monster = getMonsterInfo(name)
return monster and monster.summons or false
end

function choose(...)
local arg = {...}
return arg[math.random(1, table.maxn(arg))]
end

function doSendAnimatedText(...)
error("doSendAnimatedText is now a deprecated function.")
end

vip_storage = 95883

function setPlayerVipDays(cid, days)
       return setPlayerStorageValue(cid, vip_storage, (os.time() + 86400 * days)) and days
end

function getPlayerVipDays(cid)
       local left, d = (getPlayerStorageValue(cid, vip_storage) - os.time()), 0
       while left >= 86400 do
               left = left - 86400
               d = d+1
       end
       return d
end

function isPlayerVip(cid)
       return getPlayerStorageValue(cid, vip_storage) >= os.time() and TRUE or FALSE
end

function doPlayerAddVipDays(cid, days)
       return setPlayerStorageValue(cid, vip_storage, (os.time() + (86400 * getPlayerVipDays(cid)) + (86400 * days))) and days
end

function doPlayerRemoveVip(cid)
       return setPlayerStorageValue(cid, vip_storage, 0) and TRUE
end

Link para o comentário
https://xtibia.com/forum/topic/168107-pos-animada/#findComment-1109665
Compartilhar em outros sites

×
×
  • Criar Novo...