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