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

[Poprawa] System punktów za metiny


Rekomendowane odpowiedzi

Opublikowano

Proszę o poprawę:

 

quest SystemPunktow begin
	state start begin
		when login or levelup with pc.get_level() >= 1 begin
			setstate(odbierz_misje)
		end
	end
	state odbierz_misje begin
		when letter begin
			send_letter(" Zdobywaj punkty ")
			local v = find_npc_by_vnum(20011)
			if v == 0 then
			else
			target.vid("__TARGET__", v,"Uriel")
		end
		when button or info begin
			say_title(" Punkty za bicie metinów. ")
			say(" Zdobywaj punkty za bicie metinów. Udaj się do Uriela. ")
		end
		when __TARGET__.target.click begin
			target.delete("__TARGET__")
			say_title("Uriel:")
			say(" Witaj "..pc.get_name().." mam do Ciebie ")
			say(" dobrą wiadomość. ")
			say(" Za bicie metinów będziesz otrzymywał punkty. ")
			say(" Punktów  otrzymasz tyle o jakim lvl rozbiłeś metina. ")
			say(" Punkty możesz wymieniać na + do statystyk, hp, int, atak, zręczność. ")
			clear_letter()
			setstate(drop)
		end
	end
	state drop begin
		when 8001.kill begin
			pc.give_item2(9994, 5)
			end
		end
		when 8002.kill begin
			pc.give_item2(9994, 10)
			end
		end
		when 8003.kill begin
			pc.give_item2(9994, 15)
			end
		end
		when 8004.kill begin
			pc.give_item2(9994, 20)
			end
		end
		when 8005.kill begin
			pc.give_item2(9994, 25)
			end
		end
		when 8006.kill begin
			pc.give_item2(9994, 30)
			end
		end
		when 8007.kill begin
			pc.give_item2(9994, 35)
			end
		end
		when 8008.kill begin
			pc.give_item2(9994, 40)
			end
		end
		when 8009.kill begin
			pc.give_item2(9994, 45)
			end
		end
		when 8010.kill begin
			pc.give_item2(9994, 50)
			end
		end
		when 8011.kill begin
			pc.give_item2(9994, 55)
			end
		end
		when 8012.kill begin
			pc.give_item2(9994, 60)
			end
		end
		when 8013.kill begin
			pc.give_item2(9994, 65)
			end
		end
		when 8014.kill begin
			pc.give_item2(9994, 70)
			end
		end
		when 8024.kill begin
			pc.give_item2(9994, 75)
			end
		end
		when 8025.kill begin
			pc.give_item2(9994, 80)
			end
		end
		when 8026.kill begin
			pc.give_item2(9994, 85)
			end
		end
		when 8027.kill begin
			pc.give_item2(9994, 90)
			end
		end
	setstate(wymiana)
	end
	state wymiana begin
		when 20011.chat begin
			say_title(" Wymień punkty na statystyki. ")
			say(" Czy chcesz wymienić punkty statystyk? ")
			say(" 5pkt red/blue potki 200 ")
			say(" 55pkt fiol/ziel potki 200 ")
			say(" 155pkt 20pz/1int/4atk/1zre ")
			local s = select("Wymieniam","Nie wymieniam")
				if s == 1 then
				if pc.count_item(9994) >= 5 then
					local rand = math.random(2)
					if rand == 1 then
					pc.give_item2(27003, 200)
					pc.remove_item(9994, 5)
					else
					if rand == 2 then
					pc.give_item2(27006, 200)
					pc.remove_item(9994, 5)
				else
				if pc.count_item(9994) >= 55 then
					local rand = math.random(2)
					if rand == 1 then
						pc.give_item2(27105, 200)
						pc.remove_item(9994, 55)
					else
					if rand == 2 then
						pc.give_item2(27102, 200)
					end
				else
				if pc.count_item(9994) >= 155 then
					local rand = math.random(4)
					if rand == 1 then
						affect.add_collect(apply.CON, 20, 60*60*24*365*60)
						pc.remove_item(9994, 155)
					else
					if rand == 2 then
						affect.add_collect(apply.INT, 1, 60*60*24*365*60)
						pc.remove_item(9994, 155)
					else
					if rand == 3 then
						affect.add_collect(apply.STR, 4, 60*60*24*365*60)
						pc.remove_item(9994, 155)
					else
					if rand == 4 then
						affect.add_collect(apply.DEX, 1, 60*60*24*365*60)
						pc.remove_item(9994, 155)
					end
				else
				if pc.count_item(9994) >= 255 then
					local rand = math.random(4)
					if rand == 1 then
						affect.add_collect(apply.CON, 50, 60*60*24*365*60)
						pc.remove_item(9994, 255)
					else
					if rand == 2 then
						affect.add_collect(apply.INT, 3, 60*60*24*365*60)
						pc.remove_item(9994, 255)
					else
					if rand == 3 then
						affect.add_collect(apply.STR, 10, 60*60*24*365*60)
						pc.remove_item(9994, 255)
					else
					if rand == 4 then
						affect.add_collect(apply.DEX, 3, 60*60*24*365*60)
						pc.remove_item(9994, 255)
					end
				else
				if pc.count_item(9994) >= 505 then
					local rand = math.random(4)
					if rand == 1 then
						affect.add_collect(apply.CON, 90, 60*60*24*365*60)
						pc.remove_item(9994, 505)
					else
					if rand == 2 then
						affect.add_collect(apply.INT, 10, 60*60*24*365*60)
						pc.remove_item(9994, 505)
					else
					if rand == 3 then
						affect.add_collect(apply.STR, 20, 60*60*24*365*60)
						pc.remove_item(9994, 505)
					else
					if rand == 4 then
						affect.add_collect(apply.DEX, 10, 60*60*24*365*60)
						pc.remove_item(9994, 505)
					end
				else
				if pc.count_item(9994) >= 755 then
					local rand = math.random(4)
					if rand == 1 then
						affect.add_collect(apply.CON, 120, 60*60*24*365*60)
						pc.remove_item(9994, 755)
					else
					if rand == 2 then
						affect.add_collect(apply.INT, 16, 60*60*24*365*60)
						pc.remove_item(9994, 755)
					else
					if rand == 3 then
						affect.add_collect(apply.STR, 30, 60*60*24*365*60)
						pc.remove_item(9994, 755)
					else
					if rand == 4 then
						affect.add_collect(apply.DEX, 16, 60*60*24*365*60)
						pc.remove_item(9994, 755)
					end
				else
				if pc.count_item(9994) >= 1005 then
					local rand = math.random(4)
					if rand == 1 then
						affect.add_collect(apply.CON, 150, 60*60*24*365*60)
						pc.remove_item(9994, 1005)
					else
					if rand == 2 then
						affect.add_collect(apply.INT, 20, 60*60*24*365*60)
						pc.remove_item(9994, 1005)
					else
					if rand == 3 then
						affect.add_collect(apply.STR, 40, 60*60*24*365*60)
						pc.remove_item(9994, 1005)
					else
					if rand == 4 then
						affect.add_collect(apply.DEX, 20, 60*60*24*365*60)
						pc.remove_item(9994, 1005)
					end
				else
				if pc.count_item(9994) >= 1255 then
					local rand = math.random(4)
					if rand == 1 then
						affect.add_collect(apply.CON, 200, 60*60*24*365*60)
						pc.remove_item(9994, 1255)
					else
					if rand == 2 then
						affect.add_collect(apply.INT, 25, 60*60*24*365*60)
						pc.remove_item(9994, 1255)
					else
					if rand == 3 then
						affect.add_collect(apply.STR, 100, 60*60*24*365*60)
						pc.remove_item(9994, 1255)
					else
					if rand == 4 then
						affect.add_collect(apply.DEX, 25, 60*60*24*365*60)
						pc.remove_item(9994, 1255)
					end
				else
				if pc.count_item(9994) >= 1505 then
					local rand = math.random(4)
					if rand == 1 then
						affect.add_collect(apply.CON, 400, 60*60*24*365*60)
						pc.remove_item(9994, 1505)
					else
					if rand == 2 then
						affect.add_collect(apply.INT, 35, 60*60*24*365*60)
						pc.remove_item(9994, 1505)
					else
					if rand == 3 then
						affect.add_collect(apply.STR, 120, 60*60*24*365*60)
						pc.remove_item(9994, 1505)
					else
					if rand == 4 then
						affect.add_collect(apply.DEX, 35, 60*60*24*365*60)
						pc.remove_item(9994, 1505)
					end
				end
			end
		end
	end
end

 


Witam, potrzebuje poprawy questa, najlepiej zeby ktos go sobie sam wgral, nie chce mi sie robic ss i wrzucac do neta.
Zadanie questa:
1.na 1lvl wyskakuje z lewej srtony na liscie questow ten quest
2.po kliknieciu na quest z listy questow otwiera nam sie okienko z informacja ze mamy isc do uriela, nad urielem wyswietla sie strzalka
3.idziemy do uriela, po kliknieciu na niego pokazuje nam sie okienko informacyjne (tylko za 1razem), jakas tam rozmowa...
4.po przeczytaniu wiadomosci po rozbiciu metina otrzymujemy punkty
5.mamy odpowiednia ilosc punktow, idziemy do uriela wyswietla nam sie okienko "wymien punkty..."
6.punkty mozemy wymienic u uriela na nagrody potki i statystyki, statystyki sa dodane na zawsze
7.quest nie jest dokonczony, brakuje kilku sayow z info o nagrodzie i rozmowy z urielem, ale sam to sobie zrobie, chodzi mi tylko aby ktos doprowadzil tego questa do stanu stabilnego dzialania. za pomoc daje 2-dniowy limit like-ów

 

@edit

zapomnialem dodac prefixu, przepraszam, prosze o nie usuwanie tematu

Opublikowano


http://wklej.to/Nvr12

Nie mam dziś głowy, ale spróbuj tego. Nie chciało mi się rozbijać wymiany na tablicę bo da się to zrobić mega krócej, ale to innym razem. Ta wersja powinna działać lecz ręki nie dam sobie uciąć, nie testowałem tego. Daj znać, co i jak.

 

@edit

zamień:

 

when 20011.chat begin

na:

 

when 20011.chat."Wymień punkty za metiny" begin

 

 

oraz:

when kill with npc.get_race() >= 8001 and npc.get_race() <= 8027

 

when kill with npc.get_race() >= 8001 and npc.get_race() <= 8014 or npc.get_race() >= 8024 and npc.get_race() <= 8027 begin

 

umarł

Opublikowano

Wszytko jest ok do momentu gdy chce wymienic punkty na staty.
Stat nie dodaje, punktów nie zabiera.
Zle wyzej napisalem, wymienia punkty ale daje tylko po 1 za metina zamiast po 5 z 5lvl 10 z 10lvl itd

@edit
nie powinno byc zamiast

pc.give_item2(9994, SystemPunktow.points(npc.get_race()))

to:

pc.give_item2(9994, SystemPunktow.points.lvl(npc.get_race()))

lub zamiast

state drop begin
		function points(z)
				local lvl = {
					[8001] = 5,
					[8002] = 10,
					[8003] = 15,
					[8004] = 20,
					[8005] = 25,
					[8006] = 30,
					[8007] = 35,
					[8008] = 40,
					[8009] = 45,
					[8010] = 50,
					[8011] = 55,
					[8012] = 60,
					[8013] = 65,
					[8014] = 70,
					[8024] = 75,
					[8025] = 80,
					[8026] = 85,
					[8027] = 90
				}
			return lvl[z]
		end
		
		when kill with npc.get_race() >= 8001 and npc.get_race() <= 8014 or npc.get_race() >= 8024 and npc.get_race() <= 8027 begin
			pc.give_item2(9994, SystemPunktow.points(npc.get_race()))
		end

to

state drop begin
		when kill with npc.get_race() >= 8001 and npc.get_race() <= 8014 or npc.get_race() >= 8024 and npc.get_race() <= 8027 begin
			local lvl = {
			[8001] = "5",
			[8002] = "10",
			[8003] = "15",
			[8004] = "20",
			[8005] = "25",
			[8006] = "30",
			[8007] = "35",
			[8008] = "40",
			[8009] = "45",
			[8010] = "50",
			[8011] = "55",
			[8012] = "60",
			[8013] = "65",
			[8014] = "70",
			[8024] = "75",
			[8025] = "80",
			[8026] = "85",
			[8027] = "90"
			}
			pc.give_item2(9994, lvl[npc.get_race()])
		end
	end
Opublikowano

Zrób tak, żeby zadziałało - ja podałem tylko przykład i napisałem, że nie daję ręki uciąć czy zadziała. Co do bonusów to nie mam pomysłu.

 

umarł

Opublikowano

cos pokombinuje dam znac jak zadziala (lub nie :D )

 

 

@edit

pojawil sie kolejny błąd:

jezeli mamy >= 55 punktow nie otrzymujemy nagrody za 55 pkt tylko otrzymujemy nagrode za 5pkt

Czy zamniana kolejnosci nagrod zadeklarowanych w quescie da cos tzn jest kolejnosc >=5, >=55, zmieniam na >=55, >=5?

 

@edit

problem z nagrodami rozwiazany

 

@edit

moze mam problem w navicat ze daje po 1?

Opublikowano

Bardzo możliwe. O ile się nie mylę to flaga itemu powinna być ustawiona na 20. Ewentualnie zrób jakiś prosty when w którym nadasz sobie pc.give_item2(id, ilosc) i sprawdź czy błąd jest w queście czy jednak daje jedną sztukę.

 

umarł

Opublikowano

obecnie mam takie cos:

when kill with npc.get_race() >= 8001 and npc.get_race() <= 8014 or npc.get_race() >= 8024 and npc.get_race() <= 8027 begin
			local lvl = {
			[8001] = 5,
			[8002] = 10,
			[8003] = 15,
			[8004] = 20,
			[8005] = 25,
			[8006] = 30,
			[8007] = 35,
			[8008] = 40,
			[8009] = 45,
			[8010] = 50,
			[8011] = 55,
			[8012] = 60,
			[8013] = 65,
			[8014] = 70,
			[8024] = 75,
			[8025] = 80,
			[8026] = 85,
			[8027] = 90
			}
			pc.give_item2(9994, lvl)
		end

 

flag 20, ale chyba zmienie ta czesc questa na:

                when 8001.kill begin
			pc.give_item2(9994, 5)
		end
		when 8002.kill begin
			pc.give_item2(9994, 10)
		end
		when 8003.kill begin
			pc.give_item2(9994, 15)
		end
		when 8004.kill begin
			pc.give_item2(9994, 20)
		end
		when 8005.kill begin
			pc.give_item2(9994, 25)
		end
		when 8006.kill begin
			pc.give_item2(9994, 30)
		end
		when 8007.kill begin
			pc.give_item2(9994, 35)
		end
		when 8008.kill begin
			pc.give_item2(9994, 40)
		end
		when 8009.kill begin
			pc.give_item2(9994, 45)
		end
		when 8010.kill begin
			pc.give_item2(9994, 50)
		end
		when 8011.kill begin
			pc.give_item2(9994, 55)
		end
		when 8012.kill begin
			pc.give_item2(9994, 60)
		end
		when 8013.kill begin
			pc.give_item2(9994, 65)
		end
		when 8014.kill begin
			pc.give_item2(9994, 70)
		end
		when 8024.kill begin
			pc.give_item2(9994, 75)
		end
		when 8025.kill begin
			pc.give_item2(9994, 80)
		end
		when 8026.kill begin
			pc.give_item2(9994, 85)
		end
		when 8027.kill begin
			pc.give_item2(9994, 90)
		end

 

lub zmienie ilosc potrzebnych punktow do wymiany.

 

Chcialbym jeszcze ustawic ograniczenia lvlowe ze np 90 lvl nie bedzie mial dropa z metka 5, czy takie cos wystarczy? :

when 8001.kill with pc.get_level() >= 1 with pc.get_level() <= 14 begin
	pc.give_item2(9994, 5)
end

 

tylko nie wiem czy w pierwszej linijce (wyzej) miedzy pc.get_level() >= 1 a pc.get_level() <= 14 musi byc with czy or czy and

 

 

@edit

jednak bd musial whenami osobno kazdy metin zrobic bo inaczej nie dziala

Opublikowano

1. nie pisz

when xx.kill begin
tylko
when kill with npc.get_race() == xx begin

2. przedział lvlowy:

when kill with npc.get_race() == xx and pc.get_level() >= min_lvl and pc.get_level() <= max_lvl begin

 

Co do tego, że nie działa. Zamień:

 

pc.give_item2(9994, lvl)

na:

 

pc.give_item2(9994, lvl[npc.get_race()][1])

 

umarł

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...