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

System punktów za metiny


Rekomendowane odpowiedzi

Opublikowano

Quest pozwalajacy na urozmaicenie rozgrywki na serwerach pvp napisany przezemnie, poprawiony przez z4z0l i Nexcoll

Opis systemu:

Po odebraniu misji od uriela, za rozbijanie metinów będziemy otrzymywać punkty.

Punktów otrzymamy tyle ile dany metin ma lvl (90lvl moze rozbic metin 5lvl i otrzyma punkty ale bedzie to dla niego nieoplacalne i nie bedzie bil bo malo punktow dostanie, wiec postanowilem nie wprowadzac ograniczen lvlowych).

Punkty mozemy zamienic u uriela na staty.

Nagrodę otrzymujemy losowo.

 

wpis do locale_pl do item_list

9994	ETC	icon/item/70040.tga

wpis do navicata

INSERT INTO `item_proto` (`vnum`,`name`,`locale_name`,`type`,`subtype`,`weight`,`size`,`antiflag`,`flag`,`wearflag`,`immuneflag`,`gold`,`shop_buy_price`,`limittype0`,`limitvalue0`,`limittype1`,`limitvalue1`,`applytype0`,`applyvalue0`,`applytype1`,`applyvalue1`,`applytype2`,`applyvalue2`,`value0`,`value1`,`value2`,`value3`,`value4`,`value5`,`socket0`,`socket1`,`socket2`,`socket3`,`socket4`,`socket5`,`refined_vnum`,`refine_set`,`magic_pct`,`specular`,`socket_pct`) VALUES ('9994', 'Smoczy Punkt ', 'Smoczy Punkt ', '18', '10', '0', '1', '0', '0', '0', '0', '100', '100', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '-1', '-1', '-1', '-1', '-1', '-1', '0', '0', '15', '0', '0');

wpis do locale_pl item_proto

	<Item vnum="9994" name="'Smoczy punkt '" gb2312name="Smoczy punkt " type="18" subtype="10" weight="0" size="1" antiflag="0" flag="0" wearflag="0" immuneflag="0" gold="100" buy_price="100" limittype0="0" limitvalue0="0" limittype1="0" limitvalue1="0" applytype0="0" applyvalue0="0" applytype1="0" applyvalue1="0" applytype2="0" applyvalue2="0" value0="0" value1="0" value2="0" value3="0" value4="0" value5="0" socket0="-1" socket1="-1" socket2="-1" socket3="-1" socket4="-1" socket5="-1" refine_vnum="0" refine_set="0" magic_pct="15" specular="0" socket_pct="0" />

quest

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
					target.vid("__TARGET__", v,"Uriel")
				end
		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 kill with npc.get_race() >= 8001 and npc.get_race() <= 8014 or npc.get_race() >= 8024 and npc.get_race() <= 8027 begin 
			local nagrody = {
			[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, nagrody[npc.get_race()])
		end
		
		when 20011.chat."Wymień punkty za metiny" begin
			say_title(" Wymień punkty na statystyki. ")
			say(" Czy chcesz wymienić punkty statystyk? ")
			say(" 20pkt red/blue potki 200 ")
			say(" 50pkt fiol/ziel potki 200 ")
			say(" 150pkt 1Def/1int/2atk/1zre ")
			say(" 250pkt 2Def/2int/3atk/2zre ")
			say(" 500pkt 3Def/5int/7atk/5zre ")
			say(" 750pkt 5Def/8int/12atk/8zre ")
			say(" 1000pkt 7Def/10int/15atk/10zre ")
			say(" 1250pkt 10Def/12int/18atk/12zre ")
			say(" 1500pkt 20Def/15int/20atk/15zre ")
			local s = select("Wymieniam","Nie wymieniam")
				if s == 1 then
					if pc.count_item(9994) >= 1500 then
						local rand = math.random(4)
							if rand == 1 then
								affect.add_collect(apply.CON, 20, 60*60*24*365*60)
							elseif rand == 2 then
								affect.add_collect(apply.INT, 15, 60*60*24*365*60)
							elseif rand == 3 then
								affect.add_collect(apply.STR, 20, 60*60*24*365*60)
							elseif rand == 4 then
								affect.add_collect(apply.DEX, 15, 60*60*24*365*60)
							end
							pc.remove_item(9994, 1500)
					elseif pc.count_item(9994) >= 1250 then
						local rand = math.random(4)
							if rand == 1 then
								affect.add_collect(apply.CON, 10, 60*60*24*365*60)
							elseif rand == 2 then
								affect.add_collect(apply.INT, 12, 60*60*24*365*60)
							elseif rand == 3 then
								affect.add_collect(apply.STR, 18, 60*60*24*365*60)
							elseif rand == 4 then
								affect.add_collect(apply.DEX, 12, 60*60*24*365*60)
							end
							pc.remove_item(9994, 1250)
					elseif pc.count_item(9994) >= 1000 then
						local rand = math.random(4)
							if rand == 1 then
								affect.add_collect(apply.CON, 7, 60*60*24*365*60)
							elseif rand == 2 then
								affect.add_collect(apply.INT, 10, 60*60*24*365*60)
							elseif rand == 3 then
								affect.add_collect(apply.STR, 15, 60*60*24*365*60)
							elseif rand == 4 then
								affect.add_collect(apply.DEX, 10, 60*60*24*365*60)
							end
							pc.remove_item(9994, 1000)
					elseif pc.count_item(9994) >= 750 then
						local rand = math.random(4)
							if rand == 1 then
								affect.add_collect(apply.CON, 5, 60*60*24*365*60)
							elseif rand == 2 then
								affect.add_collect(apply.INT, 8, 60*60*24*365*60)
							elseif rand == 3 then
								affect.add_collect(apply.STR, 12, 60*60*24*365*60)
							elseif rand == 4 then
								affect.add_collect(apply.DEX, 8, 60*60*24*365*60)
							end
							pc.remove_item(9994, 750)
					elseif pc.count_item(9994) >= 500 then
						local rand = math.random(4)
							if rand == 1 then
								affect.add_collect(apply.CON, 3, 60*60*24*365*60)
							elseif rand == 2 then
								affect.add_collect(apply.INT, 5, 60*60*24*365*60)
							elseif rand == 3 then
								affect.add_collect(apply.STR, 7, 60*60*24*365*60)
							elseif rand == 4 then
								affect.add_collect(apply.DEX, 5, 60*60*24*365*60)
							end
							pc.remove_item(9994, 500)
					elseif pc.count_item(9994) >= 250 then
						local rand = math.random(4)
							if rand == 1 then
								affect.add_collect(apply.CON, 2, 60*60*24*365*60)
							elseif rand == 2 then
								affect.add_collect(apply.INT, 2, 60*60*24*365*60)
							elseif rand == 3 then
								affect.add_collect(apply.STR, 3, 60*60*24*365*60)
							elseif rand == 4 then
								affect.add_collect(apply.DEX, 2, 60*60*24*365*60)
							end
							pc.remove_item(9994, 250)
					elseif pc.count_item(9994) >= 150 then
						local rand = math.random(4)
							if rand == 1 then
								affect.add_collect(apply.CON, 1, 60*60*24*365*60)
							elseif rand == 2 then
								affect.add_collect(apply.INT, 1, 60*60*24*365*60)
							elseif rand == 3 then
								affect.add_collect(apply.STR, 2, 60*60*24*365*60)
							elseif rand == 4 then
								affect.add_collect(apply.DEX, 1, 60*60*24*365*60)
							end
							pc.remove_item(9994, 150)
					elseif pc.count_item(9994) >= 50 then
						local rand = math.random(2)
							if rand == 1 then
								pc.give_item2(27105, 200)
							else
								pc.give_item2(27102, 200)
							end
							pc.remove_item(9994, 50)
					elseif pc.count_item(9994) >= 20 then
						local rand = math.random(2)
							if rand == 1 then
								pc.give_item2(27003, 200)
							else
								pc.give_item2(27006, 200)
							end
							pc.remove_item(9994, 20)
					end
				end
		end
	end
end
Opublikowano

Strasznie dziwny quest. Po co liczby zawijasz w stringi? Poza tym można by było go trochę skrócić i byłby w miarę bardziej przejrzysty.

95495145614730418249.png


Opublikowano

2x Up :

ja mysle w nie co inny sposób niż ty: Nie ważne jak, ważne żeby działało w sposób jaki chcę. Po co kombinowac.



up:

jezeli masz 100pkt to dostaniesz z ostatniego najwyszego przedzialu czyli za 50pkt

jezeli np 600pkt masz to dostajesz za 500 itd...

Opublikowano

Po co? Chociażby dla poznania lepszych (może nie lepszych, co innych) rozwiązań, które mogą wejść w nawyk. Też tak kiedyś myślałem i na dobre mi to nie wychodziło.

95495145614730418249.png


Opublikowano

Endymion_ masz racje, bugowalo sie, ale wystarczylo obrócić czesc questa

x>20

x>50 itd na

x>1500

x>1250 itd

i sie nie buguje wiec nie ma potrzeby stosowac twojego rozwiazania

  • 2 tygodnie później...
Opublikowano

Witam, dodalem questa i dziala wszystko jak nalezy ale jedynie po sh make. Jak dogrm juz inne questy to po prostu punkty nie dropia z metinow. Mozna wymienic punkty itd lecz ten problem z dropem jest ,o co moze tu chodzic? Czy moze on kolidowac z jakims innym questem? Prosze o pomoc.

 

Edit:

Juz ogarnalem sprawe. Like za wstawke.

sygnatura.png


  • 4 tygodnie później...
Opublikowano

UPDATE!!!

Opis: Smocze punkty zamieniamy na zielone smocze punkty, zielone smocze punkty mozemy zamienic na bonusy i zmianki (zalecane usuniecie bonow i zmianek od handlarza aby quest mial sens), aby questy dzialaly musimy miec wgrany pierwszy quest z top posta.

wpis do locale_pl do item_list:

9996	ETC	icon/item/9996.tga

 


wpis do navicata:

INSERT INTO `item_proto` (`vnum`,`name`,`locale_name`,`type`,`subtype`,`weight`,`size`,`antiflag`,`flag`,`wearflag`,`immuneflag`,`gold`,`shop_buy_price`,`limittype0`,`limitvalue0`,`limittype1`,`limitvalue1`,`applytype0`,`applyvalue0`,`applytype1`,`applyvalue1`,`applytype2`,`applyvalue2`,`value0`,`value1`,`value2`,`value3`,`value4`,`value5`,`socket0`,`socket1`,`socket2`,`socket3`,`socket4`,`socket5`,`refined_vnum`,`refine_set`,`magic_pct`,`specular`,`socket_pct`) VALUES ('9996', 'Zielony Smoczy Punkt ', 'Zielony Smoczy Punkt ', '18', '10', '0', '1', '0', '0', '20', '0', '100', '100', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '-1', '-1', '-1', '-1', '-1', '-1', '0', '0', '15', '0', '0');

 


wpis do locale_pl item_proto

	<Item vnum="9996" name="'Zielony Smoczy punkt '" gb2312name="Zielony Smoczy punkt " type="18" subtype="10" weight="0" size="1" antiflag="0" flag="0" wearflag="0" immuneflag="0" gold="100" buy_price="100" limittype0="0" limitvalue0="0" limittype1="0" limitvalue1="0" applytype0="0" applyvalue0="0" applytype1="0" applyvalue1="0" applytype2="0" applyvalue2="0" value0="0" value1="0" value2="0" value3="0" value4="0" value5="0" socket0="-1" socket1="-1" socket2="-1" socket3="-1" socket4="-1" socket5="-1" refine_vnum="0" refine_set="0" magic_pct="15" specular="0" socket_pct="0" />

Dodatkowo trzeba jeszcze dodac ikonke 9995.tga ktora sami mozecie sobie zrobic/podmienic.

Questy:

quest SystemPunktow2 begin
	state start begin
		when login or levelup with pc.get_level() >= 1 begin
			setstate(misja)
		end
	end
	state misja begin
		when 20011.chat."Wymień smocze punkty na zielone punkty " begin
			say_title("Wymień Smocze punkty na zielone punkty: ")
			say(" Czy chcesz wymienić punkty? ")
			say(" Za każde 10 Smoczych Punktów ")
			say(" otrzymasz 1 Zielony Punkt. ")
			local s = select("Wymieniam","Nie wymieniam")
				if s == 1 then
					if pc.count_item(9994) >= 1500 then
						pc.remove_item(9994, 1500)
						pc.give_item2(9996, 150)
					elseif pc.count_item(9994) >= 1250 then
						pc.remove_item(9994, 1250)
						pc.give_item2(9996, 125)
					elseif pc.count_item(9994) >= 1000 then
						pc.remove_item(9994, 1000)
						pc.give_item2(9996, 100)
					elseif pc.count_item(9994) >= 750 then
						pc.remove_item(9994, 750)
						pc.give_item2(9996, 75)
					elseif pc.count_item(9994) >= 500 then
						pc.remove_item(9994, 500)
						pc.give_item2(9996, 50)
					elseif pc.count_item(9994) >= 250 then
						pc.remove_item(9994, 250)
						pc.give_item2(9996, 25)
					elseif pc.count_item(9994) >= 150 then
						pc.remove_item(9994, 150)
						pc.give_item2(9996, 15)
					elseif pc.count_item(9994) >= 50 then
						pc.remove_item(9994, 50)
						pc.give_item2(9996, 5)
					elseif pc.count_item(9994) >= 20 then
						pc.remove_item(9994, 20)
						pc.give_item2(9996, 2)
				end
			end
		end
	end
end
quest SystemPunktow3 begin
	state start begin
		when login or levelup with pc.get_level() >= 1 begin
			set_state( zielone )
		end
	end
	state zielone begin
		when 20011.chat."Wymień zielone punkty na itemy " begin
			-----------------------------
            local brak_zielonych = "Niestety, ale nie masz Wystarczającej ilości Zielonych punktów. "
            -----------------------------
			say_title("Wymien zielone punkty na itemy")
				local s = select ( "15 Dodan bonow 20 ZP " , "30 Dodan bonow 40 ZP " , "60 Dodan bonow 80 ZP" , "10 Zmian bonu 20 ZP " , "20 Zmian bonu 40 ZP " , "40 Zmian bonu 80 ZP" , "Anuluj" )
					if 1 == s then
						if pc.count_item(9996) >= 20 then
							pc.give_item2(71085, 15)
							pc.remove_item(9996, 20)
						else
                            say(brak_zielonych)
                        end
					elseif 2 == s then
						if pc.count_item(9996) >= 40 then
							pc.give_item2(71085, 30)
							pc.remove_item(9996, 40)
						else
                            say(brak_zielonych)
                        end
					elseif 3 == s then
						if pc.count_item(9996) >= 80 then
							pc.give_item2(71085, 60)
							pc.remove_item(9996, 80)
						else
                            say(brak_zielonych)
                        end
					elseif 4 == s then
						if pc.count_item(9996) >= 20 then
							pc.give_item2(71084, 10)
							pc.remove_item(9996, 20)
						else
                            say(brak_zielonych)
                        end
					elseif 5 == s then
						if pc.count_item(9996) >= 40 then
							pc.give_item2(71084, 20)
							pc.remove_item(9996, 40)
						else
                            say(brak_zielonych)
                        end
					elseif 6 == s then
						if pc.count_item(9996) >= 80 then
							pc.give_item2(71084, 40)
							pc.remove_item(9996, 80)
						else
                            say(brak_zielonych)
                        end
					end
				end
		end
end

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...