Bom galera , estou precisando de um script de summon creature, que invoque e retire o monstro (Configurável) por comando (Exemplo: !Demon)
Aguardo respostas, Grato desde já..
Bom galera , estou precisando de um script de summon creature, que invoque e retire o monstro (Configurável) por comando (Exemplo: !Demon)
Aguardo respostas, Grato desde já..
Retire o monstro depois de um tempo ou quando voce usar o comando denovo?
Yours Mkalo ![]()
Retire o monstro depois de um tempo ou quando voce usar o comando denovo?
quando usar o comando denovo.
Use /create Demon pra sumonar o demon e /create demon denovo pra remover, caso o demon esteja morto ele vai sumonar outro.
Funciona com varios monstros ao mesmo tempo.
data\talkactions\scripts\nomedoscript.lua:
function setGlobalStorageTable(storage, tab)
local tabstr = "&"
for i,x in pairs(tab) do
tabstr = tabstr .. i .. "," .. x .. ";"
end
setGlobalStorageValue(storage, tabstr:sub(1, #tabstr-1))
end
function getGlobalStorageTable(storage)
local tabstr = getGlobalStorageValue(storage)
local tab = {}
if type(tabstr) ~= "string" then
return {}
end
if tabstr:sub(1,1) ~= "&" then
return {}
end
local tabstr = tabstr:sub(2, #tabstr)
local a = string.explode(tabstr, ";")
for i,x in pairs(a) do
local b = string.explode(x, ",")
tab[tonumber(b[1]) or b[1]] = tonumber(b[2]) or b[2]
end
return tab
end
function onSay(cid, words, param, channel)
local pos = getCreaturePosition(cid)
local globaltab = getGlobalStorageTable(14023)
if not globaltab[param:lower()] or not isCreature(globaltab[param:lower()]) then
local monster = doCreateMonster(param, pos)
if monster then
globaltab[param:lower()] = monster
setGlobalStorageTable(14023, globaltab)
else
doPlayerSendDefaultCancel(cid, (monster == false and RETURNVALUE_NOTPOSSIBLE or RETURNVALUE_NOTENOUGHROOM))
end
else
doRemoveCreature(globaltab[param:lower()])
globaltab[param:lower()] = nil
setGlobalStorageTable(14023, globaltab)
end
return true
end
tag:
<talkaction access="5" words="/create" event="script" value="nomedoscript.lua"/>
Yours Mkalo ![]()
Use /create Demon pra sumonar o demon e /create demon denovo pra remover, caso o demon esteja morto ele vai sumonar outro.
Funciona com varios monstros ao mesmo tempo.
Script funcionou perfeitamente, mais esqueci de colocar uma coisa no topico, que seria o monstro atacar o mesmo alvo do seu invocador e seguilo, tipo os "fire elemental" da magia utevo res.
teria como modificar ?
Tem um comando pra god fazer isso ja "/s" mas como ele nao remove:
function setGlobalStorageTable(storage, tab)
local tabstr = "&"
for i,x in pairs(tab) do
tabstr = tabstr .. i .. "," .. x .. ";"
end
setGlobalStorageValue(storage, tabstr:sub(1, #tabstr-1))
end
function getGlobalStorageTable(storage)
local tabstr = getGlobalStorageValue(storage)
local tab = {}
if type(tabstr) ~= "string" then
return {}
end
if tabstr:sub(1,1) ~= "&" then
return {}
end
local tabstr = tabstr:sub(2, #tabstr)
local a = string.explode(tabstr, ";")
for i,x in pairs(a) do
local b = string.explode(x, ",")
tab[tonumber(b[1]) or b[1]] = tonumber(b[2]) or b[2]
end
return tab
end
function onSay(cid, words, param, channel)
local pos = getCreaturePosition(cid)
local globaltab = getGlobalStorageTable(14023)
if not globaltab[param:lower()] or not isCreature(globaltab[param:lower()]) then
local monster = doCreateMonster(param, pos)
if monster then
doConvinceCreature(cid, monster)
globaltab[param:lower()] = monster
setGlobalStorageTable(14023, globaltab)
else
doPlayerSendDefaultCancel(cid, (monster == false and RETURNVALUE_NOTPOSSIBLE or RETURNVALUE_NOTENOUGHROOM))
end
else
doRemoveCreature(globaltab[param:lower()])
globaltab[param:lower()] = nil
setGlobalStorageTable(14023, globaltab)
end
return true
end
Yours Mkalo ![]()
Tem um comando pra god fazer isso ja "/s" mas como ele nao remove:
Estou querendo de mais, mais esqueci dessa parte também (desculpa) que no casso seria. Somente players que tiver posse de um item em sua bag ou equipado (ItemID 9019) poderá usar o comando ? e não axei a parte de mudar o monstro aonde seria?
Obs: Script 100% Funcional mano, valeu pela atenção
Vei ~~ não é mais facil fazer quando der use no item sumonar o monstro e quando der use retirar ele? Do jeito que eu fiz ali era pra sair qualquer monstro do server pra um god usar (Pelo menos foi o que eu entendi do seu post muito vago...)
Da proxima vez tenta formular sua ideia 100% antes de postar:
http://www.xtibia.com/forum/topic/234500-regras-pedidos-e-duvidas-scripting/
Yours Mkalo ![]()
Vei ~~ não é mais facil fazer quando der use no item sair o monstro? Do jeito que eu fiz ali era pra sair qualquer monstro do server pra um god usar (Pelo menos foi o que eu entendi do seu post muito vago...)
Da proxima vez tenta formular sua ideia 100% antes de postar:
http://www.xtibia.com/forum/topic/234500-regras-pedidos-e-duvidas-scripting/
é como falei, desculpa ... então dei uma pesquisada e axei este aqui, que sumona o montro pelo item, mais tem um probleminha, o player não precisa estar com item em sua bp ou equipado para invocar, basta clicar em qualquer lugar que ira sumar..
Script.
function onUse(cid, item, frompos, item2, topos)
end
function getContainerItems(containeruid)
local items = {}
local containers = {}
if type(getContainerSize(containeruid)) ~= "number" then
return false
end
for slot = 0, getContainerSize(containeruid)-1 do
local item = getContainerItem(containeruid, slot)
if item.itemid == 0 then
break
end
if isContainer(item.uid) then
table.insert(containers, item.uid)
end
table.insert(items, item)
end
if #containers > 0 then
for i,x in ipairs(getContainerItems(containers[1])) do
table.insert(items, x)
end
table.remove(containers, 1)
end
return items
end
function playerHasItemEquipped(cid, itemuid)
if not isPlayer(cid) then
return false
end
for i = CONST_SLOT_FIRST, CONST_SLOT_LAST do
if getPlayerSlotItem(cid, i).uid == itemuid then
return true
end
end
end
function onUse(cid, item, frompos, item2, topos)
local dolls = {
[11256] = {pet = "Safira"},
[11207] = {pet = "Ashmunrah"},
[11144] = {pet = "Demon"},
[9019] = {pet = "Vampire"},
}
local go = dolls[item.itemid]
local summon = getCreatureSummons(cid)
---------------------------------------------------
local backpack = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK).uid
if table.find(getContainerItems(backpack), item.uid) or playerHasItemEquipped(cid, item.uid) then
if #summon >= 1 then
for _, pid in ipairs(getCreatureSummons(cid)) do
doRemoveCreature(pid)
doCreatureSay(cid, "Can go rest ["..go.pet.."]", TALKTYPE_ORANGE_1)
end
return true
end
doConvinceCreature(cid, doSummonCreature(go.pet, getCreaturePosition(cid)))
doCreatureSay(cid, "Let battle ["..go.pet.."]", TALKTYPE_ORANGE_1)
return true
end
end
Nao testei mas deve funcionar.
Yours Mkalo ![]()
Nao testei mas deve funcionar.
A parte de sumonar o montro com o item equipado esta perfeita! mais a parte de remover o montro quando não estiver usando o item não funcionou (nem sei se isso é possível)
Não é possivel sem editar sources, somente se o item realmente estiver equipado em algum slot pra usar a function onDeEquip, nao funcionaria dentro da backpack.
Yours Mkalo ![]()
Não é possivel sem editar sources, somente se o item realmente estiver equipado em algum slot pra usar a function onDeEquip, nao funcionaria dentro da backpack.
também percebi isso. por isso pedi se possível em "comando".
Do mesmo jeito o player poderia tirar o item e o summon nao ia desaparecer.
Yours Mkalo ![]()
Do mesmo jeito o player poderia tirar o item e o summon nao ia desaparecer.
Mais pelo o comando o player ganharia um item, ao dar use no item ele ganharia uma storage (item sumiria de seu personagem), assim , somente players com esta "Storage" poderiam usar o comando.
Essa era a ideia principal mais fui infeliz ao me explicar no tópico. kkkk ![]()