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

Jak zacząć lua...

W tym przypadku najlepsza tabela by bylo:

ja pierdolę, bez różnicy (różnica jeśli jest to tak mała, że można ją pominąć) w takim skrypciku >.<

równie dobrze można tak:

Lua:
for i = 1, #nagrody/2 do
					doPlayerAddItem(cid, nagrody[i*2-1], nagrody[i*2])
				end
 
Niepotrzebne loopy w przypadku pierwszego i niepotrzebne dzialania arytmetyczne w przypadku drugiego. Nie musisz pokazywac jakim to lua zawodowcem jestes przez wprowadzanie zbytecznej kupy.
 
Niepotrzebne loopy w przypadku pierwszego i niepotrzebne dzialania arytmetyczne w przypadku drugiego. Nie musisz pokazywac jakim to lua zawodowcem jestes przez wprowadzanie zbytecznej kupy.

kurczę, a chciałem być taki fajny

to jak już mnie cisniesz to pokaż najlepsze rozwiązanie to może mnie nauczysz
 
Starego psa nowych sztuczek nie nauczysz.

niewiem jak z psami, mam 2 koty, jeden ma jakieś 10 lat, a drugi 2 i jakoś ta starsza ogarnia co i jak, np. jak otworzyć nowe drzwi o_O

to może pokażesz jak otwierasz drzwi arkady magii gdzie panuje księżycowa królowa Lua?
 
Ogarnie ktoś mi ten skrypt, bo przecież już mnie kurwica bierze?:
Code:
local zdarzenie = math.random (1,2)
local kamien = 7078

function onUse(cid, pickaxe, fromPosition, kamien, toPosition) 
	if kamien.id == kamien and zdarzenie == 1 then
	doSendMagicEffect(getThingPos(kamien.id), CONST_ME_POFF)
	doPlayerAddItem(cid, 5880)
	doRemoveItem(kamien.uid)	
		elseif kamien.id == kamien and zdarzenie == 2 then
		doPlayerSendTextMessage(cid,22,"Nie tym razem!") 
		doSendMagicEffect(getThingPos(kamien), CONST_ME_POFF)
		doRemoveItem(kamien.uid)
			else 
			doPlayerSendCancel(cid,"Cos jest nie tak!")
			
				return TRUE
	end
end

0 błędów w konsoli, ale zawsze wywala cancel ;/
 
zmień
function onUse(cid, pickaxe, fromPosition, kamien, toPosition)

na

function onUse(cid, item, itemEx, fromPosition, toPosition)

- - - Updated - - -

i to
local zdarzenie = math.random (1,2)

daj pod funkcją onUse
 
nadal wywala cancel, blad w silniku:
20p46g.png


- - - Updated - - -

bump
 
tak, śmiało zjedzcie mnie jak to na polish board przystało, jasne że gówno umiem w lua ale bardziej obchodzi mnie to że testowałem i działa jak chciałem
przypuszczam że skrypt miał wyglądać mniej więcej tak:
Code:
<action itemid="5941" event="script" value="tools/jakiskamien.lua"/>
^ id na którym testowałem, narzędzie musi posiadać use with... chyba że skrypt miał działać od samego klikania łapami use na kamień to wtedy w action dodajesz id kamienia i z kodu usuwasz wszystkie słowa Ex prócz pierwszej linii
Lua:
function onUse(cid, item, fromPosition, itemEx, toPosition) 
local zdarzenie = math.random (1,2)
local kamien = 7078
	if itemEx.itemid == kamien and zdarzenie == 1 then
		doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_POFF)
		doPlayerAddItem(cid, 5880)
		doRemoveItem(itemEx.uid)	
	elseif itemEx.itemid == kamien and zdarzenie == 2 then
		doPlayerSendTextMessage(cid,22,"Nie tym razem!") 
		doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_POFF)
		doRemoveItem(itemEx.uid)
	else 
		doPlayerSendCancel(cid,"Tego nie wykopiesz!")	
	end
		return TRUE
end
 
tak, śmiało zjedzcie mnie jak to na polish board przystało, jasne że gówno umiem w lua ale bardziej obchodzi mnie to że testowałem i działa jak chciałem
przypuszczam że skrypt miał wyglądać mniej więcej tak:
Code:
<action itemid="5941" event="script" value="tools/jakiskamien.lua"/>
^ id na którym testowałem, narzędzie musi posiadać use with... chyba że skrypt miał działać od samego klikania łapami use na kamień to wtedy w action dodajesz id kamienia i z kodu usuwasz wszystkie słowa Ex prócz pierwszej linii
Lua:
function onUse(cid, item, fromPosition, itemEx, toPosition) 
local zdarzenie = math.random (1,2)
local kamien = 7078
	if itemEx.itemid == kamien and zdarzenie == 1 then
		doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_POFF)
		doPlayerAddItem(cid, 5880)
		doRemoveItem(itemEx.uid)	
	elseif itemEx.itemid == kamien and zdarzenie == 2 then
		doPlayerSendTextMessage(cid,22,"Nie tym razem!") 
		doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_POFF)
		doRemoveItem(itemEx.uid)
	else 
		doPlayerSendCancel(cid,"Tego nie wykopiesz!")	
	end
		return TRUE
end
Twój skrypt to totalna żenada. Najpierw radziłbym się samemu do szkolić, a potem szkolić innych.

Prima, nie widzę sensu stworzenia zmiennej "zdarzenie", która przechowuje obiekt w skrypcie, który powinien być użyty tylko raz. Otóż losowanie nie zwróci nic innego niż liczby z zakresu <1,2>. Duo, ten fragment kodu "getThingPos(itemEx.uid)" jest równoznaczny z tym "toPos". Nie ma potrzeby męczyć silnika, aby pobrać wartość, którą ma się na talerzu. Trio, nie widzę potrzeby użycia "TRUE" na prawie samym końcu zamiast "true". To nie są średniowieczne silniki gdzie jako rezultat funkcji zwracano liczbę ("FALSE" aka 0, "TRUE" aka 1).

Oprócz tego stylistyka skryptu to jest totalna masakra. Jeśli już publikujesz jakiś skrypt, to powinieneś przybrać go w jakąś formę: mówię tutaj o tabulatorach i innych bzdetach upiększających. Mam nadzieje, że moje skromne uwagi pomogą Tobie jak i innym pisać lepsze skrypty.
 
Twój skrypt to totalna żenada. Najpierw radziłbym się samemu do szkolić, a potem szkolić innych.

Prima, nie widzę sensu stworzenia zmiennej "zdarzenie", która przechowuje obiekt w skrypcie, który powinien być użyty tylko raz. Otóż losowanie nie zwróci nic innego niż liczby z zakresu <1,2>. Duo, ten fragment kodu "getThingPos(itemEx.uid)" jest równoznaczny z tym "toPos". Nie ma potrzeby męczyć silnika, aby pobrać wartość, którą ma się na talerzu. Trio, nie widzę potrzeby użycia "TRUE" na prawie samym końcu zamiast "true". To nie są średniowieczne silniki gdzie jako rezultat funkcji zwracano liczbę ("FALSE" aka 0, "TRUE" aka 1).

Oprócz tego stylistyka skryptu to jest totalna masakra. Jeśli już publikujesz jakiś skrypt, to powinieneś przybrać go w jakąś formę: mówię tutaj o tabulatorach i innych bzdetach upiększających. Mam nadzieje, że moje skromne uwagi pomogą Tobie jak i innym pisać lepsze skrypty.

woł snejk kogoś pociśnął, co tu się dzieje, lanceq spierdala z pb, snejk cisnie noooo łow
 
snejk said:
Oprócz tego stylistyka skryptu to jest totalna masakra. Jeśli już publikujesz jakiś skrypt, to powinieneś przybrać go w jakąś formę: mówię tutaj o tabulatorach i innych bzdetach upiększających. Mam nadzieje, że moje skromne uwagi pomogą Tobie jak i innym pisać lepsze skrypty.
Tabulatory nie mają żadnego technicznego działania i tak jak sam napisałeś są poprawką kosmetyczną. Kwestia wyglądu zawsze opierała się o subiektywizm, a ja nie piszę kodu dla Ciebie - robię to zatem tak aby był czytelny dla mnie.
 
Twój skrypt to totalna żenada. Najpierw radziłbym się samemu do szkolić, a potem szkolić innych.

Prima, nie widzę sensu stworzenia zmiennej "zdarzenie", która przechowuje obiekt w skrypcie, który powinien być użyty tylko raz. Otóż losowanie nie zwróci nic innego niż liczby z zakresu <1,2>. Duo, ten fragment kodu "getThingPos(itemEx.uid)" jest równoznaczny z tym "toPos". Nie ma potrzeby męczyć silnika, aby pobrać wartość, którą ma się na talerzu. Trio, nie widzę potrzeby użycia "TRUE" na prawie samym końcu zamiast "true". To nie są średniowieczne silniki gdzie jako rezultat funkcji zwracano liczbę ("FALSE" aka 0, "TRUE" aka 1).

Oprócz tego stylistyka skryptu to jest totalna masakra. Jeśli już publikujesz jakiś skrypt, to powinieneś przybrać go w jakąś formę: mówię tutaj o tabulatorach i innych bzdetach upiększających. Mam nadzieje, że moje skromne uwagi pomogą Tobie jak i innym pisać lepsze skrypty.

Opierałem się o jego skrypt zmieniając wartości na szybko ale ja w przeciwieństwie do wszystkich innych z tego tematu z tobą razem wziętym wkleiłem kod, który działa. Przepisałem go na swój sposób nie patrząc na płynność działania tylko na to czy w ogóle działa.

Co do formatowania to kwestia osobista osoby która pisze skrypt a różnice w formatowaniu czy w sposobie zapisania kodu spowalniają zwykle skrypt o mniej niż 0,02 sekundy, więc nie widzę sensu optymalizacji kodu, gdy ma on mniej niż 200 linii. Gdyby każdy myślał jak ty każdy skrypt lua wyglądał by mniej więcej tak:
Lua:
function onUse(cid, item, fromPosition, itemEx, toPosition)	if itemEx.itemid == 7078 then	doRemoveItem(itemEx.uid)	doSendMagicEffect(toPos, CONST_ME_POFF)	if math.random (1,2) == 1 then	doPlayerAddItem(cid, 5880)	else	doPlayerSendTextMessage(cid,22,"Nie tym razem!")	end	else	doPlayerSendCancel(cid,"Tego nie wykopiesz!")	end	return true	end
 
Tabulatory nie mają żadnego technicznego działania i tak jak sam napisałeś są poprawką kosmetyczną. Kwestia wyglądu zawsze opierała się o subiektywizm, a ja nie piszę kodu dla Ciebie - robię to zatem tak aby był czytelny dla mnie.

tylko musisz się liczyć z tym, że jak kiedyś bd miał p;roblem ze skryptem i go nie wytabujesz to pierwsze komentarze będą najeżdżały byś to wytabował bo bolą oczy
 
(...) formatowaniu czy w sposobie zapisania kodu spowalniają zwykle skrypt o mniej niż 0,02 sekundy, więc nie widzę sensu optymalizacji kodu,(...)


eb6.jpg
 
Back
Top