FA
pedido

[Pedido] Mudança em Script

Por Farathor, 27 de set. de 2015 em Scripts

12
1.4k
FarathorF
27 de setembro de 2015 às 14:00

Pessoal, esse script funciona da seguinte forma, eu falo assim. /coliseum 10,demon e ele sumona 10 demons em uma determinada area, eu queria fazer assim, que tivesse varías areas configuradas no Script.

Por exemplo: /spawnCity1 50,Demon. Ele sumona 50 demons na area configurada da City 1. se eu falo /spawnCity2 50,Demon. Ele sumona 50 demons na area configurada da city 2, Entenderam?

 

local t = {xx = {1706,1719},
yy = {1614,1623},
zz = {7},
efeito = {10}
}
function onSay(cid, words, param, channel)
addEvent(d,tempo*60*1000)
local ta = string.explode(param, ",")
if(ta[1] and ta[2]) then


for i = 1,tonumber(ta[1]) do
ef,eff = math.random (t.xx[1],t.xx[2]),math.random (t.yy[1],t.yy[2])
doSummonCreature(ta[2],{x=ef, y=eff , z=t.zz[1]})
doSendMagicEffect({x=ef, y=eff , z=t.zz[1]},t.efeito[1])
end
  else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "[Erro] Comando Errado")
return true
end
return true
end

 

zipter98Z
27 de setembro de 2015 às 15:03

Não se esqueça de registrar as palavras que executarão o código na tag.

Ex.:

<talkaction words="/spawnEnigma;/spawnSvargrond;/spawnYalahar" access="4" event="script" value="nome_do_arquivo.lua"/>

Script:

local cities = {
    ["enigma"] = {                   --Cidade.
        summon_effect = xxx,         --Efeito.
        coordinates = {
            x = {1047, 1053},        --fromPos (x), toPos (x).
            y = {1058, 1061},        --fromPos (y), toPos (y).
            z = 7                    --Coordenadas de z.
        }
    },
    ["svargrond"] = {
        summon_effect = xxx,        
        coordinates = {
            x = {x, x},        
            y = {y, y},      
            z = z                  
        }
    },
}
 
function onSay(cid, words, param)
    local city, w = cities[words:lower():match("/spawn(.*)")], param:explode(";")
    if not city then
        return doPlayerSendCancel(cid, "This city isn't available.")
    end
    
    local monster_raid = {}
    for i = 1, #w do
        local m_info = w[i]:explode(",")
        local count, monster_name = tonumber(m_info[1]), m_info[2]
        if not count or not monster_name then
            return doPlayerSendCancel(cid, "Wrong parameters.")
        end
        
        monster_raid[i] = {count, monster_name}
    end
    
    for i = 1, #monster_raid do
        for monster_count = 1, monster_raid[i][1] do
            local summon_position = {x = math.random(city.coordinates.x[1], city.coordinates.x[2]), y = math.random(city.coordinates.y[1], city.coordinates.y[2]), z = city.coordinates.z}
 
            doCreateMonster(monster_raid[i][2], summon_position)
            doSendMagicEffect(summon_position, city.summon_effect)
        end
    end
    return true
end

Editado Setembro 29 por zipter98

FarathorF
27 de setembro de 2015 às 17:37

Tudo bem, mas invés de ser SpawnCity, seria SpawnEnigma, SpawnSvargrond tendeu?

zipter98Z
27 de setembro de 2015 às 17:45

Desculpe, ainda não aprendi a ler mentes. Corrigido.

FarathorF
27 de setembro de 2015 às 20:12

desculpe :x,

 

Mais uma coisa, invés de eu ir adicionando um monstro de cada vez, teria como ser assim? /spawnEnigma 10,Demon;10,Dragon

 

@Edit: eu configurei, mas quando fui utilizar o comando aparecia a seguinte mensagem "This city isn't available."

 

eu utilizei o comando /spawnEnigma 10,Demon

Editado Setembro 27 por Farathor

zipter98Z
28 de setembro de 2015 às 19:43

Corrigi um pequeno problema que não havia reparado enquanto escrevia o código, além de ter atualizado-o com esta modificação que você pediu. Entretanto, o erro que mencionei não estava relacionado a esse que você teve. Se a mensagem "This city isn't available." está aparecendo, as únicas explicações são que você ou tenha errado na formatação da mensagem ou que a cidade não tenha sido configurada na tabela. O comando em si está funcionando perfeitamente.

FarathorF
29 de setembro de 2015 às 10:59


[29/9/2015 10:54:30] [Error - TalkAction Interface]

[29/9/2015 10:54:30] data/talkactions/scripts/SpawnCitys.lua:onSay

[29/9/2015 10:54:30] Description:

[29/9/2015 10:54:30] (LuaInterface::luaDoCreateMonster) Cannot create monster: demon

[29/9/2015 10:54:30] [Warning - Npc::createNpc] Cannot find npc with name: demon.


[29/9/2015 10:54:30] [Error - TalkAction Interface]

[29/9/2015 10:54:30] data/talkactions/scripts/SpawnCitys.lua:onSay

[29/9/2015 10:54:30] Description:

[29/9/2015 10:54:30] (LuaInterface::luaDoCreateNpc) Npc with name 'demon' not found


[29/9/2015 10:54:30] [Error - TalkAction Interface]

[29/9/2015 10:54:30] data/talkactions/scripts/SpawnCitys.lua:onSay

[29/9/2015 10:54:30] Description:

[29/9/2015 10:54:30] (LuaInterface::luaDoCreateMonster) Cannot create monster: serpent spawn

[29/9/2015 10:54:30] [Warning - Npc::createNpc] Cannot find npc with name: serpent spawn.



comando utilizado foi: /spawnEnigma 1000,demon;50,serpent spawn


@edit Quando eu vou criar qualquer monstro, dá esse erro mas ele acaba criando os monstros

Editado Setembro 29 por Farathor

zipter98Z
29 de setembro de 2015 às 13:24

Hm, atualizei o código substituindo a função responsável por invocar os monstros. Talvez isso resolva seu problema. Procure também formatar o comando com o nome próprio dos monstros (Demon, por exemplo, e não demon).

FarathorF
01 de outubro de 2015 às 21:07

não mudou muita coisa

 

[1/10/2015 21:13:23] [Error - TalkAction Interface]
[1/10/2015 21:13:23] data/talkactions/scripts/SpawnCitys.lua:onSay
[1/10/2015 21:13:23] Description:
[1/10/2015 21:13:23] (LuaInterface::luaDoCreateMonster) Cannot create monster: Demon

Editado Outubro 1 por Farathor

zipter98Z
01 de outubro de 2015 às 21:28

Crie uma quantidade de monstros que seja cabível no local. Invocar 1000 Demons numa área onde talvez não caibam 50 não vai funcionar, por incrível que pareça.

FarathorF
02 de outubro de 2015 às 20:58

cara, ele da o erro mas sumona os monstros e falta espaço, a area é uma floresta enorme, então :x

2 semanas depois...
FarathorF
15 de outubro de 2015 às 13:53

up