• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!

Tabele

Status
Not open for further replies.

Burczyk

New Member
Joined
Oct 10, 2011
Messages
94
Reaction score
3
Witam chciałem napisać skrypta którego tabele wyglądały tak

LUA:
OUTS = {
[2] = {tov = 1, nlt = {lookType=24},
[3] = {tov = 1, nlt = {lookType=24}},
}
i sam skrypt
LUA:
local function doPlayerRevert(cid, manaloss, check)
if check == false or getCreatureMana(cid) < manaloss then
if OUTS[getPlayerVocation(cid)] then
		doCreatureChangeOutfit(cid, OUTS.NLT) 
		doPlayerSetVocation(cid, OUTS.TOV)
	  else
    doPlayerSendCancel(cid, "lol?")
    end
  return true
 end
end
Ale skrypt nie działa i wywala takie błędy, moje pytanie brzmi jak to zrobić, i jak można to proszę o przykład albo naprawienie tego.

LUA:
[09/10/2011 09:27:27] [Error - TalkAction Interface] 
[09/10/2011 09:27:27] data/talkactions/scripts/transform.lua:onSay
[09/10/2011 09:27:27] Description: 
[09/10/2011 09:27:27] attempt to index a nil value
[09/10/2011 09:27:27] stack traceback:
[09/10/2011 09:27:27] 	[C]: in function 'doCreatureChangeOutfit'
[09/10/2011 09:27:27] 	data/talkactions/scripts/transform.lua:84: in function 'doPlayerRevert'
[09/10/2011 09:27:27] 	data/talkactions/scripts/transform.lua:112: in function <data/talkactions/scripts/transform.lua:104>
 
Last edited:
OUTS = {
[2] = {tov = 1, nlt = {lookType=24},
[3] = {tov = 1, nlt = {lookType=24}},
}

a nie przypadkiem powinnno być tak:

OUTS = {
[2] = {tov = 1, nlt = {lookType=24},
[3] = {tov = 1, nlt = {lookType=24},
}
 
To już dawno zmieniłem... ale sam skrypt bo to mój pierwszy z zastosowaniem tabel.
 
Diath dał rozwiązanie.

Nie wiesz jak powinna taka tablica wyglądać a mimo to jej używasz trochę to bez sensu (zobacz jak powinno to wyglądać poprawnie albo zastąp to czymś prostszym)

Nie rozumiem jak nieparzysta liczba nawiasów może działać to chyba oczywiste że coś jest nie domknięte lub zapomniałeś czegoś otworzyć, sprawdź znaki interpunkcyjne bo też z nimi masz coś nie tak.

Jeśli nie łapiesz się w tablicach zrób 20 zmiennych będzie to odzwierciedlało poziom znajomości Lua ale będzie działało, przyznam że dawno dawno temu sam robiłem coś aby tylko działało i nie interesowało mnie to jakim kosztem. Z czasem poznasz bardziej wymyślne techniki.
 
LUA:
OUTS = {
[2] = {tov = 1, nlt = {lookType=24}},
[3] = {tov = 1, nlt = {lookType=24}},
}


function doPlayerRevert(cid, manaloss, check)
	
	local OUT = OUTS[getPlayerVocation(cid)]
	if (check or getCreatureMana(cid) > manaloss or not(OUT)) then
		return FALSE
	end
	doCreatureChangeOutfit(cid, OUT.nlt) 
	doPlayerSetVocation(cid, OUT.tov)
	return TRUE
end
a tak?

LUA:
OUTS.NLT
zastosowałeś błędnie, gdyż w podanej tablicy index "NLT" był równy nil (nie było go w ogóle).
LUA:
OUTS[getPlayerVocation(cid)].NLT
gdybyś tak zrobił indexu nadal by nie było (wartość nil), gdyż użyłeś wielkich liter.
LUA:
OUTS[getPlayerVocation(cid)].nlt
tak zaś byłoby poprawnie.
 
#wymietek
nie, gdyż do funkcji doCreatureChangeOutfit w parametrach przekazuję się tablice z danymi na jaki outfit zmienić, a nie id outfitu : )
 
Status
Not open for further replies.
Back
Top