• 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!

Skrypt help help help help, zwraca false gdy więcej niż 2 rekordy w tablicy

Seminari

Banned User
Joined
Dec 13, 2009
Messages
1,496
Reaction score
34
Location
Poland
cześć szkodniki (tak jestem jebanym xeroboyem i zacznę ten post jak independens)

mam problem ze skryptem, a mianowicie:


Lua:
local endo = {
        ["sprawdz"] = {pos = {x=115, y=55, z=7}, premium = 'false',
                                                xtb = {
                                                ["bolek"] = {mc = 5, dell = 'kakcje'},
                                                ["evan"] = {mc = 9, dell = 'pekus'},
                                                ["morgan"] = {mc = 12, dell = 'omos'},
                                                }
                                        },
                }
                
for k, v in pairs(endo) do
        if msgcontains(msg, k) then
                for p,r in pairs(v.xtb) do
                if getPlayerName(cid) == p then
                return selfSay('Dell to: '.. r.dell ..'.', cid)
                elseif getPlayerName(cid) ~= p then
                return selfSay('NIE JESTES W INDEXIE', cid)

i tu problem, mam nick
bolek

jak w tablicy jest tylko bolek i evan to wszystko dziala git, ale jak dodaje 3 rekord, czyli morgan, to wtedy pisze mi, ze nie jestem w indexie, tak jakby nagle moj name nie byl taki jak w tablicy, a jest


co jest kurwa? 0 błędów nagle ten jebany skrypt jakby nie rozumiał, że mój nick nie jest w tbl co zjebałem? pewnie rozwiązanie oczywiste, ale jestem zbyt słaby by odgadnąć widać ;/
 
Wywal przecinek bo go tam nie powinno już być:
Code:
["morgan"] = {mc = 12, dell = 'omos'}[COLOR="#FF0000"],[/COLOR]
Code:
}[COLOR="#FF0000"],[/COLOR]
 
Last edited:
Lua:
function __check(tab)
	return not (#tab > 2)
end
Zwraca false, gdy jest dwa lub więcej elementów w tablicy.
 
ty stary nie o to chodzi, patrz, to dobrze działa jak mam 2 rekordy w tabeli, a jak mam 3 to niewiem czemu nagle nie widzi

mam nick bolek

i jak są tylko dwa rekordy

["bolek"] = {mc = 5, dell = 'kakcje'},
["evan"] = {mc = 9, dell = 'pekus'},

to pisze mi
Dell to: kakcje

ale jak już w tablicy są 3 rekordy

"bolek"] = {mc = 5, dell = 'kakcje'},
["evan"] = {mc = 9, dell = 'pekus'},
["morgan"] = {mc = 12, dell = 'omos'},

to już mi piszę, że nie jestem w indexie, wtf ? czemu się jebie?
 
A funkcja nie powinna zwracać tylko raz komunikatu? bo jak widzę to przy każdym wykonaniu pętli zwraca albo jeden albo drugi komunikat. Nie lepiej było by zrobić aby pewna zmienna przyjmowała wartość 1 gdy nazwa gracza jest w tablicy i 0 jeśli nie ma a następnie na końcu dodać warunek z returnem?
 
no popatrz, ale nie wkleiłem prawdziwego skryptu, tylko coś co jemu odpowiada i się zacina na tym samym etapie, a Twoje rozwiązanie jest dłuższe i przy bardziej rozbudowanym skrypcie będzie w chuj do zrobienia, a po za tym, czemu nagle ten głupi skrypt nie znajduje tego rekordu w tabeli?
 
po chuj jak się zatrzymuje na tym? to jest to samo co tam, tutaj się TEŻ ZATRZYMUJE SKRYPT, WIĘC JAK TO SIĘ POPRAWI, TO TAMTO TEŻ
 
Lua:
local endo = {
	["sprawdz"] = {
		pos = {x=115, y=55, z=7},
		premium = 'false',
		xtb = {
			["bolek"] = {mc = 5, dell = 'kakcje'},
			["evan"] = {mc = 9, dell = 'pekus'},
			["morgan"] = {mc = 12, dell = 'omos'},
		}
	},
}
 
for k, v in pairs(endo) do
	if msgcontains(msg, k) then
		local n = getCreatureName(cid):lower()
		for p, r in pairs(v.xtb) do
			if n == p then
				selfSay('Dell to: '.. r.dell ..'.', cid)
				return true
			end
		end
		selfSay('NIE JESTES W INDEXIE', cid)
		break
	end
end
 
Lua:
[endo:sprawdz]: (table)
[endo:sprawdz:premium]: false (string)
[endo:sprawdz:xtb]: (table)
[endo:sprawdz:xtb:bolek]: (table)
[endo:sprawdz:xtb:bolek:mc]: 5 (number)
[endo:sprawdz:xtb:bolek:dell]: kakcje (string)
[endo:sprawdz:xtb:evan]: (table)
[endo:sprawdz:xtb:evan:mc]: 9 (number)
[endo:sprawdz:xtb:evan:dell]: pekus (string)
[endo:sprawdz:xtb:morgan]: (table)
[endo:sprawdz:xtb:morgan:mc]: 12 (number)
[endo:sprawdz:xtb:morgan:dell]: omos (string)
[endo:sprawdz:pos]: (table)
[endo:sprawdz:pos:y]: 55 (number)
[endo:sprawdz:pos:x]: 115 (number)
[endo:sprawdz:pos:z]: 7 (number)
tabela wygląda dobrze ; )
 
Last edited:
edit;

działa dobrze z libem już też, mam pytanie, bo miałem w oryginalnym skrypcie np. nick
Semi Bije

w tablicy w libie miałem ["Semi Bije"]

więc formatowanie na małe litery wydawało mi się nie potrzebny

teraz dałem, by nick mi formatowało na małe, czyli lowerem i żeby dane z tablicy też formatowało na małe i działa...

czemu wcześniej nie działało? czemu skrypt nie mógł przyrównać Semi Bije == Semi Bije, tylko dopiero przyrównał semi bije == semi bije ?

to tak z ciekawości pytam, bo problem już rozwiązany ;d
 
Last edited:
Back
Top