Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Rekomendowane odpowiedzi

Opublikowano

Siemka, mam problem. Zaczynam dopiero i nie wiem jak to zrobić.

Dokładnie mam tablicę i pętle:

 

local id= {19,59}
for item 1, id do
pc.give_item2(id)
 
 
I teraz jest Problem.. Bo pętla będzie się ciągle powtarzała dopóki nie osiągnie tu id 59 z tablicy.
I np jak doda teraz na dole:
 
pc.remove_item(id_przedmiotu)
 
To zabierze mi tyle przedmiotów ile pętla razy przejdzie.......... Wie ktoś jak to poprawnie napisać żeby pęta normalnie działała ale zabierała na koniec tylko 1 przedmioty? 
 
 
 
 
Opublikowano

Chcesz żeby np za tablicy {1,2,3,4,5,6,7,8,9,0} dawało te wszystkie itemy, ale ten 0 zabrało?

Dokładnie to chce tak :)

W tablicy są punkty (mój system) I gdy punkt bedzie dobry to zabierze przedmiot. Ale gdy będzie zły, to nie zabierze przedmiotu. 

Tylko jest problem tak jak napisałem. Powtarza mi pętle i gdy dam warunek np:

if i >=0 then

pc.remove_item(id)

 

wtedy działa tak samo.. Zabiera tyle przedmiotów ile razy warunek się spełni. Ja chce żeby zabrało 1 Przedmiot nawet gdy się spełni 200 warunków i nawet gdy będzie to 1 warunek.

~~ Ale jeżeli będzie 0 to nie zabierze.. Trochę skomplikowane xD ale to jest duży system bo pisałem go 2 tygodnie i ma 5k linijek kodu.. Została mi ta tablica nad którą się męczę już 1h......

Mogę zrobić inaczej ale wtedy bym musiał dodać 100 kolejnych linijek bo tyle mam funkcji ale po co skoro da się na 100% zrobić to pętlą.. Pomóż prosze. 

Opublikowano

Kurwa, nie rozumiem Cie. xD

To patrz na przykładzie skilli od kolesia:

 

local skill= {
[0] = {
[1] = {1,5},
[2] = {16,20},
},
local g = pc.get_skill_group()

for i = skill[pc.job][g][1], skill[pc.job][g][2] do

local x = pc.get_skill_level(i)

 

if x <= 19 or x >=30 then
say("Zly skil to: ", i.. " jego poziom to: ", x.."")
elseif x >=20 or x <=30 then
say("Dobry skill to: ", i.." jest na poziomie: ", x.."")
pc.remove_item(id)
 
 
 
 
gdy tak jest to zapierdoli mi 5x Itemów bo pętla będzie szła 5 razy, tyle ile jest w tablicy.
 
Jak to zrobić żeby zabrało 1 przedmiot gdy:
np 1 lub 5 razy będzie say("Dobry skill to: ", i.." jest na poziomie: ", x.."")
 
A gdy bedzie 5 razy: say("Zly skil to: ", i.. " jego poziom to: ", x.."")
To nie zabierze przedmiotu ? :D to juz wyższa szkoła Jazdy xDDDDDDDD
 
 
Endymion się wystraszył to już Jest Koniec. Nikt nie da rady xDDDD
Opublikowano

pc.remove_item(id)

a dajesz zeby 1 sie usuwal ? w sesie ze 

 

pc.remove_item(123, 1)

a nie 

pc.remove_item(123)

?:D

Opublikowano

for i = 1,5 do

if x > y then

say("dobrze")

pc.setqf("zab", 1)

else

say("zle")

end

end

 

if pc.getqf("zab") == 1 then

pc.remove_item(vnum, 1)

pc.setqf("zab", 0)

end

 

Opublikowano

for i = 1,5 do

if x > y then

say("dobrze")

pc.setqf("zab", 1)

else

say("zle")

end

end

 

if pc.getqf("zab") == 1 then

pc.remove_item(vnum, 1)

pc.setqf("zab", 0)

end

Tak też to chciałem rozwiązać z: pc.setqf

Ale czy to jest Optymalne :D ?

Opublikowano

Działa? Działa. Ktoś Ci będzie patrzył w questy? Nie będzie. Zresztą co tu ma być nieoptymalnie? 

for i = 1,5 do
	if x > y[i] then
		say("dobrze")
		if pc.getqf("zab") == 0 then
			pc.setqf("zab", 1)
		end
	else
		say("zle")
	end
end

if pc.getqf("zab") == 1 then
	pc.remove_item(vnum, 1)
	pc.setqf("zab", 0)
end

Masz, teraz nie będzie parę razy ustawiać flagi na 1.

 

Opublikowano

Działa? Działa. Ktoś Ci będzie patrzył w questy? Nie będzie. Zresztą co tu ma być nieoptymalnie? 

for i = 1,5 do
	if x > y[i] then
		say("dobrze")
		if pc.getqf("zab") == 0 then
			pc.setqf("zab", 1)
		end
	else
		say("zle")
	end
end

if pc.getqf("zab") == 1 then
	pc.remove_item(vnum, 1)
	pc.setqf("zab", 0)
end

Masz, teraz nie będzie parę razy ustawiać flagi na 1.

Dziękuje. Widać znasz się na robocie. 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...