Boa man! Rep++ pra oce!
- Fórum
- OTServ
- Recursos
- Scripting
- Actions e Talkactions
- [ACTION] Summon Scroll
info
Grupo: Conde
Registrado: 14/04/15
Posts: 956
Reputação: +333
Gênero: Masculino

info
Grupo: Marquês
Registrado: 18/05/11
Posts: 1.1k
Reputação: +333
Gênero: Masculino
Char no Tibia: Kyuzen

Muito legal cara, parabéns, da para ser usado como armadilhas kk.
Muito bom esse script, vou tentar adaptar pra apenas 1 vocação usar essa ferramenta.
Poderia analisar este meu pedido?
http://www.xtibia.com/forum/topic/238113-pedido-sistema-de-profissao-860/
info
Grupo: Administrador
Registrado: 08/07/05
Posts: 5.8k
Reputação: +1.4k
Gênero: Outro

Cara isso é muito criativo, curti! haha
info
Grupo: Marquês
Registrado: 25/09/10
Posts: 1.3k
Reputação: +446
Gênero: Masculino

Cara isso é muito criativo, curti! haha
Muito bom esse script, vou tentar adaptar pra apenas 1 vocação usar essa ferramenta.
Poderia analisar este meu pedido?
http://www.xtibia.com/forum/topic/238113-pedido-sistema-de-profissao-860/
Muito legal cara, parabéns, da para ser usado como armadilhas kk.
Boa man! Rep++ pra oce!
Muito obrigado pelos elogios, vou atender sugestões para melhorar o script.
Assim que eu tiver acesso ao PC, eu adapto @baratask, se você não já tiver feito.
Obrigado @Daniel, também achei quando pensei na ideia, por isso coloquei em prática ![]()
@SamueLGuedes, Boa ideia!, quando chegar em casa vou fazer versões para armadilha, para funcionar ao player pisar
, e fazer o monstro atacar o player que pisar.
info
Grupo: Conde
Registrado: 09/09/09
Posts: 528
Reputação: +424
Char no Tibia: Emekalo Makalo

Muito bom o code, na parte de tirar os espaços eu nao usaria o %a, pq nomes de monstros não consistem exclusivamente de letras (os normais sim) e poderia bugar se eu tivesse um monstro com o nome "Mkalo'Boss" e usaria table.concat ![]()
Eu faria assim:
local name = " Mkalo's baby "
function string.exp(e, sep)
local result = {} e:gsub("[^".. sep .."]+", function(s) table.insert(result, s:match("^%s*(.-)%s*$")) end)
return result
end
name = table.concat(name:exp("%s"), " ")
Editado Dezembro 2 por MatheusMkalo
info
Grupo: Marquês
Registrado: 25/09/10
Posts: 1.3k
Reputação: +446
Gênero: Masculino

Muito bom o code, na parte de tirar os espaços eu nao usaria o %a, pq nomes de monstros não consistem exclusivamente de letras (os normais sim) e poderia bugar se eu tivesse um monstro com o nome "Mkalo'Boss" e usaria table.concat
Eu faria assim:
local name = " Mkalo's baby "function string.exp(e, sep) local result = {} e:gsub("[^".. sep .."]+", function(s) table.insert(result, s:match("^%s*(.-)%s*$")) end) return resultendname = table.concat(name:exp("%s"), " ")
Boa mano, eu ia fazer assim, só que me esqueci do Table concat, tava tentando o string.explode kkkk....
Vou dar uma revisada depois...
Versão stepIn:
function onStepIn(cid, item, position)
local cont = getItemAttribute(item.uid, "text") -- nao precisa mexer
local summons = {"demon", "dragon", "dog", "cat", "rotworm", "morgaroth", "cyclops", "dragon lord", "son of verminor", "wolf"} -- monstros disponiveis
function Summon(entity)
if position.x == 65535 and position.y == 64 then
doCreateMonster(entity, getThingPos(cid))
doRemoveItem(item.uid)
doSendMagicEffect(getThingPos(cid), CONST_ME_FIREWORK_YELLOW)
return true
else
doCreateMonster(entity, position)
doRemoveItem(item.uid)
doSendMagicEffect(position, CONST_ME_FIREWORK_YELLOW)
return true
end
return true
end
if cont ~= nil then
local monster = table.concat(cont:exp("%s"), " ")
if isInArray(summons, monster) then
Summon(monster)
return true
else
doPlayerSendCancel(cid, "You can't summon this monster!")
doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
end
end
end
function string.exp(e, sep)
local result = {} e:gsub("[^".. sep .."]+", function(s) table.insert(result, s:match("^%s*(.-)%s*$")) end)
return result
end
Ok, eu vou esperar. Bom, em relação tb a esse post aqui.. Téria como vc adaptar para apenas 1 vocação fazer o uso desse summon scroll ? e que esse player com essa tal vocação pode-se usar o scroll apenas a cada 3 minutos por exemplo. ficaria mais rpg.
info
Grupo: Marquês
Registrado: 25/09/10
Posts: 1.3k
Reputação: +446
Gênero: Masculino

@@baratask, esqueci de você ![]()
function onStepIn(cid, item, position)
local cont = getItemAttribute(item.uid, "text") -- nao precisa mexer
local summons = {"demon", "dragon", "dog", "cat", "rotworm", "morgaroth", "cyclops", "dragon lord", "son of verminor", "wolf"} -- monstros disponiveis
local timeToWait = 10 -- tempo em segundos
local vocId = 3
function Summon(entity)
if position.x == 65535 and position.y == 64 then
doCreateMonster(entity, getThingPos(cid))
doRemoveItem(item.uid)
doSendMagicEffect(getThingPos(cid), CONST_ME_FIREWORK_YELLOW)
return true
else
doCreateMonster(entity, position)
doRemoveItem(item.uid)
doSendMagicEffect(position, CONST_ME_FIREWORK_YELLOW)
return true
end
return true
end
if cont ~= nil then
if getPlayerStorageValue(cid, 2843) <= os.time() then
if getPlayerVocation(cid) == vocId then
local monster = table.concat(cont:exp("%s"), " ")
if isInArray(summons, monster) then
Summon(monster)
doPlayerSetStorageValue(cid, 2843, os.time() + timeToWait)
return true
else
doPlayerSendCancel(cid, "You can't summon this monster!")
doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
end
else
doPlayerSendCancel(cid, "This is not for your vocation")
doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
end
else
doPlayerSendCancel(cid, "You have to wait".. (getPlayerStorageValue(cid, 2843) - os.time()) .." seconds to use again!")
doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
end
end
end
function string.exp(e, sep)
local result = {} e:gsub("[^".. sep .."]+", function(s) table.insert(result, s:match("^%s*(.-)%s*$")) end)
return result
end
Tenta aí, qualquer erro eu resolvo. ![]()
info
Grupo: Barão
Registrado: 26/12/11
Posts: 201
Reputação: +18
Char no Tibia: Flaah

Mano que foda! Da até pra fazer um tipo de pergaminho de invocação ou algo de tipo! *o*
Maravilhosa script! Parabéns *-*
info
Grupo: Marquês
Registrado: 25/09/10
Posts: 1.3k
Reputação: +446
Gênero: Masculino

Mano que foda! Da até pra fazer um tipo de pergaminho de invocação ou algo de tipo! *o*
Maravilhosa script! Parabéns *-*
Hehe, eu gostei dessa sugestão do @baratask, colocar para uma vocação fazer isso.
E funcionar ao pisar, acho que dá pra esconder em baixo de alguma coisa, e ferrar alguém kkkk
Colocar em uma hunt de rotworm uma scroll escrita demon dentro kkkkk
Quero jogar um otserver com essa scroll
pra trollar.
info
Grupo: Barão
Registrado: 30/01/14
Posts: 201
Reputação: +12
Char no Tibia: Xtibia Infer

tem como arrumar pro bixo ser do jogador q fazer este comando?
info
Grupo: Marquês
Registrado: 25/09/10
Posts: 1.3k
Reputação: +446
Gênero: Masculino

tem como arrumar pro bixo ser do jogador q fazer este comando?
Tem sim, depois eu faço isso, se eu esquecer, pode me mandar msg pedindo que eu posto aqui...
info
Grupo: Barão
Registrado: 30/01/14
Posts: 201
Reputação: +12
Char no Tibia: Xtibia Infer

Tem sim, depois eu faço isso, se eu esquecer, pode me mandar msg pedindo que eu posto aqui...
blz agradeço desde ja!





info
Grupo: Marquês
Registrado: 25/09/10
Posts: 1.3k
Reputação: +446
Gênero: Masculino
Olá pessoal, venho lhes trazer hoje um script simples de manipulação de string.
O Script: Trata-se de como o título já diz, de uma Summon Scroll, que ao digitar o nome do monstro nela e clicar em Ok, ela fica preparada para sumonar um monstro.
ela pode ser usada tanto no inventário quanto no chão, e também tem uma lista de monstros que podem ser sumonados por ela.
Crie um arquivo chamado summonscroll.lua em actions/scripts
function onUse(cid, item, fromPos) local cont = getItemAttribute(item.uid, "text") -- nao precisa mexer local summons = {"demon", "dragon", "dog", "cat", "rotworm", "morgaroth", "cyclops", "dragon lord", "son of verminor", "wolf"} -- monstros disponiveis function Summon(entity) if fromPos.x == 65535 and fromPos.y == 64 then doCreateMonster(entity, getThingPos(cid)) doRemoveItem(item.uid) doSendMagicEffect(getThingPos(cid), CONST_ME_FIREWORK_YELLOW) return true else doCreateMonster(entity, fromPos) doRemoveItem(item.uid) doSendMagicEffect(fromPos, CONST_ME_FIREWORK_YELLOW) return true end return true end if cont ~= nil then local monster = table.concat(cont:exp("%s"), " ") if isInArray(summons, monster) then Summon(monster) return true else doPlayerSendCancel(cid, "You can't summon this monster!") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) end end end function string.exp(e, sep) local result = {} e:gsub("[^".. sep .."]+", function(s) table.insert(result, s:match("^%s*(.-)%s*$")) end) return result endVídeo demonstrativo:
quaisquer dúvidas ou sugestões, só postar.
Créditos:
@Caronte
-- Excelente manipulação de string, optimizou o script.
Editado Dezembro 3 por Caronte