Wiesz w ogole czemu niektore zmienne powinno sie trzymac w funkcji a niektore ponad nia? Nie chodzi tutaj o zaden dostep do nich.
chodzi też o dostęp jeśli stworzysz sobie funkcje, która się odnosi do innej funkcji, to ta do, której się ona odnosi musi być ponad nią by pierwsza została wczytana, gdyż wywali poprostu erro jeśli funkcja, która ma się odnieść do innej będzie wczytywana przed wczytaniem funkcji, do której się odnosi, bo poprostu wywali błąd, że nie wie do czego się odnieść
np.:
funkcja A:
Lua:
function BB_GNOME_add_player_reputation(cid, rep)
if BB_GNOME_get_player_reputation(cid) < 0 then
BB_GNOME_setPlayerStorageValue(cid, BB_GNOME_REPUTATION_STG, 0)
end
BB_GNOME_setPlayerStorageValue(cid, BB_GNOME_REPUTATION_STG, BB_GNOME_get_player_reputation(cid) + rep)
BB_GNOME_advanceInRankIfRequiredReputationAchieved(cid)
end
funkcja B:
Lua:
function BB_GNOME_get_player_reputation(cid)
return BB_GNOME_getPlayerStorageValue(cid, BB_GNOME_REPUTATION_STG)
end
funkcja B musi być przed A bo inaczej A się nie wczyta gdyż nie będzie wiedzieć o co chodzi z poleceniem:
Lua:
if BB_GNOME_get_player_reputation(cid) < 0 then
- - - Updated - - -
A wiesz co to sa stale? Jak cos wsadzisz do tablicy, ktora jest zadeklarowana poza funkcja, to ta tablica wcale nie jest stala, bo wlasnie ja modyfikujesz. Idac dalej tym tropem, wsadzajac cos do niej, to cos zostanie tam na zawsze, do czasu az na nowo wczytasz skrypt. ID kamienia, pozycje, efekty nie sa nigdzie zmieniane, dlatego nic nie stoi na przeszkodzie zeby umiescic je poza funkcja. Co w przypadku duzych (bardzo duzych) tablic przyspieszy wykonanie sie skryptu.
Deklarowanie funkcji wewnatrz funkcji jest jeszcze weksza glupota.
aj zapomniałem właśnie, że do addeventa powininem dodać wszystkie parametry, których potem będę używał w danej funkcji, zaraz to zrobię
- - - Updated - - -
dobra już się gubie, jeśli damy c = {} poprostu do LIB'a to powinno zadziałać tak?
- - - Updated - - -
try this?
Lua:
function onUse(cid, item, fromPosition, itemEx, toPosition)
local c = {
[1] = {item_id = 1354, pozycja = {x=1050,y=5000,z=7}, ilosc = 1, efekt_create = 25, efekt_remove = 13},
[2] = {item_id = 1354, pozycja = {x=1051,y=5000,z=7}, ilosc = 1, efekt_create = 25, efekt_remove = 13},
[3] = {item_id = 1354, pozycja = {x=1052,y=5000,z=7}, ilosc = 1, efekt_create = 25, efekt_remove = 13},
}
local czas_tworzenia_scian = 60 * 1000 --<-- 60 * 1000 = 60 sekund
local usuniete_sciany = 0
local stworzone_sciany = 0
local function stworz_sciany_po_czasie(g)
for j = 1, #g do
if getTileItemById(g[j].pozycja, g[j].item_id).uid > 0 then
stworzone_sciany = stworzone_sciany + 1
doCreateItem(g[j].item_id, g[j].pozycja)
doSendMagicEffect(g[j].pozycja, g[j].efekt_create)
end
end
end
if item.itemid == 1945 then
for i = 1, #c do
if getTileItemById(c[i].pozycja, c[i].item_id).uid > 0 then
usuniete_sciany = usuniete_sciany + 1
doRemoveThing(getTileItemById(c[i].pozycja, c[i].item_id).uid, c[i].ilosc)
doSendMagicEffect(c[i].pozycja, c[i].efekt_remove)
end
end
doCreatureSay(cid, "Przesuwajac dzwignie usunales ".. usuniete_sciany .." scian. Odnowia sie po ".. czas_tworzenia_scian/1000 .." sekundach.", TALKTYPE_MONSTER)
doTransformItem(item.uid, 1946)
tworzenie_na_nowo = addEvent(stworz_sciany_po_czasie(), czas_tworzenia_scian, c)
elseif item.itemid == 1946 then
for k = 1, #c do
if getTileItemById(c[k].pozycja, c[k].item_id).uid > 0 then
stworzone_sciany = stworzone_sciany + 1
doCreateItem(c[k].item_id, c[k].pozycja)
doSendMagicEffect(c[k].pozycja, c[k].efekt_create)
end
end
doCreatureSay(cid, "Przesuwajac dzwignie stworzyles ".. stworzone_sciany .." scian.", TALKTYPE_MONSTER)
doTransformItem(item.uid, 1945)
stopEvent(tworzenie_na_nowo)
end
return true
end