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

Pomoc z LUA

Aleh

Active Member
Joined
Jan 9, 2009
Messages
1,228
Reaction score
39
Location
Rzeszów
Code:
		if (spr == 10 and getPlayerStorageValue(cid, 123321) == -1) then
			db.executeQuery('UPDATE `accounts` SET `premium_points` = `premium_points` + 200 WHERE `id` = ' .. account_id .. ';')
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Dostales 200 premium points!")
			setPlayerStorageValue(cid, 123321, 1)
		end
		if (spr == 20 and getPlayerStorageValue(cid, 123421) == -1) then
			db.executeQuery('UPDATE `accounts` SET `premium_points` = `premium_points` + 200 WHERE `id` = ' .. account_id .. ';')
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Dostales 200 premium points!")
			setPlayerStorageValue(cid, 123421, 1)
		end
		if (spr == 30 and getPlayerStorageValue(cid, 123621) == -1) then
			db.executeQuery('UPDATE `accounts` SET `premium_points` = `premium_points` + 200 WHERE `id` = ' .. account_id .. ';')
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Dostales 200 premium points!")
			setPlayerStorageValue(cid, 123621, 1)
		end
		if (spr == 40 and getPlayerStorageValue(cid, 123821) == -1) then
			db.executeQuery('UPDATE `accounts` SET `premium_points` = `premium_points` + 200 WHERE `id` = ' .. account_id .. ';')
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Dostales 200 premium points!")
			setPlayerStorageValue(cid, 123821, 1)
		end
Da się jakość skrócić ten zapis w jedno?
Próbowałem z forem
Code:
		for i=1,10 do
			if(spr == 10*i and getPlayerStorageValue(cid, 123321+i) == -1) then
				db.executeQuery('UPDATE `accounts` SET `premium_points` = `premium_points` + 200 WHERE `id` = ' .. account_id .. ';')
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Dostales 200 premium points!")
				setPlayerStorageValue(cid, 123321+i, 1)
			end
		end
pętla for działa ale if już nie przepuszcza.
 
Lua:
local wtf = {
	[10] = 123321
	[20] = 123421
	[30] = 123621
	[40] = 123821
}

if(wtf[spr] ~= nil) then
	if(getPlayerStorageValue(cid, wtf[spr]) == -1) then
		db.executeQuery('UPDATE `accounts` SET `premium_points` = `premium_points` + 200 WHERE `id` = ' .. account_id .. ';')
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Dostales 200 premium points!")
		setPlayerStorageValue(cid, wtf[spr], 1)
	end
end
Pokombinuj z takim czymś, możesz mieć błędy dot. nieistniejącego indeksu, który [błąd] powinien niby zniknąć z pierwszym ifem, ale ja zawsze miałem z tym problem więc pewny się nie czuje ;p
 
po dodaniu bez modyfikacji login.lua nie działa,
po modyfikacji tego
Lua:
local wtf = {
	[10] = 123321,
	[20] = 123421,
	[30] = 123621,
	[40] = 123821
}
login.lua działa ale skrypt już nie
 
Code:
for i = 1, 10 do
	if spr == (10 * i) and getCreatureStorage(cid, 123321 + ((i - 1) * 200)) == EMPTY_STORAGE then
		db.query('UPDATE `accounts` SET `premium_points` = `premium_points` + 200 WHERE `id` = '.. getPlayerAccountId(cid) ..';')
		doCreatureSetStorage(cid, 123321 + ((i - 1) * 200), 1)
	end
end
 
ok, poprawiłem mojego fora, działa dobrze tylko teraz mam problem ^^ jak wbije na jedną postać dostaje pkt i przypisuje storage, jak wbije na inna postać na tym samym koncie to znowu dostaje pkt i storage. Dałoby się to jakoś zablokować aby tylko jedna postać z konta dostawała pkt?
 
Last edited:
Raczej na storages się nie da bo to playera dotyczy. Możesz sobie do account dopisać jakąś kolumnę o nazwie skrypt i tam wpisywać jakieś swoje wartości które ułatwią Ci sprawdzanie czy dane konto dostało już darmowe punkty.
 
ja napisałem funkcje account storages, wejdź sobie w tematy rozpoczęte by azi.
 
Back
Top