What's new

Talkactions Summon monsters.

Oskar

Forum friend
Joined
Jan 24, 2009
Messages
2,256
Reaction score
331
Oto znany wszystkim czar na przywo?ywanie potwork?w, piszemy nazw? potwora, kt?rego chcemy przywo?a? i, je?li mamy odpowiedni poziom do?wiadczenia, ilo?? many oraz skill w przywo?ywaniu monster?w, to potw?r przechodzi na nasz? stron?.


Do talkactions.xml wklejamy:
PHP:
<talkaction words="summon" script="summon.lua" />


Sam system wygl?da tak:
PHP:
["bear"] = {level = 21, effect = CONST_ME_CARNIPHILA, dist_eff = CONST_ANI_SMALLEARTH, expe = {6,9}, skill_level = 0, name = "bear", mana = 300, voc = {1,2,3,4,5,6,7,8}},
level - wymagany poziom do?wiadczenia do przej?cia monstera,
effect - jaki efekt ma si? pojawi? na potworze (u mnie na ssie wida? o co chodzi),
dist_eff - jaki efekt strza?u,
expe - ile expa ma dodawa? do naszego nowego skilla,
skill_level - jaki skill (umiej?tno?ci przywo?ywania monster?w) trzeba mie? by m?c przej?c tego moba, rozpoczynamy gr? z poziomem zerowym "0", a sko?czy? mo?emy na poziomie mistrzowskim, czyli 11,
name - nazwa potworka,
mana - ilo?? potrzebnej many do przej?cia,
voc - jakie profesje mog? przywo?ywa? tego potwora.
 

Tibionauta

Advanced User
Joined
May 8, 2008
Messages
388
Reaction score
43
Odp: Summon monsters.

local summons = {
["troll"] = {name = "troll", mana = 500, voc = {8,15,17}},
["rat"] = {name = "rat", mana = 100, voc = {15,12,13}},
["vampire bride"] = {name = "vampire bride", mana = 300, voc = {15}}
}
Lol? Po co deklarowa? w tablicy dodatkowo name, skoro odpowiada za to indeks? Strata pami?ci... M?g?by? zrobi? czas jaki summon ?yje przez addEvent... Og?lnie 8/10.
 

Oskar

Forum friend
Joined
Jan 24, 2009
Messages
2,256
Reaction score
331
Odp: Summon monsters.

Pomy?l? nad d?ugo?ci? ?ycia summona, ale p?ki co czekam na opinie.
 

Oskar

Forum friend
Joined
Jan 24, 2009
Messages
2,256
Reaction score
331
Odp: Summon monsters.

xd
Skrypt zosta? bardzo przerobiony.
Jak mo?na zauwa?y? dosz?o sporo nowych zmiennych. Mi?dzy innymi:
PHP:
local exhausted_storagevalue = 2000
local exhausted_seconds = 2
Pierwsza odpowiada za storage exhausted wi?c mo?na zmieni? na takie kt?rego si? nie u?ywa, drugi za? ilo?? sekund posiadanego "zm?czenia".

Za? to:
PHP:
local count_to_lv = {3, 6, 9, 12, 15}
local levels = {1, 2, 3, 4, 5}
local keys = 1004
local lv_storage = 1005
To co? zupe?nie nowego.
Pierwsza lokalna odpowiada za ilo?? przyzwanych potwor?w na awans, druga zmienna na ilo?? poziom?w do?wiadczenia w ?w umiej?tno?ci, trzecia to storage u?yty do liczenia ilo?ci przyzwanych potwor?w, czwarta to storage level?w.

W tabeli:
PHP:
["troll"] = {level = 20, skill_level = 1, name = "troll", mana = 500, voc = {8,15,17}},
["troll"] to nazwa potworka, kt?rego b?dzie mo?na przywo?ywa? ,level to minimalny poziom do wezwania, skill_level to poziom do?wiadczenia w ?w umiej?tno?ci, name to nazwa potwora, mana to ilo?? potrzebnej many, voc to ID profesji, kt?re mog? przywo?ywa? ?w moba.


Wyja?ni? jak to dzia?a.
W tym przypadku po wezwaniu trzeciego potworka awansujemy na poziom pierwszy "zdolno?ci przywo?ywania potwor?w", po zsummonowaniu sz?stego dostajemy awans na poziom drugi i tak dalej.
My?l? ?e si? podoba ^^
 
Last edited:

Vergil93

Advanced User
Joined
Jun 19, 2010
Messages
263
Reaction score
6
Odp: Summon monsters.

Jak na moje oko nowicjusza wyglada to niezle, widac iz zajol ci nie malo pracy owy skrypt. Pomysl ze zmeczenim jest wspanialy zreszta jak caly ten pomysl, bravo! Kontynuuj bo idzie ci dobrze, ocena 9/10.
 

OSKI1992

User
Joined
Jul 14, 2010
Messages
45
Reaction score
2
Odp: Summon monsters.

Dobra robota, z reszt? jak chyba ka?da Twoja praca^^.


Wyja?ni? jak to dzia?a.
W tym przypadku po wezwaniu trzeciego potworka awansujemy na poziom pierwszy "zdolno?ci przywo?ywania potwor?w", po zsummonowaniu sz?stego dostajemy awans na poziom drugi i tak dalej.
My?l? ?e si? podoba ^^
Nie za du?o summon?w b?dzie, skoro na 2 poziomie mo?na a? sze?? przywo?a??
 
Last edited:

Oskar

Forum friend
Joined
Jan 24, 2009
Messages
2,256
Reaction score
331
Odp: Summon monsters.

Jakie znowu sze???
W skrypcie jest zadeklarowane ilo?? summon?w, o tutaj:
PHP:
local max_summons = 2
I tutaj:
PHP:
local summons = getCreatureSummons(cid)
if(table.maxn(summons) <= max_summons-1) then
Wi?c Twoje spostrze?enie by?o b??dne.

W skrypcie chodzi o przywo?anie trzeciego potworka, nie trzech naraz.
Dla przyk?adu - przywo?ujemy dwa trolle dla zabawy, jeden ginie, summonujemy kolejnego i dostajemy awans na wy?szy stopie? wtajemniczenia.

#down
W skrypcie ustawiasz skill_level = 1, w tym wypadku maj?c zerowy poziom nie przywo?amy tego potworka, ale je?li awansujemy na poziom zadeklarowany w skrypcie, w tym przypadku 1 to zyskujemy mo?liwo?? jego przywo?ania.
 
Last edited:

OSKI1992

User
Joined
Jul 14, 2010
Messages
45
Reaction score
2
Odp: Summon monsters.

Aha, a co taki wy?szy poziom by dawa??

@Edit:
Aha, ok dobry i przydatny skrypt;)
 
Last edited:

Zbiegniew Cebula

Active User
Joined
Nov 12, 2008
Messages
148
Reaction score
4
Odp: Summon monsters.

Podzia?a na tibii 8.1?? Bo skrypt fajny, a i mam jeszcze jedno pytanie jakby mo?na by?o takiego potworka uleczy? gdyby by? troszk? "po-obijany".

@edit
Mam pytanko czy m?g?by? na PW lub tutaj da? mi przerobiony skrypt w ten spos?b ?e je?eli dany potw?r b?dzie z-summonowany to co jaki? czas b?dzie ulecza? swojego pana.

@edit.2
Skrypt spoko poustawia?em se :p
lecz jest 1 b??d (silnik 8.1)
:: Loading Talkactions ...Warning: [Event::loadScript] Can not load script. data
/talkactions/scripts/summonowanie_levelowe.lua
data/talkactions/scripts/summonowanie_levelowe.lua:17: '}' expected (to close '{
' at line 13) near '['

Prosz? o HELP
 
Last edited:

Oskar

Forum friend
Joined
Jan 24, 2009
Messages
2,256
Reaction score
331
Odp: Summon monsters.

Poka? co zmieni?e?, ca?y skrypt wklej, gdy? konsola m?wi i? nie masz zamkni?te nawiasu sze?ciennego.
Potw?r ma ulecza?? Heh... To ju? nie moja dzia?ka.

#edit
Od teraz nie mo?na u?ywa? czaru w domkach i PZ.

My?l? ?e temat mo?na przenie?? do dzia?u talkactions.
 
Last edited:

Zbiegniew Cebula

Active User
Joined
Nov 12, 2008
Messages
148
Reaction score
4
Odp: Summon monsters.

PHP:
function onSay(cid, words, param)
local count_to_lv = {5, 10, 20, 40, 80, 100}
local levels = {1, 2, 3, 4, 5, 6}
local keys = 10001
local lv_storage = 10000
local exhausted_storagevalue = 10002
local exhausted_seconds = 120
local storages = getPlayerStorageValue(cid, keys)
if getPlayerStorageValue(cid, lv_storage) == -1 or storages == -1 then
    setPlayerStorageValue(cid, lv_storage, 0)
    storages = 10003
end
local summons = {
                ["Wilk Bojowy"] = {level = 5, skill_level = 0, name = "Wilk Bojowy", mana = 20, voc = {4,1,2,3}},
                ["Wilk Wojenny"] = {level = 10, skill_level = 1, name = "Wilk Wojenny", mana = 50, voc = {4,1,2,3}},
                ["Tresowany Minotaur"] = {level = 15, skill_level = 2, name = "Tresowany Minotaur", mana = 100, voc = {4,1,2,3}}
                ["Minotaur Mag"] = {level = 20, skill_level = 3, name = "Minotaur Mag", mana = 120, voc = {1}},
                ["Minotaur Strzelec"] = {level = 20, skill_level = 3, name = "Minotaur Strzelec", mana = 120, voc = {3}},
                ["Minotaur Wojownik"] = {level = 20, skill_level = 3, name = "Minotaur Wojownik", mana = 120, voc = {4}},
                ["Minotaur Ochroniarz"] = {level = 20, skill_level = 3, name = "Minotaur Ochroniarz", mana = 120, voc = {2}},
                }
local max_summons = 1
local summ = summons[tostring(param)]
if summ then
    if os.time() > getPlayerStorageValue(cid, exhausted_storagevalue)  then
        if getPlayerStorageValue(cid, lv_storage) >= summ.skill_level then
            if isInArray(summ.voc, getPlayerVocation(cid)) then
                if getPlayerLevel(cid) >= summ.level then
                    if getCreatureMana(cid) >= summ.mana then
                        local summons = getCreatureSummons(cid)
                        if(table.maxn(summons) <= max_summons-1) then
                            local mob = doSummonCreature(summ.name, getCreaturePosition(cid))
                            doConvinceCreature(cid, mob)
                            doPlayerAddMana(cid, -summ.mana, false)
                            doPlayerAddSpentMana(cid, summ.mana)
                            doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_RED)
                            doCreatureSay(cid, words.." "..param, TALKTYPE_ORANGE_1)
                            setPlayerStorageValue(cid, exhausted_storagevalue, os.time() + exhausted_seconds)
                                for i = 1, #count_to_lv do
                                    if storages == count_to_lv[i] then 
                                        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Twoja zdolnosc przywolywania potworow wzrosla na poziom "..i)
                                        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MORTAREA)
                                        setPlayerStorageValue(cid, lv_storage, levels[i])
                                    end
                                    if storages <= count_to_lv[i] then
                                        setPlayerStorageValue(cid, keys, storages + 1)
                                    end
                                end
                        else
                            doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
                            doPlayerSendCancel(cid, "Nie mozesz przywolac wiekszej ilosci potworow.")
                        end
                    else
                        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
                        doPlayerSendCancel(cid, "Masz za malo many.")
                    end
                else
                    doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
                    doPlayerSendCancel(cid, "Twoj poziom doswiadczenia jest za niski.")
                end
            else
                doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
                doPlayerSendCancel(cid, "Nie jestes w stanie przywolac tego stworzenia.")
            end
        else
            doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
            doPlayerSendCancel(cid, "Twoj poziom znajomosci przywolywania potworow jest zbyt niski.")
        end
    else
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
        doPlayerSendCancel(cid, "Stworzenie mozna przywolac dopierom po 2 minutach.")
    end
else
    doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
    doPlayerSendCancel(cid, "Nie jestes w stanie przywolac tego stworzenia.")
end
return true
end

Ja tu tylko zmieni?em potworki :) no i troszk? tekst i levele :D
 
Last edited:

Oskar

Forum friend
Joined
Jan 24, 2009
Messages
2,256
Reaction score
331
Odp: Summon monsters.

PHP:
function onSay(cid, words, param)
local count_to_lv = {5, 10, 20, 40, 80, 100}
local levels = {1, 2, 3, 4, 5, 6}
local keys = 10001
local lv_storage = 10000
local exhausted_storagevalue = 10002
local exhausted_seconds = 120
local storages = getPlayerStorageValue(cid, keys)
if getPlayerStorageValue(cid, lv_storage) == -1 or storages == -1 then
    setPlayerStorageValue(cid, lv_storage, 0)
    storages = 10003
end
local summons = {
                ["Wilk Bojowy"] = {level = 5, skill_level = 0, name = "Wilk Bojowy", mana = 20, voc = {4,1,2,3}},
                ["Wilk Wojenny"] = {level = 10, skill_level = 1, name = "Wilk Wojenny", mana = 50, voc = {4,1,2,3}},
                ["Tresowany Minotaur"] = {level = 15, skill_level = 2, name = "Tresowany Minotaur", mana = 100, voc = {4,1,2,3}},
                ["Minotaur Mag"] = {level = 20, skill_level = 3, name = "Minotaur Mag", mana = 120, voc = {1}},
                ["Minotaur Strzelec"] = {level = 20, skill_level = 3, name = "Minotaur Strzelec", mana = 120, voc = {3}},
                ["Minotaur Wojownik"] = {level = 20, skill_level = 3, name = "Minotaur Wojownik", mana = 120, voc = {4}},
                ["Minotaur Ochroniarz"] = {level = 20, skill_level = 3, name = "Minotaur Ochroniarz", mana = 120, voc = {2}}
                }
local max_summons = 1
local summ = summons[tostring(param)]
if summ then
    if os.time() > getPlayerStorageValue(cid, exhausted_storagevalue)  then
        if getPlayerStorageValue(cid, lv_storage) >= summ.skill_level then
            if isInArray(summ.voc, getPlayerVocation(cid)) then
                if getPlayerLevel(cid) >= summ.level then
                    if getCreatureMana(cid) >= summ.mana then
                        local summons = getCreatureSummons(cid)
                        if(table.maxn(summons) <= max_summons-1) then
                            local mob = doSummonCreature(summ.name, getCreaturePosition(cid))
                            doConvinceCreature(cid, mob)
                            doPlayerAddMana(cid, -summ.mana, false)
                            doPlayerAddSpentMana(cid, summ.mana)
                            doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_RED)
                            doCreatureSay(cid, words.." "..param, TALKTYPE_ORANGE_1)
                            setPlayerStorageValue(cid, exhausted_storagevalue, os.time() + exhausted_seconds)
                                for i = 1, #count_to_lv do
                                    if storages == count_to_lv[i] then 
                                        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Twoja zdolnosc przywolywania potworow wzrosla na poziom "..i)
                                        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MORTAREA)
                                        setPlayerStorageValue(cid, lv_storage, levels[i])
                                    end
                                    if storages <= count_to_lv[i] then
                                        setPlayerStorageValue(cid, keys, storages + 1)
                                    end
                                end
                        else
                            doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
                            doPlayerSendCancel(cid, "Nie mozesz przywolac wiekszej ilosci potworow.")
                        end
                    else
                        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
                        doPlayerSendCancel(cid, "Masz za malo many.")
                    end
                else
                    doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
                    doPlayerSendCancel(cid, "Twoj poziom doswiadczenia jest za niski.")
                end
            else
                doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
                doPlayerSendCancel(cid, "Nie jestes w stanie przywolac tego stworzenia.")
            end
        else
            doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
            doPlayerSendCancel(cid, "Twoj poziom znajomosci przywolywania potworow jest zbyt niski.")
        end
    else
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
        doPlayerSendCancel(cid, "Stworzenie mozna przywolac dopierom po 2 minutach.")
    end
else
    doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF)
    doPlayerSendCancel(cid, "Nie jestes w stanie przywolac tego stworzenia.")
end
return true
end

Musisz zapami?ta?, ?e dodaj?c nowego potworka do tablicy na ko?cu nie ma by? przecinka.
 

Zbiegniew Cebula

Active User
Joined
Nov 12, 2008
Messages
148
Reaction score
4
Odp: Summon monsters.

Teraz kod mam taki:
PHP:
function onSay(cid, words, param)
local count_to_lv = {5, 10, 20, 40, 80, 100}
local levels = {1, 2, 3, 4, 5, 6}
local keys = 10001
local lv_storage = 10000
local exhausted_storagevalue = 10002
local exhausted_seconds = 120
local pos = getCreaturePosition(cid)
local storages = getPlayerStorageValue(cid, keys)
if getPlayerStorageValue(cid, lv_storage) == -1 or storages == -1 then
    setPlayerStorageValue(cid, lv_storage, 0)
    storages = 10003
end
local summons = {
                ["Wilk Bojowy"] = {level = 5, skill_level = 0, name = "Wilk Bojowy", mana = 20, voc = {4,1,2,3}},
                ["Wilk Wojenny"] = {level = 10, skill_level = 1, name = "Wilk Wojenny", mana = 50, voc = {4,1,2,3}},
                ["Tresowany Minotaur"] = {level = 15, skill_level = 2, name = "Tresowany Minotaur", mana = 100, voc = {4,1,2,3}}
                ["Minotaur Mag"] = {level = 20, skill_level = 3, name = "Minotaur Mag", mana = 120, voc = {1}},
                ["Minotaur Strzelec"] = {level = 20, skill_level = 3, name = "Minotaur Strzelec", mana = 120, voc = {3}},
                ["Minotaur Wojownik"] = {level = 20, skill_level = 3, name = "Minotaur Wojownik", mana = 120, voc = {4}},
                ["Minotaur Ochroniarz"] = {level = 20, skill_level = 3, name = "Minotaur Ochroniarz", mana = 120, voc = {2}}
                }
local max_summons = 1
local summ = summons[tostring(param)]
if summ then
    if os.time() > getPlayerStorageValue(cid, exhausted_storagevalue)  then
        if not(getTilePzInfo(pos) == true or getTileHouseInfo(pos) == true) then
            if getPlayerStorageValue(cid, lv_storage) >= summ.skill_level then
                if isInArray(summ.voc, getPlayerVocation(cid)) then
                    if getPlayerLevel(cid) >= summ.level then
                        if getCreatureMana(cid) >= summ.mana then
                            local summons = getCreatureSummons(cid)
                            if(table.maxn(summons) <= max_summons-1) then
                                local mob = doSummonCreature(summ.name, pos)
                                doConvinceCreature(cid, mob)
                                doPlayerAddMana(cid, -summ.mana, false)
                                doPlayerAddSpentMana(cid, summ.mana)
                                doSendMagicEffect(pos, CONST_ME_MAGIC_RED)
                                doCreatureSay(cid, words.." "..param, TALKTYPE_ORANGE_1)
                                setPlayerStorageValue(cid, exhausted_storagevalue, os.time() + exhausted_seconds)
                                    for i = 1, #count_to_lv do
                                        if storages == count_to_lv[i] then 
                                            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Twoja zdolnosc przywolywania potworow wzrosla na poziom "..i)
                                            doSendMagicEffect(pos, CONST_ME_MORTAREA)
                                            setPlayerStorageValue(cid, lv_storage, levels[i])
                                        end
                                        if storages <= count_to_lv[i] then
                                            setPlayerStorageValue(cid, keys, storages + 1)
                                        end
                                    end
                            else
                                doSendMagicEffect(pos, CONST_ME_POFF)
                                doPlayerSendCancel(cid, "Nie mozesz przywolac wiekszej ilosci potworow.")
                            end
                        else
                            doSendMagicEffect(pos, CONST_ME_POFF)
                            doPlayerSendCancel(cid, "Masz za malo many.")
                        end
                    else
                        doSendMagicEffect(pos, CONST_ME_POFF)
                        doPlayerSendCancel(cid, "Twoj poziom doswiadczenia jest za niski.")
                    end
                else
                    doSendMagicEffect(pos, CONST_ME_POFF)
                    doPlayerSendCancel(cid, "Nie jestes w stanie przywolac tego stworzenia.")
                end
            else
                doSendMagicEffect(pos, CONST_ME_POFF)
                doPlayerSendCancel(cid, "Twoj poziom znajomosci przywolywania potworow jest zbyt niski.")
            end
        else
            doSendMagicEffect(pos, CONST_ME_POFF)
            doPlayerSendCancel(cid, "Musisz opuscic strefe Ochronna.")
        end
    else
        doSendMagicEffect(pos, CONST_ME_POFF)
        doPlayerSendCancel(cid, "Jestes zmeczony.")
    end
else
    doSendMagicEffect(pos, CONST_ME_POFF)
    doPlayerSendCancel(cid, "Nie jestes w stanie przywolac tego stworzenia.")
end
return true
end

a wyskakuje takie co?:

:: Loading Talkactions ...Warning: [Event::loadScript] Can not load script. data
/talkactions/scripts/summonowanie_levelowe.lua
data/talkactions/scripts/summonowanie_levelowe.lua:18: '}' expected (to close '{
' at line 14) near '['

HELP!!!

@edit
Upss, nie zauwa?y?em dobra przepraszam -.-

Ale tera jak tego u?ywa??
Bo wpisuje !summon Wilk Bojowy i tylko tekst si? pokazuje.

@edit.2
ok musz? wpisywa? !summon "Wilk Bojowy"
ale pisze mi ze nie moge ;/
"Nie jeste? w stanie przywo?a? tego stworzenia"
 
Last edited:

Oskar

Forum friend
Joined
Jan 24, 2009
Messages
2,256
Reaction score
331
Odp: Summon monsters.

Odpowiedzi na Tw?j problem s? dwie, albo nie masz odpowiedniej profesji ow? postaci? albo nazwy potwork?w si? nie zgadzaj?.
Spr?buj pozamienia? wielko?ci liter w kwadratowych nawiasach.
 

Zbiegniew Cebula

Active User
Joined
Nov 12, 2008
Messages
148
Reaction score
4
Odp: Summon monsters.

hmmm....
No wpisuje co do literki nazw? potworka. I nadal to samo. Profesja jest taka jaka powinna, mo?e da si? jako? to przerobi? by dzia?a?o xD

@edit
czekaj czekaj ja tych potwork?w do monsters.xml nie doda?em zaraz sprawdz? i zdam raport :|

@edit.2
I nadal to samo :/ Doda?em do monsters.xml
Zr?b skrypt gdzie b?dzie omija?o wybieranie profesji :|

PS. Mam pomys? mo?e zr?b tak ?e zamiast profesji b?dzie pobiera?o warto?? ze zmiennej (storage value) a ta zmienna b?dzie si? ustawia? na profesje gracza. :D by? mo?e tak zadzia?a.
 
Last edited:

Xayan

Senior User
Joined
Jul 4, 2009
Messages
2,608
Reaction score
390
Age
28
Odp: Summon monsters.

!summon Wilk Bojowy
!summon "Wilk Bojowy"

Ani nie tak, ani nie tak. Wpisz !summon "Wilk Bojowy, z jednym cudzys?owem.
 

Zbiegniew Cebula

Active User
Joined
Nov 12, 2008
Messages
148
Reaction score
4
Odp: Summon monsters.

No, No, wida? podzia?a?o DZI?KI, lecz wyskoczy? mi b??d odno?nie "komedy" getCreatureMana wyskakuje takie co?
Lua Script Error: [TalkAction Interface]
data/talkactions/scripts/summonowanie_levelowe.lua:eek:nSay

data/talkactions/scripts/summonowanie_levelowe.lua:31: attempt to call global 'g
etCreatureMana' (a nil value)

zmieni?em getCreatureMana na getPlayerMana to ju? b??d ten nie wyskakuje ale wyskakuje inny
Lua Script Error: [TalkAction Interface]
data/talkactions/scripts/summonowanie_levelowe.lua:eek:nSay

data/talkactions/scripts/summonowanie_levelowe.lua:32: attempt to call global 'g
etCreatureSummons' (a nil value)

no i tego nie wiem jak zmieni?. Prosz? o pomoc.
 

Oskar

Forum friend
Joined
Jan 24, 2009
Messages
2,256
Reaction score
331
Odp: Summon monsters.

U?ywasz pewnie jakiego? starszego silnika? Zapewne dlatego Ci nie dzia?a, gdy? Tw?j silnik nie posiada ?w funkcji.
Mam NaxedOT pod 8.54 i dzia?a bez zb?dnych przer?bek. Inni tak?e si? nie skar??.
A zast?pczej funkcji nie mog? znale??, a odpowiada ona za ilo?? przyzywanych potwork?w, je?li usuniesz t? cz??? kodu to gracz b?dzie m?g? przywo?a? ich niesko?czon? ilo??.

#edit
Sprawd?
PHP:
getPlayerSummons
 

Zbiegniew Cebula

Active User
Joined
Nov 12, 2008
Messages
148
Reaction score
4
Odp: Summon monsters.

o_O dzia?a tylko ?e:
Lua Script Error: [TalkAction Interface]
data/talkactions/scripts/summonowanie_levelowe.lua:eek:nSay

data/talkactions/scripts/summonowanie_levelowe.lua:33: bad argument #1 to 'maxn'
(table expected, got nil)
teraz to a skrypt taki:
PHP:
function onSay(cid, words, param)
local count_to_lv = {5, 10, 20, 40, 80, 100}
local levels = {1, 2, 3, 4, 5, 6}
local keys = 10001
local lv_storage = 10000
local exhausted_storagevalue = 10002
local exhausted_seconds = 120
local pos = getCreaturePosition(cid)
local storages = getPlayerStorageValue(cid, keys)
if getPlayerStorageValue(cid, lv_storage) == -1 or storages == -1 then
    setPlayerStorageValue(cid, lv_storage, 0)
    storages = 10003
end
local summons = {
                ["Wilk Bojowy"] = {level = 5, skill_level = 0, name = "Wilk Bojowy", mana = 20, voc = {4,1,2,3}},
                ["Wilk Wojenny"] = {level = 10, skill_level = 1, name = "Wilk Wojenny", mana = 50, voc = {4,1,2,3}},
                ["Tresowany Minotaur"] = {level = 15, skill_level = 2, name = "Tresowany Minotaur", mana = 100, voc = {4,1,2,3}},
                ["Minotaur Mag"] = {level = 20, skill_level = 3, name = "Minotaur Mag", mana = 120, voc = {1}},
                ["Minotaur Strzelec"] = {level = 20, skill_level = 3, name = "Minotaur Strzelec", mana = 120, voc = {3}},
                ["Minotaur Wojownik"] = {level = 20, skill_level = 3, name = "Minotaur Wojownik", mana = 120, voc = {4}},
                ["Minotaur Ochroniarz"] = {level = 20, skill_level = 3, name = "Minotaur Ochroniarz", mana = 120, voc = {2}}
                }
local max_summons = 1
local summ = summons[tostring(param)]
if summ then
    if os.time() > getPlayerStorageValue(cid, exhausted_storagevalue)  then
        if not(getTilePzInfo(pos) == true or getTileHouseInfo(pos) == true) then
            if getPlayerStorageValue(cid, lv_storage) >= summ.skill_level then
                if isInArray(summ.voc, getPlayerVocation(cid)) then
                    if getPlayerLevel(cid) >= summ.level then
                        if getPlayerMana(cid) >= summ.mana then
                            local summons = getPlayerSummons
                            if(table.maxn(summons) <= max_summons-1) then
                                local mob = doSummonCreature(summ.name, pos)
                                doConvinceCreature(cid, mob)
                                doPlayerAddMana(cid, -summ.mana, false)
                                doPlayerAddSpentMana(cid, summ.mana)
                                doSendMagicEffect(pos, CONST_ME_MAGIC_RED)
                                doCreatureSay(cid, words.." "..param, TALKTYPE_ORANGE_1)
                                setPlayerStorageValue(cid, exhausted_storagevalue, os.time() + exhausted_seconds)
                                    for i = 1, #count_to_lv do
                                        if storages == count_to_lv[i] then 
                                            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Twoja zdolnosc przywolywania potworow wzrosla na poziom "..i)
                                            doSendMagicEffect(pos, CONST_ME_MORTAREA)
                                            setPlayerStorageValue(cid, lv_storage, levels[i])
                                        end
                                        if storages <= count_to_lv[i] then
                                            setPlayerStorageValue(cid, keys, storages + 1)
                                        end
                                    end
                            else
                                doSendMagicEffect(pos, CONST_ME_POFF)
                                doPlayerSendCancel(cid, "Nie mozesz przywolac wiekszej ilosci potworow.")
                            end
                        else
                            doSendMagicEffect(pos, CONST_ME_POFF)
                            doPlayerSendCancel(cid, "Masz za malo many.")
                        end
                    else
                        doSendMagicEffect(pos, CONST_ME_POFF)
                        doPlayerSendCancel(cid, "Twoj poziom doswiadczenia jest za niski.")
                    end
                else
                    doSendMagicEffect(pos, CONST_ME_POFF)
                    doPlayerSendCancel(cid, "Nie jestes w stanie przywolac tego stworzenia.")
                end
            else
                doSendMagicEffect(pos, CONST_ME_POFF)
                doPlayerSendCancel(cid, "Twoj poziom znajomosci przywolywania potworow jest zbyt niski.")
            end
        else
            doSendMagicEffect(pos, CONST_ME_POFF)
            doPlayerSendCancel(cid, "Musisz opuscic strefe Ochronna.")
        end
    else
        doSendMagicEffect(pos, CONST_ME_POFF)
        doPlayerSendCancel(cid, "Jestes zmeczony.")
    end
else
    doSendMagicEffect(pos, CONST_ME_POFF)
    doPlayerSendCancel(cid, "Nie jestes w stanie przywolac tego stworzenia.")
end
return true
end
 

Oskar

Forum friend
Joined
Jan 24, 2009
Messages
2,256
Reaction score
331
Odp: Summon monsters.

?le mnie zrozumia?e?, mia?e? zamieni?:
PHP:
local summons = getCreatureSummons(cid)
Na:
PHP:
local summons = getPlayerSummons(cid)
U Ciebie brakuje (cid)
 
Top