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

Witam.

 

Chciałem by po kliknięciu na NPC mająć określoną klasę oraz grupę skilli dawało inny item.

 

 

Zrobiłem 2 wersje :

Żadna nie działa.

quest test begin
    when 9001.click begin
    tablica = {
    {0, 1, 290}, -- klasa, grupa skilli, item
    {0, 2, 291},
    }
    r = table.getn(tablica)
    pc.give_item2(tablica[r][pc.get_job()][1], tablica[r][pc.get_skill_group()][2], tablica[r][3])
    
quest test begin
    when 9001.click begin
    tablica = {
    {0, 290}, -- klasa, item
    {1, 291},
    }
    r = table.getn(tablica)
    pc.give_item2(tablica[r][pc.job][1], tablica[r][2])

Mam jeszcze pytanie w jaki sposob wykorzystać funkcje

 

 

item.select()

 

Bo np w tym quescie bonus nadaje mi na item który kliknę tj. 22040 a nie na 19 ;/

 

quest bonusy begin
    state start begin
        when 22040.use begin
            if pc.countitem(19) == 1 then
                z = item.select(19)
                item.get_vnum(z)
                item.set_value(0, 1, 1500)
            end
        end
    end
end

 

Prosze o pomoc.

Opublikowano
-------------xVet.pl-Team------------
--Quest powstał dla userów MPCForum--
--	Sprzedawanie i publikowanie    --
--			Zabronione!			   --
-------------------------------------


quest baran_860 begin
	state start begin
		when 9001.click begin
			tablica = {
				--Wojownik--
				[0] = {
						--Gr skili--   -- Item, ilość --
						[1]			 = {19, 1},
						[2]			 = {19, 1},
						},
						
				--Ninja--		
				[1] = {
						--Gr skili--   -- Item, ilość --
						[1]			 = {19, 1},
						[2]			 = {19, 1},
						},
						
				--Sura--		
				[2] = {
						--Gr skili--   -- Item, ilość --
						[1]			 = {19, 1},
						[2]			 = {19, 1},
						},
						
						
				--Szaman--		
				[3] = {
						--Gr skili--   -- Item, ilość --
						[1]			 = {19, 1},
						[2]			 = {19, 1},
						},
						
						
						
			}
			pc.give_item2(tablica[pc.job()][pc.get_skill_group()][1], tablica[pc.job()][pc.get_skill_group()][2])
		end
	end
end

albo

pc.give_item2(tablica[pc.job()][pc.get_skill_group()][0], tablica[pc.job()][pc.get_skill_group()][1])

Nie pamiętam czy w lua elementy w tablicy są liczone od 0 czy od 1

8910814572903361049127.png

Opublikowano

z = item.select(19)
Wybierasz pozycję 19 w eq a nie item o id 19. Bez senus by było jak by to był item, skoro mogę mieć taki 10 w eq.

A więc zmienna z przechowuje item na pozycji 19, licząc pierwszą jako 0.

50596142255057180250.png

Opublikowano

@Nigahiga

 

Więc napisałem to teraz tak, zadziała ?

http://wklej.to/oNf2z

quest bonusy begin
	state start begin
		when 20005.use begin
		say("Wpisz ID przedmiotu")
		z = input()
			if tonumber(z) == "" then
				say("Podałeś błędną nazwę przedmiotu")
			else
				if pc.countitem(z) == 0 then
					say(" Nie masz takiego przedmiotu w ekwipunku ")
				elseif pc.countitem(z) == 1 then
					say(" Możesz dodac bonus do itemu ")
					slot = item.get_cell(z) -- pobiera slot w którym znajduje sie przedmiot o id z imputa
					item.select_cell(slot) -- wybiera ten przedmiot
					say("")
					say_reward("Wybrano pozycję: "..slot)
					item.set_value(0, 1, 1500) -- ustawia bonus w tym przedmiocie
				else
					tab = {}
					for i = 1 do
						slot2 = item.get_cell(z) -- pobiera pozycje przedmiotów
						say(slot2) -- wyświetla je
						table.insert(tab, slot2)
					end
					table.insert(tab, "Wyjdź ")
					
					say_title("W którym przedmiocie chcesz dać bonus? ")
					
					wybor = select.table(tab)
					
					if wybor >= table.getn(tab) then
						return
					end
					
					slot3 = item.get_cell(wybor)
					item.select_cell(slot3)
					item.set_value(0, 1, 1500)
					
					
				end
			end
		end
	end
end
	
Opublikowano

No ale skąd gracz będzie wiedział, że fms to id 290 albo 299 i jeszcze mu wytłumacz dlaczego tak a nie inaczej..?

Lepiej by było już zrobić to u npc, przeciągamy przedmiot i mamy z głowy wyszukiwanie, sprawdzanie itd..

50596142255057180250.png

Opublikowano

@Nigahiga

 

U mnie na serwerze obok nazw są również podane ID :)

Powiedz czy zadziała a resztą się nie martw :)

 

 

 

Edit nie działa, wgrywa się jednak nadal nadaje bonus na item którego użyję tj. 20005.

Dodatkowo ciągle wybiera pozycje . 31  w eq..

Opublikowano

slot = item.get_cell(z)
item.get_cell() nie przyjmuje argumentu, domyślnie zwraca pozycję użytego przedmiotu.

Jak chcesz znaleźć ten przedmiot to prędzej:

 

for i = 0, 89 do -- lecimy po eq
	if item.select_cell(i) then -- wybieramy każdy slot
		syschat("WYBRAŁEM PRZEDMIOT Z POZYCJI: "..i)
			if item.get_vnum() == z then -- sprawdzamy czy id przedmiotu ze slotu jest równe id szukanego przedmiotu
				syschat("UDAŁO SIĘ TO BYŁ SZUKANY PRZEDMIOT NA POZYCJI: "..i)
			else
				syscha("NIE UDAŁO SIĘ, TO NIE TEN ITEM")
			end
	end
end

50596142255057180250.png

Opublikowano

@Nigahiga

 

Mam teraz tak i działa jedynie gdy jest 1 przedmiot o takim ID, dodatkowo nadaje bonus tylko wtedy gdy mam item 40002 na 0 pozycji  w eq.

Gdy mam wiecej niz 1 przedmiot klikam nadac bonus i wywala channel.

 

 

quest bonusy begin
    state start begin
        when 40002.use begin
        say("Wpisz ID przedmiotu")
        z = tonumber(input())
            if tonumber(z) == "" then
                say("Podałeś błędną nazwę przedmiotu")
            else
                if pc.countitem(z) == 0 then
                    say(" Nie masz takiego przedmiotu w ekwipunku ")
                elseif pc.countitem(z) == 1 then
                    tab = {}
                    for i = 0, 89 do -- lecimy po eq
                        if item.select_cell(i) then -- wybieramy każdy slot
                            if item.get_vnum() == z then -- sprawdzamy czy id przedmiotu ze slotu jest równe id szukanego przedmiotu
                                syschat("Twój przedmiot znajduje się na pozycji: "..i)
                            end
                        end
                    end
                    say_title("Nadać bonus?")
                    say("")
                    if select("Tak", "Nie") == 1 then
                        item.set_value(0, 1, 1500) -- ustawia bonus w tym przedmiocie
                    end
                else
                    tab1 = {}
                    for a = 0, 89 do -- lecimy po eq
                        if item.select_cell(a) then -- wybieramy każdy slot
                            if item.get_vnum() == z then -- sprawdzamy czy id przedmiotu ze slotu jest równe id szukanego przedmiotu
                                table.insert(tab1, item.vnum)
                            end
                        end
                    end
                    table.insert(tab1, "Wyjdź ")
                    
                    say_title("W którym przedmiocie chcesz dać bonus? ")
                    
                    wybor = select_table(item_name(tab1))
                    
                    if wybor >= table.getn(tab1) then
                        return
                    end
                    
                    item.set_value(0, 1, 1500)
                    
                end
            end
        end
    end
end

 

Co poprawić  ?

Opublikowano

@Nigahiga

 

Zasada działania:

1) Wpisuje ID

2) Jeżeli brak itemu = brak reakcji

3) Jeżeli item x1 = szuka itemu, jego pozycji, po czym nadaje mu bonus

4) Jezeli item x2 lub więcej  = szuka itemow, zapisuje je w tablicy, wyswietla, wybieram ktory, nadaje bonus wybranemu itemkowi

 

Podpunkty 1 i 2 działają, 3 działa tylko gdy item pod który jest ustawiony quest (40002) jest na pozycji 0 w eq.

Podpunkt 4 nie działa, wywala channel w momencie kliknięcia "Ok" po wpisaniu ID :)

 

Przykład:

 

Wpisuje ID : 17 ( mam 1 szt w eq)

Szuka jego pozycji prawidłowo. Nie nadaje bonusu gdy item 40002 jest na innej pozycji niż 0, w przeciwnym wypadku wszystko działa poprawnie.

 

Wpisuje ID 19 ( mam 2 sztuki w eq )

Po wpisaniu i kliknięciu "Ok" wywala channel.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...