DU
pedido

Summon spell

Por Duuhzinhow, 28 de jun. de 2015 em Scripts

summon
script
resolvido
11
3.8k
DuuhzinhowD
28 de junho de 2015 às 22:12

Entao galera, eu queria uma spell de summon que funcionaria da seguinte maneira:

 

Seria como a 'utevo res' porém assim :

*No level 25+ poderia summonar orc berserker, orc leader.. (exemplo)

Quando chegasse no level 35, poderia sumonar alguns monstros a mais.. e assim por diante.

*O monstro nao ganharia xp, quando o summon matar algo a xp irá toda para o player.

 

Se possivel, a lista de monstros sumonavel em seus respectivos levels necessarios a serem configurados dentro do script. Agradeço desde ja quem puder me ajudar!

 

RigByR
29 de junho de 2015 às 10:55

Summon por level

Summon não ganha exp

DuuhzinhowD
29 de junho de 2015 às 15:53

 

Rep

Mano, obrigado por ajudar mas uma coisa, a summon por level seria a mesma utevo res?

 

E se puder explicar onde eu adiciono o script do summon nao ganhar exp, pq realmente nao entendi.. obrigado :3

RigByR
29 de junho de 2015 às 16:07

 

Rep

Mano, obrigado por ajudar mas uma coisa, a summon por level seria a mesma utevo res?

 

E se puder explicar onde eu adiciono o script do summon nao ganhar exp, pq realmente nao entendi.. obrigado :3

 

Seria uma magia normal, só que em cada level summonaria um Mob diferente.

Digamos que eu coloque essa magia no lugar de exura, se eu usa-se exura no level 25 summonaria um rat, se eu usa-se exura no level 100 summonaria um demon.

 

Para adicionar, acredito eu que so basta substitui essa função:

void Creature::addDamagePoints(Creature* attacker, int32_t damagePoints)

por essa dai que eu ta no tópico.(acredito eu)

Acabei de formatar o pc, to sem os programas aqui, ai não da para eu testa

DuuhzinhowD
30 de junho de 2015 às 15:09

 

Seria uma magia normal, só que em cada level summonaria um Mob diferente.

Digamos que eu coloque essa magia no lugar de exura, se eu usa-se exura no level 25 summonaria um rat, se eu usa-se exura no level 100 summonaria um demon.

 

Para adicionar, acredito eu que so basta substitui essa função:

void Creature::addDamagePoints(Creature* attacker, int32_t damagePoints)

por essa dai que eu ta no tópico.(acredito eu)

Acabei de formatar o pc, to sem os programas aqui, ai não da para eu testa

 

Ah mano entao nao é assim, tipo, eu quero que mesmo depois de ter level alto, ainda tenha a opçao das outras summons dos levels anteriores.

up^^

RigByR
02 de julho de 2015 às 18:23
Melhor resposta

Eu não sabia como fazer isso por spell então fiz por talkaction.

Esse é meu primeiro talk que eu fiz na vida :D

 

.lua

local limite = 2 -- limite de summons
local vocation = {1, 2, 3} -- Vocações que poderão usar a magia
local config = {
--[Nome do monstro] = {level, mana},
    ["rat"] = {level = 25, mana = 300},
    ["orc"] = {level = 50, mana = 2000},
["demon"] = {level = 50, mana = 7000},
}
 
function onSay(cid, words, param, channel)
    if(param == '') then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Exemplo: Test orc")
    return true
    end
    if isInArray(vocation, getPlayerVocation(cid)) then
        if #getCreatureSummons(cid) < limite then
            local t = config[param]
            if t then
                if getPlayerLevel(cid) >= t.level then
                    if getCreatureMaxMana(cid) >= t.mana then
                        doConvinceCreature(cid, doSummonCreature(param, getCreaturePosition(cid)))
                        doCreatureAddMana(cid, - t.mana)
                    else
                        doPlayerSendCancel(cid, "é necessário "..t.mana.." para summonar!")
                    end
                else
                    doPlayerSendCancel(cid, "Você não tem level necessário para summonar ele!")
                end
            else
                doPlayerSendCancel(cid, "Esse monstro não esta na lista!")
            end
        else
            doPlayerSendCancel(cid, "Você ja atingiu o limite de "..limite.." summons!")
        end
    else
        doPlayerSendCancel(cid, "Sua vocação não permite usar essa magia!")
    end
return true
end
.xml, tag
<talkaction words="test" script="nomedoscript.lua" />

 

DuuhzinhowD
02 de julho de 2015 às 20:49

Eu não sabia como fazer isso por spell então fiz por talkaction.

Esse é meu primeiro talk que eu fiz na vida :D

 

.lua

local limite = 2 -- limite de summons
local vocation = {1, 2, 3} -- Vocações que poderão usar a magia
local config = {
--[Nome do monstro] = {level, mana},
    ["rat"] = {level = 25, mana = 300},
    ["orc"] = {level = 50, mana = 2000},
["demon"] = {level = 50, mana = 7000},
}
 
function onSay(cid, words, param, channel)
    if(param == '') then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Exemplo: Test orc")
    return true
    end
    if isInArray(vocation, getPlayerVocation(cid)) then
        if #getCreatureSummons(cid) < limite then
            local t = config[param]
            if t then
                if getPlayerLevel(cid) >= t.level then
                    if getCreatureMaxMana(cid) >= t.mana then
                        doConvinceCreature(cid, doSummonCreature(param, getCreaturePosition(cid)))
                        doCreatureAddMana(cid, - t.mana)
                    else
                        doPlayerSendCancel(cid, "é necessário "..t.mana.." para summonar!")
                    end
                else
                    doPlayerSendCancel(cid, "Você não tem level necessário para summonar ele!")
                end
            else
                doPlayerSendCancel(cid, "Esse monstro não esta na lista!")
            end
        else
            doPlayerSendCancel(cid, "Você ja atingiu o limite de "..limite.." summons!")
        end
    else
        doPlayerSendCancel(cid, "Sua vocação não permite usar essa magia!")
    end
return true
end
.xml, tag
<talkaction words="test" script="nomedoscript.lua" />

 

 

Bem, nenhum erro, porém... Mesmo o monstro estando na lista ele diz "Esse monstro nao esta na lista"

E teria como eu colocar para aparecer nas spells? porque vai ser necessario kkk

ps: o monstro irá roubar xp?

 

RigByR
02 de julho de 2015 às 21:35

 

Bem, nenhum erro, porém... Mesmo o monstro estando na lista ele diz "Esse monstro nao esta na lista"

E teria como eu colocar para aparecer nas spells? porque vai ser necessario kkk

ps: o monstro irá roubar xp?

 

 

ta ligado que isso é um talk né

aqui ta funcionando certo

http://prntscr.com/7o615g

manda o script do jeito que você configuro para eu ver.

se você fez oque eu falei la em cima, não.

DuuhzinhowD
03 de julho de 2015 às 13:00

script

 

 

local limite = 2 -- limite de summons
local vocation = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} -- Vocações que poderão usar a magia
local config = {
--[Nome do monstro] = {level, mana},
["rat"] = {level = 5, mana = 10},
["orc"] = {level = 15, mana = 10},
["demon"] = {level = 50, mana = 7000},
}

function onSay(cid, words, param, channel)
if(param == '') then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invocou")
return true
end
if isInArray(vocation, getPlayerVocation(cid)) then
if #getCreatureSummons(cid) < limite then
local t = config[param]
if t then
if getPlayerLevel(cid) >= t.level then
if getCreatureMaxMana(cid) >= t.mana then
doConvinceCreature(cid, doSummonCreature(param, getCreaturePosition(cid)))
doCreatureAddMana(cid, - t.mana)
else
doPlayerSendCancel(cid, "é necessário "..t.mana.." para summonar!")
end
else
doPlayerSendCancel(cid, "Você não tem level necessário para summonar ele!")
end
else
doPlayerSendCancel(cid, "Esse monstro não esta na lista!")
end
else
doPlayerSendCancel(cid, "Você ja atingiu o limite de "..limite.." summons!")
end
else
doPlayerSendCancel(cid, "Sua vocação não permite usar essa magia!")
end
return true
end

 

 

 

<talkaction words="utore" script="invoker.lua" />

 

 

ta ai, tlg q é talk, mas eu precisava como spell mano :;/, mas de boa assim entao icon_lol.gif

RigByR
03 de julho de 2015 às 13:19

mermão você que ta usando errado para summona é assim: utore rat

 

acho que você ta usando assim: utore "rat

assim não vai funciona pq não existe nenhum monstro chamado "rat.

 

e troca isso:

    if(param == '') then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invocou")
    return true
    end

por isso:

   if(param == '') then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Se usa assim: utore nome do mostro , EX: utore rat")
    return true
    end
essa parte é tipo um exemplo caso o player fale apenas utore.
para que apareça no spellbook cria uma magia com o mesmo nome do utore mas vazia, apenas com o efeito e pronto.
problema resolvido.

Editado Julho 3 por RigBy

2 semanas depois...
BrunoB
14 de julho de 2015 às 17:33

Tópico movido para dúvidas / pedidos resolvidos.